新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 《Cortex-M0权威指南》之体系结构---栈空间操作

《Cortex-M0权威指南》之体系结构---栈空间操作

作者:时间:2016-12-26来源:网络收藏

  栈空间作为一种存储器使用机制,是“先入先出”的结构,在系统空间中用作临时数据的存储。栈空间操作的关键之一为栈指针,每次执行栈操作时,栈指针的内容会自动移动。在M0处理器中,栈指针为R13(SP),而且物理上存在两个栈指针,MSP,PSP,但每次只会使用一个,由CONTROL以及处理器的运行状态决定。

本文引用地址:http://www.eepw.com.cn/article/201612/342066.htm

  向栈中存入数据叫“压栈”(使用PUSH指令),回复数据叫“出栈”(使用POP指令)。根据架构不同,有些处理器压栈后地址增加,有些地址减小。操作基于“满递减”的栈模型,意味着栈指针始终指向栈空间最后一个数据,在执行存储数据PUSH前,栈指针先减小。

  PUSH和POP通常用在函数或子程序的开始和结尾处。在函数开始执行时,PUSH操作将的当前内容存入栈,执行结束前,POP又将栈空间的数据恢复。一般来说执行PUSH操作也要执行POP操作,否则恢复的数据可能无法对应之前的寄存器,这样导致无法预测的结果,比如栈溢出。

  栈操作的最小单位是4字节(32位),的栈空间被设计位字对齐,地址必须是4的整数倍。由于这个原因,栈指针的最低两位BITS[1:0]在硬件上被置为0,因此读书也为0.

  MSP用于普通程序,在由操作系统时,内核使用主栈指针MSP,用户使用进程栈指针PSP。

  MSP的初始化位于程序空间的开头部分,PSP没有进行初始化定义,它需要通过软件初始化。



关键词: Cortex-M0 寄存器

评论


相关推荐

技术专区

关闭