なんとなくバイナリを解析してえ〜と思ったので、mruby 3.2.0 (最新stable?)の .mrb ファイルのフォーマットを眺めることにした。 Rustでパースしました!だとかっこいい、ナウだなと思ったけれど、動的型育ちな自分をどうしても甘やかしてしまい、 Ruby の unpack を軸に解析した。いやほんと、今やRubyで一番使うメソッドでは。 こういう感じのRubyスクリプトがある。 puts "Hello" mrbファイルにコンパイルするとこうなるらしい。この際、デバッグセクションとLVセクションは無かったことにする。今度ね。 $ ./bin/mrbc --remove-lv tmp/hello.rb $ xxd tmp/hello.mrb 00000000: 5249 5445 3033 3030 0000 0056 4d41 545a RITE0300...VMATZ 0