在此页面上,有一个程序的部分内存布局的示例图像:
这种图像中的每一行代表什么?每行是否代表单行物理内存?通常物理内存有 32 位或 64 位作为每一行,那么在这种情况下,图像中的每一行是否覆盖了几行物理内存?
谢谢。
在此页面上,有一个程序的部分内存布局的示例图像:
这种图像中的每一行代表什么?每行是否代表单行物理内存?通常物理内存有 32 位或 64 位作为每一行,那么在这种情况下,图像中的每一行是否覆盖了几行物理内存?
谢谢。
每个两位数组代表一个八位字节(字节)。它们通常以 16 个八位组为一组排列,因为它非常适合打印页面或终端屏幕。最左边八位字节的地址在左列(例如00430020
)。
此表示用作印刷约定,不一定与内存的物理结构有任何关系。
人们希望它是显而易见的,但是......
上图中的每一行代表 16 个字节(假设地址每行增加十六进制 0x10,并且每行有 16 个字节)。
“通常物理内存的每一行都有 32 位或 64 位”——嗯,不。物理内存主要分为 8 位字节。计算机可能具有从内存到 CPU 的 32 位或 64 位宽的传输路径,但该路径的宽度与理解上述图表无关。(计算机中的术语“行”基本上只适用于“缓存行”,它是一组字节,从 16 字节长到 256 字节长(取决于设计),它们一起在一个“缓存”中——部分内存的高速“快照”。但是这种缓存“透明地”运行,因此您可以在大多数情况下忽略它的存在。)
您将在上图中观察到,32 位地址中的数据是“小端”——第一个“下一个”字段是30 00 43 00
,而它指向的位置是00430030
。内存中的字节与您或我“自然”读取它们的方式相反。
所以这张图只是简单地展示了内存中的一些简单结构以及它们如何相互寻址。