3 汇编阶段

3 汇编阶段
foresta.yang汇编阶段
汇编阶段将得到真正的机器代码,汇编阶段的输入是在编译阶段生成的汇编语言集,输出是一组对象文件,有时简称为模块。
对象文件原则上包含可由处理器执行的机器指令。
通常情况下,每个源文件对应一个汇编文件,每个汇编文件对应一个对象文件。
生成对象文件,传递-c标志给gcc,

可以使用file工具来确认生成的compilation_example.o文件确实是对象文件。
file输出的第一部分显示了该文件符合二进制可执行文件的ELF规范。具体地,是一个64位的ELF二进制文件(因为在这个示例中编译的是x86_64),并且是最低有效位(Least Significant Bit,LSB),这意味着数在内存中的排序是以最低有效字节优先的。但最重要的是,可以看到该文件是可重定位的。
可重定位文件不依赖于放置在内存中的任何特定地址,相反,它们可以随意移动,而不会破坏代码中的任何假设。当在文件输出中看到术语“可重定位”时,表示正在处理的是对象文件而不是可执行文件。
对象文件相互独立编译,因此汇编程序在组装对象文件时无法知道其他对象文件的内存地址。这就是对象文件需要可重定位的原因,这样就可以按照任意顺序将对象文件链接在一起,形成完整的二进制可执行文件。如果对象文件不可重定位,则无法实现文件的任意顺序组合。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果