将MIPS汇编转换为C语言

时间:2013-10-28 03:31:37

标签: c assembly mips

add $s0, $s0, $s1
add $s0, $s0, $s2
add $s0, $s0, $s3
add $s0, $s0, $s4

没有给出其他说明,所以我只假设$ s0 = a,$ s1 = b,$ s2 = c,$ s4 = d。这就是我对翻译过的C代码的看法,但我不确定它是否正确。

a=a+b+c+d

2 个答案:

答案 0 :(得分:1)

这不正确。你遗漏了$s3。假设:

 register  variable
   $s0        a
   $s1        b
   $s2        c
   $s3        d
   $s4        e

你有以下几点:

   a = a + b + c + d + e;

答案 1 :(得分:-1)

add $s0, $s0, $s1 # $s0 = $s0 + $s1
add $s0, $s0, $s2 # $s0 = $s0 + $s2 (= $s0 + $s1 + $s2)
add $s0, $s0, $s3 # $s0 = $s0 + $s3 (= $s0 + $s1 + $s2 + $3)
add $s0, $s0, $s4 # $s0 = $s0 + $s4 (= $s0 + $s1 + $s2 + $s3 + $s4)

因此上面的代码将执行

$s0 += $s1 + $s2 + $s3 + $s4;

作为旁注,上面的代码引入了不必要的依赖关系,这可能会导致执行速度变慢,因为指令无法并行运行。将说明重新排序为

add $t0, $s0, $s1
add $t1, $s2, $s3
add $s0, $s4, $t0
add $s0, $s0, $t1

可能会更好