📄 m68hc11.h
字号:
#define M6811_OC1M5 0x20 /* 5 */#define M6811_OC1M4 0x10 /* 4 */#define M6811_OC1M3 0x08 /* 3 *//* Flags of the OC1D register. */#define M6811_OC1D7 0x80#define M6811_OC1D6 0x40#define M6811_OC1D5 0x20#define M6811_OC1D4 0x10#define M6811_OC1D3 0x08/* Flags of the TCTL1 register. */#define M6811_OM2 0x80 /* Output Mode 2 */#define M6811_OL2 0x40 /* Output Level 2 */#define M6811_OM3 0x20#define M6811_OL3 0x10#define M6811_OM4 0x08#define M6811_OL4 0x04#define M6811_OM5 0x02#define M6811_OL5 0x01/* Flags of the TCTL2 register. */#define M6811_EDG1B 0x20 /* Input Edge Capture Control 1 */#define M6811_EDG1A 0x10#define M6811_EDG2B 0x08 /* Input 2 */#define M6811_EDG2A 0x04#define M6811_EDG3B 0x02 /* Input 3 */#define M6811_EDG3A 0x01/* Flags of the TMSK1 register. */#define M6811_OC1I 0x80 /* Output Compare 1 Interrupt */#define M6811_OC2I 0x40 /* 2 */#define M6811_OC3I 0x20 /* 3 */#define M6811_OC4I 0x10 /* 4 */#define M6811_OC5I 0x08 /* 5 */#define M6811_IC1I 0x04 /* Input Capture 1 Interrupt */#define M6811_IC2I 0x02 /* 2 */#define M6811_IC3I 0x01 /* 3 *//* Flags of the TFLG1 register. */#define M6811_OC1F 0x80 /* Output Compare 1 Flag */#define M6811_OC2F 0x40 /* 2 */#define M6811_OC3F 0x20 /* 3 */#define M6811_OC4F 0x10 /* 4 */#define M6811_OC5F 0x08 /* 5 */#define M6811_IC1F 0x04 /* Input Capture 1 Flag */#define M6811_IC2F 0x02 /* 2 */#define M6811_IC3F 0x01 /* 3 *//* Flags of Timer Interrupt Mask Register 2 (TMSK2). */#define M6811_TOI 0x80 /* Timer Overflow Interrupt Enable */#define M6811_RTII 0x40 /* RTI Interrupt Enable */#define M6811_PAOVI 0x20 /* Pulse Accumulator Overflow Interrupt En. */#define M6811_PAII 0x10 /* Pulse Accumulator Interrupt Enable */#define M6811_PR1 0x02 /* Timer prescaler */#define M6811_PR0 0x01 /* Timer prescaler */#define M6811_TPR_1 0x00 /* " " prescale div 1 */#define M6811_TPR_4 0x01 /* " " prescale div 4 */#define M6811_TPR_8 0x02 /* " " prescale div 8 */#define M6811_TPR_16 0x03 /* " " prescale div 16 *//* Flags of Timer Interrupt Flag Register 2 (M6811_TFLG2). */#define M6811_TOF 0x80 /* Timer overflow bit */#define M6811_RTIF 0x40 /* Read time interrupt flag */#define M6811_PAOVF 0x20 /* Pulse accumulator overflow Interrupt flag */#define M6811_PAIF 0x10 /* Pulse accumulator Input Edge " " " *//* Flags of Pulse Accumulator Control Register (PACTL). */#define M6811_DDRA7 0x80 /* Data direction for port A bit 7 */#define M6811_PAEN 0x40 /* Pulse accumulator system enable */#define M6811_PAMOD 0x20 /* Pulse accumulator mode */#define M6811_PEDGE 0x10 /* Pulse accumulator edge control */#define M6811_RTR1 0x02 /* RTI Interrupt rates select */#define M6811_RTR0 0x01 /* " " " " *//* Flags of the Options register. */#define M6811_ADPU 0x80 /* A/D Powerup */#define M6811_CSEL 0x40 /* A/D/EE Charge pump clock source select */#define M6811_IRQE 0x20 /* IRQ Edge/Level sensitive */#define M6811_DLY 0x10 /* Stop exit turn on delay */#define M6811_CME 0x08 /* Clock Monitor enable */#define M6811_CR1 0x02 /* COP timer rate select */#define M6811_CR0 0x01 /* COP timer rate select *//* Flags of the HPRIO register. */#define M6811_RBOOT 0x80 /* Read Bootstrap ROM */#define M6811_SMOD 0x40 /* Special Mode */#define M6811_MDA 0x20 /* Mode Select A */#define M6811_IRV 0x10 /* Internal Read Visibility */#define M6811_PSEL3 0x08 /* Priority Select */#define M6811_PSEL2 0x04#define M6811_PSEL1 0x02#define M6811_PSEL0 0x01/* Some insns used by gas to turn relative branches into absolute ones. */#define M6811_BRA 0x20#define M6811_JMP 0x7e#define M6811_BSR 0x8d#define M6811_JSR 0xbd#define M6812_JMP 0x06#define M6812_BSR 0x07#define M6812_JSR 0x16/* Instruction code pages. Code page 1 is the default. *//*#define M6811_OPCODE_PAGE1 0x00*/#define M6811_OPCODE_PAGE2 0x18#define M6811_OPCODE_PAGE3 0x1A#define M6811_OPCODE_PAGE4 0xCD/* 68HC11 operands formats as stored in the m6811_opcode table. These flags do not correspond to anything in the 68HC11 or 68HC12. They are only used by GAS to recognize operands. */#define M6811_OP_NONE 0 /* No operand */#define M6811_OP_DIRECT 0x0001 /* Page 0 addressing: *<val-8bits> */#define M6811_OP_IMM8 0x0002 /* 8 bits immediat: #<val-8bits> */#define M6811_OP_IMM16 0x0004 /* 16 bits immediat: #<val-16bits> */#define M6811_OP_IND16 0x0008 /* Indirect abs: <val-16> */#define M6812_OP_IND16_P2 0x0010 /* Second parameter indirect abs. */#define M6812_OP_REG 0x0020 /* Register operand 1 */#define M6812_OP_REG_2 0x0040 /* Register operand 2 */#define M6811_OP_IX 0x0080 /* Indirect IX: <val-8>,x */#define M6811_OP_IY 0x0100 /* Indirect IY: <val-8>,y */#define M6812_OP_IDX 0x0200 /* Indirect: N,r N,[+-]r[+-] N:5-bits */#define M6812_OP_IDX_1 0x0400 /* N,r N:9-bits */#define M6812_OP_IDX_2 0x0800 /* N,r N:16-bits */#define M6812_OP_D_IDX 0x1000 /* Indirect indexed: [D,r] */#define M6812_OP_D_IDX_2 0x2000 /* [N,r] N:16-bits */#define M6812_OP_PAGE 0x4000 /* Page number */#define M6811_OP_MASK 0x07FFF#define M6811_OP_BRANCH 0x00008000 /* Branch, jsr, call */#define M6811_OP_BITMASK 0x00010000 /* Bitmask: #<val-8> */#define M6811_OP_JUMP_REL 0x00020000 /* Pc-Relative: <val-8> */#define M6812_OP_JUMP_REL16 0x00040000 /* Pc-relative: <val-16> */#define M6811_OP_PAGE1 0x0000#define M6811_OP_PAGE2 0x00080000 /* Need a page2 opcode before */#define M6811_OP_PAGE3 0x00100000 /* Need a page3 opcode before */#define M6811_OP_PAGE4 0x00200000 /* Need a page4 opcode before */#define M6811_MAX_OPERANDS 3 /* Max operands: brset <dst> <mask> <b> */#define M6812_ACC_OFFSET 0x00400000 /* A,r B,r D,r */#define M6812_ACC_IND 0x00800000 /* [D,r] */#define M6812_PRE_INC 0x01000000 /* n,+r n = -8..8 */#define M6812_PRE_DEC 0x02000000 /* n,-r */#define M6812_POST_INC 0x04000000 /* n,r+ */#define M6812_POST_DEC 0x08000000 /* n,r- */#define M6812_INDEXED_IND 0x10000000 /* [n,r] n = 16-bits */#define M6812_INDEXED 0x20000000 /* n,r n = 5, 9 or 16-bits */#define M6812_OP_IDX_P2 0x40000000/* Markers to identify some instructions. */#define M6812_OP_EXG_MARKER 0x01000000 /* exg r1,r2 */#define M6812_OP_TFR_MARKER 0x02000000 /* tfr r1,r2 */#define M6812_OP_SEX_MARKER 0x04000000 /* sex r1,r2 */#define M6812_OP_EQ_MARKER 0x80000000 /* dbeq/ibeq/tbeq */#define M6812_OP_DBCC_MARKER 0x04000000 /* dbeq/dbne */#define M6812_OP_IBCC_MARKER 0x02000000 /* ibeq/ibne */#define M6812_OP_TBCC_MARKER 0x01000000#define M6812_OP_TRAP_ID 0x80000000 /* trap #N */#define M6811_OP_HIGH_ADDR 0x01000000 /* Used internally by gas. */#define M6811_OP_LOW_ADDR 0x02000000#define M68HC12_BANK_VIRT 0x01000000#define M68HC12_BANK_MASK 0x00003fff#define M68HC12_BANK_BASE 0x00008000#define M68HC12_BANK_SHIFT 14#define M68HC12_BANK_PAGE_MASK 0x0ff/* CPU identification. */#define cpu6811 0x01#define cpu6812 0x02/* The opcode table is an array of struct m68hc11_opcode. */struct m68hc11_opcode { const char* name; /* Op-code name */ long format; unsigned char size; unsigned char opcode; unsigned char cycles_low; unsigned char cycles_high; unsigned char set_flags_mask; unsigned char clr_flags_mask; unsigned char chg_flags_mask; unsigned char arch;};/* Alias definition for 68HC12. */struct m68hc12_opcode_alias { const char* name; const char* translation; unsigned char size; unsigned char code1; unsigned char code2;};/* The opcode table. The table contains all the opcodes (all pages). You can't rely on the order. */extern const struct m68hc11_opcode m68hc11_opcodes[];extern const int m68hc11_num_opcodes;/* Alias table for 68HC12. It translates some 68HC11 insn which are not implemented in 68HC12 but have equivalent translations. */extern const struct m68hc12_opcode_alias m68hc12_alias[];extern const int m68hc12_num_alias;#endif /* _OPCODE_M68HC11_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -