我知道内存中的寄存器是32位。我也明白lb会将内存中的内容加载到寄存器的低8位,如果我做了
lb $t1, $a3
lb $t1, 4($a3)
第二个lb命令将覆盖第一个中加载的内容。但是,有没有办法写入寄存器的第二个字节(从内存中的不同部分加载,所以不是彼此相邻的两个字节)并保留第一个字节的信息?
答案 0 :(得分:0)
我假设您要使用的是lbu
(加载字节无符号)而不是lb
因为您不希望寄存器符号扩展(例如复制字节{寄存器中的{1}}将导致AA
,而不是000000AA
)。
如果要写入寄存器的第二个字节,可以先使用FFFFFFAA
将字节从存储器加载到另一个寄存器,然后向左移8位,并{{ 1}}它到原始寄存器。
例如:
lbu