88 lines
1.8 KiB
C
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;
|