//深入理解计算机系统主要参考了《深入理解计算机系统(第3版)》,所做的笔记。
1.2 编译的过程
编译过程主要分为四个阶段:预处理,编译,汇编,链接。
(图来自《深入理解计算机系统(第3版)》,下同)。
- 预处理:扫描以#打头的命令,比如#include <xxx.h>直接将.h文件粘贴到当前文件,
- gcc -E hello.c -o hello.i 生成.i文件,此时可以查看,还是文本文件。
- 编译:将文本.i文件编译成汇编语言,
- gcc -S hello.i -o hello.s 生成.s文件,.s文件为汇编语言。
- 汇编:将汇编文件转化为机器语言,
- gcc -c hello.s -o hello.o 生成.o文件,.o为二进制。
- 链接:将多个.o文件连接在一起,生成一个可执行文件。
- gcc hello.o -o hello //hello为可执行文件
- gcc hello.c -o hello //直接由.c生成可执行文件。
1.4 处理器读并解释储存在内存中的指令
1.4.1 硬件组成
1 总线
贯穿整个系统的一组电子管道,它携带信息字节并负责在各个部件间传递,通常总线被设计成传送定长的字节块(通常32位机器4字节,64位机器8字节)。