Add InstrMap.cpp generation to pygen

This commit is contained in:
Diego De Gante Pérez
2026-03-25 10:15:56 -06:00
parent e24e8dfe2d
commit 291aa0a949
5 changed files with 1187 additions and 257 deletions

View File

@@ -16,107 +16,107 @@ constexpr u8 ADDR_MODE_MASKS[][2] = {
{ 0x1E, 0x00 }, // FIR
{ 0x1E, 0x00 }, // FZR
{ 0x1E, 0x1F }, // LSR
{ 0x00, 0x00 }, // FVR
{ 0x00, 0x00 }, // MOV
{ 0x00, 0x00 }, // MOR
{ 0x04, 0x00 }, // FVR
{ 0x1E, 0xFF }, // MOV
{ 0x04, 0x04 }, // MOR
{ 0x00, 0x00 }, // AMOV
{ 0x04, 0x04 }, // SWP
{ 0x04, 0x00 }, // AHM
{ 0x00, 0x00 }, // COM
{ 0x00, 0x00 }, // NEG
{ 0x00, 0x00 }, // EXS
{ 0x00, 0x00 }, // INC
{ 0x00, 0x00 }, // DEC
{ 0x00, 0x00 }, // ADD
{ 0x00, 0x00 }, // SUB
{ 0x00, 0x00 }, // MUL
{ 0x00, 0x00 }, // UMUL
{ 0x00, 0x00 }, // DIV
{ 0x00, 0x00 }, // UDIV
{ 0x00, 0x00 }, // MOD
{ 0x00, 0x00 }, // UMOD
{ 0x00, 0x00 }, // DMOD
{ 0x00, 0x00 }, // UDMD
{ 0x00, 0x00 }, // FBT
{ 0x00, 0x00 }, // STB
{ 0x00, 0x00 }, // CRB
{ 0x00, 0x00 }, // TSB
{ 0x00, 0x00 }, // BOOL
{ 0x00, 0x00 }, // NOT
{ 0x00, 0x00 }, // AND
{ 0x00, 0x00 }, // OR
{ 0x00, 0x00 }, // XOR
{ 0x00, 0x00 }, // SHL
{ 0x00, 0x00 }, // SHR
{ 0x00, 0x00 }, // SSR
{ 0x00, 0x00 }, // ROL
{ 0x00, 0x00 }, // ROR
{ 0x00, 0x00 }, // CNT
{ 0x00, 0x00 }, // EQ
{ 0x00, 0x00 }, // NE
{ 0x00, 0x00 }, // GT
{ 0x00, 0x00 }, // GE
{ 0x00, 0x00 }, // LT
{ 0x00, 0x00 }, // LE
{ 0x00, 0x00 }, // JMP
{ 0x00, 0x00 }, // JEQ
{ 0x00, 0x00 }, // JNE
{ 0x00, 0x00 }, // JIF
{ 0x00, 0x00 }, // JMR
{ 0x00, 0x00 }, // JER
{ 0x00, 0x00 }, // JNR
{ 0x00, 0x00 }, // JIR
{ 0x00, 0x00 }, // SFB
{ 0x00, 0x00 }, // LFB
{ 0x00, 0x00 }, // JUF
{ 0x00, 0x00 }, // JUR
{ 0x00, 0x00 }, // PUSH
{ 0x00, 0x00 }, // POP
{ 0x00, 0x00 }, // ALLOC
{ 0x00, 0x00 }, // HFREE
{ 0x00, 0x00 }, // CALL
{ 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
{ 0x00, 0x00 }, // EDI
{ 0x00, 0x00 }, // SHSS
{ 0x00, 0x00 }, // FLI
{ 0x00, 0x00 }, // FNEG
{ 0x00, 0x00 }, // FADD
{ 0x00, 0x00 }, // FSUB
{ 0x00, 0x00 }, // FMUL
{ 0x00, 0x00 }, // FDIV
{ 0x00, 0x00 }, // FMOD
{ 0x00, 0x00 }, // FDMOD
{ 0x00, 0x00 }, // FEPS
{ 0x00, 0x00 }, // FEEP
{ 0x00, 0x00 }, // FEQ
{ 0x00, 0x00 }, // FNE
{ 0x00, 0x00 }, // FGT
{ 0x00, 0x00 }, // FGE
{ 0x00, 0x00 }, // FLT
{ 0x00, 0x00 }, // FLE
{ 0x00, 0x00 }, // F2D
{ 0x00, 0x00 }, // D2F
{ 0x00, 0x00 }, // I2F
{ 0x00, 0x00 }, // I2D
{ 0x00, 0x00 }, // L2F
{ 0x00, 0x00 }, // L2D
{ 0x00, 0x00 }, // F2I
{ 0x00, 0x00 }, // F2L
{ 0x00, 0x00 }, // D2I
{ 0x00, 0x00 }, // D2L
{ 0x00, 0x00 }, // SIN
{ 0x00, 0x00 }, // COS
{ 0x00, 0x00 }, // TAN
{ 0x00, 0x00 }, // ASIN
{ 0x00, 0x00 }, // ACOS
{ 0x00, 0x00 }, // ATAN
{ 0x00, 0x00 }, // ATAN2
{ 0x00, 0x00 }, // EXP
{ 0x00, 0x00 }, // LOG
{ 0x00, 0x00 }, // LOGAB
{ 0x00, 0x00 }, // POW
{ 0x00, 0x00 }, // SQRT
{ 0x00, 0x00 }, // ROOT
{ 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
@@ -127,6 +127,8 @@ constexpr u8 ADDR_MODE_MASKS[][2] = {
{ 0x00, 0x00 }, // MINV
{ 0x00, 0x00 }, // MTRA
{ 0x00, 0x00 }, // MDET
{ 0x00, 0x00 }, // QMKA
{ 0x00, 0x00 }, // QMUL
{ 0x00, 0x00 }, // XADD
{ 0x00, 0x00 }, // XSUB
{ 0x00, 0x00 }, // XAMA
@@ -140,18 +142,18 @@ constexpr u8 TYPE_SIZE_MASKS[] = {
0x00, // NOP
0x00, // SPDR
0x01, // MMODE
0x0F, // INT
0x0C, // LRV
0x0F, // FSR
0x0F, // FIR
0x0F, // FZR
0x0F, // LSR
0x0F, // FVR
0x00, // MOV
0x00, // MOR
0x00, // AMOV
0x00, // SWP
0x0F, // AHM
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
@@ -208,22 +210,22 @@ constexpr u8 TYPE_SIZE_MASKS[] = {
0x0F, // RET
0x0F, // EDI
0x0F, // SHSS
0x00, // FLI
0x00, // FNEG
0x00, // FADD
0x00, // FSUB
0x00, // FMUL
0x00, // FDIV
0x00, // FMOD
0x00, // FDMOD
0x00, // FEPS
0x00, // FEEP
0x00, // FEQ
0x00, // FNE
0x00, // FGT
0x00, // FGE
0x00, // FLT
0x00, // FLE
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
@@ -234,19 +236,19 @@ constexpr u8 TYPE_SIZE_MASKS[] = {
0x00, // F2L
0x00, // D2I
0x00, // D2L
0x00, // SIN
0x00, // COS
0x00, // TAN
0x00, // ASIN
0x00, // ACOS
0x00, // ATAN
0x00, // ATAN2
0x00, // EXP
0x00, // LOG
0x00, // LOGAB
0x00, // POW
0x00, // SQRT
0x00, // ROOT
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
@@ -257,6 +259,8 @@ constexpr u8 TYPE_SIZE_MASKS[] = {
0x00, // MINV
0x00, // MTRA
0x00, // MDET
0x00, // QMKA
0x00, // QMUL
0x00, // XADD
0x00, // XSUB
0x00, // XAMA