Android Security

ARM汇编中的一些规则

2017-08-17  本文已影响17人  Arnow117

APSR状态寄存器

.W扩展

指令集规则

MNEMONIC{S}{condition} {Rd}, Operand1, Operand2

条件执行

IT{x{y{z}}} cond TE代表条件相反

栈与栈帧

默认满栈降序规则,即PUSH先减后放,POP先取后加。
栈帧寄存器指向函数前序期压栈保存寄存器前的栈底。一般先压LR后R11(FP),之后才申请栈上空间(即减SP)。结束时直接依据FP恢复LR以及上层FP。

关于STM,LDM

IA为后序递增,DA为后序递减,后序就是存取操作后再移动指针。注意递减时,寄存器访问也是降序的。因为ARM中高地址内存一般与高序号的寄存器关联

偏移以及取址模式

如何区分取址模式:

  1. 如果有一个叹号!,那就是索引前置取址模式,即使用计算后的地址,之后更新基址寄存器
ldr   r3, [r1, #4]!
ldr   r3, [r1, r2]!
ldr   r3, [r1, r2, LSL#2]!
  1. 如果在[]外有一个寄存器,那就是索引后置取址模式,即使用原有基址寄存器重的地址,之后再更新基址寄存器
ldr   r3, [r1], #4
ldr   r3, [r1], r2
ldr   r3, [r1], r2, LSL#2
  1. 除此之外,就都是偏移取址模式
ldr   r3, [r1, #4]
ldr   r3, [r1, r2]
ldr   r3, [r1, r2, LSL#2]
上一篇 下一篇

猜你喜欢

热点阅读