指令集與組合語言
RISC-V的條件分支指令(B格式)以13位元帶正負號的位元組數表示到分支目標的距離,其最低位元永遠為0,不放入指令中。下列何者大致是分支指令可直接到達的範圍?
- A距分支指令前後約4KiB
- B距分支指令前後約1MiB
- C記憶體整體的任何地方都能到達
查看答案與解析
正確答案:A. 距分支指令前後約4KiB
13位元帶正負號的值可表示-4096~+4095,但指令是以2位元組為單位排列,所以最低位元永遠為0,範圍為-4096~+4094位元組。省略最低位元,就能以相同的欄位大小到達2倍的範圍。比這更遠的分支,組譯器會改寫成:以條件相反的短分支,跳過能到達遠處的jal(約±1MiB)。
- A. 正確。為-4096~+4094位元組。
- B. 約1MiB是jal指令(21位元)的範圍。
- C. 以有限的位元數無法到達整體。