簡體   English   中英

將MIPS程序集轉換為C

[英]Translating MIPS Assembly into C

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

不對 您忽略了$s3 假設:

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

您可能會遵循以下原則:

   a = a + b + c + d + e;
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

可能更好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM