读书笔记_深入理解计算机系统_第一章_计算机系统漫游

 

hello.c

#incude <stdio.h>

int main()

{

  printf("Hello,world\n");

}

1.1信息就是位+上下文

系统所有的信息,都是由一串位表示的。

在不同的上下文中(可以理解为程序,或者运算),一个同样的字节序列可能表示一个整数,浮点数,字符串或者机器指令。

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

如Hello程序,从源文件hello.c中的每条C语句,需被其他程序转换为一系列低级语言(汇编)指令,然后将这些指令按照一种称为可执行目标程序的格式打包,以二进制磁盘文件格式存放起来。目标程序也称为可执行目标文件。

在linux中,从源文件到目标文件可用编译驱动程序完成

gcc -o hello hello.c

GCC编译驱动程序将hello.c翻译成一个可执行目标文件,过程分为四个阶段

1.预处理阶段

  读取头文件中的内容,将它插入上下文,#include <stdio.h>,生成.i作为扩展名。

2.编译阶段

  将.i翻译成.s汇编语言程序

3.汇编阶段

  将汇编语言翻译成机器语言,将指令打包成一种叫可重定位目标程序的格式.o,一个二进制文件

4.链接阶段

  将printf.o预编译文件链接入hello.o

 

1.3了解编译系统如何工作的最大益处

1.优化程序

2.理解链接时出现的错误

3.避免安全漏洞

posted @ 2017-04-24 22:36  龙爷  阅读(181)  评论(0编辑  收藏  举报