我已经查看了ISA规范,并在网上搜索了这个答案,但是我找不到它。RISC-V是否要求二进制补码或补码符号,还是由执行决定?
在RISC-V ISA中,负数应该用补码还是补码表示?或者,这个决定留给执行者了吗?
我问的原因是我写了一个RV32I模拟器,这会影响我如何在模拟内存中存储负数。
我已经查看了ISA规范,并在网上搜索了这个答案,但是我找不到它。RISC-V是否要求二进制补码或补码符号,还是由执行决定?
在RISC-V ISA中,负数应该用补码还是补码表示?或者,这个决定留给执行者了吗?
我问的原因是我写了一个RV32I模拟器,这会影响我如何在模拟内存中存储负数。
的user-level ISA manual(第13页)指出,按位NOT rd, rs1
可以通过XORI rd, rs1, -1
进行,这将意味着补,如果我没有看到的东西:用-1的补异或不会反转至少显著位,而它可以正确使用二进制补码。
RISC-V架构需要二进制补码整数运算。这可以从它指定单个加法指令而不是一对有符号和无符号加法指令这一事实中直接看出。在二进制补码运算中,有符号和无符号加法是相同的操作;在补码(和符号幅度)中它们是不相同的。
在我看来,略读了体系结构手册,认为作者认为选择二进制补码整数运算太明显,以至于无法提及。至少有25年没有使用任何其他产品的CPU。