本章以hello.c为例

Untitled

1.1 信息就是位+上下文

源程序实际上就是一个由值0和1组成的位(又称比特)序列,8个位被组织成一组,成为字节,每个字节表示程序中的某些文本字符。

Untitled

整个计算机系统中的所有信息都可以用一串比特串的形式表示,区分不同的数据对象的唯一方法就是我们读到的这些对象时的上下文(context)。

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

一个高级语言写的程序(这里以C语言为例),从源代码到最终的机器中的可执行文件会经过一下几个阶段:

  1. 预处理阶段,处理源码中的预处理语句(比如说#include)
  2. 编译阶段,将c语言编译成汇编语言
  3. 汇编阶段,把汇编语言翻译成机器指令
  4. 链接阶段,把在程序中调用的库函数的相关文件引入

Untitled

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

促使程序员必须知道编译系统是如何工作的原因:

  1. 优化程序性能,我们需要对汇编语言以及编译器如何将不同的C语句转化为汇编语言有基本的了解
  2. 理解链接时出现的错误
  3. 避免安全漏洞,其中一个比较典型的是缓冲区溢出错误