
 
 全局与局量等知识
断电后,程序以及数据都在FLASH中。
 断电后,内存中就没有变量了。
 程序在烧在FLASH中的;
 
 程序运行的时候,全局变量的初始值,必然是从FLAASH中的来的:
初始化全局变量的过程:
 
 
 = :代表伪指令 (去FLASH中去某个位置 读指令: 数据写到RO中去 完成初始化)
 以上的方式是效率低的。那么如果全局变量很多咋办?
 (BIN文件是写在 FLASH上的):
 
 那如果有很多的变量怎么办?
 这样程序运行的时候,就会见数据段整段的拷贝到内存。
 那如果没有初始值的全局变量呢?
 
 这那么多的全局变量也保存在FLASH中吗?
 解答:不是的。
 类似于memset,这些变量在内存中都放在ZI段,运行的时候,相当于把ZI段全部清清零。
 全局变量初始化完成之后,我们才去执行main函数。
那么局部变量呢?----- 栈
 
 过程:
 1.记录返回地址 ;记录下一个D的地址。
 2.执行C:
LR返回地址会被覆盖!
 所以在A开始,就要将LR保存起来,保存在栈中,栈在哪里? 栈就是一块内存。
 
 所以不仅仅是LR寄存器会被覆盖。
程序运行的时候:
 第一步,将数据段拷贝到内存中。
 第二步:让SP指向一块空闲的内存;
 第三部:调用MAIN函数。
 
 汇编中:对应的局部变量的写入栈的过程:
 