我想了一会儿这个问题:ARM7(具有3个管道)处理器何时增加其PC寄存器。
我原本以为,一条指令执行完后,处理器首先检查最后一次执行是否有异常,然后根据当前状态将 PC 增加 2 或 4。如果发生异常,ARM7 将改变其运行模式,将 PC 存储在当前模式的 LR 中,并开始处理当前异常,而无需修改 PC 寄存器。
但是在分析返回指令时没有任何意义。我无法弄清楚为什么当从未定义指令异常返回而从预取中止异常返回 LR-4 时,PC 将被分配 LR,这两个异常不是都发生在解码状态吗?更重要的是,根据我的教科书,无论在发生异常之前处理器处于什么状态(ARM 或 Thumb),PC 从预取异常返回时总是被分配 LR-4。但是,如果原始状态是 Thumb,我认为应该为 PC 分配 LR-2,因为 Thumb 指令是 2 个字节长,而不是 ARM 指令持有的 4 个字节,我们只想回滚当前状态的指令. 我的推理是否有任何缺陷或教科书有问题。
似乎是一个很长的问题。我真的希望任何人都可以帮助我得到正确的答案。
提前致谢。