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

时间:2011-06-09 01:46:06

标签: assembly

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

    对于C,链接是要结合几个 生成的目标文件 编译成单个对象 文件。但对于汇编语言, 只有一个目标文件 “链接”,所以为什么要费心去链接 单个目标文件?例如, http://zahidirfan.blogspot.com/2010/01/two-steps-to-using-assembly-in-linux.html

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

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

  3. 谢谢和问候!

3 个答案:

答案 0 :(得分:4)

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

为了能够使用库,您也可以将它们链接起来。链接器也是(通常)了解目标可执行格式的内容。

也就是说,有些汇编程序直接生成可执行文件,而不涉及链接器。如果内存服务,NASM可以直接生成一些可执行格式,而一些旧的MS-DOS汇编程序(例如A86)也可以这样工作。

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

答案 1 :(得分:1)

您的“1)”问题描述有误。汇编语言程序(除了最简单的示例应用程序之外)通常会有多个需要链接在一起的obj文件。

在所有代码都在单个文件中的非常简单的情况下,正如其他人提到的那样,许多汇编程序确实允许直接汇编到二进制文件。但是,这是满足规则例外的特殊行为......

答案 2 :(得分:0)

1-链接是必要的,因为二进制文件至少需要一些特定于平台的代码才能放入其中。 2-从(1)结束,在链接之前,二进制文件不完整。它是一个二进制文件,虽然不准备单独执行。