Cortex—M4 寄存器组

来源:互联网 发布:vim for mac os x 编辑:程序博客网 时间:2024/05/01 08:27

Cortex-M4

32

位处理器内核。该处理器包含以下

32

位寄存器:

 

 

13

个通用寄存器(

r0-r12

 

 

堆栈指针(

SP

),别名为

“banked”

寄存器。主堆栈指针

SP_main

和进

程堆栈指针

SP_process

 

 

连接寄存器

LR

r14

 

 

程序计数寄存器

(PC), r15 

 

特殊功能程序状态寄存器(

xPSR

 

下图给出了

Cortex-M4

处理器的寄存器组:

 

 

 

Cortex-M4

处理器的寄存器组

 

1.

 

R0

R12

是最具

“通用目的”的

32

位通用寄存器,用于数据操作。

部分能够访问通用寄存器的指令都可以访问

r0-r12

。其中:

 

 

低组寄存器(

r0-r7

)能够被所有访问通用寄存器的指令访问。

 

 

高组寄存器(

r8-r12

)能够被所有

32

位通用寄存器指令访问,而

不能被所有的

16

位指令访问。

 

2.

 

寄存器

r13

 

r14

 

r15

具有以下特殊功能:

 

 

堆栈指针——寄存器

r13

被用作堆栈指针(

SP

)。堆栈指针用于

访问堆栈,因为

SP

忽略写入到

[1:0]

位(即最低两位永远是

0

),

则堆栈是按照字对齐(

4

个字节对齐)。

 

主堆栈指针

SP_main

是复位后缺省使用的堆栈指针,

用于操作

系统内核以及异常处理例程(包括中断服务例程)。“

Handler

模式总是使用

SP_main

主堆栈指针,

但是你也可以配置成

Thread

模式来使用

SP_main

主堆栈指针或者

SP_process

进程堆栈指针。

 

 

连接寄存器——寄存器

r14

为子程序连接寄存器(

LR

)。当一个

Branch and Link (BL) 

 

Branch and Link with Exchange (BLX)

令被执行后,

LR

PC

获取返回地址。

 

LR

也被用于异常返回。

 

在其他情况下,你可以把

r14

当做一个通用寄存器。

 

 

程序计数寄存器——寄存器

r15

程序计数寄存器(

PC

)。指向

当前的程序地址。如果修改它的值,就能改变程序的执行流(很

多高级技巧隐藏其中)。该寄存器的

[0]

位永远为

0

则指令总

是按照字对齐或者半字对齐。

 

 

ARMv7-M Architecture Reference Manual

可获取更多信息。

原创粉丝点击