假设变量 x 表示的数组是一个从 address 开始的有符号整数数组,0x10010000
并将表达式的结果放入寄存器$t0
x[5] + x[8]
我想检查我的答案是如何完成的,或者我哪里出错了?感谢您的任何帮助/反馈。
lui $t1, 0x10010000
ori $t1, $t1, 0x00010100
lui $t2, 0x10010000
ori $t2, $t2, 0x00001001
add $t0, $t1, $t2
您的代码中有几个错误:
li $t1, 0x10010000
指令或两条指令来形成基地址(例如 alui
和 an ori
)。lui
将高 16 位设置为指令中的中间集,低 16 位将设置为零,ori
可用于设置低 16 位。但是,在您的示例中,较低的 16 位为零,因此将指令更改lui $t1, 0x10010000
为即可lui $t1, 0x1001
。lw
指令,例如:lw $t2, 20($t1)
阅读第五个元素1)我认为错误出现在第二个和第四个语句中。数字 0x00010100 是十进制的 65792。当您尝试访问数组中的第五个元素时,该数字应为 20 或 0b00010100 或 0x14。同样,第四条语句应该是 32 或 0x20。这个答案假设整数的大小是 4 个字节。
2)另外,您只是添加地址,而不是数据。您需要更改代码以从 $t1 和 $t2 寄存器中的地址给出的位置获取数据。由于这是家庭作业,我不想为您更改代码。