機械語モニタ(英: Machine code monitor, Machine language monitor)とは、コンピュータが直接実行する
機械語のレベルで動作する監視・観察用の
ソフトウェアです。
概要
コンピュータの主記憶や
CPUの状態を直接操作し、観察するための基本的なツールとして機能します。
主な機能としては、指定した
メモリアドレスから
機械語プログラムを実行させ、その実行後の主記憶の特定の範囲や
CPUのレジスタの内容を観察することが挙げられます(これは
コアダンプとも関連します)。
さらに、主記憶上の特定の
メモリアドレスの値を任意の値に変更する機能や、
補助記憶装置(例えば磁気テープやフロッピーディスク)と主記憶の間でプログラムやデータを読み書きする機能も一般的に備えていました。多くの場合、
ファームウェアの一部として、あるいは非常に基本的な
システムソフトウェアとして提供されました。
歴史と役割
機械語モニタは、特に1970年代から1980年代前半にかけて普及した
マイクロコンピュータ(
マイコン)や
ホビーパソコンの時代に広く利用されました。
当時のコンピュータは、現代の
パーソナルコンピュータに比べてリソースが限られており、
機械語や
アセンブリ言語による開発やデバッグが一般的だったため、
機械語モニタは開発者や熱心なユーザーにとって必須のツールでした。
プログラムの実行状態を確認したり、エラーが発生した際にメモリの内容を調査したりするために、指定したアドレスからプログラムを実行させ、ブレークポイントを設定して途中で実行を停止させ、その時点のレジスタやメモリの状態を観察するといった使い方が一般的でした。
初期の
機械語モニタは、単にメモリ内容やレジスタ値を16進数で表示するだけのものでしたが、次第に機能が拡張されました。例えば、プログラムを1命令ずつ実行するステップ実行機能(簡易的な
デバッガ機能)や、
機械語を
アセンブリ言語に変換して表示する逆アセンブラ機能、さらには簡単なアセンブラ機能を内蔵するものも登場しました。
1977年に登場した
Apple IIの初期モデルでは、電源を入れるとまず簡素な
機械語モニタが起動し、「*」という
プロンプトが表示される仕様でした。
BASICを搭載した後期のモデルでは、通常は
BASICが起動しますが、「CALL -151」といったコマンドを入力することで
機械語モニタを呼び出すことができました。
シャープのMZシリーズのように、基本的なシステムプログラムをROMに持たず、
補助記憶装置から読み込む「クリーン設計」を採用した機種では、
機械語モニタもテープなどから読み込んで使用する形態でした。
衰退と現代における位置づけ
1980年代後半に入り、
パーソナルコンピュータがより高機能化し、オペレーティングシステムや開発ツールが進化するにつれて、状況は変化しました。高機能な単体
ソフトウェアとしての
デバッガ、アセンブラ、逆アセンブラが登場し、これらが開発の中心となっていった結果、機能的に限定的な
機械語モニタが直接使われる機会は減少していきました。
現代において、一般のコンピュータユーザーが
機械語モニタを直接使用することはほとんどありません。しかし、
組み込みシステムの開発や、UEFI/EFI(
Unified Extensible Firmware Interface)のようなハードウェアに近い低レベルな処理を行う限定的な場面では、今なお一部の技術者によって利用されています。
かつてはコンピュータとの対話の基本であり、低レベル開発の要であった
機械語モニタは、より抽象化された高機能な開発環境の普及に伴い、その役割を終えつつありますが、コンピュータの黎明期から発展期にかけての重要な歴史的ツールとして位置づけられます。