FlashLite: 剰余演算
FlashLiteで使われているSWFバージョン4では、割り算の余りを求める命令(C言語などで言う "%" 演算子)がないということを知りました。でも、ActionScriptの方には、"%" 演算子があるようです。そこで、"%"演算子を含む式がどのようなSWFに変換されるか調べてみました。
b = a % c;は、
push "b" push "a" getvar push "a" getvar push "c" getvar divide intpart push "c" getvar multiply subtract setvarのように変換されます。(SWFはスタックマシンです) これは、
b = a - int(a / c) * c;というアクションスクリプトが変換されるSWFと全く同じものです。 "%" 演算子は、スクリプト上ではとても短いですが、実際には上のように結構長いコードに変換されてしまうので、サイズが気になる場合は使いすぎないように気をつけた方が良さそうです。 "%"に対応する命令が追加されるのは、SWFバージョン5からです。