cpu.h-栈的宏定义-满减栈
常常两两相对的东西,整一起后有点记不住,就写下来。
cpu.h中有宏定义使用哪种栈。
#define OS_STK_GROWTH 1 /* Stack grows from HIGH to LOW memory on ARM */
栈的四种
满栈:"满"字表示栈是满的,没有空位,所以栈指针指向栈的最后一个元素。我们入栈时要先移动SP再存数据,出栈时先取数据SP指针再移动。
空栈:"空"字表示栈是有个空位的。所以栈指针指向栈的最一个元素后面的第一个空位。我们入栈时直接存入数据,再移动SP。出栈时,先移动SP再取出数据。
増栈:"増"字表示往地址较大的方向。所以,栈底在低内存地址处,入栈时候的栈指针SP向内存地址较大的方向移动。
减栈:"减"字即减小,表示往地址较小方向。栈底在高内存地址处,入栈时指针SP向内存底子较小的方向移动。
表格表示:
类型 | SP指针 | 存数据 | 取数据 |
---|---|---|---|
满栈 | SP指向满栈(最后一个元素) | 先移动再存放 | 直接取数据后移动 |
空栈 | SP指向空位(最后元素的后一个空位) | 直接存放后移动 | 先移动再取 |
类型 | 栈底 | 栈指针移动方向 |
---|---|---|
増栈 | 低内存地址 | 栈指针移动方向为地址增加方向 |
减栈 | 高内存地址 | 栈指针移动方向为地址减小方向 |
在ARM中一般为满减栈
cpu.h-栈的宏定义-满减栈相关推荐
- signal.h 中的宏定义 SIG_DFL 及 SIG_IGN
SIG_DFL.SIG_IGN 分别表示无返回值的函数指针,指针值分别是 0 和 1 .这两个指针值逻辑上讲是实际程序中不可能出现的函数地址值. SIG_DFL:默认信号处理程序 SIG_IGN:忽略 ...
- 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 宏定义是写在.h文件里还是.c文件里
宏定义是写在.h文件里还是.c文件里? 1.不管是定义在.h文件还会.c文件,程序都会正常运行. 2.如果.h中不需要用到的宏,都定义到.c里,因为等一个工程里需要include多个.h的时候,你在. ...
- C语言编程宏定义的优缺点,C语言重要知识点总结(二)--内存结构、函数调用过程(栈帧)、宏的优缺点以及##和#的使用...
一.内存结构 内存大致可以分为四个部分:代码段,静态存储区,堆,栈. 具体划分如下图所示: 栈:在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束后会自动释放内存.栈内存的分配运算 ...
- 6、宏定义与预处理、函数与函数库
C语言预处理理论 由源码到可执行程序的过程 源码.c->(编译)->elf可执行程序 源码.c->(编译)->目标文件.o->(链接)->elf可执行程序 源码.c ...
- Linux宏定义实现类成员函数,全面解析Linux内核的同步与互斥机制
http://blog.csdn.net/sailor_8318/archive/2008/06/30/2599357.aspx [摘 要]本文分析了内核的同步及互斥的几种机制:原子运算符(atomi ...
- C中的预编译宏定义-转
C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocesso ...
- C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...
- c语言如何增加编译宏,C中的预编译宏定义
在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏( ...
最新文章
- c++ocx交互检测弹框_吉利几何C:2022杭州亚运会移动“明信片”!
- Tomcat - Tomcat 8.5.55 启动过程源码分析阶段二_load加载初始化
- python随机数种子通俗_随机数种子random.seed()理解
- leetcode1509. 三次操作后最大值与最小值的最小差
- 威纶触摸屏与电脑连接_威纶通触摸屏和西门子PLC通讯不上解决方法
- 大麦盒子DM1004线刷降级填坑记录
- 如何理解DeepFool算法
- 遥感数据集的下载记录——MODIS产品为主
- 图像增强(拉普拉斯锐化增强)
- 本地用户和组 无法访问计算机 无效的语法,找不到Windows NT用户或组“DOMAIN \ USER”?...
- 【异常检测第一篇】DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning
- bzoj 瞭望塔1038
- 《中国哲学史大纲》读书笔记
- 腾讯Bugly 集成( Android SDK)
- hasp运行不成功_HASP加密锁错误代码原因
- Web实现文件上传和下载
- 《设计模式》.pdf
- django单服务部署
- 湖南师范大学计算机科学与技术学科评估,全国大学学科评估结果出炉 湖南这些高校入围...
- 百度云管家开机启动如何取消