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なるほど。