利用者‐会話:東 遥/原稿/隠し命令

ページのコンテンツが他言語でサポートされていません。

隠し命令とは、コンピュータ製品において、メーカーが所定の機能を果たす命令をとして製品に組み込んだものの、マニュアルには記載されていない命令を指す。著名なものでは、CPUの隠し命令、BASIC言語の隠し命令がある。コンピュータ・ゲームでも、プレイ開始前に所定のレバー操作を行ったり、プレイ中に所定の操作を行うと、マニュアルに記載されていない機能や効果が起こる様にプログラムしてあるものがあるが、これは隠しコマンドを参照されたい。

CPUの隠し命令[編集]

概要[編集]

主に初期のマイクロプロセッサにおいてオペコードで表現し得るビットパターンのうち、しばしばマニュアルで説明されていないビットパターンを与えると所定の動作を行うものがある。


メーカーの意図でマニュアルに記載されないもの[編集]

著名なものとしては、i8085の隠し命令、HD63C09の隠し命令、i80286,i80386の隠し命令がある。

i8085の隠し命令[編集]

i8085については、一般にi8080の命令セットに対して2種の命令を追加している、とマニュアル等に説明されている。256種類のオペコードのうち、246種類が存在する。しかし、残りの10種類のオペコードについても、実行すると各々所定の機能を果たす事が確認されている。

HD63C09の隠し命令[編集]

MC6809のセカンドソース製品である、日立製HD63C09,HD63C09Eは、オリジナル製品にはないレジスタも持ち、これをサポートする命令を持つ。

尚、これらの拡張された機能、命令、レジスタは、当該製品のマニュアルの初版には記載されていたが、オリジナル製品を持つモトローラより抗議を受けて、マニュアルの2版以降では拡張部分が削除されている。このため、厳密に言えば隠し機能ではないが、一般にはあまり知られることが無く、隠し命令として扱われる。

i8086/8088の隠し命令[編集]

i8086やi8088についても幾つかの隠し命令が確認されている。x86系に古くから存在する未公開命令として有名なSALC(Set AL on Carry)命令はCフラグの内容をALレジスタの全ビットに転写する。即ちCフラグが0の時にはALレジスタに0Hが、フラグが1の時にはレジスタに0FFHがロードされる。

また、10進演算命令の一つである

i80286,i80386の隠し命令[編集]

著名なi80286,i80386の隠し命令として、LDALL命令がある。これは、CPUのアーキテクチャでプログラマに見えるレジスタ全てと、プログラマに見えないものも含めて、CPUの内部に存在するレジスタ全ての内容を一括して書き換える命令である。殊にi80286では、マニュアル等に記載の範囲では一度プロテクトモードへ移行するとリアルモードへの戻ることが出来ないとされているが、LDALL命令で、モード切替を制御するレジスタを強制的に書き換えて、リアルモードへ戻る事が可能である。

論理設計で派生したもの[編集]

著名なものとしては、Z-80のIX,IYレジスタを、8ビットに分割して操作する命令がある。


BASICの隠し命令[編集]