movの削除 RITE VMで MOVE R2, R0 ADDI R2, 1 のようなコードを考えてます。この場合、正直にR2を代入するのは無駄です。そこで、コード生成時にはR2をR0で設定するコードを生成してしまうのではなく、R2はR0と同じですよという情報だけを持っておきます。そして、ADDI R2, 1でR2を参照するときにR0を参照します。 と、考え方は簡単なんですが、たとえばVMに戻った時どうするのかとかVMから生成コードを呼び出したときどうするのとか罠がいっぱいです。 VMに戻る時はVMのレジスタの整合性を取るようなコードを生成します。また、R0が途中で変わっちゃったらどうするの?という心配もあろうかと思いますが、現在のmrubyのコード生成ではそういうことはないはずです。証明は読者の課題とします。 一方、 ADDI R3, 1 MOVE R2, R3 のようなコードが生成され