#pragma once // AUTO-GENERATED by pygen.ipynb — DO NOT EDIT MANUALLY #include namespace spider { // Addressing mode masks — indexed by opcode. // [opcode][0] = mask for param 1, [opcode][1] = mask for param 2 constexpr u8 ADDR_MODE_MASKS[][2] = { { 0x00, 0x00 }, // NOP { 0x00, 0x00 }, // SPDR { 0x05, 0x00 }, // MMODE { 0x1F, 0x00 }, // INT { 0x1F, 0x00 }, // LRV { 0x1E, 0x00 }, // FSR { 0x1E, 0x00 }, // FIR { 0x1E, 0x00 }, // FZR { 0x1E, 0x1F }, // LSR { 0x04, 0x00 }, // FVR { 0x1E, 0xFF }, // MOV { 0x04, 0x04 }, // MOR { 0x00, 0x00 }, // AMOV { 0x04, 0x04 }, // SWP { 0x04, 0x00 }, // AHM { 0xFF, 0x00 }, // COM { 0xFF, 0x00 }, // NEG { 0xFF, 0x00 }, // EXS { 0xFF, 0x00 }, // INC { 0xFF, 0x00 }, // DEC { 0x1E, 0xFF }, // ADD { 0x1E, 0xFF }, // SUB { 0x1E, 0xFF }, // MUL { 0x1E, 0xFF }, // UMUL { 0x1E, 0xFF }, // DIV { 0x1E, 0xFF }, // UDIV { 0x1E, 0xFF }, // MOD { 0x1E, 0xFF }, // UMOD { 0x1E, 0xFF }, // DMOD { 0x1E, 0xFF }, // UDMD { 0xFF, 0x00 }, // FBT { 0x1E, 0xFF }, // STB { 0x1E, 0xFF }, // CRB { 0x1E, 0xFF }, // TSB { 0xFF, 0x00 }, // BOOL { 0xFF, 0x00 }, // NOT { 0x1E, 0xFF }, // AND { 0x1E, 0xFF }, // OR { 0x1E, 0xFF }, // XOR { 0x1E, 0xFF }, // SHL { 0x1E, 0xFF }, // SHR { 0x1E, 0xFF }, // SSR { 0x1E, 0xFF }, // ROL { 0x1E, 0xFF }, // ROR { 0xFF, 0x00 }, // CNT { 0x1E, 0xFF }, // EQ { 0x1E, 0xFF }, // NE { 0x1E, 0xFF }, // GT { 0x1E, 0xFF }, // GE { 0x1E, 0xFF }, // LT { 0x1E, 0xFF }, // LE { 0xFF, 0x00 }, // JMP { 0xFF, 0x00 }, // JEQ { 0xFF, 0x00 }, // JNE { 0x1E, 0xFF }, // JIF { 0xFF, 0x00 }, // JMR { 0xFF, 0x00 }, // JER { 0xFF, 0x00 }, // JNR { 0x1E, 0xFF }, // JIR { 0x1E, 0xFF }, // SFB { 0x1E, 0xFF }, // LFB { 0x1E, 0xFF }, // JUF { 0x1E, 0xFF }, // JUR { 0xFF, 0x00 }, // PUSH { 0xFF, 0x00 }, // POP { 0xFF, 0x00 }, // ALLOC { 0xFF, 0x00 }, // HFREE { 0xFF, 0x00 }, // CALL { 0x00, 0x00 }, // RET { 0xFF, 0x00 }, // EDI { 0xFF, 0x00 }, // SHSS { 0xFF, 0x00 }, // FLI { 0xFF, 0x00 }, // FNEG { 0x1E, 0xFF }, // FADD { 0x1E, 0xFF }, // FSUB { 0x1E, 0xFF }, // FMUL { 0x1E, 0xFF }, // FDIV { 0x1E, 0xFF }, // FMOD { 0x1E, 0xFF }, // FDMOD { 0xFF, 0x00 }, // FEPS { 0xFF, 0x00 }, // FEEP { 0x1E, 0xFF }, // FEQ { 0x1E, 0xFF }, // FNE { 0x1E, 0xFF }, // FGT { 0x1E, 0xFF }, // FGE { 0x1E, 0xFF }, // FLT { 0x1E, 0xFF }, // FLE { 0xFF, 0x00 }, // F2D { 0xFF, 0x00 }, // D2F { 0xFF, 0x00 }, // I2F { 0xFF, 0x00 }, // I2D { 0xFF, 0x00 }, // L2F { 0xFF, 0x00 }, // L2D { 0xFF, 0x00 }, // F2I { 0xFF, 0x00 }, // F2L { 0xFF, 0x00 }, // D2I { 0xFF, 0x00 }, // D2L { 0xFF, 0x00 }, // SIN { 0xFF, 0x00 }, // COS { 0xFF, 0x00 }, // TAN { 0xFF, 0x00 }, // ASIN { 0xFF, 0x00 }, // ACOS { 0xFF, 0x00 }, // ATAN { 0x1E, 0xFF }, // ATAN2 { 0xFF, 0x00 }, // EXP { 0xFF, 0x00 }, // LOG { 0x1E, 0xFF }, // LOGAB { 0x1E, 0xFF }, // POW { 0xFF, 0x00 }, // SQRT { 0x1E, 0xFF }, // ROOT { 0x00, 0x00 }, // ADC { 0x00, 0x00 }, // SWC { 0x00, 0x00 }, // MWO { 0x00, 0x00 }, // UMO { 0x00, 0x00 }, // MADD { 0x00, 0x00 }, // MSUB { 0x00, 0x00 }, // MMUL { 0x00, 0x00 }, // MINV { 0x00, 0x00 }, // MTRA { 0x00, 0x00 }, // MDET { 0x00, 0x00 }, // QMKA { 0x00, 0x00 }, // QMUL { 0x00, 0x00 }, // XADD { 0x00, 0x00 }, // XSUB { 0x00, 0x00 }, // XAMA { 0x00, 0x00 }, // XMUL { 0x00, 0x00 }, // XDIV { 0x00, 0x00 }, // UPY }; // Type size masks — indexed by opcode. constexpr u8 TYPE_SIZE_MASKS[] = { 0x00, // NOP 0x00, // SPDR 0x01, // MMODE 0x08, // INT 0x08, // LRV 0x08, // FSR 0x08, // FIR 0x08, // FZR 0x08, // LSR 0x08, // FVR 0x0F, // MOV 0x08, // MOR 0x08, // AMOV 0x08, // SWP 0x08, // AHM 0x0F, // COM 0x0F, // NEG 0x0F, // EXS 0x0F, // INC 0x0F, // DEC 0x0F, // ADD 0x0F, // SUB 0x0F, // MUL 0x0F, // UMUL 0x0F, // DIV 0x0F, // UDIV 0x0F, // MOD 0x0F, // UMOD 0x0F, // DMOD 0x0F, // UDMD 0x0F, // FBT 0x0F, // STB 0x0F, // CRB 0x0F, // TSB 0x0F, // BOOL 0x0F, // NOT 0x0F, // AND 0x0F, // OR 0x0F, // XOR 0x0F, // SHL 0x0F, // SHR 0x0F, // SSR 0x0F, // ROL 0x0F, // ROR 0x0F, // CNT 0x0F, // EQ 0x0F, // NE 0x0F, // GT 0x0F, // GE 0x0F, // LT 0x0F, // LE 0x0F, // JMP 0x0F, // JEQ 0x0F, // JNE 0x0F, // JIF 0x0F, // JMR 0x0F, // JER 0x0F, // JNR 0x0F, // JIR 0x0F, // SFB 0x0F, // LFB 0x0F, // JUF 0x0F, // JUR 0x0F, // PUSH 0x0F, // POP 0x0F, // ALLOC 0x0F, // HFREE 0x0F, // CALL 0x0F, // RET 0x0F, // EDI 0x0F, // SHSS 0x0C, // FLI 0x0C, // FNEG 0x0C, // FADD 0x0C, // FSUB 0x0C, // FMUL 0x0C, // FDIV 0x0C, // FMOD 0x0C, // FDMOD 0x0C, // FEPS 0x0C, // FEEP 0x0C, // FEQ 0x0C, // FNE 0x0C, // FGT 0x0C, // FGE 0x0C, // FLT 0x0C, // FLE 0x00, // F2D 0x00, // D2F 0x00, // I2F 0x00, // I2D 0x00, // L2F 0x00, // L2D 0x00, // F2I 0x00, // F2L 0x00, // D2I 0x00, // D2L 0x0C, // SIN 0x0C, // COS 0x0C, // TAN 0x0C, // ASIN 0x0C, // ACOS 0x0C, // ATAN 0x0C, // ATAN2 0x0C, // EXP 0x0C, // LOG 0x0C, // LOGAB 0x0C, // POW 0x0C, // SQRT 0x0C, // ROOT 0x00, // ADC 0x00, // SWC 0x00, // MWO 0x00, // UMO 0x00, // MADD 0x00, // MSUB 0x00, // MMUL 0x00, // MINV 0x00, // MTRA 0x00, // MDET 0x00, // QMKA 0x00, // QMUL 0x00, // XADD 0x00, // XSUB 0x00, // XAMA 0x00, // XMUL 0x00, // XDIV 0x00, // UPY }; } // namespace spider