【发布时间】:2013-03-06 01:01:43
【问题描述】:
谁能解释一下在以下问题的上下文中高地址和低地址是什么意思?:
根据定义,“高”地址是那些大的无符号数字,“低”地址是那些小的无符号数字。
使用位于物理内存地址0x320ACB48 的beq(相等分支)指令可以将控制权转移到的最高地址是什么?
【问题讨论】:
标签: assembly mips memory-address
谁能解释一下在以下问题的上下文中高地址和低地址是什么意思?:
根据定义,“高”地址是那些大的无符号数字,“低”地址是那些小的无符号数字。
使用位于物理内存地址0x320ACB48 的beq(相等分支)指令可以将控制权转移到的最高地址是什么?
【问题讨论】:
标签: assembly mips memory-address
答案取决于特定的 MIPS 芯片及其 MMU(如果有)。
32 位指令的有效地址为 0 到 4GB-4。但是,如果内存不在整个范围内,或者如果存在内存映射设备,或者如果您启用了虚拟到物理地址的转换,您将根本无法在任意位置或有意义的位置执行代码方式。
如果您将控制权转移到未由内存备份的位置,则会执行垃圾。这同样适用于将控制权转移到代表某些内存映射设备的寄存器或数据缓冲区的位置。
如果页面翻译设置为限制对特定地址区域的访问或不允许在那里执行,则您根本无法在这些区域执行任何操作。
现在,beq 也有一个限制,它可以将控制权从它 (beq) 所在的位置转移到多远。 beq 只能将控制权转移到其位置 +/- 大约 217 个字节 (=128KB)。
因此,理论上,位于 0x320ACB48 的 beq 可以将控制权转移到从 0x320ACB48 + 4 - 32768*4 到 0x320ACB48 + 4 + 32767*4 的任何位置(即 4 的倍数)。
如果beq 位于地址 0 附近,则它可能能够将控制权转移到 4GB 附近,除非 CPU 禁止回绕地址。同样,如果beq 接近 4GB 点,它可能
能够将控制权转移到地址 0 附近,除非 CPU 再次禁止地址换行。
【讨论】: