指令集與組合語言
在64位元的RV64I中執行lw指令時,讀入的32位元值是如何放入64位元暫存器的?
- A高32位元保持原本的值,只有低32位元被改寫
- B永遠被零擴充為64位元
- C被符號擴充為64位元(要零擴充則使用lwu)
查看答案與解析
正確答案:C. 被符號擴充為64位元(要零擴充則使用lwu)
RV64I的lw會將32位元的值符號擴充後放入64位元暫存器,以無號數讀取的lwu則以0填補高位。若讓高位保持原本的值,會產生對原值的相依,妨礙亂序執行,所以RISC-V不這麼做。針對32位元的運算,有addw等附有「w」的指令,會將結果當作32位元計算後再符號擴充。
- A. RISC-V不會讓高位保持原本的值。
- B. 零擴充是lwu指令。
- C. 正確。視為有號的32位元值處理。