是什么将汇编转换为实际可执行的材料?

我对编译器的了解是,他们将源代码转换为程序集,然后将其神奇地转换为可执行文件。

它们如何将程序集转换为可执行文件?任何链接都会被删除,因为我想用C ++编写自己的编译器。

maimang 回答:是什么将汇编转换为实际可执行的材料?

要将汇编语言转换为可执行文件,您首先要使用汇编器,然后使用(通常是)链接器。

汇编器将获取汇编语言源代码,并(通常)生成某种格式或其他格式(例如COFF或ELF)的目标文件。确切的细节随指令集的不同而不同,但是典型的处理器将具有一张表(或多个表),显示该处理器的指令是如何编码的。汇编器解析指令,然后使用编码表中的信息告诉它如何生成对这些指令进行编码的单词。

然后,链接器获取该目标文件,至少可能将其与包含它使用但未定义的外部例程的其他文件合并,并生成可执行文件。同样,细节有所不同,但是在这种情况下,变化主要是基于所涉及文件的格式。一次大多数链接程序生成静态可执行文件,因此程序使用的任何外部功能都需要链接程序将该功能复制到可执行文件中。大多数现代的OS / loader都支持某种形式的动态链接,其中程序可以依赖于不会被静态复制到程序中的外部例程-而是,该程序通常包含对文件名和函数名的引用,并且由操作系统的加载程序负责在加载时查找文件,为每个功能分配一个地址,并修正引用以指向分配给代码的地址。

,

您将为此使用“汇编程序”。对于MSVC编译器套件,例如有MASM。您应该注意,通常,在正常的编译和链接过程中,实际上并不会在磁盘上获得汇编语言输出文件。

本文链接:https://www.f2er.com/3168436.html

大家都在问