命令セットとは

すべての CPU は、特定の命令セットをサポートするようにゼロから設計されています。命令セットは、CPU が実行できるハードコードされた操作のセットです。これらの操作には、たとえば、2 つの数値の加算、プログラムの別の部分へのジャンプ、2 つの値の比較などがあります。コンピュータが実行できる各操作は、オペコードによって一意に表されます。

オペコード

プログラムを実行するとき、CPU はプログラム カウンターを使用して、次に実行する必要がある命令を追跡します。命令がフェッチされると、次の命令の開始を指すように、プログラム カウンタが命令の長さだけインクリメントされます。各命令はオペコードで構成されています。命令によって、オペランドを含む場合と含まない場合があります。オペランドは、定数値、または CPU レジスタまたはシステム RAM 内の値の位置へのポインタです。

完全な命令がフェッチされたら、デコードする必要があります。これは、CPU がオペコードとオペランドを分離するプロセスです。デコードされたオペコードは、CPU 内の特定の電気経路を有効または無効にするために使用され、正しい操作が行われます。

命令がデコードされると、実行されます。CPU の正確な動作は、操作によって異なります。加算演算は、2 つの値を合計します。ジャンプ操作は、プログラム内のどこにジャンプするかを計算します。比較操作は、2 つの値を比較します。NOP は No Operation の略であるため、NOP 操作はアイドル状態になります。

ほとんどの命令は、操作の結果を出力します。この出力はプロセッサ レジスタに送られ、必要に応じてシステム RAM に送られます。これらの各操作は、完了するまでに 1 クロック サイクルかかります。

不正なオペコード

各 CPU アーキテクチャには、製造元によって公開された特定のオペコードのリストがあります。これらのオペコードの値は、必ずしもクロスプラットフォームで同じであるとは限りません。そのため、ソフトウェアを異なるアーキテクチャ用にコンパイルする必要があります。場合によっては、製造元は文書化されていないオペコードも含めています。これらは「不正なオペコード」と呼ばれます。違法なオペコードは、文書化されていませんが、呼び出されるたびに同じ機能を実行します。ただし、文書化されておらず、非標準の機能であるため、CPU アーキテクチャを更新すると、それらが単純に削除される可能性があります。

Apple II での初期のコンピュータ ゲームの一部は、特定の不正なオペコードに依存していました。その後、IIc がゲームに必要な不正なオペコードを削除したため、後の Apple IIc CPU リビジョンでパフォーマンスと安定性の問題が発生しました。違法なオペコードは、著作権保護サークルでも、コンテンツをクラックする海賊行為との戦いで、目立たないようにすることによるセキュリティ手段として使用されました。一部の不正なオペコードは、デバッグ ツールやエラー ハンドラとしてのみ使用されます。

x86 命令セットには、文書化されていない不正なオペコードが多数含まれています。興味深いことに、これらの一部は Intel と AMD の CPU 間で共有されており、文書化されていないにもかかわらず、両社がその目的を公に認識していることを示しています。

コンパイラとアセンブリ

ほとんどのプログラムは高級言語で書かれています。これらは比較的読みやすく、学習曲線を最小限に抑えるために英語の単語や速記を使用することがよくあります。コンピュータがこれらのプログラムを実行するには、コンパイルする必要があります。コンパイラは基本的に翻訳者です。高レベルのコードを受け取り、CPU が理解できる命令であるコンピューター コードに変換します。

一部の言語では、マシンコードをオンザフライで生成するコンパイル済みプログラムを介して、コンパイルされていないコードを実行することもできます。アセンブリは、省略形を使用して開発者が実行された操作を直接表示および制御できるようにする低レベルのプログラミング言語です。NOP は、アセンブリの略記の一例です。

結論

命令セットは、CPU アーキテクチャが実行できる公式関数のリストです。実行できる操作のリストです。これらの操作は CPU にハードコードされており、それぞれのオペコードを使用して呼び出されます。

ソフトウェアは通常、コンパイラを使用して、人間が読める高レベル コードを CPU が読み取れるマシン コードに変換します。場合によっては、CPU アーキテクチャに、不正なオペコードと呼ばれる文書化されていないオペコードが含まれていることがあります。不正なオペコードは、技術的には命令セットの一部です。ただし、将来のプラットフォームの反復では確実に利用できない可能性があります。以下のコメントにあなたの考えを残すことを忘れないでください。



Leave a Comment

Powerbeats Proがケースで充電できない場合の対処法

Powerbeats Proがケースで充電できない場合の対処法

Powerbeats Proが充電できない場合、別の電源を使用し、イヤフォンを清掃してください。充電中はケースを開いたままにしてください。

3Dプリントの基本:必見のメンテナンスチェックリスト

3Dプリントの基本:必見のメンテナンスチェックリスト

設備を良好な状態に保つことは必須です。ここでは、3Dプリンターを最良の状態に保つための役立つヒントをご紹介します。

キヤノン Pixma MG5220: インクなしでスキャンする方法

キヤノン Pixma MG5220: インクなしでスキャンする方法

インクが切れた場合にキヤノン Pixma MG5220でスキャンを有効にする方法。

ノートパソコンが過熱する5つの理由

ノートパソコンが過熱する5つの理由

ノートパソコンが過熱する可能性のある理由と、この問題を回避してデバイスを冷却するためのヒントやコツを見つけましょう。

GeForce Now エラーコード 0xC272008F 修正方法

GeForce Now エラーコード 0xC272008F 修正方法

ゲームを楽しむ準備が整い、『Star Wars Outlaws』をGeForce Nowでプレイしようとすると、エラーコード0xC272008Fが発生。Ubisoftゲームを再び遊ぶための唯一の解決策を見つけましょう。

3Dプリンティングの基本:3Dプリンターのメンテナンステクニック

3Dプリンティングの基本:3Dプリンターのメンテナンステクニック

3Dプリンターを維持することは、最高の結果を得るために非常に重要です。念頭に置くべき重要なヒントをご紹介します。

プリンターのIPアドレスを見つける方法

プリンターのIPアドレスを見つける方法

プリンターの使用しているIPアドレスがわからなくて困っていますか?その情報を見つける方法をお教えします。

Samsungの電話でAirPodsを使用する方法

Samsungの電話でAirPodsを使用する方法

Samsungの電話用にAirPodsを購入するかどうか迷っているなら、このガイドが役立ちます。もっとも明白な質問は、両者が互換性があるかどうかです。

修正:ChromebookがBluetoothデバイスに接続しない

修正:ChromebookがBluetoothデバイスに接続しない

BluetoothデバイスをChromebookとペアリングできない場合は、Bluetoothオプションを無効にして、ラップトップを再起動します。

ダブルVPNとは何ですか?シングルVPNよりどれだけ優れていますか?

ダブルVPNとは何ですか?シングルVPNよりどれだけ優れていますか?

ダブルVPNは、ネットワークの使用状況を監視している人からユーザーを保護するための優れた解決策です。