機械語は、コンピューターが直接認識して実行できるバイナリ コードで表される一連の機械命令であるため、この一連の命令は機械コードと呼ばれ、コンピューターの CPU が直接解釈できるデータです。コンピュータのハードウェア構造を通じてコンピュータの動作機能を提供します。
このチュートリアルの動作環境: Windows 10 システム、DELL G3 コンピューター。
コンピュータが直接認識して実行できる言語は機械語です。機械語は、コンピューターが直接認識して実行できる、バイナリ コードで表現された機械命令のセットです。この命令セットはマシンコードと呼ばれ、コンピュータの CPU によって直接解釈できるデータです。
機械語は、コンピュータの設計者がコンピュータのハードウェア構造を通じてコンピュータに与えた操作機能です。機械語は、柔軟性、直接実行、高速性という特徴を持っています。異なる種類のコンピュータの機械語には互換性がなく、ある種類のコンピュータの機械語命令に従ってコンパイルされたプログラムは、別の種類のコンピュータでは実行できません。
機械語でプログラムを書く場合、プログラマはまず使用するコンピュータの命令コードとその意味をすべて暗記する必要があります。プログラミングの際、プログラマはストレージの割り当てや各命令や各データの入出力を自分で処理する必要があり、またプログラミングプロセスの各ステップで使用されるワークユニットの状態を覚えておく必要もあります。
これは非常に面倒な作業であり、プログラムの作成にかかる時間は、実際の実行時間よりも数十倍、数百倍かかることがよくあります。さらに、コンパイルされたプログラムはすべて 0 と 1 の命令コードであるため、直感的ではなく、エラーが発生しやすくなります。現在、コンピューターメーカーの専門家を除いて、大多数のプログラマーはもはや機械語を学んでいません。
命令は機械語のステートメントであり、意味のあるバイナリ コードのセットです。さまざまなコンピュータ会社によって設計および製造されているコンピュータは、命令の数、機能、命令形式、アドレス指定モード、データ形式が異なります。コンピュータの発展過程を見てみると、コンピュータを構成する基本的なハードウェアの急速な発展とコンピュータの置き換えの早さにより、ソフトウェアがハードウェアにどのように追いつくかという問題が生じています。
新しいマシンが発売され、使用するために納品されるとき、ユーザーに提供できるのは少量のシステム ソフトウェア (オペレーティング システムなど) だけです。特に、大量のソフトウェアは常に強化されています。アプリケーションのかなりの部分は、ユーザーがマシンを使用する際に常に開発しています。新しいマシンの導入により独自のアプリケーションが継続して使用できなくなる問題を軽減するために、各コンピュータ会社が製造する同じシリーズのコンピュータを使用する場合、ハードウェアの実装方法、命令体系、データ形式、 I/Oシステム等はそのままなので、ソフトウェアは完全互換です。
#拡張知識: 機械語命令の形式
機械語命令はバイナリ コードで構成されています。オペレーションコードとオペランドの 2 つの部分で構成されます。オペコードは命令の動作を指定します。これは命令内のキーワードであり、デフォルトにすることはできません。オペランドは命令のオペランドを表します。コンピュータの命令形式は、マシンの語長、メモリ容量、命令機能と大きな関係があります。プログラムの設計を容易にし、基本演算の並列性を高め、命令の機能を向上させるという観点から、命令にはさまざまな情報を含める必要があります。ただし、一部の命令では情報の一部が無駄になるため、命令が占有する記憶領域が無駄になり、メモリアクセス数が増加し、実際に速度に影響を与える可能性があります。したがって、命令が十分な情報を与えるだけでなく、その長さがマシンのワード長と可能な限り一致し、記憶領域を節約し、値の時間を短縮できるように、命令フォーマットを合理的かつ科学的に設計する方法は次のとおりです。 、マシンのパフォーマンスを向上させることは、命令フォーマット設計における重要な問題です。 コンピュータは命令を実行することでさまざまなデータを処理します。データのソース、演算結果の宛先、および実行された演算を示すために、命令には次の情報が含まれている必要があります。 (1) 演算コード。操作の性質と機能を指定します。コンピューターには数十から数百の命令があり、各命令には対応するオペレーション コードがあり、コンピューターはオペレーション コードを認識することでさまざまな操作を完了します。 (2) オペランドのアドレス。 CPU は、このアドレスを通じて必要なオペランドを取得できます。 (3) 演算結果の格納アドレス。オペランドの処理結果は、再利用のためにこのアドレスに保存されます。(4) 次の命令のアドレス。プログラムを実行する際、ほとんどの命令は主記憶から順番にフェッチされて実行されますが、転送命令が発生した場合にのみプログラムの実行順序が変わります。命令の長さを圧縮するために、プログラム カウンター (ProgramCounter、PC) を使用して命令アドレスを保存できます。命令が実行されるたびに、PC の命令アドレスは自動的に 1 に設定され (命令が 1 つのメイン メモリ ユニットのみを占有すると仮定して)、次に実行される命令のアドレスを示します。転送命令が発生すると、転送アドレスを使用して PC の内容が変更されます。 PC を使用するため、次に実行される命令のアドレスを命令内で明示的に指定する必要はありません。
命令には、実際にはオペレーションコードとアドレスコードという2種類の情報が含まれています。オペレーションコード (OperationCode、OP) は、命令によって完了する演算 (加算、減算、乗算、除算、データ転送など) を表すために使用され、その長さは命令システム内の命令の数に依存します。 。アドレスコードは命令のオペランドを記述するために使用され、オペランドを直接与えるか、オペランドのメモリアドレスやレジスタアドレス(つまりレジスタ名)を示します。
命令には、オペコード フィールドとアドレス フィールドの 2 つの部分が含まれています。アドレスフィールドに含まれるアドレスの数に応じて、一般的な命令フォーマットは次のようになります。
3 つのアドレス命令: 一般アドレス フィールドの A1 と A2 は、それぞれ最初と 2 番目のオペランド アドレスを決定し、A3 は結果アドレスを決定します。次の命令のアドレスは通常、プログラム カウンタによって順次与えられます。
2 つのアドレス命令: アドレス フィールドの A1 は最初のオペランド アドレスを決定し、A2 は 2 番目のオペランド アドレスと結果アドレスを同時に決定します。
単一アドレス命令: アドレス フィールドの A によって、最初のオペランドのアドレスが決まります。 2 番目のオペランドと演算結果を格納するための特定のレジスタの使用が修正されました。したがって、それらのアドレスは命令に暗黙的に含まれます。
ゼロ アドレス命令: スタック コンピューターでは、通常、オペランドはプッシュダウン スタックの最上部にある 2 つのユニットに格納され、結果はスタックの最上部に配置されます。アドレスはすべて暗黙的であるため、ほとんどの命令にはオペコードのみがあり、アドレス フィールドはありません。
可変アドレス数命令: アドレスフィールドに含まれるアドレス数は動作定義によって変わります。たとえば、一部のコンピュータの命令内のアドレスの数は、最小で 0 個、最大で 6 個まであります。
さらに関連する知識については、FAQ 列をご覧ください。
以上がなぜ機械語はコンピュータが直接認識して実行できる言語なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。