《Cortex-M0权威指南》之体系结构---栈空间操作
转载请注明来源:cuixiaolei的技术博客
栈空间作为一种存储器使用机制,是“先入先出”的结构,在系统空间中用作临时数据的存储。栈空间操作的关键之一为栈指针寄存器,每次执行栈操作时,栈指针的内容会自动移动。在M0处理器中,栈指针为R13(SP),而且物理上存在两个栈指针,MSP,PSP,但每次只会使用一个,由CONTROL寄存器以及处理器的运行状态决定。

向栈中存入数据叫“压栈”(使用PUSH指令),回复数据叫“出栈”(使用POP指令)。根据架构不同,有些处理器压栈后地址增加,有些地址减小。Cortex-M0操作基于“满递减”的栈模型,意味着栈指针始终指向栈空间最后一个数据,在执行存储数据PUSH前,栈指针先减小。
PUSH和POP通常用在函数或子程序的开始和结尾处。在函数开始执行时,PUSH操作将寄存器的当前内容存入栈,执行结束前,POP又将栈空间的数据恢复。一般来说执行PUSH操作也要执行POP操作,否则恢复的数据可能无法对应之前的寄存器,这样导致无法预测的结果,比如栈溢出。

栈操作的最小单位是4字节(32位),Cortex-M0的栈空间被设计位字对齐,地址必须是4的整数倍。由于这个原因,栈指针的最低两位BITS[1:0]在硬件上被置为0,因此读书也为0.
MSP用于普通程序,在由操作系统时,内核使用主栈指针MSP,用户使用进程栈指针PSP。
MSP的初始化位于程序空间的开头部分,PSP没有进行初始化定义,它需要通过软件初始化。
《Cortex-M0权威指南》之体系结构---栈空间操作的更多相关文章
- 读<jquery 权威指南>[1]-选择器及DOM操作
今天是小年了,2013马上要过去了,但是学习不能间断啊.最近正在看<jQuery权威指南>,先温习一下选择器和DOM操作. 一.基本选择器 1.table单双行: $(function ( ...
- ARM Cortex-M0权威指南高清中文版pdf免费分享下载
版 次:1 页 数:433 字 数:655000 印刷时间:2013-8-1 开 本:16开 纸 张:胶版纸 印 次:1 包 装:平装 丛书名:清华开发者书库 国际标准书号ISBN:978730233 ...
- 跟小静读《jQuery权威指南》——目录
前言 2014年开始了,年底给自己制订的学习计划,第一步先从学习<jQuery权威指南>开始. jQuery大家都很比较熟悉,但是我经常是边用的时候边对照着API,这次找本书通读一遍,记录 ...
- 《Cortex-M0权威指南》之体系结构---系统模型
转载请注明来源:cuixiaolei的技术博客 Cortex-M0体系结构包括:系统模型.存储器映射.异常中断.这篇文章主要讲解Cortex-M0的系统模型. 操作模式和状态 如上图所示,Cortex ...
- IDA Pro 权威指南学习笔记(十) - 栈帧
栈帧(stack frame)是在程序的运行时栈中分配的内存块,用于特定的函数调用 如果一个函数没有执行则不需要内存,当函数被调用时就需要用到内存 1.传给函数的参数的值需要存储到函数能够找到它们的位 ...
- 《Java性能优化权威指南》
<Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...
- 【笔记】javascript权威指南-第三章-类型,值和变量
javascript中的原始类型和对象类型(基本类型和引用类型) //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.27 计算机程序运行时需要对值(value ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- 《果壳中的C# C# 5.0 权威指南》 - 学习笔记
<果壳中的C# C# 5.0 权威指南> ========== ========== ==========[作者] (美) Joseph Albahari (美) Ben Albahari ...
随机推荐
- manacher算法(转载)
原网址:http://blog.sina.com.cn/s/blog_70811e1a01014esn.html manacher算法是我在网上无意中找到的,主要是用来求某个字符串的最长回文子串.不过 ...
- POJ1185状态压缩DP
难得的中文题. POJ1185http://poj.org/problem?id=1185 方法就是用DP[i][r][p]表示第i行状态为r,第i-1行状态是p时的最多个数.而这里p受到r的限制,而 ...
- oracle客户端安装及Plsql devloper连接
1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0)下载instantclient-basic-win ...
- Spring REST实践之Spring Web MVC
Spring概要 Spring Framework提供了依赖注入模型和面向切面编程,简化了基础型代码的编写工作以及更好的能够与其它框架和技术整合起来.Spring Framework由data acc ...
- EasyMock使用手记
from:http://www.blogjava.net/supercrsky/articles/162766.html Mock 对象能够模拟领域对象的部分行为,并且能够检验运行结果是否和预期的一致 ...
- fastJson泛型如何转换
引子 现在负责的业务 和 json 打交道比较多, 最近使用fastJson框架 json串转成泛型对象遇到了一个异常 : java.lang.ClassCastException 还原下场景 : 模 ...
- .NET开发中的事务处理大比拼
本文转载:http://www.cnblogs.com/jhxk/articles/2696307.html http://liubaolongg.blog.163.com/blog/static/2 ...
- Hello OSGI --- Apache Felix
Apache Felix Felix是一个OSGi版本4规范的Apache实现. OSGi是一个基于Java的服务平台规范,其目标是被需要长时间运行.动态更新.对运行环境破坏最小化的系统所使用.有许多 ...
- 【转载】Fragment 全解析(1):那些年踩过的坑
http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使 ...
- 查看系统和PowerShell版本
查询PowerShell当前版本$psversiontable.BuildVersion.Major 查询Windows当前版本:[System.Environment]::OSVersion.Ver ...