C などの言語で記述する場合、理論的には、コンパイラは人間が読み取れるコードを取得し、それをマシン コード (比較的ハードウェアに依存するアトミック命令) に変換します。各 CPU アーキテクチャには、何らかのハードワイヤードな方法で CPU 用に実装された命令セットがあるようですが、異なる CPU は同じ ISA を異なる方法で実装できるようです (x86 など)。
これは、ISA が本質的にハードウェアの抽象化レイヤーとして機能するということですか? x86 は言う: これらは私が提供する標準的な命令です - ハードウェアがどのようにそれを行うかを知る必要はありません。
したがって、新しい CPU を構築し、x86 標準に準拠するように CPU を実装した場合、ハードウェアに固有のコンパイラを作成する必要はありませんが、C から x86 にコンパイルされたコンパイラはすべて、新しい CPU には ISA で十分でしょうか?