logo

マシン語とは何ですか?

機械語は、コンピューターが理解できる 2 進数またはビットで構成される低レベル言語です。これはマシン コードまたはオブジェクト コードとも呼ばれ、理解するのが非常に困難です。コンピュータが理解できる唯一の言語は機械語です。 Swift や C++ などのすべてのプログラムとプログラミング言語は、コンピューター上で実行される前に機械語でプログラムを作成または実行します。特定のタスク (たとえ最小のプロセスであっても) が実行されると、機械語がシステム プロセッサに転送されます。コンピュータはデジタルデバイスであるため、バイナリデータのみを理解できます。

マシン語とは

コンピュータでは、ビデオ、プログラム、画像などのデータはすべてバイナリで表現されます。 CPU は、このマシンコードまたはバイナリデータを入力として処理します。次に、アプリケーションまたはオペレーティング システムが CPU から結果の出力を取得し、それを視覚的に表示します。たとえば、ASCII コード 01000001 は機械語では文字「A」を表しますが、画面上では「A」として表示されます。

異なるプロセッサ アーキテクチャでは異なるマシン コードが使用されます。ただし、マシンコードには 1 と 0 が含まれます。たとえば、CISC アーキテクチャを含む Intel x86 プロセッサと比較して、PowerPC プロセッサには RISC アーキテクチャを含む異なるコードが必要です。正しいプロセッサ アーキテクチャでは、プログラムを正しく実行するために、コンパイラは高レベルのソース コードをコンパイルする必要があります。

プログラムまたはアクションの場合、正確な機械語はオペレーティング システムによって異なる場合があります。オペレーティング システムは、コンパイラーがアクションを機械語に書き込む方法を記述します。同様に、写真には、各ピクセルの色を決定する数万を超えるバイナリ データが含まれています。

コンピューター プログラムは、1 つ以上のプログラミング言語 (Java、C++、Visual Basic など) で作成されます。コンピュータプログラムの作成に使用されるプログラミング言語はコンピュータが直接理解できないため、コンピュータが理解できるようにプログラムコードをコンパイルする必要があります。プログラムのコードがコンパイルされると、次のように変換されます。

 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 

機械語なので、コンピューターが理解できるようになります。

機械語の例

テキスト「 こんにちは世界 ' は機械語で書くと次のようになります。

機械語の別の例を以下に示します。これは、文字「A」を画面上に 1000 回表示します。

 169 1 160 0 153 0 128 153 0 129 153 130 153 0 131 200 208 241 96 

マシンコードの実行

すべてのプロセッサ ファミリは、特別にプログラムされた一連の命令に従い、これらの命令はマシン コードによってレイアウトされます。すべてのマイナーな実行可能なコンポーネント、つまり機械の全体的な機能を構成するコンポーネントは、基本ユニットの特定の配置によって決定されます。基本的な情報単位はすべて 2 進数で表され、「1」または「0」の 1 つまたは 2 つの値を持ちます。各プロセッサ クラスは、その固有の命令セットに適合する構造構成を必要とするため、すべてのマシン コード構成の基本命令セットは、同様に一致するプロセッサ クラスにリンクされます。

機械語の使用

機械語の一般的な使用法については、以下で説明します。

  • 機械語は、機械は理解できますが、人間はアセンブラを使用して解読できる低レベル言語です。
  • コンパイラは、機械語を人間が理解できる他のコードまたは言語に変換するため、人間とコンピュータの間で重要な役割を果たします。
  • アセンブリ言語は機械語のパクリであるため、機械語を理解することに特化しています。

機械語とアセンブリ言語の違い

マシン語とは

マシン語とアセンブリ言語にはさまざまな違いがあります。それらの違いをすべてまとめた表を以下に示します。

機械語 アセンブリ言語
機械語は、機械のみが読み取ることができる 2 進数またはビットで構成される低レベルのプログラミング言語です。これはマシン コードまたはオブジェクト コードとも呼ばれ、命令が CPU によって直接実行されます。 アセンブリ言語は人間専用の言語であり、コンピューターには理解されません。その結果、高級プログラミング言語と機械語の間のリンクとして機能し、命令を機械コードまたはオブジェクト コードに変換するにはアセンブラを使用する必要があります。
機械語には、2 進数 (0 と 1)、16 進数、および 8 進数が含まれており、これらはコンピューターのみが理解でき、人間には解読できません。 Mov、Add、Sub、End などのニーモニックはアセンブリ言語を構成し、人々が理解し、利用し、適用することができます。
機械語ではエラーの修正や修正ができず、それに応じて機械語の機能も異なります。 アセンブリ言語には、従来の命令セットに加えて、エラーを修正したりプログラムを変更したりする機能があります。
機械語はプラットフォームに依存するため、人間が理解するのは非常に困難です。 アセンブリ言語の構文は英語に似ています。したがって、人間にとっては理解しやすいです。
機械語は覚えるのが難しく、機械語としてのみ機能するため、学習することはできません。 アセンブリ言語は覚えやすく、マイクロプロセッサベースのアプリケーション/デバイスやリアルタイム システムに使用されます。
機械語では、すべてのデータはバイナリ形式で存在するため、実行が高速になります。 アセンブリ言語は機械語に比べて実行速度が遅いです。
ビットのシーケンスは、コマンドを与えるために機械語によって使用されます。 0 はオフまたは false 状態を表し、1 はオンまたは true 状態を表します。高級プログラミング言語から機械語への変換はCPUに依存します。 アセンブリ言語では、ビットの生のシーケンスを使用する代わりに、「ニーモニック」の名前と記号を使用します。したがって、ユーザーはアセンブリ言語のオペコードを覚える必要はありません。アセンブリ言語では、人間がコードをマシンコードにマッピングでき、コードはわずかに読みやすくなります。
第一世代のプログラミング言語は機械語であり、翻訳者を必要としません。 第 2 世代のプログラミング言語はアセンブリ言語です。アセンブリ言語は、ニーモニックを機械が理解できる形式に変換するトランスレータとしてアセンブラを使用します。
マシン言語はハードウェアに依存するため、変更することはできません。 アセンブリ言語は移植性がなく、マシンに依存するため、簡単に変更できます。
機械語の構文では、エラーが発生する可能性が高くなります。 機械語と比較して、アセンブリ言語では構文エラーが発生する可能性が低くなります。