プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

FOCS (後編)

プログラムの引っ越し


それまでコンパイラは空きメモリの後半部分に作っていた。
プログラムは大体5KBぐらいもあれば十分かな。
そう思って、E000付近*1からプログラムを組んでいたのだ。
コンパイル部分が完成し、実行用ランタイムを書いていた時、ふと気が付く。


空きメモリが足りない。。。


前述のように、プログラムはアセンブラプログラムをハンドアセンブルして作られていた。
ハンドアセンブルしているということは、通常はアセンブラがやってくれるアドレス解決も全て自分でやっているということである。
アドレス空間を移動するためにはアドレス解決も全てやり直さなくてはならない。


普通に考えれば、E000から下位アドレス方向へ延ばしていけばいいように思われるかもしれない。(最初からそういう風に作っていればよかったんだけど)
実際それでもよかったのだが、なんかすっきりしないし、この頃は有り余るほどヒマがあったので、アドレス空間を一気に変更することに。
その後何回か暴走を繰り返し、無事アドレス移動は終了した。

作り終わって


そんなこんなでコンパイラはようやく完成。
その後は100枚のレポートを書く日々が始まったのだが、それは時間こそかかったものの、そんなに苦ではなかった。
いろいろ苦労したり、工夫したことがまだ残っていて、書くことが多かったからかな。
どんなこと書いたかは忘れちゃったけど、たしかまとまりのない、だらだら書いただけのレポートだったと思う。
書き直しは言われなかったけど、N先生は読むのに苦労したに違いない。


コンパイラの名前はあまり考えてないですね。
FORTRAN COMPILER SYSTEM = FOCS.
んー、安易な上にセンスのかけらもないネーミングだ。
こういうのは今でもあまりうまくないね。。


それなりに苦労したせいか、少なくともアセンブラを組むことに抵抗はなくなったようだ。
単純な構文解析をする知識も覚えることができた。
もちろん本格的なコンパイラを作るほどの技術はないし、ソフトウェア開発の現場ではもっと別の技術が必要だったけど。


でも、自分で処理系を作るのって、なかなか楽しかったよ。
これ以来コンパイラのような、いわゆる処理系を作ることが好きになった。
今でもちょっとした処理系を、ちょこちょこっと作ったりする。
いつかは自分で独自の言語と、その処理系を作ってみたいな。
そんなふうに妄想しています。


(完)

*1:PC-8001はF300からBASICやVRAM等のワークエリアが始まっていた