《深入理解计算机系统》——Ch2-MemoryⅠ

前记——本系列文档是《深入理解计算机系统》这本书的学习笔记,仅作学习用,文中的图片来自于华盛顿大学的CSE351课程PPT。

1 内存的地址和指针

  • 地址是内存的一个位置。
  • 指针可以保存一个地址。
  • 如图,数据存储在地址0x08。
  • 指针存储在0x38,存储的内容为地址0x08。
data_address.png
  • 如图指针0x48可以指向另一个指针(的地址值)。

小结:这就说明,其实内存的地址可以存储任何类型的数据或者是指针,指针存储也是地址,其指向的是数据或者是指针。

pointer.png

2 数据表示

对于不同的数据类型,保存它的空间大小也是不同的。如布尔类型只需要一个字节,整型和浮点型需要4个字节。指针的长度与计算机的位数是相同的,64位操纵系统就用8个字节来表示,32位系统用4个字节表示。

data_type.png

对于不同的指令集,有不同的字节顺序表示,Big-endian是从大到小,Little-endian是从小到大。下图可以看出,x86指令集是Little-endian,即把低位数据存储在较小的地址(如图,是在分配的以0x100开头的地址)。

byte_ordering.png
data_type_examples.png

3 总结

  • 内存是一个以比特位单位的长数组。
  • 指针保存的是地址值。
  • 对于多比特数据,字节次序决定字节在内存的排列顺序。
memory_summary.png

你可能感兴趣的:(《深入理解计算机系统》——Ch2-MemoryⅠ)