我正在从库文件中学习ARM Assembly。我正在查看一些随机函数,我发现这些加载指令,我不理解它们的语法。
就是这样:
LDRMIB R1, [R5, R3]
LDRMIB.W R2, [R2, #-0x24]
LDRPLB.W R1, [R2, #-0x24]
LDRPLB R2, [R5, R3]
与原始LDR指令有什么不同?
先谢谢
答案 0 :(得分:1)
您正在寻找具有pre-UAL语法的代码段,不要为了学习目的而这样做。
来自ARM ARM:
LDRMIB
- > LDR
MI
B
加载,减号/负数,字节
LDRPLB
- > LDR
PL
B
加载,加号,正数或零,字节(这是UAL之前的语法),使用UAL时,应该读取LDRBPL
。
加载寄存器字节(寄存器)根据基址寄存器值和偏移寄存器值计算地址,加载a 来自内存的字节,对其进行零扩展以形成一个32位字,并将其写入寄存器。
LDRMIB.W
- > LDRMIB
,.W
用于将指令编码为32位。