为什么要设置栈

1.堆栈一定要设置好系统运行需要一定的内存资源,堆栈也会占用一些内存资源,而且堆栈会生长,如果堆栈生长进入其他数据内存空减就会引起系统崩溃。或者内存数据被破坏,或者堆栈被破坏。所以需要初始化堆栈。至于那条伪指令,请参考ARM指令集。

 

2.你只要有操作函数就必须设置堆栈 如果没有操作函数就可以不用了

 

3.在x86里,栈是由硬件(cpu)和内存来实现的。栈是由ss,esp,ebp来描述的。ebp指向栈的底部,esp指向栈的顶部。如果这些没有设置好,函数当然就不能正常工作了

 

4.用来放函数调用时候存一些寄存器变量之类的东西的。
你写汇编程序不是也要用栈来放函数调用前的存存器里的东西吗?在PC机里由编译器给弄好了,但是嵌入式系统里可能因为编绎器不好代劳了吧……

5.

因为c函数中的局部变量会放到堆栈中,如果被调的函数还会调其他函数,那么调用的参数、返回地址、下一级函数的局部变量也会放到堆栈中。
如果没有设置正确的堆栈,那么这些内容写入堆栈的时候就会把原来的内容覆盖掉了。

6.一,保存现场;
二,保存变量;
三,保存函数的返回值RET

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值