汇编程序和编译器连接?

时间:2018-06-03 10:41:10

标签: assembly compiler-construction

我正在阅读有关目标代码(我不是在询问目标代码是什么),并在遇到以下内容时感到困惑:

*阅读汇编程序时:

  

汇编程序通过翻译组合创建目标代码   用于操作和寻址模式的助记符和语法   数值等价物。

在阅读object code本身时:

  

在计算中,对象代码或对象模块是a的产物   编译器

但是,在查看编译器的组件时,我读过的文章中没有包含汇编程序作为编译器的一部分,比如 enter image description here

那么如果汇编程序“不是编译器的一部分”,对象代码如何成为“编译器的产品”呢?

2 个答案:

答案 0 :(得分:3)

或者:

  1. 编译器直接生成目标代码,根本没有装配阶段,或
  2. 它生成程序集然后执行汇编程序,在这种情况下汇编程序确实是逻辑上编译器的一部分。
  3. 在任何一种情况下,当编译器退出时,你所拥有的是目标代码,为链接器做好准备。

    注意:您的图片也没有显示链接器,但如果没有它,您将无法获得目标程序。

答案 1 :(得分:-2)

'汇编源代码'(预对象代码gen)等同于编译器生成的中间代码或中间表示(IR)(在图中)。然后通过传递来优化并生成目标机器ABI原生的目标代码。

IR是否用于生成目标代码或其他IR(例如解释器可以使用的IR)取决于编译器的设计和意图。

图中没有看到“汇编程序”这个词,试图将图表的语义解析为语法糖。