繁体   English   中英

C.LUI 指令(RISC-V 的压缩子集)的操作数是什么?

[英]What are the operands of C.LUI instruction(compressed subset of 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 从这条指令中提取的立即数是 0x38 如果你将它移位 12 你会得到 0x38000 之后当你签署扩展它你会得到:0xffff8000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM