チップ メーカーが新しい機能や命令などを新しいチップに追加するとき、それらの新しい命令やチップの機能を使用するには、それに応じて新しいバージョンのコンパイラが必要ですか? また、チップの新しい機能を使用するには、プログラミング言語にも新しいオペコードや構文などが必要になるということですか?
2 に答える
(VM ではなく) マシン コードにコンパイルするコンパイラは、ターゲット アーキテクチャが変更されるたびに変更する必要がある場合があります (理想的には、すべての変更は下位互換性があるため、追加は新しい最適化が可能であることを意味しますが、古いコンパイラは引き続き機能します)。 .
プログラミング言語を変更する必要はありませんが、マシンの機能の変更によって望ましい機能が新たに可能になった場合は変更する必要があります。「プログラミング言語」とは、アセンブリ/機械語を意味する場合を除き、その場合、おそらくアセンブリ/機械語命令への1対1のチップ命令を追加する必要があります(ただし、追加する必要はありません)。
すべての「可能性」に注意してください。アセンブリ、マシン コード、コンパイラ設計、またはプログラミング言語設計で作業していない限り、これらの変更は目に見えない可能性があります。そうでない場合、これらのことを心配するのは時間の無駄です。
はい、新しいハードウェア機能は言語拡張と新しい言語に反映されています。たとえば、SIMD 命令の可用性を反映した C および C++ のさまざまなベクトル拡張と、CUDA や OpenCL などの新しい派生データ並列言語を参照してください。
ハードウェアが他のハードウェアと大きく異なる場合、独自の異なるプログラミング言語が必要になる可能性があります。最新の Transputers とその Occam 言語を参照してください。