1. 代码在文件中是以ascii码形式的存放的。比如#include 对应的ascii 码就是

    1. # i n c l u d e
    2. 35 105 110 99 108 117 100 101
  2. 预处理的过程是处理所有以 # 开头的语句。所以除了#define, #include 也会被处理。比如处理 #include <stdio.h>, 编译器会将 stdio.h 文件的内容插入到目标文件中,如果 stdio.h 中还有 #include 语句就递归处理下去。这样就得到了另一个 .i 文件。

  3. 编译阶段就是将 .i 文件翻译成汇编语言, 也就是 .s
  4. 汇编阶段是将汇编语言翻译成机器指令,生成一个二进制可执行程序。二进制文件的编码就不是单纯的文本编码了,而是机器语言指令编码。
  5. 链接将不同文件的函数调用集成在一起。

    信息存储
  6. 一个字节8位,用二进制表示就是 0~255,用16进制表示就是 0x00~0xFF。每4位表示一个16进制数。因此2进制转16进制,是以4个二进制位来转换的。所以一个 int 类型的变量4个字节,用16进制表示是8个16进制数 0x12345678。

    访问主存

    CPU和主存之间数据的传输通过总线来实现。
    总线的传输以字位单位,32 位系统上一个字是4个字节, 64位系统上是 8个字节。
    每次 CPU和主存之间的数据传送都是通过一系列步骤完成,这些步骤成为 总线事务。
    读事务从主存传送数据到CPU,写事务从CPU传送数据到主存。