x86命令エンコーディング形式に頭を悩ませようとしています。私が読んだすべての情報源は、依然として主題を混乱させています。私はそれを少し理解し始めていますが、理解に苦労していることの1つは、CPU命令デコーダーがオペコードプレフィックスとオペコードを区別する方法です。
命令の全体の形式は基本的にオペコードに依存することを認識しています(もちろん、オペコードで定義された追加のビットフィールドを使用)。命令にプレフィックスがなく、オペコードが最初のバイトである場合があります。デコーダーはどのように知るのでしょうか?
オペコードバイトとプレフィックスバイトは同じバイナリ値を共有しないため、命令デコーダーは違いを見分けることができると思います。したがって、デコーダーは、バイト内の一意の 2 進数が命令かプレフィックスかを判断できます。たとえば (この例では、1 バイトのオペコードに固執します)、REXまたはLOCKプレフィックスは、アーキテクチャの命令セット内のオペコードと同じバイト値を共有しません。