packages feed

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