好的,所以我必须将以下 C 代码段转换为 MIPS 程序集。
f = k + A[5]
问题告诉我 f 存储在寄存器 $s3 中,k 在 $s2 中,数组 A 的基地址是 $s4。这就是我的回答:
添加 $s3、$s2、$s4
这个对吗?我必须对数组中的 5 做任何特别的事情吗?我对 MIPS 很陌生,所以如果非常感谢,任何和所有的帮助。
你在做这个家庭作业吗?如果是这样,您实际上是在编写一个可执行程序还是只是在回答一系列问题?
无论哪种方式是的,您都需要考虑数组中的 5。问题是告诉您$s4
指向数组的基地址,而不是第 5 个索引。
提示:A[0] 将与数组的基地址位于同一地址。
试试这个。(在我的头顶上)。记住每个索引是 * 4。
li $t2, 6 # init 6 to $t2
addi $t2, $t2, $t2 # $t2 * 2
addi $t2, $t2, $t2 # $t2 * 2
addi $t1, $t2, $s4 # A[6 * 4]
lw $t4, 0($t1) # load A[6] int $t4
addi $s3, $s2, $t4 # obtain f