File: instr.set

package info (click to toggle)
dosemu-freedos 1%3A0.0.b9r5a%2Betch.1-0etch1
  • links: PTS
  • area: contrib
  • in suites: etch
  • size: 19,744 kB
  • ctags: 23,279
  • sloc: ansic: 143,864; asm: 20,397; makefile: 3,868; perl: 1,106; yacc: 690; sh: 553; pascal: 297; xml: 150; cpp: 67
file content (393 lines) | stat: -rw-r--r-- 8,779 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
#	This is "instr.set", the main instruction set description file.

#	The format of this file is as follows.  First of all, blank lines
#	and lines whose first character is a '#' are comment lines.

#	Otherwise, each line consists of one or more fields, separated by
#	spaces (but not tabs).

#	The first field is the opcode field.  It looks like the following:
#		_^n+xxx
#	   or	_^n+xxx/xxx
#	   or	_^n+xxx*xxx
#	Here:
#		_   (if present) signifies that the line applies only to the
#		    assembler.
#		^n  (if present) is ^0 for AAD or AAM, ^1 for DB, ^2 for DW,
#		    ^3 for DD, ^4 for ORG, and ^5 for 32 bit operand prefix.
#		+   (if present) causes the mnemonic to be given an equate; for
#		    example, "+db" leads to a line
#			MNEM_DB	EQU	165
#		    being generated, where 165 is the offset of the mnemonic
#		    "db" in the area "mnlist."
#		xxx is an op code mnemonic.
#
#	Two opcodes separated by a slash mean that the second one is the 32-bit
#	variant of the first.
#	Two opcodes separated by a star mean that the first occurs with a wait
#	instruction; the second, without.

#	The remaining fields describe the possible variants of the instruction.
#	They have the following formats:
#		_Lxx/r.;n
#		_Lxx/r*;n
#		_Lxx/r&;n
#		_DLxx/r:kk;n
#	Here:
#		_   (if present) means that this variant is to be used only by
#		    the assember.
#		D   (if present) means that this variant is to be used only by
#		    the disassembler.
#		L   (if present) means that this is a lockable instruction.
#		xx  are one or two bytes of the instruction field.
#		/r  (if present) specifies the "r" part in a MOD MEM/REG byte.
#		.   indicates that the instruction has no operands.
#		*   indicates that the byte is a prefix (LOCK or REP...).
#		&   indicates that the byte is a segment prefix.
#		:kk gives an index into the file "instr.key".  That file gives
#		    the operand list associated to the key.  The key may be one
#		    or two characters.
#		;n  (if present) indicates the processor on which this
#		    instruction first appeared.  Here n may be 1 through 6.
#
#	The order of the variants is important, because the assembler will take
#	the first one that fits the input line.

#	References:
#
#	Instruction set from the Intel Pentium Family User's Manual, Vol. 3:
#	Architecture and Programming Manual.  Information on earlier processors
#	from various Intel and third party documentation.  Information on new
#	Pentium Pro <TM> instructions from http://x86.metronet.com
#	(http://198.215.126.12).

aaa 37.
^0aad d5:z
^0aam d4:z
aas 3f.
adc 14:1 L83/2:3 L80/2:2 L10:4 12:5
add 04:1 L83/0:3 L80/0:2 L00:4 02:5
and 24:1 L83/4:3 L80/4:2 L20:4 22:5
arpl 63:6;2
bound 62:7;1
bsf 0fbc:8;3
bsr 0fbd:8;3
^5+bswap 0fc8:9;4
bt 0fa3:a;3 0fba/4:b;3
btc L0fbb:a;3 L0fba/7:b;3
btr L0fb3:a;3 L0fba/6:b;3
bts L0fab:a;3 L0fba/5:b;3
call e8:c ff/2:B ff/3:e 9a:d
cbw/cwde 98.
clc f8.
cld fc.
cli fa.
clts 0f06.;2
cmc f5.
cmova 0f47:8;6
cmovae 0f43:8;6
cmovb 0f42:8;6
cmovbe 0f46:8;6
_cmovc 0f42:8;6
_cmove 0f44:8;6
cmovg 0f4f:8;6
cmovge 0f4d:8;6
cmovl 0f4c:8;6
cmovle 0f4e:8;6
_cmovna 0f46:8;6
_cmovnae 0f42:8;6
_cmovnb 0f43:8;6
_cmovnbe 0f47:8;6
_cmovnc 0f43:8;6
_cmovne 0f45:8;6
_cmovng 0f4e:8;6
_cmovnge 0f4c:8;6
_cmovnl 0f4d:8;6
_cmovnle 0f4f:8;6
cmovno 0f41:8;6
_cmovnp 0f4b:8;6
cmovns 0f49:8;6
cmovnz 0f45:8;6
cmovo 0f40:8;6
_cmovp 0f4a:8;6
cmovpe 0f4a:8;6
cmovpo 0f4b:8;6
cmovs 0f48:8;6
cmovz 0f44:8;6
cmp 3c:1 83/7:3 80/7:2 38:4 3a:5
cmpsb a6.
cmpsw/cmpsd a7.
cmpxchg L0fb0:4;4
cmpxchg8b 0fc7/1:f;5
cpuid 0fa2.;5
cwd/cdq 99.
daa 27.
das 2f.
_^1+db
_^3dd
dec 48:h Lfe/1:g DLff/1:g
div f6/6:g
_^2dw
enter c8:i;1
f2xm1 d9f0.
fabs d9e1.
fadd d8/0:j dc/0:k d8c0:l dcc0:m
faddp dec0:m. _dec1.
fiadd da/0:n de/0:o
fbld df/4:p
fbstp df/6:p
fchs d9e0.
fclex*fnclex dbe2.
_fcmova dbd0:l;6
_fcmovae dbc0:l;6
fcmovb dac0:l;6
fcmovbe dad0:l;6
fcmove dac8:l;6
_fcmovna dad0:l;6
_fcmovnae dac0:l;6
fcmovnb dbc0:l;6
fcmovnbe dbd0:l;6
fcmovne dbc8:l;6
fcmovnu dbd8:l;6
_fcmovnz dbc8:l;6
fcmovu dad8:l;6
_fcmovz dac8:l;6
fcom d8/2:j dc/2:k d8d0:q. _d8d1.
fcomi dbf0:q.;6 _dbf1.;6
fcomip dff0:q.;6 _dff1.;6
fcomp d8/3:j dc/3:k d8d8:q. _d8d9.
fcompp ded9.
fcos d9ff.;3
fdecstp d9f6.
fdisi*fndisi dbe1.
fdiv d8/6:j dc/6:k d8f0:l dcf8:m
fdivp def8:m. _def9.
fidiv da/6:n de/6:o
fdivr d8/7:j dc/7:k d8f8:l dcf0:m
fdivrp def0:m. _def1.
fidivr da/7:n de/7:o
feni*fneni dbe0.
ffree ddc0:q
ficom da/2:n de/2:o
ficomp da/3:n de/3:o
fild db/0:n df/0:o df/5:f
fincstp d9f7.
finit*fninit dbe3.
fist db/2:n df/2:o
fistp db/3:n df/3:o df/7:f
fld d9/0:j dd/0:k db/5:r d9c0:q
fld1 d9e8.
fldl2t d9e9.
fldl2e d9ea.
fldpi d9eb.
fldlg2 d9ec.
fldln2 d9ed.
fldz d9ee.
fldcw*fnldcw d9/5:o
fldenv d9/4:s
fmul d8/1:j dc/1:k d8c8:l dcc8:m
fmulp dec8:m. _dec9.
fimul da/1:n de/1:o
fnop d9d0.
fpatan d9f3.
fprem d9f8.
fprem1 d9f5.;3
fptan d9f2.
frndint d9fc.
frstor dd/4:s
fsave*fnsave dd/6:s
fscale d9fd.
fsetpm*fnsetpm dbe4.;2
fsin d9fe.;3
fsincos d9fb.;3
fsqrt d9fa.
fst d9/2:j dd/2:k ddd0:q
fstp d9/3:j dd/3:k db/7:r ddd8:q
fstcw*fnstcw d9/7:o
fstenv*fnstenv d9/6:s
fstsw*fnstsw dfe0:t dd/7:o
fsub d8/4:j dc/4:k d8e0:l dce8:m
fsubp dee8:m. _dee9.
fisub da/4:n de/4:o
fsubr d8/5:j dc/5:k d8e8:l dce0:m
fsubrp dee0:m. _dee1.
fisubr da/5:n de/5:o
ftst d9e4.
fucom dde0:q.;3 _dde1.;3
fucomi dbe8:q.;6 _dbe9.;6
fucomip dfe8:q.;6 _dfe9.;6
fucomp dde8:q.;3 _dde9.;3
fucompp dae9.;3
_fwait 9b.
fxam d9e5.
fxch d9c8:q. _d9c9.
fxtract d9f4.
fyl2x d9f1.
fyl2xp1 d9f9.
hlt f4.
idiv f6/7:g
imul f6/5:g 0faf:8;3 6b:u;1 _6b:u.;1 69:v;1 _69:v.;1
in e4:w ec:x
inc 40:h Lfe/0:g DLff/0:g
insb 6c.;1
insw/insd 6d.;1
int cc:y cd:z
into ce.
invd 0f08.;4
invlpg 0f01/7:s;4
iret/iretd cf.
ja 77:A 0f87:c;3
jae 73:A 0f83:c;3
jb 72:A 0f82:c;3
jbe 76:A 0f86:c;3
_jc 72:A 0f82:c;3
jcxz/jecxz e3:A
_je 74:A 0f84:c;3
jg 7f:A 0f8f:c;3
jge 7d:A 0f8d:c;3
jl 7c:A 0f8c:c;3
jle 7e:A 0f8e:c;3
_jna 76:A 0f86:c;3
_jnae 72:A 0f82:c;3
_jnb 73:A 0f83:c;3
_jnbe 77:A 0f87:c;3
_jnc 73:A 0f83:c;3
_jne 75:A 0f85:c;3
_jng 7e:A 0f8e:c;3
_jnge 7c:A 0f8c:c;3
_jnl 7d:A 0f8d:c;3
_jnle 7f:A 0f8f:c;3
jno 71:A 0f81:c;3
_jnp 7b:A 0f8b:c;3
jns 79:A 0f89:c;3
jnz 75:A 0f85:c;3
jo 70:A 0f80:c;3
_jp 7a:A 0f8a:c;3
jpe 7a:A 0f8a:c;3
jpo 7b:A 0f8b:c;3
js 78:A 0f88:c;3
jz 74:A 0f84:c;3
jmp eb:A e9:c ff/4:B ff/5:e ea:d
lahf 9f.
lar 0f02:8;2
lds c5:7
lss 0fb2:7;3
les c4:7
lfs 0fb4:7;3
lgs 0fb5:7;3
lea 8d:7
leave c9.;1
lgdt 0f01/2:s;2
lidt 0f01/3:s;2
lldt 0f00/2:C;2
lmsw 0f01/6:C;2
+lock f0*
lodsb ac.
lodsw/lodsd ad.
loop e2:L _e2:A
_loope e1:L e1:A
loopz e1:L _e1:A
_loopne e0:L e0:A
loopnz e0:L _e0:A
lsl 0f03:8;2
ltr 0f00/3:C;2
mov a0:F a2:G 88:4 8a:5 8c:D 8e:E b0:H b8:HH c6/0:2 0f20:RC;3 0f22:CR;3 0f21:RD;3 0f23:DR;3 0f24:RT;3 0f26:TR;3
movsb a4.
movsw/movsd a5.
movsx 0fbe:M;3 0fbf:N;3
movzx 0fb6:M;3 0fb7:N;3
mul f6/4:g
neg Lf6/3:g
nop 90.
not Lf6/2:g
or 0c:1 L83/1:3 L80/1:2 L08:4 0a:5
_^4org
out e6:O ee:P
outsb 6e.;1
outsw/outsd 6f.;1
pop 8f/0:Q 58:h 1f:DS 07:ES 17:SS 0fa1:FS;3 0fa9:GS;3
popa/popad 61.;1
popf/popfd 9d.
push 50:h ff/6:B 6a:S8;1 68:S;1 0e:CS 16:SS 1e:DS 06:ES 0fa0:FS;3 0fa8:GS;3
pusha/pushad 60.;1
pushf/pushfd 9c.
rcl d0/2:T d2/2:U c0/2:V;1
rcr d0/3:T d2/3:U c0/3:V;1
rol d0/0:T d2/0:U c0/0:V;1
ror d0/1:T d2/1:U c0/1:V;1
rdmsr 0f32.;5
+rep f3*
+repe f3*
+repne f2*
ret c3. c2:W
retf cb. ca:W
rsm 0faa.;5
sahf 9e.
_sal d0/4:T d2/4:U c0/4:V;1
sar d0/7:T d2/7:U c0/7:V;1
+seg _26:ES _2e:CS _36:SS _3e:DS _64:FS _65:GS
es _26&
cs _2e&
ss _36&
ds _3e&
fs _64&
gs _65&
shl d0/4:T d2/4:U c0/4:V;1
shr d0/5:T d2/5:U c0/5:V;1
sbb 1c:1 L83/3:3 L80/3:2 L18:4 1a:5
scasb ae.
scasw/scasd af.
seta 0f97:X;3
setae 0f93:X;3
setb 0f92:X;3
setbe 0f96:X;3
_setc 0f92:X;3
_sete 0f94:X;3
setg 0f9f:X;3
setge 0f9d:X;3
setl 0f9c:X;3
setle 0f9e:X;3
_setna 0f96:X;3
_setnae 0f92:X;3
_setnb 0f93:X;3
_setnbe 0f97:X;3
_setnc 0f93:X;3
_setne 0f95:X;3
_setng 0f9e:X;3
_setnge 0f9c:X;3
_setnl 0f9d:X;3
_setnle 0f9f:X;3
setno 0f91:X;3
_setnp 0f9b:X;3
setns 0f99:X;3
setnz 0f95:X;3
seto 0f90:X;3
_setp 0f9a:X;3
setpe 0f9a:X;3
setpo 0f9b:X;3
sets 0f98:X;3
setz 0f94:X;3
sgdt 0f01/0:s;2
sidt 0f01/1:s;2
shld 0fa4:Y;3 0fa5:Z;3
shrd 0fac:Y;3 0fad:Z;3
sldt 0f00/0:B;2
smsw 0f01/4:C;2
stc f9.
std fd.
sti fb.
stosb aa.
stosw/stosd ab.
str 0f00/1:C;2
sub 2c:1 L83/5:3 L80/5:2 L28:4 2a:5
test a8:1 f6/0:2 84:4 _84:5
verr 0f00/4:C;2
verw 0f00/5:C;2
+wait 9b.
wbinvd 0f09.;4
wrmsr 0f30.;5
xadd L0fc0:4;4
xchg 90:( _90:) _L86:4 L86:5
xlat _d7.
xlatb d7.
xor 34:1 L83/6:3 L80/6:2 L30:4 32:5