R13,栈指针(SP)
R13为栈指针,对栈空间进行存取操作(通过PUSH和POP指令),Cortex-M0在不同的物理地址上有两个栈指针,一个为主栈指针(MSP),也被称为SP_main,一个指针称为进程栈指针(PSP),也为称为SP_process,只能用在线程模式。可以通过CONTROL寄存器,选择使用那个栈指针。
在ARM处理器中,由于寄存器是32位的,所以PUSH和POP指令永远是32位操作,而且存取地址是32位字对齐(32位对齐)。在处理器上电过程中,中断向量表的头4字节会被去除(中断向量表在0x000000000地址),然后填充到MSP,作为MSP的初始值,PSP的初始值为定义。
一般使用操作系统是PSP进程栈指针才会被使用,这是因为操作系统内核的栈空间和线程级的应用程序的栈空间是相互独立的。
|