ARM关于栈的简单问题,请教

2019-07-16 09:44发布

本帖最后由 yingsun2013 于 2013-12-6 16:28 编辑

ARM里面7种工作模式,除了用户和系统外,其它每种模式都有各自独立的栈空间。
C语言工作时,也需要堆和栈。

那么ARM上运行C程序时,用户模式下的栈和C程序中的栈有什么关系,有什么区别?

是不是使用__user_initial_stackheap(1)设置了C程序堆栈后,就不需要在Startup.s文件中设置用户模式的栈(2)了
----------------------(1)---------------------
__user_initial_stackheap
                LDR     R0, =bottom_of_heap
                LDR     R1, =StackUsr
                LDR     R2, =top_of_heap
                LDR     R3, =bottom_of_Stacks
                BX      LR
----------------------(2)---------------------  
Startup.s文件中设置用户模式的栈
MSR     CPSR_c, #Mode_USR
LDR     SP, =StackUsr
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。