深入理解计算机系统第一章

1,计算机系统漫游

通过跟踪hello程序的生命周期开始系统的学习

信息就是位+上下文

系统中的所有信息———包括磁盘文件,内存中的程序,内存中的程序,内存中存放的用户数据以及网络上上传的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。

程序被其他程序翻译成不同的格式

linux > gcc -o hello hello.c

翻译过程分四个阶段

  hello.c                                         hello.i                                 hello.s                               hello.o                                    hello

 ------> 预处理器(cpp)----->编译器(ccl)---->汇编器(as)----->链接器(ld)-------------->

 源程序                                     修改了的源                            汇编程序                            可重定位目标                      可执行目标程序(文本)                                  程序 (文本)                    (文本)                            程序(二进制)                 (二进制)

预处理阶段:根据#开头的命令,修改原始c程序,通常为读取头文件并插入程序文本中

编译阶段:ccl 将 hello.i 翻译 hello.c 它包含一个汇编语言程序。该程序包含main函数的定义

汇编阶段:编译器将hello.c翻译成机器语言指令并将结果保存在目标文件hello.o 中

链接阶段:合并所用的函数和文件得到hello.o 程序 它是一个可执行文件,可以被加载到内存中,由系统执行。

猜你喜欢

转载自blog.csdn.net/guo0704/article/details/81091659