指令集與組合語言

下列何者是RISC-V指令「slt t0, a0, a1」的動作?

  1. A將a0左移a1個位元後放入t0
  2. B若a0小於a1,就分支到t0的位址
  3. C若a0小於a1,就在t0放入1,否則放入0
查看答案與解析

正確答案:C. 若a0小於a1,就在t0放入1,否則放入0

slt(set less than)將兩個暫存器視為有號整數比較,較小時寫入1,否則寫入0。另有以無號數比較的sltu,以及與立即值比較的slti。當像C語言的「x = (a < b);」這樣把比較的結果當作值使用時,或是想消除分支而以計算表示條件時會用到。位移是sll,分支是blt等其他指令。

  • A. 左移是sll指令。
  • B. slt不會分支。
  • C. 正確。是set less than的縮寫。
練習這個領域 前往領域頁面

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

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