《深入理解计算机系统》学习笔记
第一章 计算机系统漫游
一个 hello world 程序是如何在系统上执行的?
hello world 程序的生命周期是从一个源程序开始的,它只由 \(\text{ASCII}\) 字符构成,这被称作是一个“文本文件”,而其他的被称作“二进制文件”。
然而为了在系统上运行 hello.c 程序,每条 \(\text{C}\) 语句都必须被其他程序转化为一系列的低级机器语言指令,然后这些指令按照一种称为可执行目标程序的格式打好包,并以二进制磁盘文件的形式存放起来,目标程序也称为可执行文件。
在 \(\text{Unix}\) 系统上,从源文件到目标文件的转化是由编译器驱动程序完成的。
linux> gcc -o hello hello.c
编译过程分为四个阶段来完成
- 预处理阶段(解析头文件)
预处理器(cpp)根据以字符 # 开头的命令,修改原始的 \(\text{C}\) 程序,#include <stdio.h>命令告诉预处理器读取系统头文件stdio.h中的内容,并把它直接插入程序文本中,得到一个以.i作为扩展名的另一个 \(\text{C}\) 程序。 - 编译阶段
编译器(ccl)将文本文件hello.i翻译成文本文件hello.s,它包含一个汇编语言程序。该程序包含 main 函数的定义。

浙公网安备 33010602011771号