首页 >> 大全

刘帅嵌入式系统-ARM寄存器

2023-11-24 大全 30 作者:考证青年

ARM处理器有37个32bit的寄存器,如下。

-31个通用寄存器,包括1个用作PC指针。

-6个状态寄存器(寄存器都是32bit的,但目前只用了其中12bit)。1个用作CPSR(当前程序状态寄存器),5个用作SPSR(备份程序状态寄存器)。

注:不同的工作模式和处理器状态下,程序员了以访问的寄存器也不尽相同。

每种模式下可以访问的寄存器子集如下所示。

嵌入式寄存器_嵌入式存储器_

嵌入式存储器_嵌入式寄存器_

需要注意的是,系统模式和用户模式公用一套寄存器。

R13:一般为栈指针,用户也可以使用其他寄存器作为栈指针,但在Thumb指令集中,有一些指令强制性使用R13作为栈指针。

R14:为连接寄存器(Link ,LR),两种用法:

1、每一种处理器模式下物理地址R14存放当前子程序的返回地址。

2、当异常发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址。对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。

R15:程序计数器,又记作PC指针。虽然可以用作一般的通用寄存器使用,但是部分指令在使用R15时,有一些限制。当违反限制时,会发生不可预期的错误。

由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字节对齐的,PC值的第0位和第1位总为0。

cpsr:当前程序状态寄存器,可以在任何模式下被访问。包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。由于cpsr较为复杂,会在下次进行详细讲解。

spsr:备份程序状态寄存器,是cpsr的备份。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了