博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51单片机stack堆栈
阅读量:5324 次
发布时间:2019-06-14

本文共 343 字,大约阅读时间需要 1 分钟。

一般编译器的堆栈用于保存局部变量、函数的参数、函数的返回值、中断上下文信息等。但Keil对局部变量、函数参数预先分配空间(放在静态全局变量区),Keil的堆栈只是用于保存函数嵌套调用的PC、中断上下文信息。

从主程序进入中断需要入栈字节数:13+PC=15 Byte(ACC,PSW,B,DPH,DPL,R0~R7)

Keil支持2级中断15×2=30 Byte。

主程序中每级调用需要消耗2字节保存PC,如调用深度6级,需要6×2=12字节堆栈空间。

Keil51 编译后会生成M51文件,查找?Stack地址,为堆栈起始地址,向上增长到0xff,溢出则导致单片机复位。

转载于:https://www.cnblogs.com/jikexianfeng/p/10327945.html

你可能感兴趣的文章
【转载】初涉职场的40句金玉良言
查看>>
Django使用Mysql数据库已经存在的数据表方法
查看>>
Python-类进阶
查看>>
php函数的参数引用变量
查看>>
统计题量
查看>>
WCF 异步调用问题
查看>>
小白成长之路:初识python(六) --python线程池
查看>>
C#委托的介绍(delegate、Action、Func、predicate)
查看>>
mtk Android 编译命令自定义--添加版本号
查看>>
android 串口调试
查看>>
2009年北京航空航天大学计算机研究生机试真题,数组排序
查看>>
蓝牙地址的规则
查看>>
python 检查内存
查看>>
【积累】各浏览器之间的差异
查看>>
去掉所有字符里面的空格换行符等
查看>>
CF 1182F Maximum Sine——根号算法
查看>>
mybaits 学习笔记(搭建)一
查看>>
列表推导式
查看>>
在 Windows Server Container 中运行 Azure Storage Emulator(二):使用自定义的 SQL Server Instance...
查看>>
C# CheckBox控件概念以及用途浅析(转)
查看>>