指令集與組合語言

關於條件分支的機制,下列何者是RISC-V與x86的差異?

  1. ARISC-V查看旗標來分支,x86則由分支指令直接比較兩個暫存器
  2. B兩者都沒有條件分支的指令,而是以查表來決定跳躍目標
  3. 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的比較與分支是一個指令。
練習這個領域 前往領域頁面

指令集與組合語言的其他題目

  1. 下列何者是RISC-V指令「slt t0, a0, a1」的動作?
  2. 執行完上述RISC-V程式碼時,t0的值是多少?
  3. RISC-V的條件分支指令(B格式)以13位元帶正負號的位元組數表示到分支目標的距離,其最低位元永遠為0,不放入指令中。下列何者大致是分支指令可直接到達的範圍?
  4. 下列何者是RISC-V指令「jal ra, func」的動作?
  5. RISC-V的虛擬指令「ret」,實際上是以下列哪一個指令執行的?