Stub di tutte le istruzioni
This commit is contained in:
parent
ffb11f9a2e
commit
d8bd273df9
@ -12,7 +12,6 @@ enum OPS_STARTING_VALUES {
|
|||||||
SUBR,
|
SUBR,
|
||||||
XORI,
|
XORI,
|
||||||
XORR,
|
XORR,
|
||||||
NOTI,
|
|
||||||
NOTR,
|
NOTR,
|
||||||
MULI,
|
MULI,
|
||||||
MULR,
|
MULR,
|
||||||
@ -20,7 +19,11 @@ enum OPS_STARTING_VALUES {
|
|||||||
DIVR,
|
DIVR,
|
||||||
PUSH,
|
PUSH,
|
||||||
POOP,
|
POOP,
|
||||||
|
COMP,
|
||||||
JUMP,
|
JUMP,
|
||||||
|
JMPA,
|
||||||
|
JMPB,
|
||||||
|
JMPE,
|
||||||
SHIT,
|
SHIT,
|
||||||
NOPE,
|
NOPE,
|
||||||
GERM,
|
GERM,
|
||||||
@ -29,8 +32,14 @@ enum OPS_STARTING_VALUES {
|
|||||||
|
|
||||||
uint8_t OPS[NUM_OPS];
|
uint8_t OPS[NUM_OPS];
|
||||||
|
|
||||||
#define MOVI_SIZE 4
|
#define REG2REG 2
|
||||||
#define MOVR_SIZE 2
|
#define IMM2REG 4
|
||||||
#define LOAD_SIZE 4
|
#define REG2IMM 4
|
||||||
#define STOR_SIZE 4
|
#define UNARY 1
|
||||||
#define ADDI_SIZE 4
|
|
||||||
|
#define MOVI_SIZE IMM2REG
|
||||||
|
#define MOVR_SIZE REG2REG
|
||||||
|
#define LOAD_SIZE IMM2REG
|
||||||
|
#define STOR_SIZE REG2IMM
|
||||||
|
#define ADDI_SIZE IMM2REG
|
||||||
|
#define ADDR_SIZE REG2REG
|
21
cpp/vm.cpp
21
cpp/vm.cpp
@ -241,7 +241,7 @@ bool VM::execADDI(void) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VM::execADDR(void) {
|
bool VM::execADDR(void) {
|
||||||
uint8_t dst;
|
uint8_t dst;
|
||||||
uint8_t src;
|
uint8_t src;
|
||||||
|
|
||||||
@ -249,9 +249,26 @@ void VM::execADDR(void) {
|
|||||||
src = as.code[regs[IP] + 1] & 0b00001111;
|
src = as.code[regs[IP] + 1] & 0b00001111;
|
||||||
DBG_INFO(("ADDR %s, 0x%x\n", getRegName(dst), src));
|
DBG_INFO(("ADDR %s, 0x%x\n", getRegName(dst), src));
|
||||||
regs[dst] += regs[src];
|
regs[dst] += regs[src];
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VM::execSUBI(void) { return true; }
|
||||||
|
bool VM::execSUBR(void) { return true; }
|
||||||
|
bool VM::execXORI(void) { return true; }
|
||||||
|
bool VM::execXORR(void) { return true; }
|
||||||
|
bool VM::execNOTR(void) { return true; }
|
||||||
|
bool VM::execMULI(void) { return true; }
|
||||||
|
bool VM::execMULR(void) { return true; }
|
||||||
|
bool VM::execDIVI(void) { return true; }
|
||||||
|
bool VM::execDIVR(void) { return true; }
|
||||||
|
bool VM::execPUSH(void) { return true; }
|
||||||
|
bool VM::execPOOP(void) { return true; }
|
||||||
|
bool VM::execCOMP(void) { return true; }
|
||||||
|
bool VM::execJUMP(void) { return true; }
|
||||||
|
bool VM::execJMPA(void) { return true; }
|
||||||
|
bool VM::execJMPB(void) { return true; }
|
||||||
|
bool VM::execJMPE(void) { return true; }
|
||||||
|
bool VM::execGERM(void) { return true; }
|
||||||
void VM::run(void) {
|
void VM::run(void) {
|
||||||
uint8_t opcode;
|
uint8_t opcode;
|
||||||
bool finished = false;
|
bool finished = false;
|
||||||
|
19
cpp/vm.h
19
cpp/vm.h
@ -36,7 +36,24 @@ private:
|
|||||||
bool execLOAD(void);
|
bool execLOAD(void);
|
||||||
bool execSTOR(void);
|
bool execSTOR(void);
|
||||||
bool execADDI(void);
|
bool execADDI(void);
|
||||||
void execADDR(void);
|
bool execADDR(void);
|
||||||
|
bool execSUBI(void);
|
||||||
|
bool execSUBR(void);
|
||||||
|
bool execXORI(void);
|
||||||
|
bool execXORR(void);
|
||||||
|
bool execNOTR(void);
|
||||||
|
bool execMULI(void);
|
||||||
|
bool execMULR(void);
|
||||||
|
bool execDIVI(void);
|
||||||
|
bool execDIVR(void);
|
||||||
|
bool execPUSH(void);
|
||||||
|
bool execPOOP(void);
|
||||||
|
bool execCOMP(void);
|
||||||
|
bool execJUMP(void);
|
||||||
|
bool execJMPA(void);
|
||||||
|
bool execJMPB(void);
|
||||||
|
bool execJMPE(void);
|
||||||
|
bool execGERM(void);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VM(uint8_t *key);
|
VM(uint8_t *key);
|
||||||
|
@ -252,7 +252,6 @@ op_names = ["MOVI",
|
|||||||
"SUBR",
|
"SUBR",
|
||||||
"XORI",
|
"XORI",
|
||||||
"XORR",
|
"XORR",
|
||||||
"NOTI",
|
|
||||||
"NOTR",
|
"NOTR",
|
||||||
"MULI",
|
"MULI",
|
||||||
"MULR",
|
"MULR",
|
||||||
@ -260,7 +259,11 @@ op_names = ["MOVI",
|
|||||||
"DIVR",
|
"DIVR",
|
||||||
"PUSH",
|
"PUSH",
|
||||||
"POOP",
|
"POOP",
|
||||||
"CALL",
|
"COMP",
|
||||||
|
"JUMP",
|
||||||
|
"JMPA",
|
||||||
|
"JMPB",
|
||||||
|
"JMPE",
|
||||||
"SHIT",
|
"SHIT",
|
||||||
"NOPE",
|
"NOPE",
|
||||||
"GERM"]
|
"GERM"]
|
||||||
|
Loading…
Reference in New Issue
Block a user