指令集與組合語言
在RISC-V中以lui與addi兩個指令產生常數0x12345FFF時,正確的組合是下列何者?
- Alui t0, 0x12346 之後接 addi t0, t0, -1
- Blui t0, 0x12345 之後接 addi t0, t0, 0xFFF
- Clui t0, 0x12345 之後接 addi t0, t0, -1
查看答案與解析
正確答案:A. lui t0, 0x12346 之後接 addi t0, t0, -1
addi的立即值會被符號擴充,所以當低12位元為0xFFF(最高位元為1)時,會被當成-1來相加。因此將lui產生的高位部分改為大1的0x12346,再對0x12346000加上-1,就得到0x12345FFF。當低12位元的位元11為1時,須事先在高位加1,這種修正由組譯器與連結器自動進行。
- A. 正確。0x12346000-1=0x12345FFF。
- B. 12位元的0xFFF會被符號擴充,以-1相加。
- C. 0x12345000-1=0x12344FFF,結果會不對。