SuperH汇编是否支持将变量内容直接移入寄存器?
SH-1/SH-2/SH-DSP 内存字节变量直接加载到寄存器的指令支持确认
假设已定义如下字节变量:
myvar: .byte 0x20
若尝试通过如下指令直接将变量内容(0x20)移入寄存器:
mov.b (myvar), r4
查阅SH-1/SH-2/SH-DSP官方编程手册后,可以明确该操作不被指令集支持。
SH架构的mov.b指令在实现内存到寄存器的字节传输时,仅支持寄存器间接寻址(如mov.b @r0, r4),无法直接使用符号地址作为内存操作数。如果需要加载myvar的内容到寄存器,正确的做法是先将变量地址加载到某个通用寄存器,再通过间接寻址完成读取,示例如下:
mov.l #myvar, r0 ; 将myvar的地址加载到r0寄存器 mov.b @r0, r4 ; 通过r0间接读取myvar的内容到r4寄存器
内容的提问来源于stack exchange,提问作者gfdjjrtiejo
相关产品推荐
相关产品推荐

