コンパイラ動く

現状、a=1+2*3+4/5みたいな式を

b=1
c=2
d=3
e=4
f=5
a=b+c*d+e/f
と展開するプログラムと
a=b+c*d+e/f

i1 = c*d
i2 = b + i1
i3 = e / f
i4 = i2 + i3
a = i4
のように展開するプログラムを作って、コンパイル出来るようになりました。
ここの展開を自分で一からつくるということをやってなかったので、かなりうれしいです。
アセンブラを徐々に発展させてコンパイラにしていくという発展のやり方での解説がいい物があるとうれしいんですけど、
どこかにないのかなぁ?
というか、ないなら、自分で書くぜってかんじで、がんばっています。


次は、if文かなということで、Cをアセンブラにしてソース見たところです。
if文ありなコンパイラを次に作っていきます。

コンパイラがフロントエンドとバックエンドって呼ばれるゆえんが最近ようやく分かってきました。
コンパイラの作成って2つの成長のしかたがあって、1つはパーサから徐々にアセンブラに近づけていく成長の仕方。
もう一つはアセンブラをマクロアセンブラにして、もうちょっとがんばってって言う感じで徐々に高級言語に近づけていく成長の仕方。
これは、アーチ型の橋を造るように、両方から成長させていくのが楽で、最後に、真ん中でつなげれば楽じゃないかナァッと思います。
ということで、かなり楽しくアセンブラ付近の技術を身につけていっている今日この頃です。