まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

4256. ソフト要件、続き^2

2023年11月14日 | 日記

 コンパイラやインタプリタの作り方の本はいろいろと出ていて、最近も新訳があり、今はそれを読んでいます。しかし、私の原点は有名な「東大版Tiny BASICインタプリタ」が載っていた「bit臨時増刊、マイクロコンピュータのプログラミング(1978)」の次の記事、「マイクロPlanのプロセッサ」の記事です。
 元のPlan言語は知らなくて、参考文献の題名からはおそらくミニコンで動くPASCAL(ALGOL)の外見の実質B言語の(超小型の)計算機言語です。それを8080というマイクロコンピュータで動作するように改変したもの、なので「マイクロ」みたいです。以下、μPlanと表記します。

 その臨時増刊の記事にはμPlanのコンパイラと実行時のインタプリタがソースコード付きで詳しく詳しく説明されています。教科書では字句解析とか構文解析とか大仰な言葉が並んでいますが、8080の8KBのマイコン程度で動作します。
 ただし、ASR33のような紙テープパンチャ・リーダ付きの端末が必要です。当時の日本ではASR33はアマチュアが手にすることはまずできなかったと思います。なのでそれ自体で完結しているtiny BASICに比べて、アマチュア人気はほとんど出なかったと思います。
 今から考えると、少しRAMが増えただけでメモリ内で実行できますから、私も含めて惜しいことをしたと思います。

 ですから記事はほとんど物語として読んだ記憶があります。とはいえ、上記の理由で注目して詳しく読んだのはかなり後のこと。コンパイラのソースはμPlan自身で書かれていて、こういうのが当時の流行でした。
 当然、それだけでは動作しませんからコンパイラのコンパイル後の中間言語の文字列(Rコード)が印刷されていました。これ(4700文字ほど)を紙テープに穿孔し、μPlanインタプリタ(4Kバイト弱。こちらは8080のアセンブラと機械語の16進数で印刷されている)が動作するマイコンにロードして計算させると、μPlanのコンパイラとなり、別の紙テープに穿孔された、こちらが計算させたいμPlanのソースコードの中間言語(Rコード)が、さらに別の紙テープに穿孔されます。この後者の紙テープをμPlanインタプリタが動作しているマイコンにロードして計算させると、計算結果がテレタイプ(ASR33)のロール紙に印字されます。
 まあ、当時は私は学生でしたから、やや目がクラクラしたものです。何をしているのか理解するまでにしばらく時間がかかりました。要はコンパイラはソースコードを中間言語に変換(コンパイル)し、インタプリタがその中間言語を実行します。で、コンパイラ自体にもソースコードがあり、中間言語(Rコード)もある、ということ。

 紙テープ上の中間言語ですからASCIIの前半の64文字で表現されていて、Rコードと呼ばれていました。インタプリタはQコードと呼ばれるメモリ上の実行形式プログラムを実行するので、紙テープ上のRコードを読んでメモリ上のQコードに変換する部分がローダと呼ばれていました。
 このローダ部分は当時の大型機でも同様だったと思います。Rコードは任意のアドレス上に展開できますが、実行時のQコードには絶対番地が必要なので、そのアドレス解決などの若干の機能があります。MS-DOSの中身を知っている方なら.exe形式から.com形式に変換すること、と説明すれば分かるのですが、今は通じるのかな。

 要は、この記事を読めばコンパイラとかインタプリタの要点が経験できるので重宝な記事だった、いや今でも役立つと思います。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 4255. ソフト要件、続き | トップ | 4257. ソフト要件、続き^3 »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

日記」カテゴリの最新記事