1
2
检查CPSR中的T位。如果您无意中从ARM模式更改为Thumb模式(反之亦然),将发生未定义的指令。 就SP或LR损坏而言,可能是您以错误的模式执行了一些指令,这些指令在命中未定义的指令之前损坏了它们。 编辑 在编辑问题时响应新的错误案例: lr包含来自blx r2的返回地址,因此在blx之后指向一条指令是有意义的。 如果执行blx r2时r2指向堆,您将跳到堆中并开始执行数据,就像它们是指令一样。这将在短时间内导致未定义的指令异常… 如果要查看未定义的确切指令,请查看R14 ound寄存器(在未定义指令处理程序中定义的寄存器)-它包含未定义指令后的下一条指令的地址。 根本原因是r2中的错误值。假设这是C代码,我猜这是一个错误的指针引用,但我需要看到源代码才能确定。 |
2
1
这是一个未定义的指令,还是因为您正在从未对齐的地址读取而中止数据? 编辑: 在未定义的异常上,cpsr[4:0]应为0B111011或0X1B而不是0X13,根据臂的情况,0X13是重置值。 |