指令集與組合語言

在64位元的RV64I中執行lw指令時,讀入的32位元值是如何放入64位元暫存器的?

  1. A高32位元保持原本的值,只有低32位元被改寫
  2. B永遠被零擴充為64位元
  3. 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位元值處理。
練習這個領域 前往領域頁面

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

  1. 下列何者是對ABI(應用程式二進位介面)的正確說明?
  2. 使用C語言函式指標的呼叫「(*fp)(x)」,在RISC-V中一般是以下列哪個指令進行?
  3. 關於採用相同指令集架構(ISA)的兩顆CPU,下列何者正確?
  4. 下列何者是RISC-V這類載入/儲存架構(load-store architecture)的特徵?
  5. 下列何者是RISC-V暫存器x0(zero)的性質?