独習mrubyバイトコード[OP_MOVE]
OP_MOVE
Arguments
- A:レジスタ番号
- B:レジスタ番号
How it works?
レジスタ[A]にレジスタ[B]のポインタを代入する
MOVEとあるが、実際はポインタのコピーを行っている。
When used?
レジスタ操作の基本。あちこちで使われる。
Note
VMが持っているレジスタはmrb_value構造体の配列であり、オブジェクトが何でも入る。
コピーで上書きされるレジスタに入っているオブジェクトの参照を減らしている。(mruby/cでは参照カウント式のGCを実装しているため)
mrbc_release(&regs[ra]);
mrbc_dup(&regs[rb]);
regs[ra] = regs[rb];
mrubyでは参照の操作はなく、単にポインタをコピーしているだけ。
ディスカッション
コメント一覧
まだ、コメントがありません