/
...
/
/
§3 The Compilation System
Search
Try Notion
§3 The Compilation System
Introduction
以前课程的引入
🖼️编译系统流程
我们之前The Hello 中详细编译系统的工作流程
代码上看: C语言→汇编代码→机器代码
文件上看: *.c→*.i→*.s→*.o→hello
Intel发展历史
🖼️Intel处理器历史
在Linux x86-64 编译过程
示例总体
🖼️编译C文件示例
gcc 编译参数讲解
gcc简介: gcc指的就是GCC编译器, 它是linux系统上默认的编译器
-O 选项:
Og是用来告诉编译器生成符合原始C代码整体结构的机器代码
一般工程上使用 -O1-O2 , 但是代码会严重变形, 导致机器代码和原代码难以理解
-o 选项: 生成的文件名
-s 选项: 告诉编译器产生汇编文件
以源文件mstore.c为例
编译过程
🖼️mstore.c 编译示例
目标 看一下C代码与汇编代码之间的关系
linux>gcc -0g-S mstore.c 这条命合可以生成mstore.c所对应的汇编文件mstore.s
编译结果分析
🖼️编译结果
其中以.开头的行都是指导汇编器和链接器工作的伪指合
pushq: 将寄存器rbx的值压人程序栈进行保存
寄存器的背景知识
🖼️16个通用寄存器
在Intel x86-64的处理器中包含了16个通用目的的寄存器, 用于存放指针和数据
图中显示的这16个寄存器, 它们的名字都是以%开头的