指令集與組合語言
RISC-V的虛擬指令「nop」(什麼都不做),實際上會被組譯器替換為下列哪一個指令?
- Aaddi x0, x0, 0
- Bjal ra, 0
- Clw x0, 0(sp)
查看答案與解析
正確答案:A. addi x0, x0, 0
RISC-V沒有「什麼都不做」的專用指令,nop以「addi x0, x0, 0」表示。由於寫入x0的內容會被捨棄,暫存器與記憶體都不會有任何改變。同樣地,「mv rd, rs」是「addi rd, rs, 0」,「j label」是「jal x0, label」,「ret」是「jalr x0, 0(ra)」。善用x0來減少指令的種類,是RISC-V的設計理念。
- A. 正確。是將結果捨棄到x0的加法。
- B. 會改寫ra,所以不是什麼都不做的指令。
- C. 因為會讀取記憶體,還可能引發例外。