EDA365电子论坛网
标题:
请问"在初始化堆栈时就决定了工作模式"是什么意思?
[打印本页]
作者:
Maskman
时间:
2022-10-8 10:16
标题:
请问"在初始化堆栈时就决定了工作模式"是什么意思?
请问"在初始化堆栈时就决定了工作模式"是什么意思?
, _ ?" h: A5 M+ p/ T0 v
如何决定工作模式的?
5 y, d/ g. z% e
9 |, Z+ U9 Y4 S) j- M! [% c
作者:
Ele_insect
时间:
2022-10-8 13:10
设置 CPSR 寄存器。
1 m. A; m* b/ T4 N2 W, D7 e7 j
每种异常模式的进入地址都是固定的(硬件决定)。软件编写以各个异常模式的地址开始跳转到自定义的地址进行展开编写。发生异常,硬件会将先前模式下的下一条指令放入LR寄存器,并将CPSR的值存入SPSR。在异常模式下首先选择栈地址存放数据,要保存先前的环境到栈中(虽然先前硬件有保存,但是接下来的程序会使其变化,所以我们要将先前的环境数据提取出来再自己保存)。编写异常处理程序。恢复环境。这样就可以了!
作者:
Terran
时间:
2022-10-8 14:54
ARM有7种运行状态,每一种状态的堆栈指针寄存器(SP)都是独立的。
* ^: ^6 ?0 }9 V6 H5 \! G
所以,对于程序中需要用的每一种处理器模式,都要给SP定义一个堆栈地址。
" J, n- [, r' f% R- V2 j6 o
流程为:修改状态寄存器内的状态位,使处理器切换到需要的模式,然后给SP赋值。需要注意的是:不要切换到User模式进行该模式下的堆栈设置,因为进入User模式后就不能再操作CPSR返回到其他模式了。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2