指令集與組合語言
關於條件分支的機制,下列何者是RISC-V與x86的差異?
- ARISC-V查看旗標來分支,x86則由分支指令直接比較兩個暫存器
- B兩者都沒有條件分支的指令,而是以查表來決定跳躍目標
- CRISC-V由分支指令直接比較兩個暫存器,x86則查看比較指令所設定的旗標來分支
查看答案與解析
正確答案:C. RISC-V由分支指令直接比較兩個暫存器,x86則查看比較指令所設定的旗標來分支
在x86中,以「cmp eax, ebx」比較後會設定零或進位等旗標(條件碼),接著的「je」或「jl」查看旗標來分支。RISC-V沒有旗標,而是像「beq a0, a1, L」「blt a0, a1, L」這樣,由分支指令本身比較兩個暫存器。由於沒有旗標這種隱含的狀態,在重新排列指令或同時執行時,更容易追蹤相依關係。
- A. 正好相反。
- B. 兩者都有條件分支指令。
- C. 正確。RISC-V的比較與分支是一個指令。