Android NDK系列(3) --- ARM寄存器
来源:互联网 发布:免费下载翻译软件 编辑:程序博客网 时间:2024/06/03 12:49
寄存器
ARM有17个寄存器,分别从R0 ~ R15、CPSR
其中有几个寄存器比较特殊,下面着重介绍一下:
R11 帧指针fp
R12 暂存sp
R13 栈寄存器 sp
堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。
R14 连接寄存器 lr
连接寄存器r14(LR):每种模式下r14都有自身版组,它有两个特殊功能。
(1)保存子程序返回地址。使用BL或BLX时,跳转指令自动把返回地址放入r14中;子程序通过把r14复制到PC来实现返回,通常用下列指令之一:
MOV PC, LR
BX LR
通常子程序这样写,保证了子程序中还可以调用子程序。
stmfd sp!, {lr}
……
ldmfd sp!, {pc}
(2)当异常发生时,异常模式的r14用来保存异常返回地址,将r14如栈可以处理嵌套中断。
R15 程序计数寄存器 pc
程序计数器r15(PC):PC是有读写限制的。当没有超过读取限制的时候,读取的值是指令的地址加上8个字节,由于ARM指令总是以字对齐的,故bit[1:0]总是00。当用str或stm存储PC的时候,偏移量有可能是8或12等其它值。在V3及以下版本中,写入bit[1:0]的值将被忽略,而在V4及以上版本写入r15的bit[1:0]必须为00,否则后果不可预测。
CPSR 标志寄存器
0 0
- Android NDK系列(3) --- ARM寄存器
- ANDROID NDK文档系列--(08)CPU ARM Neon
- LPC系列arm处理器UART控制寄存器
- ANDROID NDK文档系列--(一)Android NDK Overview
- ANDROID NDK文档系列--(03) NDK Development
- ANDROID NDK文档系列--(11)NDK Build
- ANDROID NDK文档系列--(12)NDK GDB
- ARM裸机开发笔记3(ARM寄存器)
- ARM高分笔记--(二)ARM寄存器
- 1.4.3 ARM寄存器介绍
- ANDROID NDK文档系列--(13)Prebuilts
- 二---Android-NDK系列文章(1)
- S5PV210系列(裸机二) ARM的编程模式、7种模式和37个寄存器
- ARM(Android NDK)混编C/C++汇编优化
- [Android]安全第三步,ARM寄存器
- ARM寄存器
- Arm寄存器
- ARM寄存器
- Spring源码分析【5】-Spring MVC处理流程
- HDU 2602Bone Collector(01背包)
- 欢迎使用CSDN-markdown编辑器---备忘
- 关于阻塞/非阻塞/同步/异步问题
- 共享内存
- Android NDK系列(3) --- ARM寄存器
- json C C++
- html, js 定时自动刷新本页
- 移植uboot第二步:分析uboot
- ubuntu 16.04.1设置静态ip、dns
- SQL注入攻击的防范
- ES6学习笔记2--解构赋值
- Android的activity双向跳转的详解
- insertSubview浅析