2017-05-17 17:32:05 +01:00
|
|
|
/*
|
|
|
|
MEMORY LOCATIONS AND IMMEDIATES ARE 16 BITS LONG
|
|
|
|
*/
|
2017-05-17 17:58:00 +01:00
|
|
|
enum OPS_STARTING_VALUES {
|
2017-05-17 17:32:05 +01:00
|
|
|
MOVI,
|
|
|
|
MOVR,
|
|
|
|
LOAD,
|
|
|
|
STOR,
|
|
|
|
ADDI,
|
|
|
|
ADDR,
|
|
|
|
SUBI,
|
|
|
|
SUBR,
|
2017-05-17 18:58:00 +01:00
|
|
|
XORB,
|
|
|
|
XORW,
|
2017-05-17 17:32:05 +01:00
|
|
|
XORR,
|
|
|
|
NOTR,
|
|
|
|
MULI,
|
|
|
|
MULR,
|
|
|
|
DIVI,
|
|
|
|
DIVR,
|
|
|
|
PUSH,
|
|
|
|
POOP,
|
2017-05-17 18:58:00 +01:00
|
|
|
CMPI,
|
|
|
|
CMPR,
|
2017-05-17 17:32:05 +01:00
|
|
|
JUMP,
|
2017-05-17 18:31:27 +01:00
|
|
|
JMPA,
|
|
|
|
JMPB,
|
|
|
|
JMPE,
|
2017-05-17 17:32:05 +01:00
|
|
|
SHIT,
|
|
|
|
NOPE,
|
2017-05-17 18:58:00 +01:00
|
|
|
GRMN,
|
2017-05-17 17:32:05 +01:00
|
|
|
NUM_OPS
|
|
|
|
};
|
|
|
|
|
|
|
|
uint8_t OPS[NUM_OPS];
|
|
|
|
|
2017-05-17 18:58:00 +01:00
|
|
|
/*
|
|
|
|
INSTRUCTION SIZE TYPES
|
|
|
|
*/
|
2017-05-17 18:31:27 +01:00
|
|
|
#define REG2REG 2
|
|
|
|
#define IMM2REG 4
|
|
|
|
#define REG2IMM 4
|
2017-05-17 18:58:00 +01:00
|
|
|
#define BYT2REG 3
|
|
|
|
#define UNARY 2
|
|
|
|
#define SINGLE 1
|
2017-05-17 18:31:27 +01:00
|
|
|
|
2017-05-17 18:58:00 +01:00
|
|
|
/*
|
|
|
|
INSTRUCTION SIZES
|
|
|
|
*/
|
2017-05-17 18:31:27 +01:00
|
|
|
#define MOVI_SIZE IMM2REG
|
|
|
|
#define MOVR_SIZE REG2REG
|
|
|
|
#define LOAD_SIZE IMM2REG
|
|
|
|
#define STOR_SIZE REG2IMM
|
|
|
|
#define ADDI_SIZE IMM2REG
|
2017-05-17 18:58:00 +01:00
|
|
|
#define ADDR_SIZE REG2REG
|
|
|
|
#define SUBI_SIZE IMM2REG
|
|
|
|
#define SUBR_SIZE REG2REG
|
|
|
|
#define XORB_SIZE BYT2REG
|
|
|
|
#define XORW_SIZE IMM2REG
|
|
|
|
#define XORR_SIZE REG2REG
|
|
|
|
#define NOTR_SIZE UNARY
|
|
|
|
#define MULI_SIZE IMM2REG
|
|
|
|
#define MULR_SIZE REG2REG
|
|
|
|
#define DIVI_SIZE IMM2REG
|
|
|
|
#define DIVR_SIZE REG2REG
|
|
|
|
#define PUSH_SIZE UNARY
|
|
|
|
#define POOP_SIZE UNARY
|
|
|
|
#define CMPI_SIZE IMM2REG
|
|
|
|
#define CMPR_SIZE REG2REG
|
|
|
|
#define JUMP_SIZE UNARY
|
|
|
|
#define JMPA_SIZE UNARY
|
|
|
|
#define JMPB_SIZE UNARY
|
|
|
|
#define JMPE_SIZE UNARY
|
|
|
|
#define SHIT_SIZE SINGLE
|
|
|
|
#define NOPE_SIZE SINGLE
|
|
|
|
#define GRMN_SIZE SINGLE
|