package Ġd us k . il c . op codes Ċ Ċ object ĠOp Codes Ġ{ ĊĊ ĉ val Ġcodes : ĠArray < out ĠOp Code > Ġ= ĠarrayOf ( Ċĉĉ ĉ // ĉĉĉ 0 x 0 ĠĠĠ 0 x 1 ĠĠĠ 0 x 2 ĠĠĠ 0 x 3 ĠĠĠ 0 x 4 ĠĠĠ 0 x 5 ĠĠĠ 0 x 6 ĠĠĠ 0 x 7 ĠĠĠ 0 x 8 ĠĠĠ 0 x 9 ĠĠĠ 0 xA ĠĠĠ 0 xB ĠĠĠ 0 xC ĠĠĠ 0 xD ĠĠĠ 0 xE ĠĠĠ 0 xF Ċĉĉ ĉ /* Ġ 0 x 0 Ġ*/ ĠĠ ĠP U 0 8 , ĠP U 1 6 , ĠP U 3 2 , ĠP U 6 4 , ĠPI 0 8 , ĠPI 1 6 , ĠPI 3 2 , ĠPI 6 4 , ĠPF 3 2 , ĠPF 6 4 , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 1 Ġ*/ ĠĠ ĠPTR U , ĠP FL S , ĠP STR , ĠP FUN , ĠPL BL , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 2 Ġ*/ ĠĠ ĠCAST , ĠDE LE , ĠSW AP , ĠD U PE , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 3 Ġ*/ ĠĠ ĠCM PE , ĠCMP G , ĠCP GE , ĠC MPL , ĠCP LE , ĠCP NE , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 4 Ġ*/ ĠĠ ĠFUNC , ĠRET N , ĠCALL , ĠCAL S , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 5 Ġ*/ ĠĠ ĠLAB L , ĠJ UMP , ĠJ EQ Z , ĠJ NE Z , ĠJ GT Z , ĠJ GE Z , ĠJ LT Z , ĠJ LE Z , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 6 Ġ*/ ĠĠ ĠL LOC , ĠS LOC , ĠAD RL , ĠL ARG , ĠS ARG , ĠA DR A , ĠLG LO , ĠSG LO , ĠA DR G , ĠREAD , ĠWR IT , ĠA DR S , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 7 Ġ*/ ĠĠ ĠI ADD , ĠIS UB , ĠI MUL , ĠI DIV , ĠIN EG , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 8 Ġ*/ ĠĠ ĠF ADD , ĠF SUB , ĠF MUL , ĠF DIV , ĠF NEG , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 x 9 Ġ*/ ĠĠ ĠB SH L , ĠB SH R , ĠB AND , ĠB W OR , ĠB XOR , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 xA Ġ*/ ĠĠ ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 xB Ġ*/ ĠĠ ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 xC Ġ*/ ĠĠ ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 xD Ġ*/ ĠĠ ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 xE Ġ*/ ĠĠ ĠEX FN , ĠIN FN , ĠF PR M , ĠF LOC , ĠG LOB , ĠDATA , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , Ċĉĉ ĉ /* Ġ 0 xF Ġ*/ ĠĠ ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP , ĠNO OP Ċ ĉ ) ĊĊ ĉ val Ġname Map Ġ= Ġcodes . map Ġ{ Ġit . name . toLowerCase () Ġto Ġit Ġ}. toMap () ĊĊ ĉ // Ġ------- ĠPush ĠNumeric Ġ------- Ċ ĉ abstract Ġclass ĠPush ( id : ĠInt , Ġtype : ĠType < *> ): ĠOp Code ( id , Ġtype ) ĊĊ ĉ object ĠP U 0 8 Ġ: ĠPush ( 0 x 0 0 , ĠType Unsigned 8 ) Ċ ĉ object ĠP U 1 6 Ġ: ĠPush ( 0 x 0 1 , ĠType Unsigned 1 6 ) Ċ ĉ object ĠP U 3 2 Ġ: ĠPush ( 0 x 0 2 , ĠType Unsigned 3 2 ) Ċ ĉ object ĠP U 6 4 Ġ: ĠPush ( 0 x 0 3 , ĠType Unsigned 6 4 ) ĊĊ ĉ object ĠPI 0 8 Ġ: ĠPush ( 0 x 0 4 , ĠType Int 8 ) Ċ ĉ object ĠPI 1 6 Ġ: ĠPush ( 0 x 0 5 , ĠType Int 1 6 ) Ċ ĉ object ĠPI 3 2 Ġ: ĠPush ( 0 x 0 6 , ĠType Int 3 2 ) Ċ ĉ object ĠPI 6 4 Ġ: ĠPush ( 0 x 0 7 , ĠType Int 6 4 ) ĊĊ ĉ object ĠPF 3 2 Ġ: ĠPush ( 0 x 0 8 , ĠType Float 3 2 ) Ċ ĉ object ĠPF 6 4 Ġ: ĠPush ( 0 x 0 9 , ĠType Float 6 4 ) ĊĊ ĉ // Ġ------- ĠPush ĠMisc Ġ------- Ċ ĉ object ĠPTR U Ġ: ĠPush ( 0 x 1 0 , ĠType Void ) Ċ ĉ object ĠP FL S Ġ: ĠPush ( 0 x 1 1 , ĠType Void ) Ċ ĉ object ĠP STR Ġ: ĠPush ( 0 x 1 2 , ĠType String ) Ċ ĉ object ĠP FUN Ġ: ĠPush ( 0 x 1 3 , ĠType Identifier ) Ċ ĉ object ĠPL BL Ġ: ĠPush ( 0 x 1 4 , ĠType Identifier ) ĊĊ ĉ // Ġ------- ĠStack ĠOperations Ġ------- Ċ ĉ object ĠCAST Ġ: ĠOp Code ( 0 x 2 0 , ĠType Type ) Ċ ĉ object ĠDE LE Ġ: ĠOp Code ( 0 x 2 1 ) Ċ ĉ object ĠSW AP Ġ: ĠOp Code ( 0 x 2 2 ) Ċ ĉ object ĠD U PE Ġ: ĠOp Code ( 0 x 2 3 ) ĊĊ ĉ // Ġ------- ĠComparison Ġ------- Ċ ĉ object ĠCM PE Ġ: ĠOp Code ( 0 x 3 0 ) ĊĊ ĉ object ĠCMP G Ġ: ĠOp Code ( 0 x 3 1 ) Ċ ĉ object ĠCP GE Ġ: ĠOp Code ( 0 x 3 2 ) ĊĊ ĉ object ĠC MPL Ġ: ĠOp Code ( 0 x 3 3 ) Ċ ĉ object ĠCP LE Ġ: ĠOp Code ( 0 x 3 4 ) ĊĊ ĉ object ĠCP NE Ġ: ĠOp Code ( 0 x 3 5 ) ĊĊ ĉ // Ġ------- ĠFunctions Ġ------- Ċ ĉ object ĠFUNC Ġ: ĠOp Code ( 0 x 4 0 , ĠType Identifier ) Ċ ĉ object ĠRET N Ġ: ĠOp Code ( 0 x 4 1 ) Ċ ĉ object ĠCALL Ġ: ĠOp Code ( 0 x 4 2 , ĠType Identifier ) Ċ ĉ object ĠCAL S Ġ: ĠOp Code ( 0 x 4 3 , ĠType Type , ĠType Type Array ) ĊĊ ĉ // Ġ------- ĠLabels Ġ------- Ċ ĉ object ĠLAB L Ġ: ĠOp Code ( 0 x 5 0 , ĠType Identifier ) ĊĊ ĉ object ĠJ UMP Ġ: ĠOp Code ( 0 x 5 1 , ĠType Identifier ) ĊĊ ĉ object ĠJ EQ Z Ġ: ĠOp Code ( 0 x 5 2 , ĠType Identifier ) Ċ ĉ object ĠJ NE Z Ġ: ĠOp Code ( 0 x 5 3 , ĠType Identifier ) ĊĊ ĉ object ĠJ GT Z Ġ: ĠOp Code ( 0 x 5 4 , ĠType Identifier ) Ċ ĉ object ĠJ GE Z Ġ: ĠOp Code ( 0 x 5 5 , ĠType Identifier ) ĊĊ ĉ object ĠJ LT Z Ġ: ĠOp Code ( 0 x 5 6 , ĠType Identifier ) Ċ ĉ object ĠJ LE Z Ġ: ĠOp Code ( 0 x 5 7 , ĠType Identifier ) ĊĊ ĉ // Ġ------- ĠMemory ĠOperations Ġ------- Ċ ĉ abstract Ġclass ĠLoad Store ( id : ĠInt ): ĠOp Code ( id , ĠType Identifier ) ĊĊ ĉ object ĠL LOC Ġ: ĠLoad Store ( 0 x 6 0 ) Ċ ĉ object ĠS LOC Ġ: ĠLoad Store ( 0 x 6 1 ) Ċ ĉ object ĠAD RL Ġ: ĠLoad Store ( 0 x 6 2 ) ĊĊ ĉ object ĠL ARG Ġ: ĠLoad Store ( 0 x 6 3 ) Ċ ĉ object ĠS ARG Ġ: ĠLoad Store ( 0 x 6 4 ) Ċ ĉ object ĠA DR A Ġ: ĠLoad Store ( 0 x 6 5 ) ĊĊ ĉ object ĠLG LO Ġ: ĠLoad Store ( 0 x 6 6 ) Ċ ĉ object ĠSG LO Ġ: ĠLoad Store ( 0 x 6 7 ) Ċ ĉ object ĠA DR G Ġ: ĠLoad Store ( 0 x 6 8 ) ĊĊ ĉ object ĠREAD Ġ: ĠOp Code ( 0 x 6 9 ) Ċ ĉ object ĠWR IT Ġ: ĠOp Code ( 0 x 6 A ) ĊĊ ĉ object ĠA DR S Ġ: ĠOp Code ( 0 x 6 B ) ĊĊ ĉ // Ġ------- ĠInteger ĠArithmetic Ġ------- Ċ ĉ object ĠI ADD Ġ: ĠOp Code ( 0 x 7 0 ) Ċ ĉ object ĠIS UB Ġ: ĠOp Code ( 0 x 7 1 ) Ċ ĉ object ĠI MUL Ġ: ĠOp Code ( 0 x 7 2 ) Ċ ĉ object ĠI DIV Ġ: ĠOp Code ( 0 x 7 3 ) Ċ ĉ object ĠI MOD Ġ: ĠOp Code ( 0 x 7 4 ) Ċ ĉ object ĠIN EG Ġ: ĠOp Code ( 0 x 7 5 ) ĊĊ ĉ // Ġ------- ĠFloat ĠArithmetic Ġ------- Ċ ĉ object ĠF ADD Ġ: ĠOp Code ( 0 x 8 0 ) Ċ ĉ object ĠF SUB Ġ: ĠOp Code ( 0 x 8 1 ) Ċ ĉ object ĠF MUL Ġ: ĠOp Code ( 0 x 8 2 ) Ċ ĉ object ĠF DIV Ġ: ĠOp Code ( 0 x 8 3 ) Ċ ĉ object ĠF MOD Ġ: ĠOp Code ( 0 x 8 4 ) Ċ ĉ object ĠF NEG Ġ: ĠOp Code ( 0 x 8 5 ) ĊĊ ĉ // Ġ------- ĠBit wise Ġ------- Ċ ĉ object ĠB SH L Ġ: ĠOp Code ( 0 x 9 0 ) Ċ ĉ object ĠB SH R Ġ: ĠOp Code ( 0 x 9 1 ) Ċ ĉ object ĠB AND Ġ: ĠOp Code ( 0 x 9 2 ) Ċ ĉ object ĠB W OR Ġ: ĠOp Code ( 0 x 9 3 ) Ċ ĉ object ĠB XOR Ġ: ĠOp Code ( 0 x 9 4 ) ĊĊ ĉ // Ġ------- ĠMeta Ġ------- Ċ ĉ object ĠEX FN Ġ: ĠOp Code ( 0 xE 0 , ĠType Identifier , ĠType Type , ĠType Type Array ) Ċ ĉ object ĠIN FN Ġ: ĠOp Code ( 0 xE 1 , ĠType Identifier , ĠType Type ) Ċ ĉ object ĠF PR M Ġ: ĠOp Code ( 0 xE 1 , ĠType Identifier , ĠType Identifier , ĠType Type ) Ċ ĉ object ĠF LOC Ġ: ĠOp Code ( 0 xE 2 , ĠType Identifier , ĠType Identifier , ĠType Type ) Ċ ĉ object ĠG LOB Ġ: ĠOp Code ( 0 xE 3 , ĠType Identifier , ĠType Identifier ) Ċ ĉ object ĠDATA Ġ: ĠOp Code ( 0 xE 4 , ĠType Identifier , ĠType ByteArray ) ĊĊ ĉ // Ġ------- ĠReserved Ġ------- Ċ ĉ object ĠNO OP Ġ: ĠOp Code ( 0 xFF ) Ċ }