【发布时间】:2021-06-16 23:46:27
【问题描述】:
假设变量f, g, h, i, and j分别分配给寄存器$s0, $s1, $s2, $s3, and $s4。假设arrays A的基地址在寄存器$s6.中
if (f==g)
A[4] = f+g;
else if (f == h)
A[4] = A[h] + f;
else
A[i] = g-h;
我正在尝试将上述 C++ 代码转换为 MIPS。这是我所做的:
.data
.text
main:
beq $s0,$s1,if #if $s0 = $s1 go to then
beq $s0,$s2,elseif
#else statement
sub $t0, $s1, $s2 # $t0 = g - h
sll $t1, $s3, 2 # Calculating offset
add $t2, $t1, $s6 # $t2 = offset + base
sw $t3, 0($t2)
if: #if statement
add $t0, $s0, $s1 # $t0 = f + g
sw $t0, 16($s6) # A[4]
j exit #jump to exit
elseif: #elseif statement
sll $t1,$s2,2 # Calculating offset
add $t2,$t1,$s6 #t2 = offset + base
lw $t3,0($t2) # t3 = A[h]
add $t0,$t3,$s0 # $t0 = A[h] + f
exit:
如果改正了,有人可以看看吗? 非常感谢
【问题讨论】:
-
“有人可以看看它是否得到纠正” 这应该很容易让您使用可用的 MIPS 模拟器(QtSPIM、MARS 等)之一来验证自己)。