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

リハビリmruby

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 リハビリmruby

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

Avatar for Katsuhiko Kageyama

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がセットされので、省略された?