私はしばらくの間、この質問について考えています: ARM7 (3 つのパイプラインを備えた) プロセッサはいつ PC レジスタを増やしますか?
私はもともと、命令が実行された後、プロセッサは最後の実行で例外があるかどうかを最初にチェックし、現在の状態に応じて PC を 2 または 4 増やすと考えていました。例外が発生した場合、ARM7 はその実行モードを変更し、PC を現在のモードの LR に格納し、PC レジスタを変更せずに現在の例外の処理を開始します。
しかし、戻り命令を分析するときには意味がありません。undefined-instruction-exception から戻るときに PC に LR が割り当てられ、prefetch-abort-exception から LR-4 が割り当てられる理由がわかりません。これらの例外の両方がデコード状態で発生していませんか? さらに、私の教科書によると、例外が発生する前のプロセッサの状態 (ARM または Thumb) に関係なく、PC には prefetch-abort-exception から戻るときに常に LR-4 が割り当てられます。ただし、元の状態が Thumb の場合、PC には LR-2 を割り当てる必要があると思います。Thumb 命令は、ARM 命令が保持する 4 バイトではなく 2 バイトの長さであり、現在の状態で命令をロールバックしたいだけだからです。 . 私の推論に欠陥があるか、教科書に何か問題がありますか?
長い質問のようです。誰かが正しい答えを得るのを手伝ってくれることを本当に願っています。
前もって感謝します。