我的系统上安装了 NASM 和 Dev-Cpp 。 Dev-cpp 附带 LD (GNU Linker)。我不熟悉汇编代码和从汇编程序文件创建32位Windows可执行文件的过程。我试过用这个:
nasm -f win32 ass.asm
nasm -o ass ass.o
我没有成功使用这些命令来创建可执行文件。什么是组装(使用 NASM )和链接生成可在32位Windows上运行的可执行文件的正确方法?
答案 0 :(得分:3)
您的一条评论似乎不再存在确实提到您在Windows上安装了 Dev-Cpp 。如果您的路径上有 Dev-Cpp MinGW bin目录,则可以使用GNU链接器 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