268 lines
6.4 KiB
C++
268 lines
6.4 KiB
C++
#pragma once
|
|
// AUTO-GENERATED by pygen.ipynb — DO NOT EDIT MANUALLY
|
|
#include <spider/runtime/common.hpp>
|
|
|
|
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
|
|
{ 0x00, 0x00 }, // FVR
|
|
{ 0x00, 0x00 }, // MOV
|
|
{ 0x00, 0x00 }, // 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
|
|
{ 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
|
|
{ 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 }, // 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
|
|
0x0F, // INT
|
|
0x0C, // LRV
|
|
0x0F, // FSR
|
|
0x0F, // FIR
|
|
0x0F, // FZR
|
|
0x0F, // LSR
|
|
0x0F, // FVR
|
|
0x00, // MOV
|
|
0x00, // MOR
|
|
0x00, // AMOV
|
|
0x00, // SWP
|
|
0x0F, // 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
|
|
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
|
|
0x00, // F2D
|
|
0x00, // D2F
|
|
0x00, // I2F
|
|
0x00, // I2D
|
|
0x00, // L2F
|
|
0x00, // L2D
|
|
0x00, // F2I
|
|
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
|
|
0x00, // ADC
|
|
0x00, // SWC
|
|
0x00, // MWO
|
|
0x00, // UMO
|
|
0x00, // MADD
|
|
0x00, // MSUB
|
|
0x00, // MMUL
|
|
0x00, // MINV
|
|
0x00, // MTRA
|
|
0x00, // MDET
|
|
0x00, // XADD
|
|
0x00, // XSUB
|
|
0x00, // XAMA
|
|
0x00, // XMUL
|
|
0x00, // XDIV
|
|
0x00, // UPY
|
|
};
|
|
|
|
} // namespace spider
|