问题描述
我正在学习MIPS汇编语言,我想知道如何从地址中加载值。例如,我想在$ t2中存储内存地址0x10010000。 0x10010000的值是12,33,70,70(0x10010000-0x10010003)。 0x10010004应该像F4,A6,12,99((0x10010004-0x10010007)。
我到目前为止有这个
add $t3,$t2,$zero
lw $t4,0($t3)
add $t5,$t4,-6
sw $t5,4($t2)
但是不知道我将如何“初始化” $ t2
解决方法
在数据上添加标签,然后使用la $t2,labelName
。
或者,您可以使用0x10010000
将$t2
加载到lui
中,这会将16位值的常量加载到寄存器的上部—在这里您将使用{{1} }。
如果对于低16位您需要非零(例如,对于lui $t2,0x1001
),请在0x10010400
之后用lui
(例如,{{1 }}。
此外,ori
是伪指令。通常它将扩展为两个指令,并且在汇编代码时(例如,在MARS或QtSPIM中)您将能够看到。