Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リハビリmruby

 リハビリmruby

最近のmrubyの実装について少し調べてみましたので、その内容を共有したいと思います。

Katsuhiko Kageyama

July 04, 2024
Tweet

More Decks by Katsuhiko Kageyama

Other Decks in Programming

Transcript

  1. バイトコード読んでみる( v2.0.0) OP_LOADSELF : R1レジスタに selfオブジェクト(=main)を入れる OP_STRING : R2レジスタにリテラル[0]のデータ(=”hello world”)をコピー

    OP_SEND : R1をレシーバとした :puts をシンボルとして持つメソッドを実行する。引数は R[1+1] OP_RETURN : R1を戻り値としてReturnする OP_STOP : VMの停止
  2. バイトコード読んでみる( v3.3.0) OP_STRING : R2レジスタにリテラル[0]のデータ(=”hello world”)をコピー OP_SSEND : ※オペランド名が変わってる。実装まだ読んでないので変化の理由は不明 OP_RETURN

    : R1を戻り値としてReturnする OP_STOP : VMの停止 LOADSELFってなくなったわけではない?  >定義(https://github.com/mruby/mruby/blob/master/include/mruby/ops.h)を参照すると残ってる R1にはselfがセットされので、省略された?