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