指令集與組合語言

RISC-V的條件分支指令(B格式)以13位元帶正負號的位元組數表示到分支目標的距離,其最低位元永遠為0,不放入指令中。下列何者大致是分支指令可直接到達的範圍?

  1. A距分支指令前後約4KiB
  2. B距分支指令前後約1MiB
  3. C記憶體整體的任何地方都能到達
查看答案與解析

正確答案:A. 距分支指令前後約4KiB

13位元帶正負號的值可表示-4096~+4095,但指令是以2位元組為單位排列,所以最低位元永遠為0,範圍為-4096~+4094位元組。省略最低位元,就能以相同的欄位大小到達2倍的範圍。比這更遠的分支,組譯器會改寫成:以條件相反的短分支,跳過能到達遠處的jal(約±1MiB)。

  • A. 正確。為-4096~+4094位元組。
  • B. 約1MiB是jal指令(21位元)的範圍。
  • C. 以有限的位元數無法到達整體。
練習這個領域 前往領域頁面

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

  1. 下列何者是RISC-V指令「jal ra, func」的動作?
  2. RISC-V的虛擬指令「ret」,實際上是以下列哪一個指令執行的?
  3. 下列何者是制定呼叫慣例(calling convention)的主要目的?
  4. 在RISC-V的標準呼叫慣例中,下列何者是用於傳遞整數引數與回傳值的暫存器?
  5. 在RISC-V的標準呼叫慣例中,呼叫一個有10個整數引數的函式時,第9個與第10個引數是在哪裡傳遞?