最近一直在学习LPC2210单片机的启动代码部分,现在有些疑问希望大家能帮我解答一下:
在启动代码最后部分的B __main中,我查到的资料说它里面主要做了两方面的内容,a.完成代码和数据的复制(从加载域到执行域),并把ZI数据区清零 b.进入__rt_entry初始化系统堆和栈
先说a部分,全局变量等数据复制这个我能理解,但代码复制我就有些不明白了,是把所有代码复制到RAM中,加快运行速度?有这种说法?
b部分,初始化栈可以理解,但堆内存做什么用?仅仅是编译器动态分配内存时利用的空间?还有,堆和栈内存一般设定的尺寸多大合适?
对于RAM中内存分配使用的问题我还是有些不太明白,比如说RAM有16K,我看有的程序将堆设为512B, 栈设为1K, 那除了一些全局变量外其他那么大的RAM有什么用,浪费了? |