2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
5 #define RCSID3 "$Id: mach3.c,v 3.9 1994/11/16 14:43:42 ceriel Exp $"
31 0, PREFIX, 046, "eseg",
32 0, PREFIX, 056, "cseg",
33 0, PREFIX, 066, "sseg",
34 0, PREFIX, 076, "dseg",
35 0, PREFIX, 0360, "lock",
36 0, PREFIX, 0363, "rep",
37 0, PREFIX, 0362, "repne",
38 0, PREFIX, 0362, "repnz",
39 0, PREFIX, 0363, "repe",
40 0, PREFIX, 0363, "repz",
41 0, NOOP_1, 047, "daa",
42 0, NOOP_1, 057, "das",
43 0, NOOP_1, 067, "aaa",
44 0, NOOP_1, 077, "aas",
45 0, NOOP_1, 0220, "nop",
46 0, NOOP_1, 0230, "cbw",
47 0, NOOP_1, 0231, "cwd",
48 0, NOOP_1, 0233, "wait",
49 0, NOOP_1, 0234, "pushf",
50 0, NOOP_1, 0235, "popf",
51 0, NOOP_1, 0236, "sahf",
52 0, NOOP_1, 0237, "lahf",
53 0, NOOP_1, 0244, "movsb",
54 0, NOOP_1, 0245, "movs",
55 0, NOOP_1, 0245, "movsw",
56 0, NOOP_1, 0246, "cmpsb",
57 0, NOOP_1, 0247, "cmps",
58 0, NOOP_1, 0247, "cmpsw",
59 0, NOOP_1, 0252, "stosb",
60 0, NOOP_1, 0253, "stos",
61 0, NOOP_1, 0253, "stosw",
62 0, NOOP_1, 0254, "lodsb",
63 0, NOOP_1, 0255, "lods",
64 0, NOOP_1, 0255, "lodsw",
65 0, NOOP_1, 0256, "scasb",
66 0, NOOP_1, 0257, "scas",
67 0, NOOP_1, 0257, "scasw",
68 0, NOOP_1, 0316, "into",
69 0, NOOP_1, 0317, "iret",
70 0, NOOP_1, 0327, "xlat",
71 0, NOOP_1, 0364, "hlt",
72 0, NOOP_1, 0365, "cmc",
73 0, NOOP_1, 0370, "clc",
74 0, NOOP_1, 0371, "stc",
75 0, NOOP_1, 0372, "cli",
76 0, NOOP_1, 0373, "sti",
77 0, NOOP_1, 0374, "cld",
78 0, NOOP_1, 0375, "std",
79 0, NOOP_2, 0324+012<<8, "aam",
80 0, NOOP_2, 0325+012<<8, "aad",
81 0, JOP, 0340, "loopne",
82 0, JOP, 0340, "loopnz",
83 0, JOP, 0341, "loope",
84 0, JOP, 0341, "loopz",
102 0, JOP, 0167, "jnbe",
110 0, JOP, 0174, "jnge",
116 0, JOP, 0177, "jnle",
117 0, PUSHOP, 0, "push",
119 0, IOOP, 0344, "inb",
121 0, IOOP, 0345, "inw",
122 0, IOOP, 0346, "outb",
123 0, IOOP, 0347, "out",
124 0, IOOP, 0347, "outw",
125 0, ADDOP, 000, "addb",
126 0, ADDOP, 001, "add",
127 0, ADDOP, 010, "orb",
129 0, ADDOP, 020, "adcb",
130 0, ADDOP, 021, "adc",
131 0, ADDOP, 030, "sbbb",
132 0, ADDOP, 031, "sbb",
133 0, ADDOP, 040, "andb",
134 0, ADDOP, 041, "and",
135 0, ADDOP, 050, "subb",
136 0, ADDOP, 051, "sub",
137 0, ADDOP, 060, "xorb",
138 0, ADDOP, 061, "xor",
139 0, ADDOP, 070, "cmpb",
140 0, ADDOP, 071, "cmp",
141 0, ROLOP, 000, "rolb",
142 0, ROLOP, 001, "rol",
143 0, ROLOP, 010, "rorb",
144 0, ROLOP, 011, "ror",
145 0, ROLOP, 020, "rclb",
146 0, ROLOP, 021, "rcl",
147 0, ROLOP, 030, "rcrb",
148 0, ROLOP, 031, "rcr",
149 0, ROLOP, 040, "salb",
150 0, ROLOP, 040, "shlb",
151 0, ROLOP, 041, "sal",
152 0, ROLOP, 041, "shl",
153 0, ROLOP, 050, "shrb",
154 0, ROLOP, 051, "shr",
155 0, ROLOP, 070, "sarb",
156 0, ROLOP, 071, "sar",
157 0, INCOP, 000, "incb",
158 0, INCOP, 001, "inc",
159 0, INCOP, 010, "decb",
160 0, INCOP, 011, "dec",
161 0, NOTOP, 020, "notb",
162 0, NOTOP, 021, "not",
163 0, NOTOP, 030, "negb",
164 0, NOTOP, 031, "neg",
165 0, NOTOP, 040, "mulb",
166 0, NOTOP, 041, "mul",
167 0, NOTOP, 050, "imulb",
168 0, IMUL, 051, "imul", /* for 80286 */
169 0, NOTOP, 060, "divb",
170 0, NOTOP, 061, "div",
171 0, NOTOP, 070, "idivb",
172 0, NOTOP, 071, "idiv",
173 0, CALLOP, 020+(0350<<8), "call",
174 0, CALLOP, 040+(0351<<8), "jmp",
175 0, CALFOP, 030+(0232<<8), "callf",
176 0, CALFOP, 050+(0352<<8), "jmpf",
177 0, LEAOP, 0215, "lea",
178 0, LEAOP, 0304, "les",
179 0, LEAOP, 0305, "lds",
183 0, RET, 0313, "retf",
192 /* Intel 8087 coprocessor keywords */
196 0, FNOOP, FESC+1+(0xF0<<8), "f2xm1",
197 0, FNOOP, FESC+1+(0xE1<<8), "fabs",
198 0, FNOOP, FESC+1+(0xE0<<8), "fchs",
199 0, FNOOP, FESC+3+(0xE2<<8), "fclex",
200 0, FNOOP, FESC+6+(0xD9<<8), "fcompp",
201 0, FNOOP, FESC+1+(0xF6<<8), "fdecstp",
202 0, FNOOP, FESC+3+(0xE1<<8), "fdisi",
203 0, FNOOP, FESC+3+(0xE0<<8), "feni",
204 0, FNOOP, FESC+1+(0xF7<<8), "fincstp",
205 0, FNOOP, FESC+3+(0xE3<<8), "finit",
206 0, FNOOP, FESC+1+(0xE8<<8), "fld1",
207 0, FNOOP, FESC+1+(0xEA<<8), "fldl2e",
208 0, FNOOP, FESC+1+(0xE9<<8), "fldl2t",
209 0, FNOOP, FESC+1+(0xEC<<8), "fldlg2",
210 0, FNOOP, FESC+1+(0xED<<8), "fldln2",
211 0, FNOOP, FESC+1+(0xEB<<8), "fldpi",
212 0, FNOOP, FESC+1+(0xEE<<8), "fldz",
213 0, FNOOP, FESC+1+(0xD0<<8), "fnop",
214 0, FNOOP, FESC+1+(0xF3<<8), "fpatan",
215 0, FNOOP, FESC+1+(0xF8<<8), "fprem",
216 0, FNOOP, FESC+1+(0xF2<<8), "fptan",
217 0, FNOOP, FESC+1+(0xFC<<8), "frndint",
218 0, FNOOP, FESC+1+(0xFD<<8), "fscale",
219 0, FNOOP, FESC+1+(0xFA<<8), "fsqrt",
220 0, FNOOP, FESC+7+(0xE0<<8), "fstswax", /* 80287 */
221 0, FNOOP, FESC+1+(0xE4<<8), "ftst",
222 0, FNOOP, FESC+1+(0xE5<<8), "fxam",
223 0, FNOOP, FESC+1+(0xF4<<8), "fxtract",
224 0, FNOOP, FESC+1+(0xF1<<8), "fyl2x",
225 0, FNOOP, FESC+1+(0xF9<<8), "fyl2pi",
227 0, FMEM, FESC+6+(0<<11), "fiadds",
228 0, FMEM, FESC+2+(0<<11), "fiaddl",
229 0, FMEM, FESC+0+(0<<11), "fadds",
230 0, FMEM, FESC+4+(0<<11), "faddd",
231 0, FMEM, FESC+7+(4<<11), "fbld",
232 0, FMEM, FESC+7+(6<<11), "fbstp",
233 0, FMEM, FESC+6+(2<<11), "ficoms",
234 0, FMEM, FESC+2+(2<<11), "ficoml",
235 0, FMEM, FESC+0+(2<<11), "fcoms",
236 0, FMEM, FESC+4+(2<<11), "fcomd",
237 0, FMEM, FESC+6+(3<<11), "ficomps",
238 0, FMEM, FESC+2+(3<<11), "ficompl",
239 0, FMEM, FESC+0+(3<<11), "fcomps",
240 0, FMEM, FESC+4+(3<<11), "fcompd",
241 0, FMEM, FESC+6+(6<<11), "fidivs",
242 0, FMEM, FESC+2+(6<<11), "fidivl",
243 0, FMEM, FESC+0+(6<<11), "fdivs",
244 0, FMEM, FESC+4+(6<<11), "fdivd",
245 0, FMEM, FESC+6+(7<<11), "fidivrs",
246 0, FMEM, FESC+2+(7<<11), "fidivrl",
247 0, FMEM, FESC+0+(7<<11), "fdivrs",
248 0, FMEM, FESC+4+(7<<11), "fdivrd",
249 0, FMEM, FESC+7+(5<<11), "fildq",
250 0, FMEM, FESC+7+(0<<11), "filds",
251 0, FMEM, FESC+3+(0<<11), "fildl",
252 0, FMEM, FESC+1+(0<<11), "flds",
253 0, FMEM, FESC+5+(0<<11), "fldd",
254 0, FMEM, FESC+3+(5<<11), "fldx",
255 0, FMEM, FESC+1+(5<<11), "fldcw",
256 0, FMEM, FESC+1+(4<<11), "fldenv",
257 0, FMEM, FESC+6+(1<<11), "fimuls",
258 0, FMEM, FESC+2+(1<<11), "fimull",
259 0, FMEM, FESC+0+(1<<11), "fmuls",
260 0, FMEM, FESC+4+(1<<11), "fmuld",
261 0, FMEM, FESC+5+(4<<11), "frstor",
262 0, FMEM, FESC+5+(6<<11), "fsave",
263 0, FMEM, FESC+7+(2<<11), "fists",
264 0, FMEM, FESC+3+(2<<11), "fistl",
265 0, FMEM, FESC+1+(2<<11), "fsts",
266 0, FMEM, FESC+5+(2<<11), "fstd",
267 0, FMEM, FESC+7+(7<<11), "fistpq",
268 0, FMEM, FESC+7+(3<<11), "fistps",
269 0, FMEM, FESC+3+(3<<11), "fistpl",
270 0, FMEM, FESC+1+(3<<11), "fstps",
271 0, FMEM, FESC+5+(3<<11), "fstpd",
272 0, FMEM, FESC+3+(7<<11), "fstpx",
273 0, FMEM, FESC+1+(7<<11), "fstcw",
274 0, FMEM, FESC+1+(6<<11), "fstenv",
275 0, FMEM, FESC+5+(7<<11), "fstsw",
276 0, FMEM, FESC+6+(4<<11), "fisubs",
277 0, FMEM, FESC+2+(4<<11), "fisubl",
278 0, FMEM, FESC+0+(4<<11), "fsubs",
279 0, FMEM, FESC+4+(4<<11), "fsubd",
280 0, FMEM, FESC+6+(5<<11), "fisubrs",
281 0, FMEM, FESC+2+(5<<11), "fisubrl",
282 0, FMEM, FESC+0+(5<<11), "fsubrs",
283 0, FMEM, FESC+4+(5<<11), "fsubrd",
285 0, FST_I, FESC+1+(0xC0<<8), "fld",
286 0, FST_I, FESC+5+(0xD0<<8), "fst",
287 0, FST_I, FESC+5+(0xC8<<8), "fstp",
288 0, FST_I, FESC+1+(0xC8<<8), "fxch",
289 0, FST_I, FESC+0+(0xD0<<8), "fcom",
290 0, FST_I, FESC+0+(0xD8<<8), "fcomp",
291 0, FST_I, FESC+5+(0xC0<<8), "ffree",
293 0, FST_ST, FESC+0+(0xC0<<8), "fadd",
294 0, FST_ST, FESC+2+(0xC0<<8), "faddp",
295 0, FST_ST2, FESC+0+(0xF0<<8), "fdiv",
296 0, FST_ST2, FESC+2+(0xF0<<8), "fdivp",
297 0, FST_ST2, FESC+0+(0xF8<<8), "fdivr",
298 0, FST_ST2, FESC+2+(0xF8<<8), "fdivrp",
299 0, FST_ST, FESC+0+(0xC8<<8), "fmul",
300 0, FST_ST, FESC+2+(0xC8<<8), "fmulp",
301 0, FST_ST2, FESC+0+(0xE0<<8), "fsub",
302 0, FST_ST2, FESC+2+(0xE0<<8), "fsubp",
303 0, FST_ST2, FESC+0+(0xE8<<8), "fsubr",
304 0, FST_ST2, FESC+2+(0xE8<<8), "fsubrp",
307 0, NOOP_1, 0140, "pusha",
308 0, NOOP_1, 0141, "popa",
309 0, NOOP_1, 0154, "insb",
310 0, NOOP_1, 0155, "ins",
311 0, NOOP_1, 0155, "insw",
312 0, NOOP_1, 0156, "outsb",
313 0, NOOP_1, 0157, "outs",
314 0, NOOP_1, 0157, "outsw",
316 0, ARPLOP, 0143, "arpl",
317 0, ENTER, 0310, "enter",
318 0, NOOP_1, 0311, "leave",
319 0, LEAOP, 0142, "bound",
321 0, NOOP_2, 017+06<<8, "clts",
323 0, EXTOP, 0002, "lar",
324 0, EXTOP, 0003, "lsl",
326 0, EXTOP1, 0021, "lgdt",
327 0, EXTOP1, 0001, "sgdt",
328 0, EXTOP1, 0031, "lidt",
329 0, EXTOP1, 0011, "sidt",
330 0, EXTOP1, 0020, "lldt",
331 0, EXTOP1, 0000, "sldt",
332 0, EXTOP1, 0030, "ltr",
333 0, EXTOP1, 0010, "str",
334 0, EXTOP1, 0061, "lmsw",
335 0, EXTOP1, 0041, "smsw",
336 0, EXTOP1, 0050, "verw",
337 0, EXTOP1, 0040, "verr",