GNU编译套装(GNU Compiler Collection)
2.1 信息存储
- 8-bit -> byte --> 作为最小的可寻址的内存单位。
- 机器级程序将内存视为一个非常大的字节数组,称为virtual memory.
每个byte都由一个唯一的数字来标识 --> address。
所有可能的集合就称为 virtual address space。
但其实只是个概念性的表示,实际的实现是讲DRAM,memory,disk,特殊的硬件和OS 软件结合起来,为程序提供一个看上去统一的字节数组。
C语言中一个指针的值都是某个存储块的第一个字节的虚拟地址。
2.1.1 十六进制表示法
0x或者0X开头
2.1.2 word size
- 每台计算机都有一个word size ==> 指针数据的normal size
- word size ==> 决定了virtual address space的max size
e.g. 一个机器word size = w ==> virtual address space 是 0 ~ 2^w -1 ==> max size is 2^w个
2.1.3 寻址和字节顺序
- 对于跨越多byte的程序对象,必须建立两个原则
1.1 address ==> 最小地址
1.2 在memory中怎么排列这些bytes ==> 连续排列
2.1.4 表示string
2.1.5 表示代码
从机器的角度来看,代码只是字节序列。
2.1.6 boolean
2.1.7 C语言中的位级运算
2.1.8 C语言中的逻辑运算
2.1.8 C语言中的移位运算
2.2 整数表示
2.2.1 integer
2.2.2 无符号数编码
2.2.3 补码编码
...
...
...