ARM920T的und异常

本文详细解析了ARM内核CPU在遇到无法识别的机器码时产生UND异常的原因,以及硬件如何响应这一异常,包括保存状态、切换模式及跳转执行。同时,提供了软件层面处理UND异常的方法,确保系统稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 为什么会发生und异常:
ARM内核的CPU当执行到了一条无法识别机器的
机器码时,会产生und异常。

二. 发生und异常时硬件会做哪些工作:
1, 将CPSR寄存器的值存入SPSR_und中;
2, 将产生und异常指令的下一条指令的地址存入LR_und寄存器中;
3, 改变CPSR的M4-M0位,使CPU进入und模式;
4, 跳转到地址为0x00000004执行命令。

三. 在软件设计中应该如何处理und异常:
1, 刚进入und处理代码时,考虑到可能会调用C函数,故应首先初始化SP_und,使其指向一段有效的空间
2, 在处理und异常时可能改变r0-r12与LR_und的值,所以应该把r0-r12以及LR_und的值入栈;
stmdb sp!, {r0-r12, lr}
3, 相应的处理异常代码;
4,退出异常处理代码返回原程序以及被异常打断前的模式。
ldmai sp!, {r0-r12, pc}^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值