命令セットとは

すべての 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

ハードドライブのクローンを作成する方法

ハードドライブのクローンを作成する方法

データが貴重な資産である現代のデジタル時代では、Windows 上でハード ドライブのクローンを作成することは、多くの人にとって重要なプロセスとなる可能性があります。この包括的なガイド

Windows 10でドライバーWUDFRdのロードに失敗した場合の修正方法

Windows 10でドライバーWUDFRdのロードに失敗した場合の修正方法

コンピュータの起動中に、ドライバ WUDFRd をコンピュータに読み込めなかったことを示すエラー メッセージが表示されましたか?

NVIDIA GeForce Experienceエラーコード0x0003を修正する方法

NVIDIA GeForce Experienceエラーコード0x0003を修正する方法

デスクトップで NVIDIA GeForce experience エラー コード 0x0003 が発生していますか? 「はい」の場合は、ブログを読んで、このエラーをすばやく簡単に修正する方法を見つけてください。

Chromebook の電源が入らないのはなぜですか

Chromebook の電源が入らないのはなぜですか

「Chromebook の電源がオンにならないのはなぜですか?」という質問に対する答えを見つけます。この役立つガイドは Chromebook ユーザー向けです。

Fitbit Versa 4 の文字盤を変更する方法

Fitbit Versa 4 の文字盤を変更する方法

Fitbit Versa 4 の文字盤を無料で変更して、時計の外観を毎日変えることができます。それがいかに早くて簡単かを見てください。

ルンバが止まったり、くっついたり、向きを変えたりする – 修正

ルンバが止まったり、くっついたり、向きを変えたりする – 修正

ルンバ ロボット掃除機が停止し、固着し、回転し続ける問題を修正します。

Steam Deckのグラフィック設定を変更する方法

Steam Deckのグラフィック設定を変更する方法

Steam デッキは、堅牢で多彩なゲーム体験をすぐに提供します。ただし、ゲームを最適化し、可能な限り最高のパフォーマンスを保証するには、

分離ベースのセキュリティとは何ですか?

分離ベースのセキュリティとは何ですか?

サイバーセキュリティの世界でますます重要になっているトピック、つまり分離ベースのセキュリティを詳しく掘り下げる予定でした。このアプローチは、

Chromebook でオート クリッカーを使用する方法

Chromebook でオート クリッカーを使用する方法

今日は、Chromebook で繰り返しクリックするタスクを自動化できるツール、オート クリッカーについて詳しく説明します。このツールは時間を節約し、

SMPSとは何ですか?

SMPSとは何ですか?

コンピューターに SMPS を選択する前に、SMPS とは何か、およびさまざまな効率評価の意味を理解してください。