我的系统上安装了NASM和Dev-Cpp。 Dev-cpp随附LD(GNU链接器)。我是汇编代码和从汇编文件创建32位Windows可执行文件的过程的新手。我尝试使用此:

nasm -f win32 ass.asm
nasm -o ass ass.o

使用这些命令创建可执行文件没有成功。组装(与NASM)并链接以生成将在32位Windows上运行的可执行文件的正确方法是什么?

最佳答案

您的一条似乎不再存在的评论确实提到您在Windows上安装了Dev-Cpp。如果您的路径上有Dev-Cpp MinGW bin目录,则可以使用GNU Linker LD。

我不知道您是将32位还是64位GCC与Dev-Cpp一起使用,但是这对于生成32位可执行文件都应该起作用:

nasm -f win32 ass.asm -o ass.obj
ld -mi386pe -o ass.exe ass.obj

这将告诉NASM生成32位Win32对象,而LD会将对象链接到i386pe 32位Windows可执行文件。

或者,您可以下载GoLink linker。将其提取到路径后,您可以执行以下操作:
nasm -f win32 ass.asm -o ass.obj
GoLink.exe  /console ass.obj kernel32.dll user32.dll gdi32.dll

您可能需要使用以下方式指定代码入口点(标签):
GoLink.exe  /console /entry _start ass.obj kernel32.dll user32.dll gdi32.dll
_start可能是您希望程序启动的标签。如果您不调用任何Win32 API,则不需要列出的任何DLL。

如果您不创建控制台应用程序,则可以省略/console

08-16 23:35