物理地址和绝地地址有什么区别?

scd*_*dmb 4 memory x86

它们似乎都明确指定了真实的内存位置.物理地址和绝地地址有什么区别?

Arj*_*kar 11

物理地址(又名真实交易):

物理地址是传送数据时向和从RAM使用的总线的电路(因此是"物理")的地址.

它的对应物是" 虚拟地址 ",即在具有虚拟内存的计算机中,虚拟地址由应用程序使用,并在实际访问RAM时转换为物理地址.应用程序只能看到虚拟地址.这意味着应用程序代码中的所有内存引用都指虚拟地址.

绝对地址:

绝对地址实际上是在引用应用程序使用的寻址模式之一时使用的术语.因此,在提供虚拟内存的计算机中,该"绝对地址" 也是虚拟地址 - 因为所有应用程序代码仅涉及虚拟地址.其他寻址模式也使用虚拟地址.当然,就像我之前写的那样,虚拟地址最终会在访问RAM时映射到物理地址.

以下是"绝对地址" 与其对应物的不同之处- 其他寻址模式(其中一种是"相对地址"):

英特尔JMP(跳转)指令可以指定"相对跳转",其中位移相对于下一条指令.就像是:

" 在下一条指令之前跳转N个字节" < - 这是PC相对寻址.

或者它可以与绝对地址一起使用,例如:

"跳转内存中第N个字节" < - 这是绝对寻址.

在这两种情况下,JMPs 引用的地址都是虚拟地址(以对应用程序透明的方式映射到物理地址)