【问题标题】:pc asm book trying to compile first asm apppc asm book 试图编译第一个 asm 应用程序
【发布时间】:2016-10-27 07:28:26
【问题描述】:

我无法编译第一个 asm exe 我有 MSVC 2005 和 2015 我执行

nasm -f win32 first.asm (ok)
cl first.obj driver.c asm_io.obj (cl not found i set path enviro,

第二次尝试 -> 许多 obj 文件未找到,我找到并复制到 源文件夹, 第三次尝试->

asm_io.obj : error LNK2001: unresolved external symbol _scanf

asm_io.obj : error LNK2001: unresolved external symbol _printf

)

使用 djgpp 无法理解我需要下载什么 下载了mingw,没有gcc exe

【问题讨论】:

  • 请添加一些格式什么的。我无法确定那里的文本块的正面或反面。
  • 我不明白你在做什么。你说你有 MSVC 2005 和 2015,然后你向我们展示了 nasm,最后 djgpp 似乎不知从何而来。

标签: windows visual-studio assembly x86 nasm


【解决方案1】:

MSVC 不附带 NASM 汇编器。如果您还没有安装它,您需要download that separately

但是,MSVC 确实带有 MASM 汇编器。您可以找到有关如何将其设置为与 IDE here 一起使用的步骤。问题是,NASM 和 MASM 在语法上并不完全兼容。知道汇编的人可以在它们之间进行简单的翻译,但是您可能很难从一本使用与您的汇编器接受的语法不同的语法的书中学习。

除此之外,我不确定您为什么要在组装代码后尝试编译代码。这不是必需的,实际上不会做任何有用的事情。 nasm 是一个汇编器;你运行它来汇编汇编代码。 cl 是一个 C 和 C++ 编译器;你运行它来编译ccpp 文件。在编写程序集时,您永远不需要使用 clgcc

【讨论】:

  • 几乎正确,但 cl.exe 既是编译器又是链接器。您可以使用它来链接汇编器的输出。
  • @IInspectable 我不会说它是一个链接器,而是它可以在完成编译后调用链接器。事实上,它确实如此,除非指定了 /c 标志。 cl.exe 只是编译器的前端驱动程序。如果你只是想链接汇编代码,你可以直接调用链接器(link.exe)。
  • 你是对的,这是草率的。 Compiler Options 的官方措辞是:“cl.exe 是一种控制 Microsoft C 和 C++ 编译器和链接器的工具。” 不过,尽管如此,使用 cl.exe 仍然是常见的做法,即使仅用于链接。
猜你喜欢
  • 2018-08-14
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多