2017-05-17 17:32:05 +01:00
|
|
|
/*
|
|
|
|
MEMORY LOCATIONS AND IMMEDIATES ARE 16 BITS LONG
|
|
|
|
*/
|
2017-05-25 16:53:49 +01:00
|
|
|
#ifndef DBG
|
2017-05-17 17:58:00 +01:00
|
|
|
enum OPS_STARTING_VALUES {
|
2017-05-17 17:32:05 +01:00
|
|
|
MOVI,
|
|
|
|
MOVR,
|
2017-05-24 14:29:20 +01:00
|
|
|
LODI,
|
|
|
|
LODR,
|
|
|
|
STRI,
|
|
|
|
STRR,
|
2017-05-17 17:32:05 +01:00
|
|
|
ADDI,
|
|
|
|
ADDR,
|
|
|
|
SUBI,
|
|
|
|
SUBR,
|
2017-05-18 16:28:10 +01:00
|
|
|
ANDB,
|
|
|
|
ANDW,
|
|
|
|
ANDR,
|
|
|
|
YORB,
|
|
|
|
YORW,
|
|
|
|
YORR,
|
2017-05-17 18:58:00 +01:00
|
|
|
XORB,
|
|
|
|
XORW,
|
2017-05-17 17:32:05 +01:00
|
|
|
XORR,
|
|
|
|
NOTR,
|
|
|
|
MULI,
|
|
|
|
MULR,
|
|
|
|
DIVI,
|
|
|
|
DIVR,
|
2017-05-24 14:07:56 +01:00
|
|
|
SHLI,
|
|
|
|
SHLR,
|
|
|
|
SHRI,
|
|
|
|
SHRR,
|
2017-05-17 17:32:05 +01:00
|
|
|
PUSH,
|
|
|
|
POOP,
|
2017-05-24 19:54:12 +01:00
|
|
|
CMPB,
|
|
|
|
CMPW,
|
2017-05-17 18:58:00 +01:00
|
|
|
CMPR,
|
2017-05-18 14:41:05 +01:00
|
|
|
JMPI,
|
|
|
|
JMPR,
|
|
|
|
JPAI,
|
|
|
|
JPAR,
|
|
|
|
JPBI,
|
|
|
|
JPBR,
|
|
|
|
JPEI,
|
|
|
|
JPER,
|
2017-05-18 16:28:10 +01:00
|
|
|
JPNI,
|
|
|
|
JPNR,
|
2017-05-24 19:54:12 +01:00
|
|
|
CALL,
|
2017-05-19 11:23:18 +01:00
|
|
|
RETN,
|
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
|
|
|
|
};
|
2017-05-25 16:53:49 +01:00
|
|
|
#else
|
|
|
|
enum OPS_STARTING_VALUES {
|
|
|
|
MOVI,
|
|
|
|
MOVR,
|
|
|
|
LODI,
|
|
|
|
LODR,
|
|
|
|
STRI,
|
|
|
|
STRR,
|
|
|
|
ADDI,
|
|
|
|
ADDR,
|
|
|
|
SUBI,
|
|
|
|
SUBR,
|
|
|
|
ANDB,
|
|
|
|
ANDW,
|
|
|
|
ANDR,
|
|
|
|
YORB,
|
|
|
|
YORW,
|
|
|
|
YORR,
|
|
|
|
XORB,
|
|
|
|
XORW,
|
|
|
|
XORR,
|
|
|
|
NOTR,
|
|
|
|
MULI,
|
|
|
|
MULR,
|
|
|
|
DIVI,
|
|
|
|
DIVR,
|
|
|
|
SHLI,
|
|
|
|
SHLR,
|
|
|
|
SHRI,
|
|
|
|
SHRR,
|
|
|
|
PUSH,
|
|
|
|
POOP,
|
|
|
|
CMPB,
|
|
|
|
CMPW,
|
|
|
|
CMPR,
|
|
|
|
JMPI,
|
|
|
|
JMPR,
|
|
|
|
JPAI,
|
|
|
|
JPAR,
|
|
|
|
JPBI,
|
|
|
|
JPBR,
|
|
|
|
JPEI,
|
|
|
|
JPER,
|
|
|
|
JPNI,
|
|
|
|
JPNR,
|
|
|
|
CALL,
|
|
|
|
RETN,
|
|
|
|
SHIT,
|
|
|
|
NOPE,
|
|
|
|
GRMN,
|
|
|
|
DEBG,
|
|
|
|
NUM_OPS
|
|
|
|
};
|
|
|
|
#endif
|
2017-05-17 17:32:05 +01:00
|
|
|
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
|
2017-05-26 10:55:21 +01:00
|
|
|
#define REG2IMM 4
|
2017-05-17 18:58:00 +01:00
|
|
|
#define BYT2REG 3
|
2017-05-18 14:41:05 +01:00
|
|
|
#define REGONLY 2
|
|
|
|
#define IMMONLY 3
|
2017-05-17 18:58:00 +01:00
|
|
|
#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
|
2017-05-24 14:29:20 +01:00
|
|
|
#define LODI_SIZE IMM2REG
|
|
|
|
#define LODR_SIZE REG2REG
|
|
|
|
#define STRI_SIZE IMM2REG
|
|
|
|
#define STRR_SIZE REG2REG
|
2017-05-17 18:31:27 +01:00
|
|
|
#define ADDI_SIZE IMM2REG
|
2017-05-17 18:58:00 +01:00
|
|
|
#define ADDR_SIZE REG2REG
|
|
|
|
#define SUBI_SIZE IMM2REG
|
|
|
|
#define SUBR_SIZE REG2REG
|
2017-05-18 16:28:10 +01:00
|
|
|
#define ANDB_SIZE BYT2REG
|
|
|
|
#define ANDW_SIZE IMM2REG
|
|
|
|
#define ANDR_SIZE REG2REG
|
|
|
|
#define YORB_SIZE BYT2REG
|
|
|
|
#define YORW_SIZE IMM2REG
|
|
|
|
#define YORR_SIZE REG2REG
|
2017-05-17 18:58:00 +01:00
|
|
|
#define XORB_SIZE BYT2REG
|
|
|
|
#define XORW_SIZE IMM2REG
|
|
|
|
#define XORR_SIZE REG2REG
|
2017-05-18 14:41:05 +01:00
|
|
|
#define NOTR_SIZE REGONLY
|
2017-05-17 18:58:00 +01:00
|
|
|
#define MULI_SIZE IMM2REG
|
|
|
|
#define MULR_SIZE REG2REG
|
|
|
|
#define DIVI_SIZE IMM2REG
|
|
|
|
#define DIVR_SIZE REG2REG
|
2017-05-24 14:07:56 +01:00
|
|
|
#define SHLI_SIZE IMM2REG
|
|
|
|
#define SHLR_SIZE REG2REG
|
|
|
|
#define SHRI_SIZE IMM2REG
|
|
|
|
#define SHRR_SIZE REG2REG
|
2017-05-18 14:41:05 +01:00
|
|
|
#define PUSH_SIZE REGONLY
|
|
|
|
#define POOP_SIZE REGONLY
|
2017-05-24 19:54:12 +01:00
|
|
|
#define CMPB_SIZE BYT2REG
|
|
|
|
#define CMPW_SIZE IMM2REG
|
2017-05-17 18:58:00 +01:00
|
|
|
#define CMPR_SIZE REG2REG
|
2017-05-26 10:55:21 +01:00
|
|
|
#define JMPI_SIZE IMMONLY
|
|
|
|
#define JMPR_SIZE REGONLY
|
2017-05-18 14:41:05 +01:00
|
|
|
#define JPAI_SIZE IMMONLY
|
|
|
|
#define JPAR_SIZE REGONLY
|
|
|
|
#define JPBI_SIZE IMMONLY
|
|
|
|
#define JPBR_SIZE REGONLY
|
|
|
|
#define JPEI_SIZE IMMONLY
|
|
|
|
#define JPER_SIZE REGONLY
|
2017-05-18 16:28:10 +01:00
|
|
|
#define JPNI_SIZE IMMONLY
|
|
|
|
#define JPNR_SIZE REGONLY
|
2017-05-26 10:55:21 +01:00
|
|
|
#define RETN_SIZE SINGLE
|
|
|
|
#define SHIT_SIZE SINGLE
|
2017-05-17 18:58:00 +01:00
|
|
|
#define NOPE_SIZE SINGLE
|
2017-05-25 16:53:49 +01:00
|
|
|
#define GRMN_SIZE SINGLE
|
|
|
|
#define DEBG_SIZE SINGLE
|