ARM汇编笔记
ARM汇编的一些知识
寄存器数量
ARM处理器一共有37个32位寄存器。
30个为“通用“寄存器: r0-r14
未分组:r0-r7,即只有一个寄存器
分 组:r8-r14,即有多个同名寄存器
r8-r12 :两个
r13-r14:6个 r13(sp),R14(lr)
1个固定的程序计数器 : pc (又称r15)
6个为状态寄存器 : cpsr spsr
不能被同时访问,一种模式下最多同时访问18个寄存器
不同模式下访问的寄存器

寄存器用途
sp(r13) - 堆栈指针
lr(r14) - 连接寄存器
调用子程序时存放调用地址,存放返回地址
pc(r15) - 程序计数器,相当于windows的EIP
(1)跳转到指定地址
mov pc,lr// 直接修改pc ,完成跳转
bx lr // 跳转到 lr保存的地址
(2)在函数入口保存寄存器信息
stmfd sp!, {r11,lr} // 保存大括号中的寄存器到栈中,从右往左
(3)使用ldm指令修改pc,完成函数返回
ldmfd sp!, {r11,pc} // 将栈中数据依次加载到寄存器中,从左往右
cpsr – 当前程序状态寄存器
spsr–备份的程序状态寄存器
条件执行后缀

ARM的指令流水线

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xiaoeryu!
评论