MIPS从地址加载值

问题描述

我正在学习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中)您将能够看到。