MIPS 加载字布局
MIPS Load Word Placing
我有一个关于从 MIPS 中的数组加载字的问题。
如果数组“A”以 100h 的内存位置开始,并且我想将这个词加载到寄存器中,如果我做这样的事情会没问题,
lw $t0, 0x100($t2)
尽管偏移位置是内存位置,偏移量 ($t2) 在基地址中?我看到它的方式是 $t2 + 0x100 与 0x100 + $t2。
或者是唯一正确的方法是做
lw $t0, $t2(0x100)
?
+
是可交换的,硬件只关心最终地址是什么。
asm 源语法只允许 constant(reg)
所以当然要写成 A($t2)
。
如果允许使用其他语法,则机器代码将是相同的; lw
指令只有一种形式,即带有寄存器和 16 位立即数的 I 型。
我有一个关于从 MIPS 中的数组加载字的问题。 如果数组“A”以 100h 的内存位置开始,并且我想将这个词加载到寄存器中,如果我做这样的事情会没问题,
lw $t0, 0x100($t2)
尽管偏移位置是内存位置,偏移量 ($t2) 在基地址中?我看到它的方式是 $t2 + 0x100 与 0x100 + $t2。 或者是唯一正确的方法是做
lw $t0, $t2(0x100)
?
+
是可交换的,硬件只关心最终地址是什么。
asm 源语法只允许 constant(reg)
所以当然要写成 A($t2)
。
如果允许使用其他语法,则机器代码将是相同的; lw
指令只有一种形式,即带有寄存器和 16 位立即数的 I 型。