ActionScript2のローカル変数は、レジスタに割り付けられます。

以下のプログラムを mtasc でコンパイルしてチェックしました。

class a
{
    public static function main():Void {
    	var v1 = 3;
    	var v2 = 3;
    	var v3 = 3;
    	var v4 = 3;
    }
}

すると以下のようなバイトコードが生成されます。

      push 3
      setRegister r:2
      pop
      push 3
      setRegister r:3
      pop
      push 3
      setRegister r:4
      pop
      push 3
      setRegister r:5
      pop

それから、レジスタはいくつまであるのだろうと実験してみました。そこで、変数を2000個宣言してコンパイルしてみると、250個までは、レジスタ割り付けされ、それ以上は、変数に割り当てられました。

      push 250
      setRegister r:250
      pop
      push 'n251', 251
      varEquals
      push 'n252', 252
      varEquals

なるほど。

コメント †
お名前:
 


作成:2008-03-04 13:01:01/更新:2008-03-04 13:08:55

→テキスト形式で見る

くじらぶろぐD by kujirahand RSS

konawiki 0.23