它们似乎都明确指定了实际内存位置。物理地址和绝对地址有什么区别?
物理地址(也称为真实地址):
物理地址是总线电路在将数据传输到和从内存中传输时使用的地址(因此称为“物理”地址)。
它的对应地址是'虚拟地址'。在具有虚拟内存的计算机中,应用程序使用虚拟地址,并在实际访问RAM时将其转换为物理地址。应用程序只看到虚拟地址。这意味着应用程序代码中的所有内存引用都是指虚拟地址。
绝对地址:
绝对地址是指一个应用程序使用的寻址模式之一。因此,在提供虚拟内存的计算机中,“绝对地址”也是虚拟地址,因为所有应用程序代码都只会引用虚拟地址。其他寻址模式也使用虚拟地址。当然,正如我之前所写的那样,实际访问RAM时,虚拟地址最终映射到物理地址。
下面是“绝对地址”与其他寻址模式(其中之一是“相对地址”)不同的方式:
Intel的JMP
(跳转)指令可能会指定一个“相对跳转”,其中位移是相对于下一条指令的。类似于:
“跳转N个字节向前下一条指令” <- 这是基于PC(程序计数器)的寻址。
或者它可以与绝对地址一起使用,例如:
“跳转到存储器中的第N个字节” <- 这是绝对寻址。
在这两种情况下,被JMP
跳转引用的地址都是虚拟地址(在透明地映射到应用程序的物理地址)。