资料
  • 资料
  • 专题
【STM8教程】变量空间的分配
推荐星级:
时间:2019-12-24
大小:85KB
阅读数:696
上传用户:givh79_163.com
查看他发布的资源
下载次数
0
所需E币
4
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
【STM8教程】变量空间的分配 STM8的C语言编程(2)-- 变量空间的分配   采用C这样的高级语言,其实可以不用关心变量在存储器空间中是如何具体分配的。但如 果了解如何分配,对编程还是有好处的,尤其是在调试时。 例如下面的程序定义了全局变量数组buffer和一个局部变量i,在RAM中如何分配的呢? /* MAIN.C file  *  * Copyright (c) 2002-2005 STMicroelectronics  */   unsigned char buffer[10];      // 定义全局变量   main() {     unsigned char i;           // 定义局部变量            for(i=0;i     {         buffer[i] = 0x55;     }        } 我们可以通过DEBUG中的反汇编窗口,看到如下的对应代码:  [pic] 从这段代码中可以看到,全局变量buffer被分配到空间从地址0000H到0009H。而局部变 量i则在堆栈空间中分配,通过PUSH A指令,将堆栈指针减1,腾出一个字节的空间,而SP+1指向的空间就是分配给局部变量 使用的空间。 由此可以得出初步的结论,对于全局变量,内存分配是从低地址0000H开始向上分配的。 而局部变量则是在堆栈空间中分配。 另外从上一篇文章中,可以知道堆栈指针初始化时为0FFFH。而根据PUSH指令的定义,当 压栈后堆栈指针减1。因此堆栈是从上往下使用的。 因此根据内存分配和堆栈使用规则,我们在程序设计时,不能定义过多的变量,免得没 有空间给堆栈使用。换句话说,当定义变量时,一定要考虑到堆栈空间,尤其是那些复 杂的系统,程序调用层数多,这样就会占用大量的堆栈空间。 总之,在单片机的程序设计时,由于RAM空间非常有限,要充分考虑到全局变量、……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书