Re: [理工] 計組 94台大電機
※ 引述《RoyalCh (不想當小螺絲釘!)》之銘言:
: http://goo.gl/NhDf5
: 想問第八題的d小題
: 張凡的解答如下
: http://ppt.cc/zIbb
: 我劃掉的地方先無視
: 想問一下為什麼add跟addi要調換順序?
beq可能會跳到end執行下面這行
END: sw $t3 , 8($a0)
而這行會把 $t3 的值存到memory中
之所以要把add addi互換,就是delay branch裡面插入的指令要不會影響程式的結果
而原本的code
beq $t2 , $t0 , END
addi $t3 , $t3 , 1 //這行是delay branch slot 但他會改到$t3的值
add $t2 , $t2 , $t1 //這行就沒差 不會動到$t3
j loop
END: sw $t3 , 8($a0) //這是程式主要要輸出的結果,$t3是商數
所以把add addi對調,雖然在跳到end的時候 $t2會被多加一次,但不會影響程式正確性
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.169
推
12/28 14:37, , 1F
12/28 14:37, 1F
討論串 (同標題文章)