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
|