gpt4 book ai didi

exception - 未定义的ARM异常的原因是什么?

转载 作者:行者123 更新时间:2023-12-04 05:39:29 24 4
gpt4 key购买 nike

一个问题是undefined指令什么时候发生....我们是否需要从R14_SVC或R14_UNDEF中获取当前正在执行的指令? .目前我正在处理一个未定义指令发生的问题。在检查 R14_SVC 时,我发现指令如下:

0x46BFD73C cmp r0, #0x0
0x46BFD740 beq 0x46BFD75C
0x46BFD744 ldr r0,0x46BFE358

所以在我的假设中,未定义的指令会在执行指令时发生 beq 0x46BFD75C
令我困惑的一件事是我查看了 r14_undef而且结构不同。
0x46bfd4b8  bx r14
0x46bfd4bC mov r0, 0x01
0x46bfd4c0 bx r14

哪一个导致了未定义指令异常?

最佳答案

您的所有答案都在 ARM ARM,ARM 架构引用手册中。转到 infocenter.arm.com 的引用手册下找到您感兴趣的架构系列。非 cortex-m 系列都以相同的方式处理这些异常

When an Undefined Instruction exception occurs, the following actions are performed:
R14_und = address of next instruction after the Undefined instruction
SPSR_und = CPSR
CPSR[4:0] = 0b11011 /* Enter Undefined Instruction mode */
CPSR[5] = 0 /* Execute in ARM state */
/* CPSR[6] is unchanged */
CPSR[7] = 1 /* Disable normal interrupts */
/* CPSR[8] is unchanged */
CPSR[9] = CP15_reg1_EEbit
/* Endianness on exception entry */
if high vectors configured then
PC = 0xFFFF0004
else
PC = 0x00000004

R14_und 指向未定义指令之后的下一条指令。您必须检查 SPSR_und 以确定处理器处于哪种模式( ARM 或拇指)才能知道是否需要从 R14_und 中减去 2 或 4,以及是否需要获取 2 或 4 个字节。不幸的是,如果在支持拇指 2 的较新架构上,即使在拇指模式下,您也可能必须获取 4 个字节并尝试弄清楚发生了什么。由于字长可变,很可能处于无法确定发生了什么的情况。如果您没有使用 thumb2 指令,那么它是确定性的。

关于exception - 未定义的ARM异常的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11447005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com