OSDN Git Service

add lowInst test
[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 c_string(0x2C)    -> stack=1
60 PushInt       of c_int(0x2D)       -> stack=1
61 PushUInt      of c_uint(0x2E)      -> stack=1
62 PushDouble    of c_float(0x2F)     -> stack=1
63 PushNamespace of namespace(0x31) -> stack=1
64
65 # Scope
66 PushScope(0x30)            -> stack= ~-1; scope=1
67 PushWith(0x1c)             -> stack= ~-1; scope=1
68 GetGlobalScope(0x64)       -> stack=1
69 GetScopeObject of u8(0x65) -> stack=1
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 u30(0x62) -> stack=1;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 u30(0x63) -> stack=1
82
83 # Slot
84 GetSlot of u30(0x6c)
85 SetSlot of u30(0x6d) ->stack= ~-2
86 GetGlobalSlot of u30(0x6e) -> stack=1
87 SetGlobalSlot of u30(0x6f) -> stack= ~-1
88
89 GetLex       of multiname(0x60) -> stack=1
90 GetProperty  of multiname(0x66)
91 SetProperty  of multiname(0x61) -> stack= ~-2
92 InitProperty of multiname(0x68) -> stack= ~-2
93
94 # FunctionCall
95 ReturnVoid(0x47)
96 ReturnValue(0x48) -> stack= ~-1
97 FindPropStrict of multiname(0x5D) -> stack=1
98 CallProperty   of multiname * u30(0x46) -> stack= 1-arg1
99 CallPropLex    of multiname * u30(0x4c) -> stack= 1-arg1
100 Call of u30(0x41) -> stack= 1-(2+arg0)
101 Pop(0x29) -> stack= ~-1
102 Swap(0x2b)
103 PopScope(0x1d) -> scope= ~-1
104
105 NewObject of u30(0x55) -> stack=1-arg0
106 NewArray of u30(0x56)
107 NewActivation(0x57) -> stack=1
108 Dup(0x2a) -> stack= 2
109 Nop(0x02)
110
111 # Class
112 ConstructSuper of u30(0x49) -> stack= ~-(arg0+1)
113 ConstructProp  of multiname*u30(0x4a) -> stack= ~-arg1