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 程序 它是一个可执行文件,可以被加载到内存中,由系统执行。