【发布时间】:2011-02-08 08:17:57
【问题描述】:
我一直在思考这个问题: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 个字节,我们只想回滚当前状态的指令.我的推理是否有任何缺陷或教科书有什么问题。
似乎是一个很长的问题。我真的希望任何人都可以帮助我得到正确的答案。
提前致谢。
【问题讨论】:
标签: exception-handling arm computer-architecture