OSDN Git Service

update
[happyabc/happyabc.git] / swflib / instruction.txt
1 NewFunction of method_(0x40) -> stack=1; method_=Some arg0
2 NewClass of class_(0x58)
3
4 # Conversion
5 Coerce(0x80)
6 Coerce_a(0x82)
7 Coerce_s(0x85)
8
9 Convert_i(0x73)
10 Convert_s(0x74)
11 Convert_d(0x75)
12 Convert_b(0x76)
13 Convert_u(0x77)
14
15 # Arith
16 Add_i(0xC5) -> stack= ~-1
17 Subtract_i(0xC6) -> stack= ~-1
18 Multiply_i(0xC7)-> stack= ~-1
19 Add(0xA0) -> stack= ~-1
20 Subtract(0xA1)-> stack= ~-1
21 Multiply(0xA2) -> stack= ~-1
22 Divide(0xA3) -> stack= ~-1
23 Modulo(0xA4) -> stack= ~-1
24
25 # Predicator
26 Equals(0xAB)-> stack= ~-1
27 StrictEquals(0xAC)-> stack= ~-1
28 LessThan(0xad) -> stack= ~-1
29 LessEquals(0xae) -> stack= ~-1
30 GreaterThan(0xaf) -> stack= ~-1
31 GreaterEquals(0xb0) -> stack= ~-1
32
33 # Jump/Conditonal Jump
34 Label of label(0x09) -> prefix=const [label arg0];args=const []
35 IfNlt of label(0x0c) -> stack= ~-1
36 IfNle of label(0x0d) -> stack= ~-1
37 IfNgt of label(0x0e) -> stack= ~-1
38 IfNge of label(0x0f) -> stack= ~-1
39 Jump  of label(0x10) ->
40 IfTrue of label(0x11) -> stack= ~-1
41 IfFalse of label(0x12) -> stack= ~-1
42 IfEq of label(0x13) -> stack= ~-1
43 IfNe of label(0x14) -> stack= ~-1
44 IfLt of label(0x15) -> stack= ~-1
45 IfLe of label(0x16) -> stack= ~-1
46 IfGt of label(0x17) -> stack= ~-1
47 IfGe of label(0x18) -> stack= ~-1
48 IfStrictEq of label(0x19) -> stack= ~-1
49 IfStrictNe of label(0x1a) -> stack= ~-1
50
51 # Literal
52 PushNull(0x20)      -> stack=1
53 PushUndefined(0x21) -> stack=1
54 PushByte of u8(0x24) -> stack=1
55 PushShort of u30(0x25) -> stack=1
56 PushTrue(0x26) -> stack=1
57 PushFalse(0x27) -> stack=1
58 PushNaN(0x28) -> stack=1
59 PushString of string(0x2C) -> stack=1
60 PushInt of int(0x2D) -> stack=1
61 PushUInt of uint(0x2E) -> stack=1
62 PushDouble of float(0x2F) -> stack=1
63 PushNamespace of namespace(0x31) -> stack=1
64
65 # # Scope
66 # PushScope:            op=0x30; stack= ~-1; scope=1
67 # PushWith:             op=0x1c; stack= ~-1; scope=1
68 # GetGlobalScope:op=0x64; stack=1
69 # GetScopeObject of int:op=0x65; stack=1; args=const[u8 arg0]
70
71 # # Register
72 # GetLocal_0(0xD0; stack=1;count=1
73 # GetLocal_1(0xD1; stack=1;count=2
74 # GetLocal_2(0xD2; stack=1;count=3
75 # GetLocal_3(0xD3; stack=1;count=4
76 # GetLocal of int(0x62; stack=1; args=const [u30 arg0];count=(arg0+1)
77 # SetLocal_0(0xD4; stack=1
78 # SetLocal_1(0xD5; stack=1
79 # SetLocal_2(0xD6; stack=1
80 # SetLocal_3(0xD7; stack=1
81 # SetLocal of int(0x63; stack=1; args=const [u30 arg0]
82
83 # GetSlot of int(0x6c; args=const [u30 arg0]
84 # SetSlot of int(0x6d; args=const [u30 arg0]; stack= ~-2
85 # GetGlobalSlot of int(0x6e; stack=1;    args=const [u30 arg0]
86 # SetGlobalSlot of int(0x6f; stack= ~-1; args=const [u30 arg0]
87
88 # GetLex       of Cpool.multiname(0x60; stack=1;    const=[entry arg0]; args=fun ctx ->[cindex arg0 ctx]
89 # GetProperty  of Cpool.multiname(0x66;             const=[entry arg0]; args=fun ctx ->[cindex arg0 ctx]
90 # SetProperty  of Cpool.multiname(0x61; stack= ~-2; const=[entry arg0]; args=fun ctx ->[cindex arg0 ctx]
91 # InitProperty of Cpool.multiname(0x68; stack= ~-2; const=[entry arg0]; args=fun ctx ->[cindex arg0 ctx]
92
93 # # FunctionCall
94 # ReturnVoid:  op=0x47
95 # ReturnValue(0x48; stack= ~-1
96 # FindPropStrict of Cpool.multiname(0x5D; stack=1; const=[entry arg0]; args=fun ctx -> [cindex arg0 ctx]
97 # CallProperty   of Cpool.multiname * int(0x46; stack= 1-arg1; const=[entry arg0]; args=fun ctx ->[cindex arg0 ctx; u30 arg1]
98 # CallPropLex of Cpool.multiname * int(0x4c; stack= 1-arg1; const=[entry arg0]; args=fun ctx ->[cindex arg0 ctx; u30 arg1]
99 # Call of int(0x41; stack= 1-(2+arg0); args=const [u30 arg0];
100 # Pop(0x29; stack= ~-1
101 # Swap:op=0x2b
102 # PopScope:op=0x1d; scope= ~-1
103
104 # NewObject of int:op=0x55; args=const [u30 arg0]; stack=1-arg0
105 # NewArray of int:op=0x56; args=const [u30 arg0]
106 # NewActivation:op=0x57; stack=1
107
108
109 # Dup(0x2a; stack= 2
110
111 # # Class
112
113 # ConstructSuper of int(0x49; args=const [u30 arg0]; stack= ~-(arg0+1)
114 # ConstructProp  of Cpool.multiname*int(0x4a; stack= ~-arg1; args=(fun ctx -> [u30 @@ Cpool.index arg0 ctx#cpool;u30 arg1]);