6502/vasm/cpus/c16x/cpu.h

88 lines
1.8 KiB
C

/* cpu.h c16x/st10 cpu-description header-file */
/* (c) in 2002 by Volker Barthelmann */
/* maximum number of operands in one mnemonic */
#define MAX_OPERANDS 3
/* maximum number of mnemonic-qualifiers per mnemonic */
#define MAX_QUALIFIERS 0
/* maximum number of additional command-line-flags for this cpu */
/* data type to represent a target-address */
typedef int32_t taddr;
typedef uint32_t utaddr;
#define LITTLEENDIAN 1
#define BIGENDIAN 0
#define VASM_CPU_C16X 1
/* minimum instruction alignment */
#define INST_ALIGN 2
/* default alignment for n-bit data */
#define DATA_ALIGN(n) ((n)<=8?1:2)
/* operand class for n-bit data definitions */
#define DATA_OPERAND(n) OP_ABS
#define cc reg
/* type to store each operand */
typedef struct {
int type;
int mod;
int reg,regsfr; /* also cc and boff */
expr *offset,*boffset;
} operand;
/* operand-types */
#define OP_GPR 1
#define OP_BGPR 2
#define OP_SFR 3
#define OP_BSFR 4
#define OP_ABS 5
#define OP_SEG OP_ABS
#define OP_BABS 6
#define OP_REGDISP 7
#define OP_REGIND 8
#define OP_REG03IND 9
#define OP_BWORD 10
#define OP_BADDR 11
#define OP_IMM2 12
#define OP_IMM3 13
#define OP_IMM4 14
#define OP_IMM7 15
#define OP_IMM8 16
#define OP_IMM16 17
#define OP_CC 18
#define OP_REL 19
#define OP_JADDR 20
#define OP_POSTINC03 21
#define OP_PREDEC03 22
#define OP_POSTINC 23
#define OP_PREDEC 24
#define OP_PROTECTED 0
/* mod types */
#define MOD_SOF 1
#define MOD_SEG 2
#define MOD_DPP0 3
#define MOD_DPP1 4
#define MOD_DPP2 5
#define MOD_DPP3 6
#define MOD_DPPX 7
#define CPU_C166 1
#define CPU_C167 2
#define CPU_ALL (-1)
typedef struct {
unsigned int len;
unsigned int opcode;
unsigned int match;
unsigned int lose;
unsigned int encoding;
unsigned int available;
} mnemonic_extension;