[英]How do hardware recognizes RISC-V compressed instructions?
这是我第一次在 stackoverflow 上提问,我对这个问题做了一些搜索。 如果我遗漏了什么,请告诉我。
我想问一下硬件是怎么识别RVC指令的。
例如,我取了一条 32 位指令,想判断第一个 16 位是否是 RCV 指令。 我的问题是关于 LUI 指令。 LUI 以 20 位立即数开始。 由于立即数可以是任何数字,那么第一个 16 位立即数可以是 RVC 指令吗?
我怎么知道第一个 16 位是 RVC 指令还是只是 imm/func/.. 的一部分?
我取了一条 32 位指令,想判断第一个 16 位是否是 RCV 指令。 我的问题是关于 LUI 指令。 LUI 以 20 位立即数开始。 由于立即数可以是任何数字,那么第一个 16 位立即数可以是 RVC 指令吗?
您正在查看从最高有效位到最低有效位的编码,但对于 RISC V,这是倒退的。 从指令集的角度来看, LUI
从最低有效位“开始”并以最高有效位结束。 RISC V 上的位编号为 LSB 为 0,MSB 为 31(32 位时)。
RISC V 指令集是从小端角度定义的,因此指令中编号最低的字节使用相当简单的方案对指令的大小进行编码。 通常,前两位(最低位)指定 32 位或 16 位指令,但其他大小(如 48 和 64 及更大)也是可能的,并使用附加位。
在两位中,我们可以编码 4 个不同的值:一个用于 32 位指令,两个用于 16 位指令(它们很短,因此需要更多编码),一个用于两者都不是,用于48 位或更大的编码(然后使用更多位来表示实际长度)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.