Added all instructions as empty instructions. Compiles on WIN + MSYS2, UCRT64

This commit is contained in:
2026-03-27 19:24:26 -06:00
parent 41dd2b87b4
commit aabcfc6f0c
21 changed files with 731 additions and 15 deletions

View File

@@ -144,7 +144,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 4,
"id": "58645013", "id": "58645013",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@@ -283,7 +283,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 5,
"id": "452bc76c", "id": "452bc76c",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@@ -357,7 +357,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 6,
"id": "5aaebef0", "id": "5aaebef0",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@@ -451,7 +451,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 7,
"id": "instrmap_gen", "id": "instrmap_gen",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@@ -615,6 +615,54 @@
"print(f' Switch cases : {switch_count}')\n", "print(f' Switch cases : {switch_count}')\n",
"print(f' Line endings : LF-only verified')\n" "print(f' Line endings : LF-only verified')\n"
] ]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "9f190f4c",
"metadata": {},
"outputs": [],
"source": [
"# ---------- GENERATE INSTR_XX FILES ----------\n",
"INSTR_DIR = f'{SRC_ROOT}/spider/runtime/instr'\n",
"\n",
"# Generate the files\n",
"# Each file goes from 00 to 1F (0-31), 32 instr / file\n",
"for x0 in range(0, TABLE_SIZE, 32):\n",
" x1 = x0 + 31\n",
" fname = f'{INSTR_DIR}/Instr_{x0:03X}-{x1:03X}.cpp'\n",
"\n",
" # TODO: Check if there are missing instructions\n",
" if file_exists(fname):\n",
" continue\n",
"\n",
" # CREATE FILE FROM SCRATCH\n",
" L = []\n",
" L.append('/**')\n",
" L.append(' * @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!')\n",
" L.append(' *')\n",
" L.append(' */')\n",
" L.append('') # [CHANGE] Use absolute path to make paths more explicit\n",
" L.append('#include <spider/runtime/cpu/CPU.hpp>')\n",
" L.append('')\n",
" L.append('namespace spider {')\n",
" L.append('')\n",
"\n",
" for opc in range(x0, x1 + 1):\n",
" mnem = opcode_to_mnem.get(opc)\n",
" if mnem is None: continue\n",
"\n",
" L.append(f' void CPU::{mnem}() {{')\n",
" L.append(f' // TODO: Implement {mnem}')\n",
" L.append(f' }}')\n",
" L.append('')\n",
"\n",
" L.append('}')\n",
" L.append('')\n",
"\n",
" with open(fname, 'wb') as f:\n",
" f.write('\\n'.join(L).encode('utf-8'))\n"
]
} }
], ],
"metadata": { "metadata": {
@@ -633,7 +681,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.13.7" "version": "3.14.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@@ -1,9 +0,0 @@
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::NOP() {
// No Operation //
}
}

View File

@@ -0,0 +1,134 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::NOP() {
// TODO: Implement NOP
}
void CPU::SPDR() {
// TODO: Implement SPDR
}
void CPU::MMODE() {
// TODO: Implement MMODE
}
void CPU::INT() {
// TODO: Implement INT
}
void CPU::LRV() {
// TODO: Implement LRV
}
void CPU::FSR() {
// TODO: Implement FSR
}
void CPU::FIR() {
// TODO: Implement FIR
}
void CPU::FZR() {
// TODO: Implement FZR
}
void CPU::LSR() {
// TODO: Implement LSR
}
void CPU::FVR() {
// TODO: Implement FVR
}
void CPU::MOV() {
// TODO: Implement MOV
}
void CPU::MOR() {
// TODO: Implement MOR
}
void CPU::AMOV() {
// TODO: Implement AMOV
}
void CPU::SWP() {
// TODO: Implement SWP
}
void CPU::AHM() {
// TODO: Implement AHM
}
void CPU::COM() {
// TODO: Implement COM
}
void CPU::NEG() {
// TODO: Implement NEG
}
void CPU::EXS() {
// TODO: Implement EXS
}
void CPU::INC() {
// TODO: Implement INC
}
void CPU::DEC() {
// TODO: Implement DEC
}
void CPU::ADD() {
// TODO: Implement ADD
}
void CPU::SUB() {
// TODO: Implement SUB
}
void CPU::MUL() {
// TODO: Implement MUL
}
void CPU::UMUL() {
// TODO: Implement UMUL
}
void CPU::DIV() {
// TODO: Implement DIV
}
void CPU::UDIV() {
// TODO: Implement UDIV
}
void CPU::MOD() {
// TODO: Implement MOD
}
void CPU::UMOD() {
// TODO: Implement UMOD
}
void CPU::DMOD() {
// TODO: Implement DMOD
}
void CPU::UDMD() {
// TODO: Implement UDMD
}
void CPU::FBT() {
// TODO: Implement FBT
}
}

View File

@@ -0,0 +1,122 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::STB() {
// TODO: Implement STB
}
void CPU::CRB() {
// TODO: Implement CRB
}
void CPU::TSB() {
// TODO: Implement TSB
}
void CPU::BOOL() {
// TODO: Implement BOOL
}
void CPU::NOT() {
// TODO: Implement NOT
}
void CPU::AND() {
// TODO: Implement AND
}
void CPU::OR() {
// TODO: Implement OR
}
void CPU::XOR() {
// TODO: Implement XOR
}
void CPU::SHL() {
// TODO: Implement SHL
}
void CPU::SHR() {
// TODO: Implement SHR
}
void CPU::SSR() {
// TODO: Implement SSR
}
void CPU::ROL() {
// TODO: Implement ROL
}
void CPU::ROR() {
// TODO: Implement ROR
}
void CPU::CNT() {
// TODO: Implement CNT
}
void CPU::EQ() {
// TODO: Implement EQ
}
void CPU::NE() {
// TODO: Implement NE
}
void CPU::GT() {
// TODO: Implement GT
}
void CPU::GE() {
// TODO: Implement GE
}
void CPU::LT() {
// TODO: Implement LT
}
void CPU::LE() {
// TODO: Implement LE
}
void CPU::JMP() {
// TODO: Implement JMP
}
void CPU::JEQ() {
// TODO: Implement JEQ
}
void CPU::JNE() {
// TODO: Implement JNE
}
void CPU::JIF() {
// TODO: Implement JIF
}
void CPU::JMR() {
// TODO: Implement JMR
}
void CPU::JER() {
// TODO: Implement JER
}
void CPU::JNR() {
// TODO: Implement JNR
}
void CPU::JIR() {
// TODO: Implement JIR
}
}

View File

@@ -0,0 +1,122 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::SFB() {
// TODO: Implement SFB
}
void CPU::LFB() {
// TODO: Implement LFB
}
void CPU::JUF() {
// TODO: Implement JUF
}
void CPU::JUR() {
// TODO: Implement JUR
}
void CPU::PUSH() {
// TODO: Implement PUSH
}
void CPU::POP() {
// TODO: Implement POP
}
void CPU::ALLOC() {
// TODO: Implement ALLOC
}
void CPU::HFREE() {
// TODO: Implement HFREE
}
void CPU::CALL() {
// TODO: Implement CALL
}
void CPU::RET() {
// TODO: Implement RET
}
void CPU::EDI() {
// TODO: Implement EDI
}
void CPU::SHSS() {
// TODO: Implement SHSS
}
void CPU::FLI() {
// TODO: Implement FLI
}
void CPU::FNEG() {
// TODO: Implement FNEG
}
void CPU::FADD() {
// TODO: Implement FADD
}
void CPU::FSUB() {
// TODO: Implement FSUB
}
void CPU::FMUL() {
// TODO: Implement FMUL
}
void CPU::FDIV() {
// TODO: Implement FDIV
}
void CPU::FMOD() {
// TODO: Implement FMOD
}
void CPU::FDMOD() {
// TODO: Implement FDMOD
}
void CPU::FEPS() {
// TODO: Implement FEPS
}
void CPU::FEEP() {
// TODO: Implement FEEP
}
void CPU::FEQ() {
// TODO: Implement FEQ
}
void CPU::FNE() {
// TODO: Implement FNE
}
void CPU::FGT() {
// TODO: Implement FGT
}
void CPU::FGE() {
// TODO: Implement FGE
}
void CPU::FLT() {
// TODO: Implement FLT
}
void CPU::FLE() {
// TODO: Implement FLE
}
}

View File

@@ -0,0 +1,118 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::F2D() {
// TODO: Implement F2D
}
void CPU::D2F() {
// TODO: Implement D2F
}
void CPU::I2F() {
// TODO: Implement I2F
}
void CPU::I2D() {
// TODO: Implement I2D
}
void CPU::L2F() {
// TODO: Implement L2F
}
void CPU::L2D() {
// TODO: Implement L2D
}
void CPU::F2I() {
// TODO: Implement F2I
}
void CPU::F2L() {
// TODO: Implement F2L
}
void CPU::D2I() {
// TODO: Implement D2I
}
void CPU::D2L() {
// TODO: Implement D2L
}
void CPU::SIN() {
// TODO: Implement SIN
}
void CPU::COS() {
// TODO: Implement COS
}
void CPU::TAN() {
// TODO: Implement TAN
}
void CPU::ASIN() {
// TODO: Implement ASIN
}
void CPU::ACOS() {
// TODO: Implement ACOS
}
void CPU::ATAN() {
// TODO: Implement ATAN
}
void CPU::ATAN2() {
// TODO: Implement ATAN2
}
void CPU::EXP() {
// TODO: Implement EXP
}
void CPU::LOG() {
// TODO: Implement LOG
}
void CPU::LOGAB() {
// TODO: Implement LOGAB
}
void CPU::POW() {
// TODO: Implement POW
}
void CPU::SQRT() {
// TODO: Implement SQRT
}
void CPU::ROOT() {
// TODO: Implement ROOT
}
void CPU::ADC() {
// TODO: Implement ADC
}
void CPU::SWC() {
// TODO: Implement SWC
}
void CPU::MWO() {
// TODO: Implement MWO
}
void CPU::UMO() {
// TODO: Implement UMO
}
}

View File

@@ -0,0 +1,62 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::MADD() {
// TODO: Implement MADD
}
void CPU::MSUB() {
// TODO: Implement MSUB
}
void CPU::MMUL() {
// TODO: Implement MMUL
}
void CPU::MINV() {
// TODO: Implement MINV
}
void CPU::MTRA() {
// TODO: Implement MTRA
}
void CPU::MDET() {
// TODO: Implement MDET
}
void CPU::QMKA() {
// TODO: Implement QMKA
}
void CPU::QMUL() {
// TODO: Implement QMUL
}
void CPU::XADD() {
// TODO: Implement XADD
}
void CPU::XSUB() {
// TODO: Implement XSUB
}
void CPU::XAMA() {
// TODO: Implement XAMA
}
void CPU::XMUL() {
// TODO: Implement XMUL
}
void CPU::XDIV() {
// TODO: Implement XDIV
}
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,14 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
void CPU::UPY() {
// TODO: Implement UPY
}
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -0,0 +1,10 @@
/**
* @brief AUTO-GENERATED by pygen.ipynb BUT editable by hand!
*
*/
#include <spider/runtime/cpu/CPU.hpp>
namespace spider {
}

View File

@@ -2,6 +2,8 @@
#include <spider/runtime/common.hpp> #include <spider/runtime/common.hpp>
#include <spider/runtime/cpu/Register.hpp>
namespace spider { namespace spider {
/** /**

View File

@@ -152,7 +152,7 @@ namespace spider {
#endif #endif
#if SPIDER_LITTLE_ENDIAN #if SPIDER_LITTLE_ENDIAN
std::memcpy(&n, bytes, sizeof(T)); std::memcpy(&n, bytes, sizeof(T));
*n = byteswap(n); *n = byteswap(*n);
#endif #endif
#if !SPIDER_BIG_ENDIAN && !SPIDER_LITTLE_ENDIAN #if !SPIDER_BIG_ENDIAN && !SPIDER_LITTLE_ENDIAN
using U = std::make_unsigned_t<T>; using U = std::make_unsigned_t<T>;

View File

@@ -1,8 +1,11 @@
#pragma once #pragma once
#include <spider/SpiderRuntime.hpp> #include <spider/SpiderRuntime.hpp>
#include <spider/runtime/memory/ByteArray.hpp> #include <spider/runtime/memory/ByteArray.hpp>
#include <spider/runtime/cpu/Register.hpp>
namespace spider { namespace spider {
/** /**