Introduction
我们从 K&R(Kernighan and Ritchie)经典的 C 语言程序 hello.c 开始,研究从源代码开始是如何一步步编译成可执行文件的,系统是如何加载并运行这个程序的。再这个过程中,我们会介绍一些计算机系统的基本概念和原理,后续的章节会继续深入这些概念和原理。
信息与 bits
我们一般把上述代码保存为 hello.c,这是一个文本文件,是一系列的 bit(0 和 1),组织为 8 bits 的字节(byte)。大部分的计算机使用 ASCII 编码保存,非英文国家可能会使用其他编码,最常见的是 UTF-8 编码。
文本文件是一系列的字节,每个字节可以看作是一个整数来表示相应的字符。比如 # 的 ASCII 码是 35,i 的 ASCII 码是 105,等等。
所有的信息都是一系列的 bits,在不同的上下文中,解释这些 bits 的方式不同。一系列的字节可以表示整数、浮点数、字符、指令等等。