insns.def
insns.defでの命令定義はグループ別にまとまっていて、上から順に
- 変数の操作 (getlocal, ...)
- 値の操作 (putnil, ...)
- スタック操作 (pop, dup, ...)
- メソッドや別名定義関係 (definemethod, alias, ...)
- クラス/モジュール定義 (defineclass, ...)
- メソッド/イテレータ関係 (send, invokeblock, ...)
- 例外関係 (throw, ...)
- ジャンプ (jump, branchif, ...)
- 最適化命令 (opt_plus, opt_mult, ...)
こんな感じです。
1個1個精読した結果をここに書いていこうかとも思ったのですが、どの命令もとてもわかりやすく書かれているので、書き始めてみたらひたすらコードの引用を羅列して説明終わり、になってしまいました。それではあんまり意味ないので省略ということにします。