STM8的C语言编程2-变量空间的分配
2页STM8的C语言编程(2) 变量空间的分配 STM8的C语言编程(2) 变量空间的分配采用C这样的高级语言,其实可以不用关心变量在存储器空间中是如何具体分配的。但如果了解如何分配,对编程还是有好处的,尤其是在调试时。例如下面的程序定义了全局变量数组buffer和一个局部变量i,在RAM中如何分配的呢?/* MAIN.C file* * Copyright (c) 2002-2005 STMicroelectronics*/unsigned char buffer10; / 定义全局变量main() unsigned char i; / 定义局部变量 for(i=0;i10;i+) bufferi = 0x55; 我们可以通过DEBUG中的反汇编窗口,看到如下的对应代码:从这段代码中可以看到,全局变量buffer被分配到空间从地址0000H到0009H。而局部变量i则在堆栈空间中分配,通过PUSH A指令,将堆栈指针减1,腾出一个字节的空间,而SP+1指向的空间就是分配给局部变量使用的空间。由此可以得出初步的结论,对于全局变量,内存分配是从低地址0000H开始向上分配的。而局部变量则是在堆栈空间中分配。另外从上一篇文章中,可以知道堆栈指针初始化时为0FFFH。而根据PUSH指令的定义,当压栈后堆栈指针减1。因此堆栈是从上往下使用的。因此根据内存分配和堆栈使用规则,我们在程序设计时,不能定义过多的变量,免得没有空间给堆栈使用。换句话说,当定义变量时,一定要考虑到堆栈空间,尤其是那些复杂的系统,程序调用层数多,这样就会占用大量的堆栈空间。总之,在单片机的程序设计时,由于RAM空间非常有限,要充分考虑到全局变量、局部变量、程序调用层数和中断服务调用对空间的占用。
《STM8的C语言编程2-变量空间的分配》由会员汽***分享,可在线阅读,更多相关《STM8的C语言编程2-变量空间的分配》请在金锄头文库上搜索。
《我的家》主题活动小结
高一地理下学期期末考试试题(新版)-新人教版
2021版高考生物一轮复习课后限时集训7物质的跨膜运输苏教版
物流监管员工作总结
格宾石笼施工技术交底
《只拣儿童多处行》
人教版高一英语必修4课文原文
会所智能化设计
个人投资合作协议书
实习律师考核实务训练项目的证明材料汇总表
某水池泵站土建施工组织
2023年甘肃省庆阳市华池县乔川乡社区工作人员考试模拟试题及答案
初一期中考试检讨书
房地产经营管理专业自荐书
PEP小学英语五年级上册Unit2 A Read and write说课稿
毕业论文 技术0903 薛文将
小学劳动教育工作计划范本(6篇).doc
奔驰车主维权事件:车主要求查明奔驰是否卖问题车
傲慢与偏见读后感英文(1)
小班美术《冰糖葫芦》教案
2023-01-29 3页
2023-06-05 6页
2023-04-15 9页
2024-02-14 12页
2022-09-08 19页
2023-01-03 8页
2022-10-20 5页
2023-09-21 3页
2023-09-05 3页
2024-02-16 21页