找回密码
 注册
关于网站域名变更的通知
查看: 302|回复: 2
打印 上一主题 下一主题

请问"在初始化堆栈时就决定了工作模式"是什么意思?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-10-8 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
请问"在初始化堆栈时就决定了工作模式"是什么意思?
# o! J2 I8 ~9 \3 Z7 X2 M( \如何决定工作模式的?
2 [2 F5 N& n" C3 j5 e, s* U" e. h2 _. U. i$ h+ u* Y

该用户从未签到

2#
发表于 2022-10-8 13:10 | 只看该作者
设置 CPSR 寄存器。
+ `& K' F* a4 E3 `. g每种异常模式的进入地址都是固定的(硬件决定)。软件编写以各个异常模式的地址开始跳转到自定义的地址进行展开编写。发生异常,硬件会将先前模式下的下一条指令放入LR寄存器,并将CPSR的值存入SPSR。在异常模式下首先选择栈地址存放数据,要保存先前的环境到栈中(虽然先前硬件有保存,但是接下来的程序会使其变化,所以我们要将先前的环境数据提取出来再自己保存)。编写异常处理程序。恢复环境。这样就可以了!

该用户从未签到

3#
发表于 2022-10-8 14:54 | 只看该作者
ARM有7种运行状态,每一种状态的堆栈指针寄存器(SP)都是独立的。, L. Z" Z. `& w) ^- D' s
所以,对于程序中需要用的每一种处理器模式,都要给SP定义一个堆栈地址。
5 _/ }2 P9 E1 ^2 l# o) Z流程为:修改状态寄存器内的状态位,使处理器切换到需要的模式,然后给SP赋值。需要注意的是:不要切换到User模式进行该模式下的堆栈设置,因为进入User模式后就不能再操作CPSR返回到其他模式了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-30 11:37 , Processed in 0.093750 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表