這些從C等價物的MIPS翻譯之後?如果沒有,請詳細解釋。我的教授說第一版是正確的。如果我寫了類似於第二版的指令,即使它們產生相同的輸出,我也不會得到標記。她沒有解釋爲什麼。先謝謝你 !這兩個MIPS翻譯是否來自C等價物?
C代碼
if (i==j) { f = g + h ; } else f = g -h ;
MIPS版本一個:
bne $s3, $s4, Else
add $s0, $s1, $s2
j Exit
Else: sub $s0, $s1, $s2
Exit:...
MIPS版本二:
beq $s3, $s4, Else
sub $s0, $s1, $s2
j Exit
Else: add $s0, $s1, $s2
Exit:...
謝謝。我想我明白了。在某些情況下,它們可能不相同。如果輸入導致執行f = g + h的方式比f = g - h更頻繁。第二個版本可能會減慢這個過程,因爲他們不得不跳轉到else,而是在比較之後直接執行f = g + h。 – Snailwalker
是的,事情是,即使這些是相同的,做同樣的事情,他們不是相同的C代碼翻譯,但相當於你想翻譯C到MIPS ...很高興幫助! – coder