JVMで動作するプログラミング言語を作るにはどうしたらよいのだろう?(4)

そういえば、俺言語の1つのenutsはきがついたら名前がPJになってました。
俺言語といっても俺が作った言語ではないのですが。チュートリアルを書いてみてたりします。
世間ではHaskellを実装するとか何とか言う話をしてたりして、うらやましいなぁと思ったりしてます。
Haskellあたりの全部式っちうプログラミング言語を作るって技法はそのまま、
俺の俺言語に使えることも多いと思うので、取り込ませてもらおうとか思っております。
とりあえず、式を構文解析して、その後、シンタックスシュガーをなくして構文木にするのかなぁ。
どうなるんだろうなぁ。
だれか、TemplateHaskellあたり意識して作ってくれないかなぁとか。


ま、それは置いといて、JVMバイトコードの続きをします。
会社のパソコンの電源が壊れてて、一回消えたのでやる気半減してたりして。


とりあえず、Wikipediaバイトコードの解説が良くまとまってます。
http://ja.wikipedia.org/wiki/Java%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3


wikipedia jvmで検索すると2番目くらいに出てくるので楽チンです。
これ見たら、だいたい、分かった気になってしまってやる気がなくなってしまいましたー。
ってくらい、いい感じにまとまってます。


nopは何もしない命令です。適当に入れてみると1バイト増えるだけです。
ldcは前前回あたりでは、単に4バイトのものだ、間違いないー等と書いてましたが間違えてました。
本当は、コンスタントプールの番号が入るだけで、コンスタントプールに実際の値が入っているという構造になります。
名前がldcはたぶん、load constant poolの略なんでしょうね。


あとはwikipedia見れば別に難しいことってないじゃんという境地に立ってしまったので、
次はclassファイルの構造を理解してこうとか思ってます。
これも、なんとなく分かった気になってしまってるのですけど。
javaのasmを使う気力もないので、いちお書いておこうかと思います。