1 /* opcode.h - routine numbers and special opcodes for assembler */
2 
3 enum
4 {
5 /* Pseudo-op routine numbers.
6  * Conditionals are first - this is used to test if op is a conditional.
7  */
8     ELSEOP,
9     ELSEIFOP,
10     ELSEIFCOP,
11     ENDIFOP,
12     IFOP,
13     IFCOP,
14 
15 #define MIN_NONCOND	ALIGNOP
16     ALIGNOP,
17     ASCIZOP,
18     BLKWOP,
19     BLOCKOP,
20     BSSOP,
21     COMMOP,
22     COMMOP1,
23     DATAOP,
24     ENDBOP,
25     ENTEROP,
26     ENTRYOP,
27     EQUOP,
28     EVENOP,
29     EXPORTOP,
30     FAILOP,
31     FCBOP,
32     FCCOP,
33     FDBOP,
34 #if SIZEOF_OFFSET_T > 2
35     FQBOP,
36 #endif
37     GETOP,
38     GLOBLOP,
39     IDENTOP,
40     IMPORTOP,
41     LCOMMOP,
42     LCOMMOP1,
43     LISTOP,
44     LOCOP,
45     MACLISTOP,
46     MACROOP,
47     MAPOP,
48     ORGOP,
49     PROCEOFOP,
50     RMBOP,
51     SECTOP,
52     SETOP,
53     SETDPOP,
54     TEXTOP,
55 #ifdef I80386
56     USE16OP,
57     USE32OP,
58 #endif
59     WARNOP,
60 
61 /* Machine-op routine numbers. */
62 #ifdef I80386
63     BCC,
64     BSWAP,
65     CALL,
66     CALLI,
67     DIVMUL,
68     ENTER,
69     EwGw,
70     ExGx,
71     F_INHER,
72     F_M,
73     F_M2,
74     F_M2_AX,
75     F_M2_M4,
76     F_M2_M4_M8,
77     F_M4_M8_OPTST,
78     F_M4_M8_ST,
79     F_M4_M8_STST,
80     F_M4_M8_M10_ST,
81     F_M10,
82     F_OPTST,
83     F_ST,
84     F_STST,
85     F_W_INHER,
86     F_W_M,
87     F_W_M2,
88     F_W_M2_AX,
89     GROUP1,
90     GROUP2,
91     GROUP6,
92     GROUP7,
93     GROUP8,
94     GvEv,
95     GvMa,
96     GvMp,
97     IMUL,
98     IN,
99     INCDEC,
100     INHER,
101     INHER16,
102     INHER32,
103     INHER_A,
104     INT,
105     JCC,
106     JCXZ,
107     LEA,
108     MOV,
109     MOVX,
110     NEGNOT,
111     OUT,
112     PUSHPOP,
113     RET,
114     SEG,
115     SETCC,
116     SH_DOUBLE,
117     TEST,
118     XCHG
119 #endif /* I80386 */
120 
121 #ifdef MC6809
122     ALL,			/* all address modes allowed, like LDA */
123     ALTER,			/* all but immediate, like STA */
124     IMMED,			/* immediate only (ANDCC, ORCC) */
125     INDEXD,			/* indexed (LEA's) */
126     INHER,			/* inherent, like CLC or CLRA */
127     LONG,			/* long branches */
128     SHORT,			/* short branches */
129     SSTAK,			/* S-stack (PSHS, PULS) */
130     SWAP,			/* TFR, EXG */
131     USTAK			/* U-stack (PSHU,PULU) */
132 #endif /* MC6809 */
133 };
134 
135 /* Special opcodes. */
136 #ifdef I80386
137 # define CMP_OPCODE_BASE	0x38
138 # define CMPSB_OPCODE		0xA6
139 # define CMPSW_OPCODE		0xA7
140 # define ESCAPE_OPCODE_BASE	0xD8
141 # define FST_ENCODED		0x12
142 # define FSTP_ENCODED		0x13
143 # define JMP_OPCODE		0xE9
144 # define JMP_SHORT_OPCODE	0xEB
145 # define JSR_OPCODE		0xE8
146 # define MOVSB_OPCODE		0xA4
147 # define MOVSW_OPCODE		0xA5
148 # define PAGE1_OPCODE		0x0F
149 # define POP_OPCODE 		0x8F
150 # define PUSH_OPCODE 		0xFF
151 # define WAIT_OPCODE		0x9B
152 #endif
153 
154 #ifdef MC6809
155 # define JMP_OPCODE		0x7E
156 # define JSR_OPCODE		0xBD
157 # define PAGE1_OPCODE		0x10
158 # define PAGE2_OPCODE		0x11
159 #endif
160