前记——本系列文档是《深入理解计算机系统》这本书的学习笔记,仅作学习用,文中的图片来自于华盛顿大学的CSE351课程PPT。
1 内存的地址和指针
- 地址是内存的一个位置。
- 指针可以保存一个地址。
- 如图,数据存储在地址0x08。
- 指针存储在0x38,存储的内容为地址0x08。
- 如图指针0x48可以指向另一个指针(的地址值)。
小结:这就说明,其实内存的地址可以存储任何类型的数据或者是指针,指针存储也是地址,其指向的是数据或者是指针。
pointer.png2 数据表示
对于不同的数据类型,保存它的空间大小也是不同的。如布尔类型只需要一个字节,整型和浮点型需要4个字节。指针的长度与计算机的位数是相同的,64位操纵系统就用8个字节来表示,32位系统用4个字节表示。
data_type.png对于不同的指令集,有不同的字节顺序表示,Big-endian是从大到小,Little-endian是从小到大。下图可以看出,x86指令集是Little-endian,即把低位数据存储在较小的地址(如图,是在分配的以0x100开头的地址)。
byte_ordering.png data_type_examples.png3 总结
- 内存是一个以比特位单位的长数组。
- 指针保存的是地址值。
- 对于多比特数据,字节次序决定字节在内存的排列顺序。
网友评论