2025-10-19
nemu的srai似乎有问题,平台选择riscv-nemu时,程序执行到下面代码处
0x80000094: slli a0,a0,0x18
0x80000098: srai a0,a0,0x18
执行前$a0的值为0x61,按理说执行完毕后$a0的值应该是0x00000061,但是通过调试器发现执行结束后$a0的值为0。
发现问题了,是提取立即数的时候出了问题。对于立即数型移位指令,指令中的[31:25]位不参与运算,slli指令的[31:25]为全0,srli指令的[31:25]为全0,srai指令的[31:25]为0100000