嗨,我正在尝试存储一个数字用于除法目的,但当我尝试汇编程序时,我收到此错误
“10000”:操作数超出范围
有问题的代码如下所示
addi t1, zero, 10000
这行代码确实适用于较小的数字,1-2047 可以使用 2048-4095
无符号值太大,无法放入符号扩展立即数
以及更大的数字给出相同的错误消息
立即值(例如您尝试写入寄存器文件的值)具有由指令格式定义的固定位长度。 请参阅官方 RISC-V 规范中的第 2.2 节以获得漂亮的图表。
在 RV32I 中,像
addi
这样的 I 型指令具有 12 位立即数,这意味着它们可以表示 4096 (2^12)。您始终可以向左移动位并向其添加另一个值以创建更大的值。