在RISC-V手册中,对这一指令的书写如下:
C.LUI将非零6位直接字段加载到目标寄存器的第17位- 12位,清除下12位,并将符号扩展位17加载到目标的所有较高位中。
由此,我得出结论,即时应该是6位,但是后来我正在编译一些东西,这行可以编译,但是它的宽度超过6位,所以我对c.lui x14,0xffff8
感到困惑。
发布于 2020-09-14 11:57:38
只要所有位5到19具有相同的值(1或0),c.lui将立即接受任何20位。
因此,基本上c.lui将接受0xfffe0到0xfffff之间的任何值,以及1到0x1f之间的任何值。也不接受0x0 (参见https://riscv.org//wp-content/uploads/2017/05/riscv-spec-v2.2.pdf)
用你的例子
c.lui a4,0xff8将给出指令0x7761,从该指令中直接提取的指令为0x38,如果将其移至12,则得到0x38000,在此之后,当您签名扩展它时,您将得到:0xff8000。
https://stackoverflow.com/questions/63881445
复制相似问题