欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > arm 模式栈初始化

arm 模式栈初始化

2025/4/3 5:09:02 来源:https://blog.csdn.net/weixin_44767571/article/details/141604832  浏览:    关键词:arm 模式栈初始化

初始化 栈的一般的步骤,

首先要  切换到特定的模式,

然后是 将栈地址 给到PC指针。

有多少种模式就有多少种 栈地址。

PC 寄存器 是R13

每种模式都有自己的 R13

每种模式 都要初始化自己的R13

一共这个多的模式

那么CPU 怎么区分 处于何种模式呢?

就是通过 CPSR的 后5个 bit 来判断的。

	area reset,codecode32entry
startbl stack_init
stack_init                      ; 栈指针初始化函数
;    @undefine_stack                                       msr cpsr_c,#0xdb             ; 切换到未定义异常ldr sp,=0x34000000      ; 栈指针为内存最高地址,栈为倒生的栈; 栈空间的最后1M 0x34000000~0x33f00000
;    @abort_stack                                                      msr cpsr_c,#0xd7                ; 切换到终止异常模式ldr        sp,=0x33f00000       ; 栈空间为1M,0x33f00000~0x33e00000;   @irq_stack                                                msr      cpsr_c,#0xd2            ; 切换到中断模式ldr        sp,=0x33e00000        ; 栈空间为1M,0x33e00000~0x33d00000;   @ sys_stack                                               msr  cpsr_c,#0xdf              ; 切换到系统模式ldr  sp,=0x33d00000           ; 栈空间为1M,0x33d00000~0x33c00000msr  cpsr_c,#0xd3           ; 切换回管理模式mov pc,lr	end

一共设置了 5种模式 的 SP

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词