STM8的C语言编程--变量空间的分配.DOC

上传人:天*** 文档编号:905487 上传时间:2018-11-05 格式:DOC 页数:2 大小:85KB
下载 相关 举报
STM8的C语言编程--变量空间的分配.DOC_第1页
第1页 / 共2页
STM8的C语言编程--变量空间的分配.DOC_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、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; 我们可以

2、通过 DEBUG 中的反汇编窗口,看到如下的对应代码:从这段代码中可以看到,全局变量 buffer 被分配到空间从地址 0000H 到 0009H。而局部变量 i 则在堆栈空间中分配,通过 PUSH A 指令,将堆栈指针减 1,腾出一个字节的空间,而 SP+1 指向的空间就是分配给局部变量使用的空间。由此可以得出初步的结论,对于全局变量,内存分配是从低地址 0000H 开始向上分配的。而局部变量则是在堆栈空间中分配。另外从上一篇文章中,可以知道堆栈指针初始化时为 0FFFH。而根据 PUSH指令的定义,当压栈后堆栈指针减 1。因此堆栈是从上往下使用的。因此根据内存分配和堆栈使用规则,我们在程序设计时,不能定义过多的变量,免得没有空间给堆栈使用。换句话说,当定义变量时,一定要考虑到堆栈空间,尤其是那些复杂的系统,程序调用层数多,这样就会占用大量的堆栈空间。总之,在单片机的程序设计时,由于 RAM 空间非常有限,要充分考虑到全局变量、局部变量、程序调用层数和中断服务调用对空间的占用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。