高与低内存地址和分支

时间:2013-03-06 01:01:44

标签: assembly mips memory-address

任何人都可以解释一下,在下列问题的背景下,高地址与低地址的含义是什么?:

根据定义,“高”地址是大的无符号数,而“低”地址是小无符号数。

使用驻留在物理内存地址beq的{​​{1}}(相等分支)指令可以传输控制的最高地址是什么?

1 个答案:

答案 0 :(得分:2)

答案取决于特定的MIPS芯片及其MMU(如果有的话)。

32位指令的有效地址为0到4GB-4。但是,如果内存不在整个范围内,或者存在内存映射设备,或者启用了虚拟到物理地址转换,则无法在任意位置或有意义的位置执行代码方式。

如果将控制权转移到未由内存备份的位置,则执行垃圾。这同样适用于将控制转移到代表某些存储器映射设备的寄存器或数据缓冲区的位置。

如果页面翻译的设置方式限制了对特定地址区域的访问或不允许在那里执行,则根本不能在这些区域执行任何操作。

现在,beq在限制转移控制的位置(beq)本身也存在限制。 beq只能将控制转移到其位置+/-大约2 17 字节(= 128KB)。

因此,理论上,位于0x320ACB48的beq可以将控制权从0x320ACB48 + 4 - 32768 * 4转移到任何位置(即4的倍数)到0x320ACB48 + 4 + 32767 * 4.

如果beq位于地址0附近,它可能能够将控制转移到接近4GB,除非CPU禁止包裹地址。同样,如果beq接近4GB点,则可能 能够将控制转移到近地址0,除非再次禁止地址包装。

相关问题