汇编语言的组装和链接步骤

Tim*_*Tim 3 assembly

  1. 我想知道组装步骤后链接步骤的目的是什么?为什么不在没有链接步骤的情况下运行汇编程序的输出?

    对于C来说,链接就是把编译生成的几个目标文件组合成一个目标文件。但是对于汇编语言来说,只有一个目标文件要“链接”,那么为什么还要链接一个目标文件呢?例如, http://zahidirfan.blogspot.com/2010/01/two-steps-to-using-assembly-in-linux.html

    如果只有一个目标文件并且不需要库,是否不需要链接?就像我上面给出的例子一样?

  2. 汇编器的输出和链接器的输出格式相同吗?它们都是二进制文件吗?

感谢致敬!

Jer*_*fin 5

汇编器产生目标文件作为输出,就像编译器一样。

您也出于几乎相同的原因链接它们——以便能够使用库。链接器也是(通常)知道目标可执行格式的东西。

也就是说,有些汇编器可以直接生成可执行文件,而不涉及链接器。如果没记错的话,NASM 可以直接生成一些可执行格式,并且一些旧的 MS-DOS 汇编程序(例如,A86)也可以/确实以这种方式工作。

这些更简单的设置和更快的组装周期使它们对初学者来说非常方便,但是将所有代码放入单个模块的要求使得它们不太适合大型项目。


Gab*_*iel 0

1- 链接是必要的,因为二进制文件至少需要将一些特定于平台的代码放入其中。2- 从 (1) 得出结论,在链接之前,二进制文件不完整,无法运行。它是一个二进制文件,但尚未准备好独立执行。