Some changes

This commit is contained in:
2025-02-16 17:28:10 +01:00
parent 0fc4040ad7
commit 4d3755e2ce
18 changed files with 562 additions and 80 deletions

View File

@@ -22,6 +22,7 @@
#define CPU_MODE_LOOP (1 << 3)
#define CPU_MODE_STEP (1 << 4)
#define CPU_MODE_SECOND (1 << 5)
#define CPU_MODE_FRAME (1 << 6)
#define CPU_INSTRUCTION_SIZE 8 //Biggest instruction
@@ -56,7 +57,7 @@ typedef enum {
HLT,
MOV_RN_IMM, // MOV Rn, Imm - Move immediate to register (Rn = Imm)
MOV_IMM_RN, // MOV Rn, Imm - Move immediate to register (Rn = Imm)
MOV_RN_RM, // MOV Rn, Rm - Move value from one register to another (Rn = Rm)
MOV_RN_ADDR, // MOV Rn, [Addr] - Load value from memory address into register (Rn = [Addr])
MOV_ADDR_RN, // MOV [Addr], Rn - Store register value into memory address ([Addr] = Rn)
@@ -114,11 +115,17 @@ typedef enum {
JE, // JE Addr - Jump if equal (if zero flag set, PC = Addr)
JNE, // JNE Addr - Jump if not equal (if zero flag not set, PC = Addr)
JMP_BIT_SET_RN, // jump relative if a given bit in a register is set
JMP_BIT_SET_ADDR, // jump relative if a given bit in memory is set
BIT_TS_RN, // jump relative if a given bit in a register is set
BIT_TS_ADDR, // jump relative if a given bit in memory is set
JMP_BIT_CLEAR_RN, // jump relative if a given bit in a register is not set
JMP_BIT_CLEAR_ADDR, // jump relative if a given bit in memory is not set
BIT_TC_RN, // jump relative if a given bit in a register is not set
BIT_TC_ADDR, // jump relative if a given bit in memory is not set
BITS_RN, // jump relative if a given bit in a register is set
BITS_ADDR, // jump relative if a given bit in memory is set
BITC_RN, // jump relative if a given bit in a register is not set
BITC_ADDR, // jump relative if a given bit in memory is not set
JG, // JG Addr - Jump if greater (if greater flag set, PC = Addr)