asil-1.2: src/PrettyInstr.ag
-- Pretty printing for each instruction
-- Factored out in a separate file
ATTR CaseOffsets [ | | count USE {+} {0} : Int ]
SEM CaseOffsets | Cons +count = (+1)
SEM Instruction
| Add lhs.output = u8 0xA0
| Add_i lhs.output = u8 0xC5
| Add_d lhs.output = u8 0x9B
| ApplyType lhs.output = u8 0x53 ## u30 @name
| AsType lhs.output = u8 0x86 ## u30 @name
| AsTypeLate lhs.output = u8 0x87
| BitAnd lhs.output = u8 0xA8
| BitNot lhs.output = u8 0x97
| BitOr lhs.output = u8 0xA9
| BitXor lhs.output = u8 0xAA
| Breakpoint lhs.output = u8 0x01
| BreakLine lhs.output = u8 0xF2 ## u30 @line
| Call lhs.output = u8 0x41 ## u30 @argCount
| CallInterface lhs.output = u8 0x4D ## u30 @name ## u30 @argCount
| CallMethod lhs.output = u8 0x43 ## u30 @index ## u30 @argCount
| CallProp lhs.output = u8 0x46 ## u30 @name ## u30 @argCount
| CallPropLex lhs.output = u8 0x4C ## u30 @name ## u30 @argCount
| CallPropVoid lhs.output = u8 0x4F ## u30 @name ## u30 @argCount
| CallStatic lhs.output = u8 0x44 ## u30 @method ## u30 @argCount
| CallSuper lhs.output = u8 0x45 ## u30 @name ## u30 @argCount
| CallSuperId lhs.output = u8 0x4B
| CallSuperVoid lhs.output = u8 0x4E ## u30 @name ## u30 @argCount
| CheckFilter lhs.output = u8 0x78
| Coerce lhs.output = u8 0x80 ## u30 @name
| Coerce_b lhs.output = u8 0x81
| Coerce_a lhs.output = u8 0x82
| Coerce_i lhs.output = u8 0x83
| Coerce_d lhs.output = u8 0x84
| Coerce_s lhs.output = u8 0x85
| Coerce_u lhs.output = u8 0x88
| Coerce_o lhs.output = u8 0x89
| Concat lhs.output = u8 0x9A
| Construct lhs.output = u8 0x42 ## u30 @argCount
| ConstructProp lhs.output = u8 0x4A ## u30 @name ## u30 @argCount
| ConstructSuper lhs.output = u8 0x49 ## u30 @argCount
| Convert_b lhs.output = u8 0x76
| Convert_i lhs.output = u8 0x73
| Convert_d lhs.output = u8 0x75
| Convert_o lhs.output = u8 0x77
| Convert_u lhs.output = u8 0x74
| Convert_s lhs.output = u8 0x70
| Debug lhs.output = u8 0xEF ## @tp.output ## u30 @name ## u30 @reg ## u30 @extra
| DebugFile lhs.output = u8 0xF1 ## u30 @name
| DebugLine lhs.output = u8 0xF0 ## u30 @line
| DecLocal lhs.output = u8 0x94 ## u30 @reg
| DecLocal_i lhs.output = u8 0xC3 ## u30 @reg
| Decrement lhs.output = u8 0x93
| Decrement_i lhs.output = u8 0xC1
| DeleteProperty lhs.output = u8 0x6A ## u30 @name
| DeletePropertyLate lhs.output = u8 0x6B
| Divide lhs.output = u8 0xA3
| Dup lhs.output = u8 0x2A
| Dxns lhs.output = u8 0x06 ## u30 @name
| DxnsLate lhs.output = u8 0x07
| Equals lhs.output = u8 0xAB
| EscXAttr lhs.output = u8 0x72
| EscXElem lhs.output = u8 0x71
| FindDef lhs.output = u8 0x5F ## u30 @name
| FindPropertyGlobalStrict lhs.output = u8 0x5B ## u30 @name
| FindPropertyGlobal lhs.output = u8 0x5C ## u30 @name
| FindProperty lhs.output = u8 0x5E ## u30 @name
| FindPropStrict lhs.output = u8 0x5D ## u30 @name
| GetDescendants lhs.output = u8 0x59 ## u30 @name
| GetGlobalScope lhs.output = u8 0x64
| GetGlobalSlot lhs.output = u8 0x6E ## u30 @slot
| GetLex lhs.output = u8 0x60 ## u30 @name
| GetLocal lhs.output = u8 0x62 ## u30 @reg
| GetLocal0 lhs.output = u8 0xD0
| GetLocal1 lhs.output = u8 0xD1
| GetLocal2 lhs.output = u8 0xD2
| GetLocal3 lhs.output = u8 0xD3
| GetOuterScope lhs.output = u8 0x67
| GetProperty lhs.output = u8 0x66 ## u30 @name
| GetScopeObject lhs.output = u8 0x65 ## u8 @index
| GetSlot lhs.output = u8 0x6C ## u30 @slot
| GetSuper lhs.output = u8 0x04 ## u30 @name
| GreaterEquals lhs.output = u8 0xB0
| GreaterThan lhs.output = u8 0xAF
| HasNext lhs.output = u8 0x1F
| HasNext2 lhs.output = u8 0x32 ## u30 @objectReg ## u30 @indexReg
| IfEq lhs.output = u8 0x13 ## s24 @offset
| IfFalse lhs.output = u8 0x12 ## s24 @offset
| IfGe lhs.output = u8 0x18 ## s24 @offset
| IfGt lhs.output = u8 0x17 ## s24 @offset
| IfLe lhs.output = u8 0x16 ## s24 @offset
| IfLt lhs.output = u8 0x15 ## s24 @offset
| IfNGe lhs.output = u8 0x0F ## s24 @offset
| IfNGt lhs.output = u8 0x0E ## s24 @offset
| IfNLe lhs.output = u8 0x0D ## s24 @offset
| IfNLt lhs.output = u8 0x0C ## s24 @offset
| IfNe lhs.output = u8 0x14 ## s24 @offset
| IfStrictEq lhs.output = u8 0x19 ## s24 @offset
| IfStrictNe lhs.output = u8 0x1A ## s24 @offset
| IfTrue lhs.output = u8 0x11 ## s24 @offset
| In lhs.output = u8 0xB4
| IncLocal lhs.output = u8 0x92 ## u30 @reg
| IncLocal_i lhs.output = u8 0xC2 ## u30 @reg
| Increment lhs.output = u8 0x91
| Increment_i lhs.output = u8 0xC0
| InitProperty lhs.output = u8 0x68 ## u30 @name
| InstanceOf lhs.output = u8 0xB1
| IsType lhs.output = u8 0xB2 ## u30 @name
| IsTypeLate lhs.output = u8 0xB3
| Jump lhs.output = u8 0x10 ## s24 @offset
| Kill lhs.output = u8 0x08 ## u30 @reg
| Label lhs.output = u8 0x09
| LessEquals lhs.output = u8 0xAE
| LessThan lhs.output = u8 0xAD
| LoadFloat32 lhs.output = u8 0x38
| LoadFloat64 lhs.output = u8 0x39
| LoadIndirect8 lhs.output = u8 0x35
| LoadIndirect16 lhs.output = u8 0x36
| LoadIndirect32 lhs.output = u8 0x37
| LookupSwitch lhs.output = u8 0x1B ## s24 @defaultOffset ## u30size (@caseOffsets.count - 1) ## @caseOffsets.output
| Lshift lhs.output = u8 0xA5
| Modulo lhs.output = u8 0xA4
| Multiply lhs.output = u8 0xA2
| Multiply_i lhs.output = u8 0xC7
| Negate lhs.output = u8 0x90
| Negate_i lhs.output = u8 0xC4
| NewActivation lhs.output = u8 0x57
| NewArray lhs.output = u8 0x56 ## u30 @argCount
| NewCatch lhs.output = u8 0x5A ## u30 @exception
| NewClass lhs.output = u8 0x58 ## u30 @class
| NewFunction lhs.output = u8 0x40 ## u30 @method
| NewObject lhs.output = u8 0x55 ## u30 @argCount
| NextName lhs.output = u8 0x1E
| NextValue lhs.output = u8 0x23
| Nop lhs.output = u8 0x02
| Not lhs.output = u8 0x96
| Pop lhs.output = u8 0x29
| PopScope lhs.output = u8 0x1D
| PushByte lhs.output = u8 0x24 ## u8 @val
| PushDouble lhs.output = u8 0x2F ## u30 @name
| PushFalse lhs.output = u8 0x27
| PushInt lhs.output = u8 0x2D ## u30 @name
| PushNamespace lhs.output = u8 0x31 ## u30 @name
| PushNaN lhs.output = u8 0x28
| PushNull lhs.output = u8 0x20
| PushScope lhs.output = u8 0x30
| PushShort lhs.output = u8 0x25 ## u30 @val
| PushString lhs.output = u8 0x2C ## u30 @name
| PushTrue lhs.output = u8 0x26
| PushUInt lhs.output = u8 0x2E ## u30 @name
| PushUndefined lhs.output = u8 0x21
| PushWith lhs.output = u8 0x1C
| ReturnValue lhs.output = u8 0x48
| ReturnVoid lhs.output = u8 0x47
| Rshift lhs.output = u8 0xA6
| SetLocal lhs.output = u8 0x63 ## u30 @reg
| SetLocal0 lhs.output = u8 0xD4
| SetLocal1 lhs.output = u8 0xD5
| SetLocal2 lhs.output = u8 0xD6
| SetLocal3 lhs.output = u8 0xD7
| SetGlobalSlot lhs.output = u8 0x6F ## u30 @slot
| SetProperty lhs.output = u8 0x61 ## u30 @name
| SetPropertyLate lhs.output = u8 0x69
| SetSlot lhs.output = u8 0x6D ## u30 @slot
| SetSuper lhs.output = u8 0x05 ## u30 @name
| SignExtend1 lhs.output = u8 0x50
| SignExtend8 lhs.output = u8 0x51
| SignExtend16 lhs.output = u8 0x52
| StoreFloat32 lhs.output = u8 0x3D
| StoreFloat64 lhs.output = u8 0x3E
| StoreIndirect8 lhs.output = u8 0x3A
| StoreIndirect16 lhs.output = u8 0x3B
| StoreIndirect32 lhs.output = u8 0x3C
| StrictEquals lhs.output = u8 0xAC
| Substract lhs.output = u8 0xA1
| Substract_i lhs.output = u8 0xC6
| Swap lhs.output = u8 0x2B
| Throw lhs.output = u8 0x03
| Timestamp lhs.output = u8 0xF3
| TypeOf lhs.output = u8 0x95
| Urshift lhs.output = u8 0xA7
SEM DebugType | Local lhs.output = u8 0x01
SEM CaseOffsets
| Cons lhs.output = s24 @hd ## @tl.output