lisp on yarv製作日誌6

どうしても気になったので、http://d.hatena.ne.jp/shinichiro_h/20071113#1194884481にあるyasm.rbを修正してみたところ、動くようになりました。いろいろ変わっていたので苦労しました。
特にメソッド定義の部分が大きく変わっています。昔はメソッドを定義するのに、definemethodというyarvの命令があったみたいなんですが、今のyarvだと、
core#define_methodというメソッドを呼び出してメソッドを定義しています。
修正前はこんな感じだったのが、

def definemethod name, method
       @body << [:definemethod, name, method, 0]
end

修正後は、

def definemethod name, method
       @body << [:putspecialobject, 1]
       @body << [:putspecialobject, 2]
       @body << [:putobject, name]
       @body << [:putiseq, method]
       @body << [:send, :"core#define_method", 3, nil, 0, nil]
end

のようになり、メソッドを定義する部分はかなり長くなりました。

修正したyasm.rbは、http://github.com/mas454/loy-yasmに置いています。
これからは、yasm.rbを使って処理系を書こうと思います。