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的指令流水线

- 标题: ARM汇编笔记
- 作者: xiaoeryu
- 创建于 : 2021-05-24 16:20:34
- 更新于 : 2023-10-04 11:06:07
- 链接: https://github.com/xiaoeryu/2021/05/24/ARM汇编笔记/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论