RISCV的指令被解码为32位。当需要从输入中获取已解码指令的某些部分时,点“.”用作每个位的占位符。但是,有些指令的解码版本中包含“-”。那么“-”实际上是什么意思?
以下指令为例:
vlxei8_v ... 0-1 . ..... ..... 000 ..... 0000111 @r_nfvm
,从左到右数,第五位是'-',这是什么意思?
decodetree 文件格式记录在 QEMU 文档的开发人员信息部分中: https://www.qemu.org/docs/master/devel/decodetree.html
也就是说:
'.' 和 '-' 之间的区别在于,'.' 表示该位将被模式中的字段或最后的 0 或 1 覆盖,而 '-' 表示该位确实被 cpu 忽略并且不会被指定。
基本上,如果您将某个位标记为“。”,代码生成器会抱怨。然后不要使用它(通过在其他地方指定它始终为 0 或 1 或通过指定它是命名字段的一部分)。 '-' 存在于偶尔情况下,其中该位的值实际上并不重要。