【发布时间】:2016-03-31 18:32:07
【问题描述】:
我的系统上安装了 NASM 和 Dev-Cpp。 Dev-cpp 带有 LD(GNU 链接器)。我不熟悉汇编代码和从汇编文件创建 32 位 Windows 可执行文件的过程。我试过用这个:
nasm -f win32 ass.asm
nasm -o ass ass.o
我没有成功使用这些命令创建可执行文件。组装(使用 NASM)和链接以生成将在 32 位 Windows 上运行的可执行文件的正确方法是什么?
【问题讨论】:
-
nasm 是一个汇编程序,它生成目标文件(或平面二进制文件,但不适用)。您需要使用链接器链接对象。
-
nasm -f win32 输出一个目标文件,而不是 Win32 可执行文件。你需要一个链接器。如果您的系统(或 Microsoft 链接器)上没有 GNU Binutils 工具(具有 LD 链接器),我建议您下载GoLink,然后将其安装在路径中的某个位置。那就看看这个Stackoverflow answer
-
赞成,因为这不是一个糟糕的问题。它问得很好,很容易理解 OP 需要什么,也很容易回答。这是非常微不足道的,但是在你知道事情是如何运作的之前,神秘的事情并不少见,然后它就是微不足道的。我很惊讶没有人找到它的副本。作为问题的一部分,我在搜索时发现的大多数问题都有答案。这个很好很简短:stackoverflow.com/questions/21010335/…。哦,迈克尔的评论确实链接到一个很好的问答。重复投票。
-
@Lesta:作为一个菜鸟,你会想看看x86 tag wiki。在学习 asm 时,您将需要一个调试器。如果您发现一个非常有用的教程,但未在 wiki 中提及,请为 wiki 留下建议的编辑。 (或回复此评论,我会添加。)
-
我对 dev-cpp 的评论基于不再存在的评论,但我已经更新了问题。我也投票决定重新开放它。即使它被标记为重复,它仍然可以在搜索类似问题时帮助其他人。
标签: windows assembly x86 linker nasm