contributed by <illusion030
>
做了 1: Stuck at 0 left of cut 的修改,sw $s1, 0($s2)
能否運作?這樣的修改會使得哪些程式無法運作,請列出至少兩項組合語言列表
1 是 pipeline 的 Write-back stage control line 中的 Reg-Write,cut 掉這條線影響到的有 R-type 的 instruction 跟 lw 因為他們兩個在 Reg-Write 要是 1 才會把資料寫回 Register,而 sw 是寫到 Memory 裡所以不受影響
Answer :
sw $s1, 0($s2)
不受影響
R-type 例如 add $0, $1, $2
和 lw 例如 lw $1, 0($2)
會無法運作
add $s1, $s1, $s1
add $s1, $t0, $t1
$s2
前把 $0, $1
加起來的值傳給下一行的 $s2
使用add $s2, $s0, $s1
add $s4, $s2, $t3
Answer :
add $s1, $s1, $s1
add $s1, $t0, $t1
可以運作,因為第二個指令的 Rs 跟第一個指令的 Rd 不一樣,所以 cut 掉第 2 條線沒有影響
addi $s2, $zero, 2
addi $s1, $zero, 2
beq $s2, $s1, exit
Answer :
無法運作
修改後版本 :
CMP:
xor $t1, $s2, $s1
slt $t2, $zero, $t1
sll $t2, 2
add $ra, $ra, $t2
jr $ra
addi $s2, $zero, 2
addi $s1, $zero, 2
jal CMP
j exit