如何解决C.LUI指令RISC-V的压缩子集的操作数是什么?
在RISC-V手册中,此说明的内容如下:
C.LUI将非零的6位立即数字段加载到目标寄存器的位17-12中,清除低12位,并将符号17符号扩展到目标的所有更高位中
据此我得出结论,立即数应为6位,但是随后我正在编译某些内容,并且可以编译此行,但立即数的宽度超过6位,因此感到困惑
c.lui x14,0xffff8
解决方法
c.lui将立即接受任何20位,只要所有5至19位具有相同的值(1或0)即可。
因此,基本上c.lui将接受介于0xfffe0和0xfffff之间的任何值以及介于1和0x1f之间的任何值。也不能接受0x0(请参见https://riscv.org//wp-content/uploads/2017/05/riscv-spec-v2.2.pdf)
以您的示例
c.lui a4,0xffff8将给出指令0x7761如果从该指令中提取12则立即数是0x38,则得到0x38000,然后在对它进行扩展签名时得到:0xffff8000
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。