機械語モニタ
機械語モニタ(きかいごモニタ、英: Machine code monitor, Machine language monitor)は、機械語レベルのモニタ。
概要
編集機械語モニタは、機械語レベルのモニタ(監視・観察用のソフトウェア)であり、その基本的な機能としては、指定したメモリアドレスから機械語プログラムを実行させて、その結果の主記憶の値の状態をメモリアドレスの範囲を指定して観察したり、コアダンプでCPUのレジスタ類の値を観察するというものがある。その機能に加えて、主メモリの指定したメモリアドレスの値を指定した値に書き換える機能や、指定範囲のデータを補助記憶装置から主記憶へとロードしたり主記憶から補助記憶装置へとストアする機能を備えているものも一般的である。ファームウェアないし基本的なシステムソフトウェアとして提供される。
機械語モニタは1970年代や1980年代前半のマイコン(マイクロコンピュータ)やホビーパソコン(en:Home computer)の時代に広く使われたものである。一部の機械語モニタは1ステップづつ機械語を実行するという機能(原始的なデバッガのような機能)を持たせるようになり、やがて機能が足されてゆきデバッガ、またアセンブラや逆アセンブラなどの機能も加えることも行われたが、1980年代に、マイコンよりも複雑化・高度化したパーソナルコンピュータが一般化してゆき、デバッガ・アセンブラ・逆アセンブラなどがそれぞれ高機能化し単体のソフトウェアとなってゆくにつれ、機械語モニタのほうは使われる頻度が減っていった。現代では機械語モニタが使われる状況は、組み込みシステムやEFIなどできわめてハードウェア寄りの操作をする時など、かなり限られている。現代では、ハードウェア寄りの一部の技術者が使用することはあるが、一般のコンピュータユーザが直接使うことは無い。
1970年代や1980年代前半に一般的だった機械語モニタのありふれた使用法は、たとえば機械語プログラムのデバッグのために使うことであり、開始と停止のメモリアドレスをユーザが入力・指定して機械語プログラムを実行させる。指定した停止アドレスに達した段階でプログラムの実行が停止し、制御をユーザに戻し、ユーザの次の入力を待つ状態になる、というものである。
- 歴史
1950年代などまでは、コンピュータの状態を確認するにはテレタイプ端末やラインプリンタなどでいちいち紙に印字する方法が使われていて、ディスプレイは使われていなかった。
1960年代からCRTを用いるディスプレイが使われるようになったおかげでソフトウェアを用いて画面上でコンピュータの状態を確認することが可能になり、紙やインクリボンの浪費とコストを気にせずコンピュータの状態を何度でも監視・観察することができるようになった。
1970年代後半に登場したマイクロコンピュータ(en:Home computer、パーソナルコンピュータの初期段階)では、その歴史の最初から機械語モニタが提供されることが一般的となった。マイクロコンピュータでは機械語モニタは、ファームウェアとして提供される場合も、サードパーティのROMの形で提供される場合も、ソフトウェアとして提供される場合もあった。1970年代のコンピュータではROM(Read Only Memory)には機械語モニタしか書かれていないものもあった。
たとえば1977年にリリースされたApple IIのROMには簡素な機械語モニタが書かれていて、最初のバージョンのApple IIでは電源を入れると最初に表示されるのは次のような、機械語モニタを示す「*」(アスタリスク)のプロンプトだった[1]。
- *
そこから一歩進んだ、BASICを搭載したコンピュータでは、電源を入れると同時にBASICが立ち上がる仕様が一般的となってゆき、ローレベルの処理を行う際にBASIC側から機械語モニタを呼び出すしくみになっていった。たとえば、Apple IIの2番目以降のバージョンでは電源を入れるとen:Applesoft BASICの画面が立ち上がるので、もし機械語モニタを使いたければ次のように入力すると機械語モニタが呼び出されそれを示す「*」プロンプトが表示された[1]。
- ] CALL -151
そして、機械語モニタを使った後にBASICに戻るには「Ctrl+C」を押してreturnキーを押した[1]。
その後ROM-BASICやDISK-BASICが標準装備されるコンピュータが登場し、電源を入れるといきなりBASICのモードでマシンが起動するようになっても、「MONコマンド」等を入力すれば機械語モニタを使うことができた。
なお、初期の機械語モニタでは16進数で表示する機能しか備えておらず、機械語をアセンブリ言語に変換して表示する機能は備えていないものがあった。
なおシャープのMZ-80のような「クリーン設計」の機種では、システムの自由度を極限まで高めるために、機械語モニタはROMに書き込まれていなかった。本体ROMに書き込まれているものはIPL(イニシャル・プログラム・ローダー Initial Program Loader)だけで、機械語モニタも補助記憶装置(データレコーダなど)からRAMに読み込まれる方式になっていた[2]。
高機能な機械語モニタは、簡易デバッガとしても機能し、絶対アドレス指定方式のアセンブラや逆アセンブラの機能も備えていた。例えば、Intel 8086を搭載したPC-9801のN88-DISK BASIC(86)(1982年 - )の機械語モニタでは、アセンブラと逆アセンブラを備えていた[3]。この時代、機械語モニタだけでプログラミングを行うこともそう珍しいことではなかった。
以後のパーソナルコンピュータでは、デバッガ・アセンブラ・逆アセンブラはそれぞれの高機能化し便利になり、低機能で作業効率の悪い機械語モニタを使わずに済むようになった。