home *** CD-ROM | disk | FTP | other *** search
- # 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
-