« FlashLiteの数値について | メイン | Flash: 複数要素のPush »

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からです。

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1068

コメントを投稿