6502/vasm/cpus/qnice/cpu.h

59 lines
1.2 KiB
C

/* cpu.h qnice cpu-description header-file */
/* (c) in 2016 by Volker Barthelmann */
/* maximum number of operands in one mnemonic */
#define MAX_OPERANDS 2
/* 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_QNICE 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 reg; /* also cc */
expr *offset;
} operand;
/* operand-types */
#define OP_REG 1
#define OP_REGIND 2
#define OP_POSTINC 3
#define OP_PREDEC 4
#define OP_ABS 5
#define OP_CC 6
#define OP_REL 7
#define OP_GEN 8
#define OP_DGEN 9
#define OP_PROTECTED 0
/* no derivates yet */
#define CPU_ALL (-1)
typedef struct {
unsigned int opcode;
unsigned int encoding;
} mnemonic_extension;