このセクションではスタック操作について記述します。
ActionPush は、 1 つ以上の値をスタックにプッシュします。
フィールド | 型 | コメント |
ActionPush | ACTIONRECORDHEADER | ActionCode = 0x96 |
Type | UI8 |
0 = 文字列リテラル 1 = 浮動小数点数リテラル 次の型は SWF 5 以降で使用可能です。 2 = null 3 = undefined 4 = register 5 = Boolean 6 = double 7 = integer 8 = constant 8 9 = constant 16 |
String | If Type = 0, STRING | null 終端文字列 |
Float | If Type = 1, FLOAT | 32 bit IEEE 単精度浮動小数点数 (リトルエンディアン) |
RegisterNumber | If Type = 4, UI8 | レジスタ数 |
Boolean | If Type = 5, UI8 | ブール値 |
Double | If Type = 6, DOUBLE | 64 bit IEEE 倍精度浮動小数点数 (リトルエンディアン) |
Integer | If Type = 7, UI32 | 32 bit 整数 (リトルエンディアン) |
Constant8 | If Type = 8, UI8 |
コンスタントプールのインデックス (インデックス < 256) (ActionConstantPool 参照) |
Constant16 | If Type = 9, UI16 |
コンスタントプールのインデックス (インデックス >= 256) (ActionConstantPool 参照) |
ActionPush は、 1 つ以上の値をスタックに積みます。 Type フィールドはプッシュする値の型を指定します。 Type = 1 の場合、 32 bit IEEE 単精度浮動小数点数の値をプッシュします。 PropertyId は FLOAT でプッシュされます。 ActionGetProperty と ActionSetProperty は PropertyId を使って名前付きオブジェクトのプロパティにアクセスします。
Type = 4 の場合、レジスタ数の値がプッシュされます。 Flash Player は 4 つまでのレジスタをサポートしています。 ActionDefineFunction2 を使うことによって、 256 個までのレジスタを使うこともできます。
ActionPush の最初のフィールドの ACTIONRECORD の中の Length 値は、 ACTIONRECORD に続く Type と値の総バイトサイズを定義します。 1 つ以上の Type と値のフィールドの組が最初のフィールドに続き、これらを合計したサイズが ACTIONRECORD の Length フィールドにセットされます。
ActionPop は、スタックから値をポップし、スタック上の値を破棄します。
フィールド | 型 | コメント |
ActionPop | ACTIONRECORDHEADER | ActionCode = 0x17 |