深入理解计算机系统-第3版

第一章 计算机系统漫游

信息就是:位+上下文

hello.c程序


1  #include<stdio.h>
2  
3  int main()
4  {
5     printf("hello,world\n");
6     return 0;
7   }

hello程序生命周期是从一个源程序(源文件)开始,源程序是由0和1组成的位(比特)序列,8个位被组成一组,称为字节,每个字节表示c程序中的某些文本字符

大部分现代计算机系统使用ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)标准来表示文本字符,实际上就是用一个唯一的单字节大小的整数值来表示每个字符

转换过程

重点:系统中所有的信息--磁盘文件,内存中的程序,内存中存放的用户数据,网络上传输的数据,都是由一串比特表示;区分不同数据对象的唯一方法就是读取这些数据对象时的上下文;如:在不同的上下文中,一个同样的字节序列可能表示一个整数,浮点数,字符串或者机器指令

注意:需要了解数字的机器表示,因为机器表示的整数,实数与实际的整数实数不同,机器表示的是对真值的有限近似值

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

hello.c高级C语言程序(源文件) ---> 被其他程序转换为机器可识别的低级机器语言指令 这些指令会按照一种叫做可执行目标程序的格式打包,并已二进制磁盘文件的形式存放起来,目标程序也成为可执行目标文件

GCC编译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行目标文件hello,翻译过程分为4个阶段

Compilation System

Compilation System

  • 预处理器
    • 预处理阶段,预处理器(cpp)根据以字符#开头的命令,修改原始的C程序。比如hello.c中第1行的 #include命令告诉预处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中。结果就得到了另一个C程序,通常是以.i作为文件扩展名

results matching ""

    No results matching ""