《深入理解计算机系统》学习笔记

第一章 计算机系统漫游

一个 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 函数的定义。
posted @ 2025-08-07 13:49  Electro_Master  阅读(17)  评论(0)    收藏  举报