Arm汇编寻址方式&工作模式

 

目录

Arm汇编寻址方式

Arm处理器工作模式

异常返回


Arm汇编寻址方式

8种寻址方式:

  • 寄存器寻址           mov r0, r1
  • 立即数寻址               mov r0, #0xff
  • 寄存器移位寻址        mov r0, r1, lsl #3
  • 寄存器间接寻址        ldr r1, [r2]
  • 基址变址寻址          ldr r1, [r2, #4]
  • 多寄存器寻址          ldmia r1!, {r0-r7, r12}
  • 堆栈寻址                  ldmfd sp!, {r0-r12, pc}^
  • 相对寻址(全局符号)           b label

立即数注意事项:

  • =immed_8循环右移(2*rotate_imm)

immediate  :  立即数

immed_8    :  8位的常数

rotate_imm :  4位的循环右移值

  • 每个立即数都是由一个8位的常循环右移偶数位得到
  • 有效立即数:  小于0xff 或 通过 小于0xff常循环右移偶数位 得到的数

0x83;        0b10000011 是一个8位数

0x20c        0b1000001100 可由0x83右移30位获得

 

  • 无效立即数:

例:10 1000 0010b  ---  最高与最低的1相差 9

Arm处理器工作模式

Arm汇编寻址方式&工作模式_第1张图片

  • User:用户模式
  • FIQ:(fast interrupt request)快速中断请求模式
  • IRQ:(interrupt request)中断请求模式
  • SVC:(supervisor)管理模式,当复位或软中断时进入这种模式
  • Abort:中止模式,取址异常时进入这种模式
  • Undef:未定义模式,执行未定义指令进入这种模式
  • System:系统模式,使用和User相同寄存器集的特权模式

异常返回

Arm汇编寻址方式&工作模式_第2张图片

 IRQ中断的返回

sub  lr,lr,#4

stmfd  sp!,{r0-r12,lr}

bl  irq_handler

ldmfd  sp!,{r0-r12,pc}^

你可能感兴趣的:(ARM)