此问题在此处已有答案:
RISC-V build 32-bit constants with LUI and ADDI(4个答案)
昨天关门了。
我必须将十六进制0x1234ABCD存储到寄存器s0中,该寄存器从存储器地址0x300开始。
lui s0, 0x1234B
addi s0, s0, 0xFFFFFBCD
?????
我希望存储在s0 0x1234ABCD中,这样我就可以如下操作每个地址:地址0保持0x12,地址1保持0x34,地址2保持0xAB,地址3保持0xCD
此问题在此处已有答案:
RISC-V build 32-bit constants with LUI and ADDI(4个答案)
昨天关门了。
我必须将十六进制0x1234ABCD存储到寄存器s0中,该寄存器从存储器地址0x300开始。
lui s0, 0x1234B
addi s0, s0, 0xFFFFFBCD
?????
我希望存储在s0 0x1234ABCD中,这样我就可以如下操作每个地址:地址0保持0x12,地址1保持0x34,地址2保持0xAB,地址3保持0xCD
1条答案
按热度按时间imzjd6km1#
你需要
addi
0xBCD
部分。addi
允许12位立即数,因此0xBCD
适合-然而,它是有符号的12位立即数字段,因此添加的值将是0xFFFFFBCD
。因此,
lui
应该将20位值0x1234A
偏移+1,变为0x1234B
,以便符号扩展的addi
的高20位中的有效-1将被抵消。