1.堆栈一定要设置好系统运行需要一定的内存资源,堆栈也会占用一些内存资源,而且堆栈会生长,如果堆栈生长进入其他数据内存空减就会引起系统崩溃。或者内存数据被破坏,或者堆栈被破坏。所以需要初始化堆栈。至于那条伪指令,请参考ARM指令集。
2.你只要有操作函数就必须设置堆栈 如果没有操作函数就可以不用了
3.在x86里,栈是由硬件(cpu)和内存来实现的。栈是由ss,esp,ebp来描述的。ebp指向栈的底部,esp指向栈的顶部。如果这些没有设置好,函数当然就不能正常工作了
4.用来放函数调用时候存一些寄存器变量之类的东西的。
你写汇编程序不是也要用栈来放函数调用前的存存器里的东西吗?在PC机里由编译器给弄好了,但是嵌入式系统里可能因为编绎器不好代劳了吧……
5.
因为c函数中的局部变量会放到堆栈中,如果被调的函数还会调其他函数,那么调用的参数、返回地址、下一级函数的局部变量也会放到堆栈中。
如果没有设置正确的堆栈,那么这些内容写入堆栈的时候就会把原来的内容覆盖掉了。
如果没有设置正确的堆栈,那么这些内容写入堆栈的时候就会把原来的内容覆盖掉了。
6.一,保存现场;
二,保存变量;
三,保存函数的返回值RET