Beruflich Dokumente
Kultur Dokumente
Integer Instruction Opcode, Mnemonic, Operand, and Abbreviation Legend: n This is a Number variable, which represents a range of the possible values for a particular instruction opcode or operand. i The operand is an Immediate constant, which is provided as part of the instruction itself. Also, it can be an address label. c A Code label, pointing to part of the program either jumped to or called. A byte is -128 to 127 bytes of the instruction,
a word is within the same code segment, and a doubleword (segment:offset) is within the 32-bit (4GB) address space. e This prefix is used to specify word/doubleword register, that depends on the presence of the operand override prefix byte. cc This represents a Conditional abbreviated mnemonic suffix defining which action is taken upon a true comparison result. r, reg The operand is a general-purpose Register, which may be a high/low byte, a word, or doubleword operand data type. m, mem A Memory variable or an indexed memory quantity; anything which is an Effective Address (except for a register). rm, reg/mem An Effective Address operand (general-purpose register, a memory variable, or an indexed memory quantity). moffsb, moffsv The operands are simple Memory variables (Offset) byte or word/doubleword relative to the segment base. dword, qword, dqword These abbreviations specify operand size meaning Doubleword, Quadword, or Double-quadword. xb, xw, xd, xv, xq, xdq, xp Define size Byte, Word, Dword, word/dword, Qword, packed DQword, or segment-offset Pair. sreg This is one of the segment registers (CS, DS, SS, ES, FS, GS), which is used as an operand data type in an instruction. v&v This is used in Bound instruction to specify a pair of signed word/dword integers, which are lower and upper bounds. SIMD The abbreviation means Simultaneous Instruction Multiple Data, used by the MMX, XMM, and SSE(2) instructions. mm, mn An MMX(0-7) 64-bit SIMD packed byte, word, doubleword, or quadword integer register. Also, used by SSE(2). xm, xn One of XMM(0-7) 128-bit SIMD packed/scalar single-/double-precision floating-point, or packed integer registers. B This abbreviation means Byte(s), that is used in the instruction description column to specify the size of the data operand. S This means Signed, which is an operand format that uses the most significant binary digit to indicate positive or negative. P This abbreviation means Packed, which describes the data operand storage format used in MMX and XMM instructions. O The abbreviation stands for Overflow, in which the operations destination operand does not have enough bits of storage. OS The abbreviation is for Operand-Size, which is a prefix override of the operand-size 16-/32-bits for the next instruction. TOS This means the Top Of Stack, that is the lowest word/doubleword on the stack frame, pointed to by the (E)SP register. Quo, Rem These abbreviations mean Quotient and Remainder; used in division and multiplication instruction descriptions. SP, DP; FP The first two stand for Single-Precision and Double-Precision, which are descriptions used with Floating-Point. CR, DR, TR The abbreviations mean Control Register, Debug Register, and Test Register; used with system instructions. GDTR, IDTR, LDTR These mean Global/Interrupt/Local Descriptor Table Register, which is used in system instructions. CPL, RPL These mean Current/Register Privilege Level, used by system instructions for segment protection mechanisms. TLB Used by INVLPG, is Translation Lookaside Buffer, an internal cache storing most recently used page-directory/table. SMM This abbreviation means System Management Mode, in which the context of current program is saved until resumed.
65 36 66 or null 67 or null
GS SS O2/O4 A2/A4
Use GS data segment for following memory reference Use Stack Segment for following memory reference Use 16-/32-bit (2 or 4 byte) data Operand in next instruction Use 16-/32-bit (2 or 4 byte) Addressing in next instruction
XCHG rb, rmb XCHG rmb, rb XCHG rmv, rv XCHG rv, eAX XCHG rv, rmv ADC AL, ib ADC eAX, iv ADC rb, rmb ADC rmb, ib ADC rmb, rb ADC rmv, ib ADC rmv, iv ADC rmv, rv ADC rv, rmv ADD AL, ib ADD eAX, iv ADD rb, rmb ADD rmb, ib ADD rmb, rb ADD rmv, ib ADD rmv, iv ADD rmv, rv ADD rv, rmv CMP AL, ib CMP eAX, iv CMP rb, rmb CMP rmb, ib CMP rmb, rb CMP rmv, ib CMP rmv, iv CMP rmv, rv CMP rv, rmv DEC rmb DEC rmv DEC rv DIV rmb DIV rmv IDIV rmb IDIV rmv IMUL rmb IMUL rmv IMUL rv, ib IMUL rv, iv IMUL rv, rmv IMUL rv, rmv, ib IMUL rv, rmv, iv INC rmb INC rmv INC rv MUL rmb MUL rmv NEG rmb NEG rmv SBB AL, ib SBB eAX, iv SBB rb, rmb SBB rmb, ib SBB rmb, rb SBB rmv, ib
Exchange reg/mem byte with byte register Exchange byte register with reg/mem byte Exchange vword register with reg/mem vword Exchange eAX with vword register Exchange reg/mem vword with register vword Add with Carry immediate byte into AL Add with Carry immediate vword into eAX Add with Carry reg/mem byte into byte register Add with Carry immediate byte into reg/mem byte Add with Carry byte register into reg/mem byte Add with CF sign-extend immediate byte into reg/mem vword Add with Carry immediate vword into reg/mem vword Add with Carry vword register into reg/mem vword Add with Carry reg/mem vword into vword register Add immediate byte into AL Add immediate vword into eAX Add reg/mem byte into byte register Add immediate byte into reg/mem byte Add byte register into reg/mem byte Add immediate byte into reg/mem vword Add immediate vword into reg/mem vword Add vword register into reg/mem vword Add reg/mem vword into vword register Compare subtracting ib from AL, setting EFLAGS only Compare subtracting iv from eAX, setting EFLAGS only Compare subtracting rmb from rb, setting EFLAGS only Compare subtracting ib from rmb, setting EFLAGS only Compare subtracting rb from rmb, setting EFLAGS only Compare subtracting ib from rmv, setting EFLAGS only Compare subtracting iv from rmv, setting EFLAGS only Compare subtracting rv from rmv, setting EFLAGS only Compare subtracting rmv from rv, setting EFLAGS only Decrement reg/mem byte 1 (CF unaffected, LOCK prefix) Decrement reg/mem vword 1 (CF unaffected, LOCK prefix) Decrement vword register by 1 (CF unaffected, LOCK prefix) Unsigned Divide AX by reg/mem byte (AL = Quo, AH = Rem) Unsigned Divide eDX:eAX, rmv (eAX = Quo, eDX = Rem) Signed Divide AX by reg/mem byte (AL = Quo, AH = Rem) Signed Divide eDX:eAX by rmv (eAX = Quo, eDX = Rem) Signed Multiply (AX AL * reg/mem byte) Signed Multiply (eDX:eAX eAX * reg/mem vword) Signed Multiply sign-extend immediate byte into vword reg Signed Multiply immediate vword into vword register Signed Multiply reg/mem vword into vword register Signed Multiply (rv reg/mem vword * sign-extended ib) Signed Multiply (rv reg/mem vword * immediate vword) Increment reg/mem byte 1 (CF unaffected, LOCK prefix) Increment reg/mem vword 1 (CF unaffected, LOCK prefix) Increment vword register 1 (CF unaffected, LOCK prefix) Unsigned Multiply (AX AL * reg/mem byte) Unsigned Multiply (eDX:eAX eAX * reg/mem vword) Twos complement Negate reg/mem byte (LOCK prefix) Twos complement Negate reg/mem vword (LOCK prefix) Subtract with Borrow ib from/to AL (LOCK prefix) Subtract with Borrow iv from/to eAX (LOCK prefix) Subtract with Borrow rmb from/to rb (LOCK prefix) Subtract with Borrow ib from/to rmb (LOCK prefix) Subtract with Borrow rb from/to rmb (LOCK prefix) Subtract with Borrow ib from/to rmv (LOCK prefix)
none none none none none CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF PF, AF, ZF, SF, OF PF, AF, ZF, SF, OF PF, AF, ZF, SF, OF undefined undefined undefined undefined CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF PF, AF, ZF, SF, OF PF, AF, ZF, SF, OF PF, AF, ZF, SF, OF CF, OF CF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF
1 1 3 1 1
81 /3 iv 19 /r 1B /r 2C ib 2D iv 2A /r 80 /5 ib 28 /r 83 /5 ib 81 /5 iv 29 /r 2B /r 37 D5 0A D4 0A 3F 27 2F 24 ib 25 iv 22 /r 80 /4 ib 20 /r 83 /4 ib 81 /4 iv 21 /r 23 /r F6 /2 F7 /2 0C ib 0D iv 0A /r 80 /1 ib 08 /r 83 /1 ib 81 /1 iv 09 /r 0B /r 34 ib 35 iv 32 /r 80 /6 ib 30 /r 83 /6 ib 81 /6 iv 31 /r 33 /r D0 /2 C0 /2 ib D2 /2 D1 /2 C1 /2 ib D3 /2 D0 /3 C0 /3 ib D2 /3
SBB rmv, iv SBB rmv, rv SBB rv, rmv SUB AL, ib SUB eAX, iv SUB rb, rmb SUB rmb, ib SUB rmb, rb SUB rmv, ib SUB rmv, iv SUB rmv, rv SUB rv, rmv AAA AAD AAM AAS DAA DAS AND AL, ib AND eAX, iv AND rb, rmb AND rmb, ib AND rmb, rb AND rmv, ib AND rmv, iv AND rmv, rv AND rv, rmv NOT rmb NOT rmv OR AL, ib OR eAX, iv OR rb, rmb OR rmb, ib OR rmb, rb OR rmv, ib OR rmv, iv OR rmv, rv OR rv, rmv XOR AL, ib XOR eAX, iv XOR rb, rmb XOR rmb, ib XOR rmb, rb XOR rmv, ib XOR rmv, iv XOR rmv, rv XOR rv, rmv RCL rmb, 1 RCL rmb, ib RCL rmb, CL RCL rmv, 1 RCL rmv, ib RCL rmv, CL RCR rmb, 1 RCR rmb, ib RCR rmb, CL
Subtract with Borrow iv from/to rmv (LOCK prefix) Subtract with Borrow rv from/to rmv (LOCK prefix) Subtract with Borrow rmv from/to rv (LOCK prefix) Subtract immediate byte from/to AL (LOCK prefix) Subtract immediate vword from/to eAX (LOCK prefix) Subtract reg/mem byte from/to rb (LOCK prefix) Subtract immediate byte from/to rmb (LOCK prefix) Subtract byte register from/to rmb (LOCK prefix) Subtract immediate byte from/to rmv (LOCK prefix) Subtract immediate vword from/to rmv (LOCK prefix) Subtract vword register from/to rmv (LOCK prefix) Subtract reg/mem vword from/to rv (LOCK prefix) ASCII Adjust sum of AL (carry into AH) after Addition ASCII Adjust AX before Divide (ALAH * 10 + AL; AH0) ASCII Adjust AX after Multiply (AH = Quo, AL = Rem) ASCII Adjust AL (borrows of AH, AH 0) after Subtraction Decimal Adjust AL after Addition Decimal Adjust AL after Subtraction Bitwise logical AND immediate byte into AL (LOCK prefix) Bitwise logical AND iv into eAX (LOCK prefix) Bitwise logical AND rmb into byte register (LOCK prefix) Bitwise logical AND ib into reg/mem byte (LOCK prefix) Bitwise logical AND byte register into rmb (LOCK prefix) Bitwise logical AND ib into reg/mem vword (LOCK prefix) Bitwise logical AND iv into reg/mem vword (LOCK prefix) Bitwise logical AND vword register into rmv (LOCK prefix) Bitwise logical AND rmv into vword register (LOCK prefix) Bitwise logical NOT on reg/mem byte (LOCK prefix) Bitwise logical NOT on reg/mem vword (LOCK prefix) Bitwise logical OR immediate byte into AL (LOCK prefix) Bitwise logical OR immediate vword into eAX (LOCK prefix) Bitwise logical OR reg/mem byte into rb (LOCK prefix) Bitwise logical OR ib into reg/mem byte (LOCK prefix) Bitwise logical OR rb into reg/mem byte (LOCK prefix) Bitwise logical OR ib into reg/mem vword (LOCK prefix) Bitwise logical OR iv into reg/mem vword (LOCK prefix) Bitwise logical OR rv into reg/mem vword (LOCK prefix) Bitwise logical OR reg/mem vword into rv (LOCK prefix) Bitwise logical XOR immediate byte into AL (LOCK prefix) Bitwise logical XOR iv into eAX (LOCK prefix) Bitwise logical XOR reg/mem byte into rb (LOCK prefix) Bitwise logical XOR ib into reg/mem byte (LOCK prefix) Bitwise logical XOR rb into reg/mem byte (LOCK prefix) Bitwise logical XOR ib into reg/mem vword (LOCK prefix) Bitwise logical XOR iv into reg/mem vword (LOCK prefix) Bitwise logical XOR rv into reg/mem vword (LOCK prefix) Bitwise logical XOR reg/mem vword into rv (LOCK prefix) Rotate 9 bits (CF, reg/mem byte) Left once Rotate 9 bits (CF, reg/mem byte) Left ib times Rotate 9 bits (CF, reg/mem byte) Left CL times Rotate 17/33 (word/dword) bits (CF, rmv) Left once Rotate 17/33 (word/dword) bits (CF, rmv) Left ib times Rotate 17/33 (word/dword) bits (CF, rmv) Left CL times Rotate 9 bits (CF, reg/mem byte) Right once Rotate 9 bits (CF, reg/mem byte) Right ib times Rotate 9 bits (CF, reg/mem byte) Right CL times
CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, AF PF, ZF, SF PF, ZF, SF CF, AF CF, PF, AF, ZF, SF CF, PF, AF, ZF, SF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF none none CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF
Logic Instructions:
D1 /3 C1 /3 ib D3 /3 D0 /0 C0 /0 ib D2 /0 D1 /0 C1 /0 ib D3 /0 D0 /1 C0 /1 ib D2 /1 D1 /1 C1 /1 ib D3 /1 D0 /4 C0 /4 ib D2 /4 D1 /4 C1 /4 ib D3 /4 D0 /7 C0 /7 ib D2 /7 D1 /7 C1 /7 ib D3 /7 D0 /4 C0 /4 ib D2 /4 D1 /4 C1 /4 ib D3 /4 0F A4 /r ib 0F A5 /r D0 /5 C0 /5 ib D2 /5 D1 /5 C1 /5 ib D3 /5 0F AC /r ib 0F AD /r 0F BC /r 0F BD /r 0F BA /4 ib 0F A3 /r 0F BA /7 ib 0F BB /r 0F BA /6 ib 0F B3 /r 0F BA /5 ib 0F AB /r 0F 97 0F 93 0F 92 0F 96 0F 92 0F 94
RCR rmv, 1 RCR rmv, ib RCR rmv, CL ROL rmb, 1 ROL rmb, ib ROL rmb, CL ROL rmv, 1 ROL rmv, ib ROL rmv, CL ROR rmb, 1 ROR rmb, ib ROR rmb, CL ROR rmv, 1 ROR rmv, ib ROR rmv, CL SAL rmb, 1 SAL rmb, ib SAL rmb, CL SAL rmv, 1 SAL rmv, ib SAL rmv, CL SAR rmb, 1 SAR rmb, ib SAR rmb, CL SAR rmv, 1 SAR rmv, ib SAR rmv, CL SHL rmb, 1 SHL rmb, ib SHL rmb, CL SHL rmv, 1 SHL rmv, ib SHL rmv, CL SHLD rmv, rv, ib SHLD rmv, rv, CL SHR rmb, 1 SHR rmb, ib SHR rmb, CL SHR rmv, 1 SHR rmv, ib SHR rmv, CL SHRD rmv, rv, ib SHRD rmv, rv, CL BSF rv, rmv BSR rv, rmv BT rmv, ib BT rmv, rv BTC rmv, ib BTC rmv, rv BTR rmv, ib BTR rmv, rv BTS rmv, ib BTS rmv, rv SETA rmb SETAE rmb SETB rmb SETBE rmb SETC rmb SETE rmb
1 1 1 1 1 1 1
1 1 1 3 3 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
Rotate 17/33 (word/dword) bits (CF, rmv) Right once Rotate 17/33 (word/dword) bits (CF, rmv) Right ib times Rotate 17/33 (word/dword) bits (CF, rmv) Right CL times Rotate 8 bits reg/mem byte Left once Rotate 8 bits reg/mem byte Left ib times Rotate 8 bits reg/mem byte Left CL times Rotate 16/32 bits (word/dword) reg/mem vword Left once Rotate 16/32 bits (word/dword) reg/mem vword Left ib times Rotate 16/32 bits (word/dword) reg/mem vword Left CL times Rotate 8 bits reg/mem byte Right once Rotate 8 bits reg/mem byte Right ib times Rotate 8 bits reg/mem byte Right CL times Rotate 16/32 (word/dword) bits reg/mem vword Right once Rotate 16/32 (word/dword) bits reg/mem vword Right ib times Rotate 16/32 (word/dword) bits reg/mem vword Right CL times Multiply reg/mem byte by 2 once Multiply reg/mem byte by 2 ib times Multiply reg/mem byte by 2 CL times Multiply reg/mem vword by 2 once Multiply reg/mem vword by 2 ib times Multiply reg/mem vword by 2 CL times Signed divide reg/mem byte by 2 once (rounding to -) Signed divide reg/mem byte by 2 ib times (rounding to -) Signed divide reg/mem byte by 2 CL times (rounding to -) Signed divide reg/mem vword by 2 once (rounding to -) Signed divide reg/mem vword by 2 ib times (rounding to -) Signed divide reg/mem vword by 2 CL times (rounding to -) Multiply reg/mem byte by 2 once Multiply reg/mem byte by 2 ib times Multiply reg/mem byte by 2 CL times Multiply reg/mem vword by 2 once Multiply reg/mem vword by 2 ib times Multiply reg/mem vword by 2 CL times Shift rmv to Left ib places while shifting rv bits in from right Shift rmv to Left CL places while shifting rv bits in from right Unsigned divide reg/mem byte by 2 once Unsigned divide reg/mem byte by 2 ib times Unsigned divide reg/mem byte by 2 CL times Unsigned divide reg/mem vword by 2 once Unsigned divide reg/mem vword by 2 ib times Unsigned divide reg/mem vword by 2 CL times Shift rmv to Right ib places while shifting rv bits in from left Shift rmv to Right CL places while shifting rv bits in from left Set rv to lowest set Bit (1 bit) in rmv (if rmv = 0, rv undefined) Set rv to highest set Bit (1 bit) in rmv (if rmv = 0, rv undefined) Set CF to Bit in rmv at immediate byte Set CF to Bit in rmv at vword register Set CF to, then Complement Bit in rmv at ib (LOCK prefix) Set CF to, then Complement Bit in rmv at rv (LOCK prefix) Set CF to, then Reset (set to 0) Bit in rmv at ib (LOCK prefix) Set CF to, then Reset (set to 0) Bit in rmv at rv (LOCK prefix) Set CF to, then Set (set to 1) Bit in rmv at ib (LOCK prefix) Set CF to, then Set (set to 1) Bit in rmv at rv (LOCK prefix) Set byte if Above unsigned integer (CF = 0 & ZF = 0) Set byte if Above or Equal to unsigned integer (CF = 0) Set byte if Below unsigned integer (CF = 1) Set byte if Below or Equal to unS integer (CF = 1/ZF = 1) Set byte if Carry (CF = 1) Set byte if Equal (ZF = 1)
CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF ZF ZF CF CF CF CF CF CF CF CF none none none none none none
0F 9F 0F 9D 0F 9C 0F 9E 0F 96 0F 92 0F 93 0F 97 0F 93 0F 95 0F 9E 0F 9C 0F 9D 0F 9F 0F 91 0F 9B 0F 99 0F 95 0F 90 0F 9A 0F 9A 0F 9B 0F 98 0F 94 A8 ib A9 iv F6 /0 ib 84 /r F7 /0 iv 85 /r 62 /r 9A cp E8 cv FF /3 FF /2 C8 iw 00 C8 iw 01 C8 iw ib CC CD ib CE CF CF 77 cb 0F 87 cv 73 cb 0F 83 cv 72 cb 0F 82 cv 76 cb 0F 86 cv 72 cb 0F 82 cv E3 cb 74 cb 0F 84 cv E3 cb 7F cb 0F 8F cv 7D cb
SETG rmb SETGE rmb SETL rmb SETLE rmb SETNA rmb SETNAE rmb SETNB rmb SETNBE rmb SETNC rmb SETNE rmb SETNG rmb SETNGE rmb SETNL rmb SETNLE rmb SETNO rmb SETNP rmb SETNS rmb SETNZ rmb SETO rmb SETP rmb SETPE rmb SETPO rmb SETS rmb SETZ rmb TEST AL, ib TEST eAX, iv TEST rmb, ib TEST rmb, rb TEST rmv, iv TEST rmv, rv BOUND rv, mv&v CALL cp CALL cv CALL mp CALL rmv ENTER iw, 0 ENTER iw, 1 ENTER iw, ib INT 3 INT ib INTO IRET IRETD JA cb JA cv JAE cb JAE cv JB cb JB cv JBE cb JBE cv JC cb JC cv JCXZ cb JE cb JE cv JECXZ cb JG cb JG cv JGE cb
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
Set byte if Greater than signed integer (ZF = 0 & SF = OF) Set byte if Greater or Equal to signed integer (SF = OF) Set byte if Less than signed integer (SF <> OF) Set byte if Less or Equal to signed integer (ZF = 1/SF <> OF) Set byte if Not Above unsigned integer (CF = 1/ZF = 1) Set byte if Not Above or Equal to unsigned integer (CF = 1) Set byte if Not Below unsigned integer (CF = 0) Set byte if Not Below or Equal to unS int. (CF = 0 & ZF = 0) Set byte if Not Carry (CF = 0) Set byte if Not Equal (ZF = 0) Set byte if Not Greater than signed integer (ZF = 1/SF <> OF) Set byte if Not Greater or Equal to signed integer (SF <> OF) Set byte if Not Less than signed integer (SF = OF) Set byte if Not Less or Equal to S integer (ZF = 0 & SF = OF) Set byte if Not Overflow (OF = 0) Set byte if Not Parity (lowest byte 1 bits not even #, PF = 0) Set byte if Not Signed (positive integer, SF = 0) Set byte if Not Zero (ZF = 0) Set byte if Overflow (OF = 1) Set byte if Parity (lowest byte 1 bits not even #, PF = 1) Set byte if Parity Even (lowest byte 1 bits not even #, PF = 1) Set byte if Parity Odd (lowest byte 1 bits not even #, PF = 0) Set byte if Signed (negative integer, SF = 1) Set byte if Zero (ZF = 1) Bitwise logical AND ib with AL, set EFLAGS (CF, OF 0) Bitwise logical AND iv with eAX, set EFLAGS (CF, OF 0) Bitwise logical AND ib with rmb, set EFLAGS (CF, OF 0) Bitwise logical AND rb with rmb, set EFLAGS (CF, OF 0) Bitwise logical AND iv with rmv, set EFLAGS (CF, OF 0) Bitwise logical AND rv with rmv, set EFLAGS (CF, OF 0) Check if rv is within Bounds of mv&v (if not, exception #BR) Push CS & EIP; Call far, absolute, 4-/6-byte address cp Push EIP; Call near offset cv (relative to next instruction) Push CS & EIP; Call far, absolute indirect, 4-/6-B address mp Push CS & EIP; Call far, absolute indirect, address rmv Make procedural stack frame, iw bytes local storage, 0 levels Make procedural stack frame, iw bytes local storage, 1 level Make procedural stack frame, iw bytes local storage, ib levels Interrupt 3trap to debugger (push EFLAGS, CS, EIP; far call) Interrupt vector number ib (push EFLAGS, CS, EIP; far call) Interrupt 4if OF is 1 (push EFLAGS, CS, & EIP; far call) Interrupt Return (pops EIP, CS, EFLAGS; may SS, data sregs) Interrupt Return (pops EIP, CS, EFLAGS; may SS, data sregs) Jump short if Above unsigned integer (CF = 0 & ZF = 0) Jump near if Above unsigned integer (CF = 0 & ZF = 0) Jump short if Above or Equal to unsigned integer (CF = 0) Jump near if Above or Equal to unsigned integer (CF = 0) Jump short if Below unsigned integer (CF = 1) Jump near if Below unsigned integer (CF = 1) Jump short if Below or Equal to unS integer (CF = 1/ZF = 1) Jump near if Below or Equal to unS integer (CF = 1/ZF = 1) Jump short if Carry (CF = 1) Jump near if Carry (CF = 1) Jump short if CX register is Zero Jump short if Equal (ZF = 1) Jump near if Equal (ZF = 1) Jump short if ECX register is Zero Jump short if Greater than signed integer (ZF = 0 & SF = OF) Jump near if Greater than signed integer (ZF = 0 & SF = OF) Jump short if Greater than or Equal to signed integer (SF = OF)
none none none none none none none none none none none none none none none none none none none none none none none none CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF CF, PF, ZF, SF, OF none all or none all or none all or none all or none none none none TF, IF, NT, RF, VM, AC TF, IF, NT, RF, VM, AC TF, IF, NT, RF, VM, AC all all none none none none none none none none none none none none none none none none none
1 1 1
3 3 3 3 3 3 3 3 3
0F 8D cv 7C cb 0F 8C cv 7E cb 0F 8E cv EB cb EA cp E9 cv FF /4 FF /5 76 cb 0F 86 cv 72 cb 0F 82 cv 73 cb 0F 83 cv 77 cb 0F 87 cv 73 cb 0F 83 cv 75 cb 0F 85 cv 7E cb 0F 8E cv 7C cb 0F 8C cv 7D cb 0F 8D cv 7F cb 0F 8F cv 71 cb 0F 81 cv 7B cb 0F 8B cv 79 cb 0F 89 cv 75 cb 0F 85 cv 70 cb 0F 80 cv 7A cb 0F 8A cv 7A cb 0F 8A cv 7B cb 0F 8B cv 78 cb 0F 88 cv 74 cb 0F 84 cv C9 E2 cb E1 cb E0 cb E0 cb E1 cb C3 CB C2 iw CA iw CB
JGE cv JL cb JL cv JLE cb JLE cv JMP cb JMP cp JMP cv JMP rmv JMP mp JNA cb JNA cv JNAE cb JNAE cv JNB cb JNB cv JNBE cb JNBE cv JNC cb JNC cv JNE cb JNE cv JNG cb JNG cv JNGE cb JNGE cv JNL cb JNL cv JNLE cb JNLE cv JNO cb JNO cv JNP cb JNP cv JNS cb JNS cv JNZ cb JNZ cv JO cb JO cv JP cb JP cv JPE cb JPE cv JPO cb JPO cv JS cb JS cv JZ cb JZ cv LEAVE LOOP cb LOOPE cb LOOPNE cb LOOPNZ cb LOOPZ cb RET RET RET iw RET iw RETF
3 3 3
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1
Jump near if Greater than or Equal to signed integer (SF = OF) Jump short if Less than signed integer (SF <> OF) Jump near if Less than signed integer (SF <> OF) Jump short if Less or Equal to S integer (ZF = 1/SF <> OF) Jump near if Less or Equal to S integer (ZF = 1/SF <> OF) Jump short signed byte (relative to next instruction) Jump far, absolute, 4-/6-byte address cp Jump near, offset cv (relative to next instruction) Jump near, absolute indirect, address reg/mem vword Jump far, absolute indirect, 4-/6-byte address mp Jump short if Not Above unsigned integer (CF = 1 & ZF = 1) Jump near if Not Above unsigned integer (CF = 1 & ZF = 1) Jump short if Not Above or Equal to unsigned integer (CF = 1) Jump near if Not Above or Equal to unsigned integer (CF = 1) Jump short if Not Below unsigned integer (CF = 0) Jump near if Not Below unsigned integer (CF = 0) Jump short if Not Below or Equal to unS (CF = 0 or ZF = 0) Jump near if Not Below or Equal to unS (CF = 0 or ZF = 0) Jump short if Not Carry (CF = 0) Jump near if Not Carry (CF = 0) Jump short if Not Equal (ZF = 0) Jump near if Not Equal (ZF = 0) Jump short if Not Greater than unsigned (ZF = 1 or SF <> OF) Jump near if Not Greater than unsigned (ZF = 1 or SF <> OF) Jump short if Not Greater or Equal to unsigned (SF <> OF) Jump near if Not Greater or Equal to unsigned (SF <> OF) Jump short if Not Less than unsigned integer (SF = OF) Jump near if Not Less than unsigned integer (SF = OF) Jump short if Not Less or Equal to unS (ZF = 0 & SF = OF) Jump near if Not Less or Equal to unS (ZF = 0 & SF = OF) Jump short if Not Overflow (OF = 0) Jump near if Not Overflow (OF = 0) Jump short if Not Parity (lowest byte 1 bits not even #, PF = 0) Jump near if Not Parity (lowest byte 1 bits not even #, PF = 0) Jump short if Not Signed (positive integer, SF = 0) Jump short if Not Signed (positive integer, SF = 0) Jump short if Not Zero (ZF = 0) Jump near if Not Zero (ZF = 0) Jump short if Overflow (OF = 1) Jump near if Overflow (OF = 1) Jump short if Parity (lowest byte 1 bits are even #, PF = 1) Jump near if Parity (lowest byte 1 bits are even #, PF = 1) Jump short if Parity Even (lowest byte 1 bits are even #, PF = 1) Jump near if Parity Even (lowest byte 1 bits are even #, PF = 1) Jump short if Parity Odd (lowest byte 1 bits not even #, PF = 0) Jump near if Parity Odd (lowest byte 1 bits not even #, PF = 0) Jump short if Signed (negative integer, SF = 1) Jump near if Signed (negative integer, SF = 1) Jump short if Zero (ZF = 1) Jump near if Zero (ZF = 1) Set SP to BP, then pop BP (releases stack frame of ENTER) DEC eCX; jump short if eCX 0 DEC eCX; jump short if eCX 0 & equal (ZF = 1) DEC eCX; jump short if eCX 0 & (ZF = 0) DEC eCX; jump short if eCX 0 & not 0 (ZF = 0) DEC eCX; jump short if eCX 0 & zero (ZF = 1) Near Return to calling procedure (return address on TOS) Far Return to calling procedure (return address on TOS) Near Return to calling procedure (TOS); pop iw B from stack Far Return to calling procedure (TOS); pop iw B from stack Return Far to calling procedure (return address on TOS)
none none none none none all or none all or none all or none all or none all or none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none
CA iw C3 C2 iw A6 A7 A6 A7 A7 6C 6D 6C 6D 6D AC AD AC AD AD A4 A5 A4 A5 A5 6E 6F 6E 6F 6F AE AF AE AF AF AA AB AA AB AB F8 FC FA F5 9F 9D 9D 9C 9C 9E F9 FD FB C5 /r C4 /r 0F B4 /r 0F B5 /r 0F B2 /r
RETF iw RETN RETN iw CMPS mb, mb CMPS mv, mv CMPSB CMPSD CMPSW INS rmb, DX INS rmv, DX INSB INSD INSW LODS mb LODS mv LODSB LODSD LODSW MOVS mb, mb MOVS mv, mv MOVSB MOVSD MOVSW OUTS DX, rmb OUTS DX, rmv OUTSB OUTSD OUTSW SCAS mb SCAS mv SCASB SCASD SCASW STOS mb STOS mv STOSB STOSD STOSW CLC CLD CLI CMC LAHF POPF POPFD PUSHF PUSHFD SAHF STC STD STI LDS rv, mp LES rv, mp LFS rv, mp LGS rv, mp LSS rv, mp
Return Far to calling procedure (TOS); pop iw B from stack Return Near to calling procedure (return address on TOS) Return Near to calling procedure (TOS); pop iw B from stack Compare bytes DS:[eSI] to ES:[eDI]; advance eSI & eDI Compare vwords DS:[eSI] to ES:[eDI]; advance eSI & eDI Compare Bytes DS:[eSI] to ES:[eDI]; advance eSI & eDI Compare Dwords DS:[eSI] to ES:[eDI]; advance eSI & eDI Compare Words DS:[eSI] to ES:[eDI]; advance eSI & eDI Input byte from port DX (0-65,535) to ES:[eDI]; advance eDI Input vword of port DX (0-65,535) to ES:[eDI]; advance eDI Input Byte from port DX (0-65,535) to ES:[eDI]; advance eDI Input Dword of port DX (0-65,535) to ES:[eDI]; advance eDI Input Word of port DX (0-65,535) to ES:[eDI]; advance eDI Load byte DS:[eSI] into AL; advance eSI Load vword DS:[eSI] into eAX; advance eSI Load Byte DS:[eSI] into AL; advance eSI Load Dword DS:[eSI] into EAX; advance eSI Load Word DS:[eSI] into AX; advance eSI Move byte DS:[eSI] to ES:[eDI]; advance eSI & eDI Move vword DS:[eSI] to ES:[eDI]; advance eSI & eDI Move Byte DS:[eSI] to ES:[eDI]; advance eSI & eDI Move Dword DS:[eSI] to ES:[eDI]; advance eSI & eDI Move Word DS:[eSI] to ES:[eDI]; advance eSI & eDI Output byte DS:[eSI] to port in DX (0-65,535); advance eSI Output vword DS:[eSI] to port in DX (0-65,535); advance eSI Output Byte DS:[eSI] to port in DX (0-65,535); advance eSI Output Dword DS:[eSI] to port in DX (0-65,535); advance eSI Output Word DS:[eSI] to port in DX (0-65,535); advance eSI Compare byte AL to ES:[eDI]; advance eDI; set EFLAGS Compare vword eAX to ES:[eDI]; advance eDI; set EFLAGS Compare Byte AL to ES:[eDI]; advance eDI; set EFLAGS Compare Dword EAX to ES:[eDI]; advance eDI; set EFLAGS Compare Word AX to ES:[eDI]; advance eDI, set EFLAGS Store byte AL to ES:[eDI]; advance eDI Store vword eAX to ES:[eDI]; advance eDI Store Byte AL to ES:[eDI]; advance eDI Store Dword EAX to ES:[eDI]; advance eDI Store Word AX to ES:[eDI]; advance eDI Clear Carry flag (CF 0) Clear Direction flag (DF 0) so eSI and eDI auto-increment Clear Interrupt enable flag (IF 0) (interrupts disabled) Complement Carry flag (CF) (set CF to opposite value) Load: AH EFLAGS (SF, ZF, 0, AF, 0, PF, 1, CF) Pop TOS into lower 16 bits of EFLAGS; increment eSP by 2 Pop TOS into EFLAGS; increment eSP by 2 Decrement eSP by 2; Push lower 16 bits of EFLAGS to TOS Decrement eSP by 4; Push EFLAGS to TOS Store: SF, ZF, xx, AF, xx, PF, xx, & CF of AH EFLAGS Set Carry flag (CF 1) Set Direction flag (DF 1) so SI and DI auto-decrement Set Interrupt enable flag (IF 1) (interrupts enabled) Load far 32-/48-bit pointer from reg/mem to DS & vword reg Load far 32-/48-bit pointer from reg/mem to ES & vword reg Load far 32-/48-bit pointer from reg/mem to FS & vword reg Load far 32-/48-bit pointer from reg/mem to GS & vword reg Load far 32-/48-bit pointer from reg/mem to SS & vword reg
none none none CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF none none none none none none none none none none none none none none none none none none none none CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF CF, PF, AF, ZF, SF, OF none none none none none CF DF IF CF none all but reserve & VM bits all but reserve & VM bits none none CF, PF, AF, ZF, SF CF DF IF none none none none none
3 1 1 1 3 1
3 1 1 1 3 1
3 3
Miscellaneous Instructions:
0F A2 8D /r 90 0F 0B D7 D7 0F 6E /r 0F 7E /r 0F 6F /r 0F 7F /r 0F 6B /r 0F 63 /r 0F 67 /r 0F 68 /r 0F 6A /r 0F 69 /r 0F 60 /r 0F 62 /r 0F 61 /r 0F FC /r 0F FE /r 0F EC /r 0F ED /r 0F DC /r 0F DD /r 0F FD /r 0F F5 /r 0F E5 /r 0F D5 /r 0F F8 /r 0F FA /r 0F E8 /r 0F E9 /r 0F D8 /r 0F D9 /r 0F F9 /r 0F 74 /r 0F 76 /r 0F 75 /r 0F 64 /r 0F 66 /r 0F 65 /r 0F DB /r 0F DF /r 0F EB /r 0F EF /r CPUID LEA rv, m NOP UD2 XLAT mb XLATB MOVD mm, rmd MOVD rmd, mm MOVQ mm, mm/mq MOVQ mm/mq, mm PACKSSDW m1, m2/mq PACKSSWB x1, x2/mdq PACKUSWB mm, mm/mq PUNPCKHBW mm, mm/mq PUNPCKHDQ mm, mm/mq PUNPCKHWD mm, mm/mq PUNPCKLBW mm, mm/md PUNPCKLDQ mm, mm/md PUNPCKLWD mm, mm/md PADDB mm, mm/mq PADDD mm, mm/mq PADDSB mm, mm/mq PADDSW mm, mm/mq PADDUSB mm, mm/mq PADDUSW mm, mm/mq PADDW mm, mm/mq PMADDWD mm, mm/mq PMULHW m1, m2/mq PMULLW m1, m2/mq PSUBB mm, mm/mq PSUBD mm, mm/mq PSUBSB mm, mm/mq PSUBSW mm, mm/mq PSUBUSB mm, mm/mq PSUBUSW mm, mm/mq PSUBW mm, mm/mq PCMPEQB mm, mm/mq PCMPEQD mm, mm/mq PCMPEQW mm, mm/mq PCMPGTB mm, mm/mq PCMPGTD mm, mm/mq PCMPGTW mm, mm/mq PAND mm, mm/mq PANDN mm, mm/mq POR mm, mm/mq PXOR mm, mm/mq 5 EAX value CPU Id & features to EAX, EBX, ECX, & EDX Calculate & Load Effective Address for m into vword register No Operation (takes up space in execution, only affects EIP) Raise invalid opcode exception (#UD) Set AL to memory byte DS:[eBX + unsigned AL] Set AL to memory byte DS:[eBX + unsigned AL] Move reg/mem Dword to mm; zero-extend (mm[63-32] 0) Move low Dword of mm to reg/mem dword Move Qword from mm/mq to mm; if mq, mm[127-64] 0 Move Qword from mm to mm/mq Pack m1, 2 Dwords m2/mq to 4 Words m1 (Signed Saturation) Pack 8 Words x1, x2/mdq to 16 Bytes x1 (Signed Saturation) Pack 4 Words mm, mm/m64 to 8 unsigned B mm (unS sat.) Unpack, interleave High Bytes mm, mm/mq into Words mm Unpack, interleave High Dwords mm, mm/mq into Qwords mm Unpack, interleave High Words mm, mm/mq into Dwords mm Unpack, interleave Low Bytes mm, mm/md into Words mm Unpack, interleave Low Dwords mm, mm/md into Qwords mm Unpack, interleave Low Words mm, mm/md into Dwords mm Packed Add Bytes mm/mq into mm; wrap-around overflow Packed Add Dwords mm/mq into mm; wrap-around overflow Packed Add Bytes mm/mq into mm; wrap-around O (S sat.) Packed Add Words mm/mq into mm; wrap-around O (S sat.) Packed Add Bytes mm/mq into mm; wrap-around O (UnS sat.) Packed Add Words mm/mq into mm; wrap-around O (UnS sat.) Packed Add Words mm/mq into mm; wrap-around overflow Packed Multiply Words mm, mm/mq; Add adjacents into mm Packed Multiply S Words m1, m2/mq; High 16 bits into m1 Packed Multiply S Words m1, m2/mq; Low 16 bits into m1 Packed Subtract B mm/mq from/to mm, wrap-around overflow Packed Subtract Dwords mm/mq from/to mm, wrap-around O Packed Subtract Bytes mm/mq from/to mm (S saturate) Packed Subtract Words mm/mq from/to mm (S saturate) Packed Subtract Bytes mm/mq from/to mm (UnS saturate) Packed Subtract Words mm/mq from/to mm (UnS saturate) Packed Subtract Words mm/mq from/to mm, wrap-around O Packed Compare Bytes mm/mq to mm; 1s mm if =, else 0s Packed Compare Dwords mm/mq to mm; 1s mm if =, else 0s Packed Compare Words mm/mq to mm; 1s mm if =, else 0s Packed Compare S B mm/mq to mm; 1s mm if >, else 0s Packed Compare S Dwords mm/mq to mm; 1s mm if >, else 0s Packed Compare S Words mm/mq to mm; 1s mm if >, else 0s Packed bitwise AND mm/mq into mm Packed bitwise AND NOT mm/mq into mm Packed bitwise OR mm/mq into mm Packed bitwise XOR mm/mq into mm none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none none
P3 P3 P3 P3 P3 P3 P3 P3 P3 P3 P3 P3 P3 P3 F3 0F C2 /r 03 CMPUNORDSS x1, x2/md P3 0F 2F /r COMISS x1, x2/md P3 0F 2E /r UCOMISS x1, x2/md P3 0F C2 /r 02 CMPLEPS x1, x2/mdq F3 0F C2 /r 02 CMPLESS x1, x2/md 0F C2 /r 01 CMPLTPS x1, x2/mdq F3 0F C2 /r 01 CMPLTSS x1, x2/md 0F C2 /r 04 CMPNEQPS x1, x2/mdq F3 0F C2 /r 04 CMPNEQSS x1, x2/md 0F C2 /r 06 CMPNLEPS x1, x2/mdq F3 0F C2 /r 06 CMPNLESS x1, x2/md 0F C2 /r 05 CMPNLTPS x1, x2/mdq F3 0F C2 /r 05 CMPNLTSS x1, x2/md 0F C2 /r 07 CMPORDPS x1, x2/mdq F3 0F C2 /r 07 CMPORDSS x1, x2/md 0F C2 /r 03 CMPUNORDPS x1, x2/mdq 0F 55 /r 0F 54 /r 0F 56 /r 0F 57 /r 0F C6 /r ib 0F 15 /r 0F 14 /r ANDNPS x1, x2/mdq ANDPS x1, x2/mdq ORPS x1, x2/mdq XORPS x1, x2/mdq P3 P3 P3 P3
Compare low SP FP x2/md, x1; dword 1s x1 if =, else 0s Compare 2 P SP FPs x2/mdq, x1; dwords 1s x1 if , else 0s Compare low SP FP x2/md, x1; dword 1s x1 if , else 0s Compare 2 P SP FPs x2/mdq, x1; dwords 1s x1 if <, else 0s Compare low SP FP x2/md, x1; dword 1s x1 if <, else 0s Compare 2 P SP FPs x2/mdq, x1; dwords 1s x1 if , else 0s Compare low SP FP x2/md, x1; dword 1s x1 if , else 0s Compare 2 P SP FPs x2/mdq, x1; dwords 1s x1 if not , else 0s Compare low SP FP x2/md, x1; dword 1s x1 if not , else 0s Compare 2 P SP FP x2/mdq, x1; dwords 1s x1 if not <, else 0s Compare low SP FP x2/md, x1; dword 1s x1 if not <, else 0s Compare 2 P SP FP x2/mdq, x1; dwords 1s x1 Ordered, else 0s Compare low SP FP x2/md, x1; dword 1s x1 if Ordered, else 0s Compare 2 P SP FP x2/mdq, x1; dwords 1s x1 Unorder, else 0s Compare low SP FP x2/md, x1; dword 1s x1 Unordered, else 0s Ordered Compare low SP FP x2/md & x1; set EFLAGS Unordered Compare low SP FP x2/md & x1; set EFLAGS Bitwise logical AND NOT 4 P SP FPs in x2/mdq into x1 Bitwise logical AND 4 P SP FPs in x2/mdq into x1 Bitwise logical OR 4 P SP FPs in x2/mdq into x1 Bitwise logical XOR 4 P SP FPs x2/mdq into x1
#I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN/QNaN), #D #I (if SNaN), #D none none none none
0F 18 /3 0F 18 /0 0F AE FF
P3 Prefetch memory mb into all cache levels, except levels 0 & 1 P3 Non-temporal prefetch memory mb into all cache levels P3 Serializes so that previous stores are visible before next stores
66 0F 2F /r 66 0F 2E /r
66 0F C6 /r ib
66 0F 15 /r 66 0F 14 /r
UNPCKHPD x1, x2/mdq P4 Unpack & interleave DP FPs of High qwords x2/mdq and/to x1 none UNPCKLPD x1, x2/mdq P4 Unpack & interleave DP FPs of Low qwords x2/mdq and/to x1 none
MOVDQA x1, x2/mdq MOVDQA x2/mdq, x1 MOVDQU x1, x2/mdq MOVDQU x2/mdq, x1 MOVDQ2Q mm, xm MOVQ2DQ xm, mm PADDQ m1, m2/mq PADDQ x1, x2/mdq PMULUDQ m1, m2/mq PMULUDQ x1, x2/mdq PSHUFD x1, x2/mdq
PSHUFHW x1, x2/mdq, ib PSHUFLW x1, x2/mdq, ib
0F FB /r 66 0F FB /r
66 0F 6A /r 66 0F 6C /r
PSLLDQ x1, ib PSRLDQ x1, ib PSUBQ m1, m2/mq PSUBQ x1, x2/mdq
PUNPCKHQDQ x1, x2/mdq PUNPCKLQDQ x1, x2/mdq
P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 P4 2 2 4 4
Move Aligned Dqword x2/mdq to x1 (16-B aligned or #GP) Move Aligned Dqword x1 to x2/mdq (16-B aligned or #GP) Move Unaligned Dqword x2/mdq to x1 Move Unaligned Dqword x1 to x2/mdq Move low Qword from xm to mm register Move Qword from mm register to low qword of xm register Add Qword m2/mq into m1 (EFLAGS unaffected) Packed Add Qwords m2/mdq into x1 (EFLAGS unaffected) Multiply Unsigned Dwords m1 and/to m2/mq Packed Multiply Unsigned Dwords x1 and/to x2/mdq Shuffle Dwords in x2/mdq to x1 in order selected by ib Shuffle High Words in x2/mdq to x1 in order selected by ib Shuffle Low Words in x2/mdq to x1 in order selected by ib Shift x1 Left by ib bytes while shifting 0s in right Shift x1 Right by ib bytes while shifting 0s in left Subtract Qword m2/mq from/to m1 Packed Subtract Qwords x2/mdq from/to x1 Unpack & Interleave High Qwords from x2/mdq and/to x1 Unpack & Interleave Low Qwords from x2/mdq and/to x1 Flushes Cache Line containing mb Serializes load-from-memory instruction operations Selectively write B from m1 to memory using m2 B Mask Serialize load-from-memory & store-from-memory operations Non-temporal Move Dqword from xm to mdq Non-temporal Move dword from rd to md Non-temporal Move P DP FPs from xm to mdq Processor hint & delay to improve spin-wait loop performance Adjust RPL of reg/mem word to not less than RPL of rw Clear Task Switched flag (TS) in CR0 Halt (start: interrupts, debug except., BINIT#, INIT#, RESET#) Flush internal caches; initiate flushing external caches Invalidate TLB Entry for Page that contains m
System Instructions (* - Protected Mode; @ - CPL 3 Application, else need CPL 0):
0F 02 /r 0F 01 /2 0F 01 /3 0F 00 /2 0F 01 /6 0F 03 /r 0F 00 /3 0F 22 /4 0F 22 /n 0F 23 /n 0F 20 /4 0F 20 /n 0F 21 /n 0F 24 /n 0F 26 /n 0F 32 0F 33 0F 31 0F AA 0F 01 /0 0F 01 /1 0F 00 /0 0F 01 /4 0F 00 /1 0F 34 0F 35 0F 00 /4 0F 00 /5 0F 09 0F 30
*@ LAR rv, rmv LGDT m LIDT m * LLDT rmw LMSW rmw *@ LSL rv, rmv * LTR rmw MOV CR4, rd MOV CRn, rd MOV DRn, rd MOV rd, CR4 MOV rd, CRn MOV rd, DRn MOV rd, TRn MOV TRn, rd RDMSR RDPMC RDTSC RSM @ SGDT m @ SIDT m *@ SLDT rmw @ SMSW rmw *@ STR rmw *@ SYSENTER * SYSEXIT *@ VERR rmw *@ VERW rmw WBINVD WRMSR PAVGUSB m1, m2/mq PF2ID m1, m2/mq PF2IW mm, m2/mq PFACC m1, m2/mq PFADD m1, m2/mq PFCMPEQ m1, m2/mq PFCMPGE m1, m2/mq PFCMPGT m1, m2/mq PFMAX m1, m2/mq PFMIN m1, m2/mq PFMUL m1, m2/mq PFNACC mm, m2/mq PFPNACC mm, m2/mq PFRCP m1, m2/mq PFRCPIT1 m1, m2/mq PFRCPIT2 m1, m2/mq PFRSQIT1 m1, m2/mq PFRSQRT m1, m2/mq PFSUB m1, m2/mq PFSUBR m1, m2/mq PI2FD m1, m2/mq PI2FW mm, m2/mq PMULHRW m1, m2/mq PREFETCH mb PREFETCHW mb PSWAPD mm, m2/mq FEMMS
2 2 2 2 2 2 2 5 3 3 5 3 3 3 3 5 P2 5 5 2 2 2 2 2 P2 P2 2 2 4 5 3D 3D 3E 3D 3D 3D 3D 3D 3D 3D 3D 3E 3E 3D 3D 3D 3D 3D 3D 3D 3D 3E 3D 3D 3D 3E
Load: rv rmv mask by FF00/00FxFF00 hex (16/32); set ZF Load lower 16-bit limit, upper 24-/32-bit base m into GDTR Load lower 16-bit limit, upper 24-/32-bit base m into IDTR Load selector rmw into Local Descriptor Table reg (LDTR) Load reg/mem word into Machine Status Word of CR0[15-0] Load: rv Segment Limit (20-bits) of selector rmv; set ZF Load reg/mem word into Task Register Move register dword into Control Register 4 Move dword register into Control Register n (= 0, 2, or 3) Move dword register into Debug register n (= 0-3, 6, or 7) Move Control Register 4 into dword register Move Control Register n (= 0, 2, or 3) into dword register Move Debug register n (= 0-3, 6, or 7) into dword register Move Test Register n (= 6, 7) into register dword Move register dword into Test Register n (= 6, 7) Read 64-bit Model Specific Register by ECX to EDX:EAX Read Performance Monitoring Counter by ECX to EDX:EAX Read Time Stamp Counter into EDX:EAX (not serializing) Resume (return control) to interrupted program from SMM Store lower 16-bit limit, upper 24-/32-bit base GDTR to m Store lower 16-bit limit, upper 24-/32-bit base IDTR to m Store lower 16-bit limit, upper 24-/32-bit base LDTR to rmw Store Machine Status Word to reg/mem word of CR0[15-0] Store segment selector from Task Register to reg/mem word Fast call from level 3 code to level 0 operating system code Fast call from level 0 code to level 3 user application code Set ZF = 1 if segment of selector at rmw address can be read Set ZF = 1 if segment of selector at rmw can be written Write Back & flush internal caches; initiate in external caches Write EDX:EAX to 64-bit Model Specific Register by ECX Packed rounded Average Unsigned Bytes m2/mq and/to m1 Packed truncated convert SP FP m2/mq into 32-bit Integer m1 Packed truncated convert SP FP m2/mq into 16-bit Integer mm Packed SP FP Accumulate 2 words m2/mq and/to low, high m1 Packed SP FP Addition of m2/mq and/to m1 Packed FP Compare dwords m2/mq to m1; 1s m1 if =, else 0s Packed FP Compare dwords m2/mq to m1; 1s m1 if , else 0s Packed FP Compare dwords m2/mq to m1; 1s m1 if >, else 0s Return Packed Maximum of SP FPs m2/mq and/to m1 Return Packed Minimum of SP FPs m2/mq and/to m1 Packed SP FP Multiply m2/mq into m1 Packed SP FP Negative Accumulate 2 dwords to low, high mm Packed SP FP mixed Positive-Negative Accumulate 2 dwords Packed scalar FP Reciprocal approx.; result high & low B m1 Packed FP Reciprocal first Iteration step Packed FP Reciprocal second Iteration step Packed FP Reciprocal Square Root of first Iteration step Packed FP Reciprocal Square Root approximation Packed SP FP Subtract m2/mq from/to m1 Packed SP FP Subtract m1 from m2/mq; store result to m1 Packed convert signed 32-bit Integer m2/mq to SP FP m1 Packed convert signed 16-bit Integer m2/mq to SP FP mm Packed 16-bit integer Multiply m2/mq into m1 with Rounding Prefetch 32 bytes or more into L1 data cache, exclusive MESI Prefetch 32 B or > into L1 data cache & set MESI to modified Packed Swap high and low Doublewords of m2/mq to mm
ZF none none none none ZF none undefined undefined undefined undefined undefined undefined undefined undefined none none none all none none none none none IF, RF, VM none ZF ZF none none none none none none none none none none none none none none none none none none none none none none none none none none none none none
Floating-Point Instruction Abbreviation and Operand Legend: BCD The abbreviation stands for Binary Coded Decimal, which is the format that is used to perform arithmetic operations. m32fp This 4-byte operand contains a single-precision floating-point number, which is less accurate than double precision. m64fp An 8-byte double precision FP number operand, which takes the same length of calculation time as single precision. m80fp A 10-byte operand which contains the binary coded decimal format recognized by the FBLD & FBSTP instructions. m16int, m32int These are 2-byte or 4-byte memory operands, which contains a signed integer in 2's-complement notation. mem10r This 10-byte full precision FP number operand is for maximum accuracy of double precision number calculations. mem14, mem94 These are 14-/94-byte buffers, which are used for saving and restoring the FPU machine state information. ST(0), ST(i) These 2 operands are for the top element and element number i (range 0 through 7) of the floating-point stack. The Floating-Point Instruction Set:
In the opcode column, w is for the WAIT/FWAIT instruction, and +i (with a range of 0-7) is a number used when an operand is ST(i).
w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
DE C1 DE C0+i D9 E0 D8 /6 DC /6 D8 F0+i DC F8+i DE F9 DE F8+i D8 /7 DC /7 D8 F8+i DC F0+i DE F1 DE F0+i DE /0 DA /0 DE /6 DA /6 DE /7 DA /7 DE /1 DA /1 DE /4 DA /4 DE /5 DA /5 D8 /1 DC /1 D8 C8+i DC C8+i DE C9 DE C8+i D9 F8 D9 F5 D9 FC D9 FD D9 FA D8 /4 DC /4 D8 E0+i DC E8+i DE E9 DE E8+i D8 /5 DC /5 D8 E8+i DC E0+i DE E1 DE E0+i D9 F4 D8 /2 DC /2 D8 D1 D8 D0+i DB F0+i
FADDP FADDP ST(i), ST(0) FCHS FDIV m32fp FDIV m64fp FDIV ST(0), ST(i) FDIV ST(i), ST(0) FDIVP FDIVP ST(i), ST(0) FDIVR m32fp FDIVR m64fp FDIVR ST(0), ST(i) FDIVR ST(i), ST(0) FDIVRP FDIVRP ST(i), ST(0) FIADD m16int FIADD m32int FIDIV m16int FIDIV m32int FIDIVR m16int FIDIVR m32int FIMUL m16int FIMUL m32int FISUB m16int FISUB m32int FISUBR m16int FISUBR m32int FMUL m32fp FMUL m64fp FMUL ST(0), ST(i) FMUL ST(i), ST(0) FMULP FMULP ST(i), ST(0) FPREM FPREM1 FRNDINT FSCALE FSQRT FSUB m32fp FSUB m64fp FSUB ST(0), ST(i) FSUB ST(i), ST(0) FSUBP FSUBP ST(i), ST(0) FSUBR m32fp FSUBR m64fp FSUBR ST(0), ST(i) FSUBR ST(i), ST(0) FSUBRP FSUBRP ST(i), ST(0) FXTRACT FCOM m32fp FCOM m64fp FCOM FCOM ST(i) FCOMI ST(0), ST(i)
ST(1) ST(0) + ST(1); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(0) + ST(i); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(0) -ST(0) C1; #IS ST(0) ST(0) / m32fp C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) ST(0) / m64fp C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) ST(0) / ST(i) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(i) ST(i) / ST(0) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(1) ST(1) / ST(0); Pop register stack C1; #IS, #IA, #Z, #D, #O, #U, #P ST(i) ST(i) / ST(0); Pop register stack C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) m32fp / ST(0) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) m64fp / ST(0) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) ST(i) / ST(0) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(i) ST(0) / ST(i) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(1) ST(0) / ST(1); Pop register stack C1; #IS, #IA, #Z, #D, #O, #U, #P ST(i) ST(0) / ST(i); Pop register stack C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) ST(0) + m16int C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) + m32int C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) / m16int C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) ST(0) / m32int C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) m16int / ST(0) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) m32int / ST(0) C1; #IS, #IA, #Z, #D, #O, #U, #P ST(0) ST(0) * m16int C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) * m32int C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) - m16int C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) - m32int C1; #IS, #IA, #D, #O, #U, #P ST(0) m16int - ST(0) C1; #IS, #IA, #D, #O, #U, #P ST(0) m32int - ST(0) C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) * m32fp C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) * m64fp C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) * ST(i) C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(0) * ST(i) C1; #IS, #IA, #D, #O, #U, #P ST(1) ST(0) * ST(1); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(i) * ST(0); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(0) Partial Remainder of ST(0) / ST(1) (not IEEE) C0-C3; #IS, #IA, #D, #U 387 ST(0) Partial Remainder of ST(0) / ST(1) (IEEE Std 754) C0-C3; #IS, #IA, #D, #U ST(0) round ST(0) to an integer C1; #IS, #IA, #D, #P ST(1) ST(0) ST(0) * 2 C1; #IS, #IA, #D, #O, #U, #P ST(0) Square Root of ST(0) C1; #IS, #IA, #D, #P ST(0) ST(0) - m32fp C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) - m64fp C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(0) - ST(i) C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(i) - ST(0) C1; #IS, #IA, #D, #O, #U, #P ST(1) ST(1) - ST(0); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(i) - ST(0); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(0) m32fp - ST(0) C1; #IS, #IA, #D, #O, #U, #P ST(0) m64fp - ST(0) C1; #IS, #IA, #D, #O, #U, #P ST(0) ST(i) - ST(0) C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(0) - ST(i) C1; #IS, #IA, #D, #O, #U, #P ST(1) ST(0) - ST(1); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(i) ST(0) - ST(i); Pop register stack C1; #IS, #IA, #D, #O, #U, #P ST(1) exponent; ST(0) significand, push to reg stack C1; #IS, #IA, #Z, #D Compare: ST(0) - m32fp Compare: ST(0) - m64fp Compare: ST(0) - ST(1) Compare: ST(0) - ST(i) P2 Compare: ST(0) - ST(i); set EFLAGS C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C1; #IS, #IA
FCOMIP FCOMP FCOMP m32fp FCOMP m64fp FCOMP ST(i) FCOMPP FICOM m16int FICOM m32int FICOMP m16int FICOMP m32int FTST FUCOM FUCOM ST(i) FUCOMI ST(i) FUCOMIP ST(i) FUCOMP FUCOMP ST(i) FUCOMPP FXAM F2XM1 FCOS FPATAN FPTAN FSIN FSINCOS FYL2X FYL2XP1 FLD1 FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FCLEX FDECSTP FFREE ST(i) FINCSTP FINIT FLDENV mem14 FLDCW m16int FNCLEX FNINIT FNOP FNSAVE mem94 FNSTCW m16int FNSTENV mem14 FNSTSW AX FNSTSW m16int FRSTOR mem94 FSAVE mem94 FSTCW m16int FSTENV mem14 FSTSW AX
P2 Compare: ST(0) - ST(1); set EFLAGS; Pop register stack Compare: ST(0) - ST(1); Pop register stack Compare: ST(0) - m32fp; Pop register stack Compare: ST(0) - m64fp, Pop register stack Compare: ST(0) - ST(i); Pop register stack Compare: ST(0) - ST(1); Pop register stack twice Compare: ST(0) - m16int Compare: ST(0) - m32int Compare: ST(0) - m16int; Pop register stack Compare: ST(0) - m32int; Pop register stack Compare: ST(0) - 0.0 387 Unordered Compare: ST(0) - ST(1) 387 Unordered Compare: ST(0) - ST(i) P2 Unordered Compare: ST(0) - ST(i); set EFLAGS P2 Unordered Compare: ST(0) - ST(i); set EFLAGS, pop 387 Unordered Compare: ST(0) - ST(1); Pop register stack 387 Unordered Compare: ST(0) - ST(i); Pop register stack 387 Unordered Compare: ST(0) - ST(1); Pop register stack twice C0C3 type of value in ST(0) (Classify value)
C1; #IS, #IA C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C1; #IS, #IA C1; #IS, #IA C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0-C3; #IS, #IA, #D C0, C1, C2, C3
w DD /7 9B 9B 0F AE /1 0F AE /0
m16int FPU Status Word (check unmasked exceptions) Wait until pending unmasked FP exceptions are completed Wait until pending unmasked FP exceptions are completed P3 Restore: x87, MMX, XMM, & MXCSR regs m (512 B) P3 Save: m (512 B) x87, MMX, XMM, & MXCSR registers
ModR/M:
7 Mod 65 Reg/ Opcode 32 R/M 0
SIB:
7 Scale 65 Index 32 Base 0
AX CX DX BX SP BP SI DI
AL CL DL BL AH CH DH BH
11
C0 C1 C2 C3 C4 C5 C6 C7
C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7
D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7
E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 F6 F7
F8 F9 FA FB FC FD FE FF
Notes:
1. 2. 3. 4. 5. 6. The default segment register is SS for the effective addresses containing a BP index; DS register is for other effective addresses. The disp16 nomenclature denotes a 16-bit displacement that follows behind ModR/M byte and that is added to the indexs value. The disp8 nomenclature denotes an 8-bit displacement following ModR/M byte and that is sign-extended and added to the index. The [][] nomenclature means a SIB (Scale, Index, & Base fields) byte follows ModR/M (Mod, reg/opcode, & R/M fields) byte. The disp32 nomenclature denotes a 32-bit displacement that follows ModR/M byte (or SIB byte if present) that is added to index. The disp8 denotes an 8-bit displacement that follows ModR/M byte (SIB byte if present) that is sign-extended and added to index. EAX 0 000 SS 00 Index 000 001 010 011 100 101 110 111 000 001 010 011 100 101 110 111 000 001 010 011 100 101 110 111 000 001 010 011 100 101 110 111 00 08 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80 88 90 98 A0 A8 B0 B8 C0 C8 D0 D8 E0 E8 F0 F8 ECX 1 001 01 09 11 19 21 29 31 39 41 49 51 59 61 69 71 79 81 89 91 99 A1 A9 B1 B9 C1 C9 D1 D9 E1 E9 F1 F9 EDX EBX ESP [*] 2 3 4 5 010 011 100 101 Value of SIB Byte (in Hexadecimal) 02 03 04 05 0A 0B 0C 0D 12 13 14 15 1A 1B 1C 1D 22 23 24 25 2A 2B 2C 2D 32 33 34 35 3A 3B 3C 3D 42 43 44 45 4A 4B 4C 4D 52 53 54 55 5A 5B 5C 5D 62 63 64 65 6A 6B 6C 6D 72 73 74 75 7A 7B 7C 7D 82 83 84 85 8A 8B 8C 8D 92 93 94 95 9A 9B 9C 9D A2 A3 A4 A5 AA AB AC AD B2 B3 B4 B5 BA BB BC BD C2 C3 C4 C5 CA CB CC CD D2 D3 D4 D5 DA DB DC DD E2 E3 E4 E5 EA EB EC ED F2 F3 F4 F5 FA FB FC FD ESI 6 110 06 0E 16 1E 26 2E 36 3E 46 4E 56 5E 66 6E 76 7E 86 8E 96 9E A6 AE B6 BE C6 CE D6 DE E6 EE F6 FE EDI 7 111 07 0F 17 1F 27 2F 37 3F 47 4F 57 5F 67 6F 77 7F 87 8F 97 9F A7 AF B7 BF C7 CF D7 DF E7 EF F7 FF
01
10
11
Notes:
1. The [*] nomenclature means a disp32 with no base if MOD is 00, [EBP] otherwise. This provides the following address modes: disp32[index] (MOD = 00). disp8[EBP][index] (MOD = 01). disp32[EBP][index] (MOD = 10).
ASCII Character Chart (rows 4-5 map to rows 0-1 using Ctrl + [letter/symbol]); read row then column:
0 1 2 3 4 5 6 7 0 NUL DLE SPC 0 @ P ` P 1 SOH DC1 ! 1 A Q A Q 2 STX DC2 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y i y A LF SUB * : J Z j z B VT ESC , ; K [ k { C FF FS + < L \ l | D CR GS = M ] m } E SO RS . > N ^ n ~ F SI US / ? O _ o DEL
Physical Communications Controls: NUL: Null; CAN: Cancel line; EM: End of Medium; SUB: Substitute; DEL: Delete Logical Communications Controls: SOH: Start of Header; STX: Start Text; ETX: End Text; EOT: End of Transmission; ENQ: Enquiry ACK: Acknowledgement; DLE: Data Link Escape; NAK: Negative Acknowledgement; SYN: Synchronous Idle; ETB: End Transmission Block Physical Device Controls: BEL: Bell; DC1, DC2, DC3, DC4: No ASCII meaning, used for XON/XOFF handshake schemes. Physical Device Format Affecters: BS: Backspace; HT: Horizontal Tab; LF: Line Feed; VT: Vertical Tab; FF: Form Feed; CR: Carriage Controls for Code Extensions: SI: Shift In; SO: Shift Out; ESC: Escape Information Separators: FS: File Separator; GS: Group Separator; RS: Record Separator; US: Unit Separator
Note:
* In real-address mode, vector 0D is the segment-overrun exception.
SIMD & x87 FPU Floating-Point Exceptions (#IS & #IA are invalids for x87):
Mnemonic Name #I Floating-point invalid operation: Source Invalid arithmetic operation or source operand
#IS #IA #Z #D #O #U #P
Stack overflow or underflow Invalid arithmetic operation Floating-point divide-by-zero Floating-point denormal operand Floating-point numeric overflow Floating-point numeric underflow Floating-point inexact result
x87 FPU stack overflow or underflow Invalid FPU arithmetic operation Divide-by-zero Source operand that is a denormal number Overflow in result Underflow in result Inexact result (precision)
Sreg2 Field* 00 01 10 11
Note:
* Do not use reserved encodings.
Note:
* Do not use reserved encodings.
Note:
* Add to the instructions opcode.
General-Purpose Registers:
31 16 15 AH BH CH DH BP SI DI SP AL BL CL DL 0 16-bit AX BX CX DX 32-bit EAX EBX ECX EDX EBP ESI EDI ESP
Instruction Pointer:
31 16 15 0 16-bit 32-bit IP EIP
Boolean Logic Truth Tables (AND NOT: row 1st operand, column 2nd operand):
AND 0 0 0 1 0 1 0 1 OR 0 0 0 1 1 1 1 1 XOR 0 1 0 0 1 1 1 0 NOT 0 1 1 0 AND NOT 0 1 0 0 0 1 1 0
8 7
Stack Structure:
Stack Segment Bottom of Stack (Initial ESP Value) Frame Boundary Local Variables for Calling Procedure Parameters Passed to Called Procedure Frame Boundary Return Instruction Pointer (EBP points to this) ESP points to TOS (SS Offset of Base) Top of Stack Push TOS Lower Pop TOS Higher mem, i reg1, reg2 mem, reg reg, i mem, i
0011 0111 1101 0101 : 0000 1010 1101 0100 : 0000 1010 0011 1111 reg1 to reg2 0001 000w : 11 reg1 reg2
BTS
0000 1111 : 1011 1010 : mod 110 r/m : ib 0000 1111 : 1011 0011 : 11 reg2 reg1 0000 1111 : 1011 0011 : mod reg r/m 0000 1111 : 1011 1010 : 11 101 reg : ib 0000 1111 : 1011 1010 : mod 101 r/m : ib
reg2 to reg1 0001 001w : 11 reg1 reg2 mem to reg 0001 001w : mod reg r/m reg to mem 0001 000w : mod reg r/m i to reg 1000 00sw : 11 010 reg : i i to AL/AX/EAX 0001 010w : i i to mem 1000 00sw : mod 010 r/m : i ADD reg1 to reg2 0000 000w : 11 reg1 reg2 reg2 to reg1 0000 001w : 11 reg1 reg2 mem to reg 0000 001w : mod reg r/m reg to mem 0000 000w : mod reg r/m i to reg 1000 00sw : 11 000 reg : i i to AL/AX/EAX 0000 010w : i i to mem 1000 00sw : mod 000 r/m : i AND reg1 to reg2 0010 000w : 11 reg1 reg2 reg2 to reg1 0010 001w : 11 reg1 reg2 mem to reg 0010 001w : mod reg r/m reg to mem 0010 000w : mod reg r/m i to reg 1000 00sw : 11 000 reg : i i to AL/AX/EAX 0010 010w : i i to mem 1000 00sw : mod 100 r/m : i ARPL from reg 0110 0011 : 11 reg1 reg2 from mem 0110 0011 : mod reg r/m BOUND 0110 0010 : mod reg r/m BSF reg1, reg2 0000 1111 : 1011 1100 : 11 reg2 reg1 mem, reg 0000 1111 : 1011 1100 : mod reg r/m BSR reg1, reg2 0000 1111 : 1011 1101 : 11 reg2 reg1 mem, reg 0000 1111 : 1011 1101 : mod reg r/m BSWAP 0000 1111 : 1100 1 reg BT reg, i 0000 1111 : 1011 1010 : 11 100 reg : ib mem, i 0000 1111 : 1011 1010 : mod 100 r/m : ib reg1, reg2 0000 1111 : 1010 0011 : 11 reg2 reg1 mem, reg 0000 1111 : 1010 0011 : mod reg r/m BTC reg, i 0000 1111 : 1011 1010 : 11 111 reg : ib mem, i 0000 1111 : 1011 1010 : mod 111 r/m : ib reg1, reg2 0000 1111 : 1011 1011 : 11 reg2 reg1 mem, reg 0000 1111 : 1011 1011 : mod reg r/m BTR reg, i 0000 1111 : 1011 1010 : 11 110 reg : ib IDIV AL/AX/EAX by reg 1111 011w : 11 111 reg AL/AX/EAX by mem 1111 011w : mod 111 r/m IMUL AL/AX/EAX with reg 1111 011w : 11 101 reg AL/AX/EAX with mem 1111 011w : mod 101 reg reg1 with reg2 0000 1111 : 1010 1111 : 11 : reg1 reg2 reg with mem 0000 1111 : 1010 1111 : mod reg r/m reg1 with i to reg2 0110 10s1 : 11 reg1 reg2 : i mem with i to reg 0110 10s1 : mod reg r/m : i IN fixed port 1110 010w : port number variable port 1110 110w INC reg 1111 111w : 11 000 reg reg (alt. encoding) 0100 0 reg mem 1111 111w : mod 000 r/m INS 0110 110w INT ib 1100 1101 : ib INT 3 1100 1100 INTO 1100 1110 INVD 0000 1111 : 0000 1000 INVLPG 0000 1111 : 0000 0001 : mod 111 r/m IRET/IRETD 1100 1111 Jcc 8-bit displacement 0111 tttn : 8 bit disp full displacement 0000 1111 : 1000 tttn : full disp JCXZ/JECXZ 1110 0011 : 8-bit disp JMP short 1110 1011 : 8-bit disp direct 1110 1001 : full disp
reg1, reg2 0000 1111 : 1010 1011 : 11 reg2 reg1 mem, reg 0000 1111 : 1010 1011 : mod reg r/m CALL direct 1110 1000 : full displacement reg indirect 1111 1111 : 11 010 reg mem indirect 1111 1111 : mod 010 r/m CBW 1001 1000 CDQ 1001 1001 CLC 1111 1000 CLD 1111 1100 CLI 1111 1010 CLTS 0000 1111 : 0000 0110 CMC 1111 0101 CMOVcc reg2 to reg1 0000 1111 : 0100 tttn : 11 reg1 reg2 mem to reg 0000 1111 : 0100 tttn : mod mem r/m CMP reg1 with reg2 0011 100w : 11 reg1 reg2 reg2 with reg1 0011 101w : 11 reg1 reg2 mem with reg 0011 100w : mod reg r/m reg with mem 0011 101w : mod reg r/m i with reg 1000 00sw : 11 111 reg : i i with AL/AX/EAX 0011 110w : i i with mem 1000 00sw : mod 111 r/m CMPS/CMPSB/CMPSW/CMPSD 1010 011w CMPXCHG reg1, reg2 0000 1111 : 1011 000w : 11 reg2 reg1 mem, reg 0000 1111 : 1011 000w : mod reg r/m CMPXCHG8B mem, reg 0000 1111 : 1100 0111 : mod reg r/m CPUID 0000 1111 : 1010 0010 CWD 1001 1001 CWDE 1001 1000 DAA 0010 0111 DAS 0010 1111 DEC reg 1111 111w : 11 001 reg reg (alt. encoding) 0100 1 reg mem 1111 111w : mod 001 r/m DIV AL/AX/EAX by reg 1111 011w : 11 110 reg AL/AX/EAX by mem 1111 011w : mod 110 r/m ENTER 1100 1000 : 16-bit disp : 8-bit level HLT 1111 0100 AL/AX/EAX to mem 1010 001w : full disp MOV reg to CR0 0000 1111 : 0010 0010 : 11 000 reg reg to CR2 0000 1111 : 0010 0010 : 11 010 reg reg to CR3 0000 1111 : 0010 0010 : 11 011 reg reg to CR4 0000 1111 : 0010 0010 : 11 100 reg CR0-CR4 to reg 0000 1111 : 0010 0000 : 11 eee reg MOV reg to DR0-DR3 0000 1111 : 0010 0011 : 11 eee reg reg to DR4-DR5 0000 1111 : 0010 0011 : 11 eee reg reg to DR6-DR7 0000 1111 : 0010 0011 : 11 eee reg DR6-DR7 to reg 0000 1111 : 0010 0001 : 11 eee reg DR4-DR5 to reg 0000 1111 : 0010 0001 : 11 eee reg DR0-DR3 to reg 0000 1111 : 0010 0001 : 11 eee reg MOV reg to sreg 1000 1110 : 11 sreg3 reg reg to SS 1000 1110 : 11 sreg3 reg mem to sreg 1000 1110 : mod sreg3 r/m mem to SS 1000 1110 : mod sreg3 r/m sreg to reg 1000 1100 : 11 sreg3 reg sreg to mem 1000 1100 : mod sreg3 r/m MOVS/MOVSB/MOVSW/MOVSD 1010 010w MOVSX reg2 to reg1 0000 1111 : 1011 111w : 11 reg1 reg2 mem to reg 0000 1111 : 1011 111w : mod reg r/m MOVZX reg2 to reg1 0000 1111 : 1011 011w : 11 reg1 reg2 mem to reg 0000 1111 : 1011 011w : mod reg r/m MUL AL/AX/EAX with reg 1111 011w : 11 100 reg AL/AX/EAX with mem 1111 011w : mod 100 reg
reg indirect 1111 1111 : 11 100 reg mem indirect 1111 1111 : mod 100 r/m JMP direct intersegment 1110 1010 : unS full offset, selector indirect intersegment 1111 1111 : mod 101 r/m LAHF 1001 1111 LAR from reg 0000 1111 : 0000 0010 : 11 reg1 reg2 from mem 0000 1111 : 0000 0010 : mod reg r/m LDS 1100 0101 : mod reg r/m LEA 1000 1101 : mod reg r/m LEAVE 1100 1001 LES 1100 0100 : mod reg r/m LFS 0000 1111 : 1011 0100 : mod reg r/m LGDT 0000 1111 : 0000 0001 : mod 010 r/m LGS 0000 1111 : 1011 0101 : mod reg r/m LIDT 0000 1111 : 0000 0001 : mod 011 r/m LLDT LDTR from reg 0000 1111 : 0000 0000 : 11 010 reg LDTR from mem 0000 1111 : 0000 0000 : mod 010 r/m LMSW from reg 0000 1111 : 0000 0001 : 11 110 reg from mem 0000 1111 : 0000 0001 : mod 110 r/m LOCK 1111 0000 LODS/LODSB/LODSW/LODSD 1010 110w LOOP 1110 0010 : 8-bit disp LOOPZ/LOOPE 1110 0001 : 8-bit disp LOOPNZ/LOOPNE 1110 0000 : 8-bit disp LSL from reg 0000 1111 : 0000 0011 : 11 reg1 reg2 from mem 0000 1111 : 0000 0011 : mod reg r/m LSS 0000 1111 : 1011 0010 : mod reg r/m LTR from reg 0000 1111 : 0000 0000 : 11 011 reg from mem 0000 1111 : 0000 0000 : mod 011 r/m MOV reg1 to reg2 1000 100w : 11 reg1 reg2 reg2 to reg1 1000 101w : 11 reg1 reg2 mem to reg 1000 101w : mod reg r/m reg to mem 1000 100w : mod reg r/m i to reg 1100 011w : 11 000 reg : i i to reg (alt. encoding) 1011 w reg : i i to mem 1100 011w : mod 000 r/m : i mem to AL/AX/EAX 1010 000w : full disp RCR reg by 1 1101 000w : 11 011 reg mem by 1 1101 000w : mod 011 r/m reg by CL 1101 001w : 11 011 reg mem by CL 1101 001w : mod 011 r/m reg by i 1100 000w : 11 011 reg : ib mem by i 1100 000w : mod 011 r/m : ib RDMSR 000 1111 : 0011 0010 RDPMC 0000 1111 : 0011 0011 RDTSC 0000 1111 : 0011 0001 REP INS 1111 0011 : 0110 110w REP LODS 1111 0011 : 1010 110w REP MOVS 1111 0011 : 1010 010w REP OUTS 1111 0011 : 0110 111w REP STOS 1111 0011 : 1010 101w REP CMPS 1111 0011 : 1010 011w REPE SCAS 1111 0011 : 1010 111w REPNE CMPS 1111 0010 : 1010 011w REPNE SCAS 1111 0010 : 1010 111w RET (same) no argument 1100 0011 adding i to SP 1100 0010 : 16-bit disp RET (other) intersegment 1100 1011 adding i to SP 1100 1010 : 16-bit disp ROL reg by 1 1101 000w : 11 000 reg mem by 1 1101 000w : mod 000 r/m reg by CL 1101 001w : 11 000 reg
NEG
1111 011w : 11 011 reg 1111 011w : mod 011 r/m NOP 1001 0000 NOT reg 1111 011w : 11 010 reg mem 1111 011w : mod 010 r/m OR reg1 to reg2 0000 100w : 11 reg1 reg2 reg2 to reg1 0000 101w : 11 reg1 reg2 mem to reg 0000 101w : mod reg r/m reg to mem 0000 100w : mod reg r/m i to reg 1000 00sw : 11 001 reg : i i to AL/AX/EAX 0000 110w : i i to mem 1000 00sw : mod 001 r/m : i OUT fixed port 1110 011w : port number variable port 1110 111w OUTS 0110 111w POP reg 1000 1111 : 11 000 reg reg (alt. encoding) 0101 1 reg mem 1000 1111 : mod 000 r/m POP sreg CS, DS, or ES 000 sreg2 111 sreg SS 000 sreg2 111 sreg FS or GS 0000 1111 : 10 sreg3 001 POPA/POPAD 0110 0001 POPF/POPFD 1001 1101 PUSH reg 1111 1111 : 11 110 reg reg (alt. encoding) 0101 0 reg mem 1111 1111 : mod 110 r/m i 0110 10s0 : i PUSH sreg CS/DS/ES/SS 000 sreg2 110 sreg FS or GS 0000 1111 : 10 sreg3 000 PUSHA/PUSHAD 0110 0000 PUSHF/PUSHFD 1001 1100 RCL reg by 1 1101 000w : 11 010 reg mem by 1 1101 000w : mod 010 r/m reg by CL 1101 001w : 11 010 reg mem by CL 1101 001w : mod 010 r/m reg by i 1100 000w : 11 010 reg : ib mem by i 1100 000w : mod 010 r/m :ib reg by CL 0000 1111 : 1010 0101 : 11 reg2 reg1 mem by CL 0000 1111 : 1010 0101 : mod reg r/m SHR reg by 1 1101 000w : 11 101 reg mem by 1 1101 000w : mod 101 r/m reg by CL 1101 001w : 11 101 reg mem by CL 1101 001w : mod 101 r/m reg by i 1100 000w : 11 101 reg :i8 mem by i 1100 000w : mod 101 r/m :i8 SHRD reg by i 0000 1111 : 1010 1100 : 11 reg2 reg1 : ib mem by i 0000 1111 : 1010 1100 : mod reg r/m : ib reg by CL 0000 1111 : 1010 1101 : 11 reg2 reg1 mem by CL 0000 1111 : 1010 1101 : mod reg r/m SIDT 0000 1111 : 0000 0001 : mod 001 r/m SLDT to reg 0000 1111 : 0000 0000 : 11 000 reg to mem 0000 1111 : 0000 0000 : mod 000 r/m SMSW to reg 0000 1111 : 0000 0001 : 11 100 reg to mem 0000 1111 : 0000 0001 : mod 100 r/m STC 1111 1001 STD 1111 1101 STI 1111 1011 STOS/STOSB/STOSW/STOSD 1010 101w STR to reg 0000 1111 : 0000 0000 : 11 001 reg to mem 0000 1111 : 0000 0000 : mod 001 r/m SUB reg1 to reg2 0010 100w : 11 reg1 reg2 reg2 to reg1 0010 101w : 11 reg1 reg2
reg mem
1101 001w : mod 000 r/m 1100 000w : 11 000 reg : ib 1100 000w : mod 000 r/m : ib ROR 1101 000w : 11 001 reg 1101 000w : mod 001 r/m 1101 001w : 11 001 reg 1101 001w : mod 001 r/m 1100 000w : 11 001 reg : ib 1100 000w : mod 001 r/m : ib RSM 0000 1111 : 1010 1010 SAHF 1001 1110 SAL same instruction as SHL SAR reg by 1 1101 000w : 11 111 reg mem by 1 1101 000w : mod 111 r/m reg by CL 1101 001w : 11 111 reg mem by CL 1101 001w : mod 111 r/m reg by i 1100 000w : 11 111 reg : ib mem by i 1100 000w : mod 111 r/m : ib SBB reg1 to reg2 0001 100w : 11 reg1 reg2 reg2 to reg1 0001 101w : 11 reg1 reg2 mem to reg 0001 101w : mod reg r/m reg to mem 0001 100w : mod reg r/m i to reg 1000 00sw : 11 011 reg : i i to AL/AX/EAX 0001 110w : i i to mem 1000 00sw : mod 011 r/m : i SCAS/SCASB/SCASW/SCASD 1101 111w SETcc reg 0000 1111 : 1001 tttn : 11 000 reg mem 0000 1111 : 1001 tttn : mod 000 r/m SGDT 0000 1111 : 0000 0001 : mod 000 r/m SHL reg by 1 1101 000w : 11 100 reg mem by 1 1101 000w : mod 100 r/m reg by CL 1101 001w : 11 100 reg mem by CL 1101 001w : mod 100 r/m reg by i 1100 000w : 11 100 reg : ib mem by i 1100 000w : mod 100 r/m : ib SHLD reg by i 0000 1111 : 1010 0100 : 11 reg2 reg1 : ib mem by i 0000 1111 : 1010 0100 : mod reg r/m : ib FS segment override 0110 0100 GS segment override 0110 0101 SS segment override 0011 0110 EMMS 0000 1111 : 0111 0111 MOVD reg to mm 0000 1111 : 0110 1110 : 11 mm reg mm to reg 0000 1111 : 0111 1110 : 11 mm reg mem to mm 0000 1111 : 0110 1110 : mod mm r/m mm to mem 0000 1111 : 0111 1110 : mod mm r/m MOVQ mm2 to mm1 0000 1111 : 0110 1111 : 11 mm1 mm2 mm1 to mm2 0000 1111 : 0111 1111 : 11 mm1 mm2 mem to mm 0000 1111 : 0110 1111 : mod mm r/m mm to mem 0000 1111 : 0111 1111 : mod mm r/m PACKSSDW mm2 to mm1 0000 1111 : 0110 1011 : 11 mm1 mm2 mem to mm 0000 1111 : 0110 1011 : mod mm r/m PACKSSWB mm2 to mm1 0000 1111 : 0110 0011 : 11 mm1 mm2 mem to mm 0000 1111 : 0110 0011 : mod mm r/m PACKUSWB mm2 to mm1 0000 1111 : 0110 0111 : 11 mm1 mm2 mem to mm 0000 1111 : 0110 0111 : mod mm r/m PADD mm2 to mm1 0000 1111 : 1111 11gg : 11 mm1 mm2 mem to mm 0000 1111 : 1111 11gg : mod mm r/m PADDS mm2 to mm1 0000 1111 : 1110 11gg : 11 mm1 mm2 mem to mm 0000 1111 : 1110 11gg : mod mm r/m PADDUS mm2 to mm1 0000 1111 : 1101 11gg : 11 mm1 mm2 mem to mm 0000 1111 : 1101 11gg : mod mm r/m PAND mm2 to mm1 0000 1111 : 1101 1011 : 11 mm1 mm2
mem to reg 0010 101w : mod reg r/m reg to mem 0010 100w : mod reg r/m i to reg 1000 00sw : 11 101 reg : i i to AL/AX/EAX 0010 110w : i i to mem 1000 00sw : mod 101 r/m : i TEST reg1 and reg2 1000 010w : 11 reg1 reg2 mem and reg 1000 010w : mod reg r/m i and reg 1111 011w : 11 000 reg : i i and AL/AX/EAX 1010 100w : i i and mem 1111 011w : mod 000 r/m : i UD2 0000 1111 : 0000 1011 VERR reg 0000 1111 : 0000 0000 : 11 100 reg mem 0000 1111 : 0000 0000 : mod 100 r/m VERW reg 0000 1111 : 0000 0000 : 11 101 reg mem 0000 1111 : 0000 0000 : mod 101 r/m WAIT 1001 1011 WBINVD 0000 1111 : 0000 1001 WRMSR 0000 1111 : 0011 0000 XADD reg1, reg2 0000 1111 : 1100 000w : 11 reg2 reg1 mem, reg 0000 1111 : 1100 000w : mod reg r/m XCHG reg1 with reg2 1000 011w : 11 reg1 reg2 AL/AX/EAX with reg 1001 0 reg mem with reg 1000 011w : mod reg r/m XLAT/XLATB 1101 0111 XOR reg1 to reg2 0011 000w : 11 reg1 reg2 reg2 to reg1 0011 001w : 11 reg1 reg2 mem to reg 0011 001w : mod reg r/m reg to mem 0011 000w : mod reg r/m i to reg 1000 00sw : 11 110 reg : i i to AL/AX/EAX 0011 010w : i i to mem 1000 00sw : mod 110 r/m : i Prefix Bytes address size 0110 0111 LOCK 1111 0000 operand size 0110 0110 CS segment override 0010 1110 DS segment override 0011 1110 ES segment override 0010 0110 FXSAVE 0000 1111 : 1010 1110 : 00 m512 SYSENTER 0000 1111 : 0101 1111 : 11 SYSEXIT 0000 1111 : 0101 1111 : 11 ADDPS xm to xm 0000 1111 : 0101 1000 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 1000 : mod xm r/m
ADDSS xm to xm 1111 0011 : 0000 1111 : 0101 1000 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 1000 : mod xm r/m
ANDNPS
xm to xm 0000 1111 : 0101 0101 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 0101 : mod xm r/m ANDPS xm to xm 0000 1111 : 0101 0100 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 0100 : mod xm r/m CMPPS xm to xm, i8 0000 1111 : 1100 0010 : 11 xm1 xm2 : i8 mem to xm, i8 0000 1111 : 1100 0010 : mod xm r/m : i8 CMPSS xm to xm, i8 1111 0011 : 0000 1111 : 1100 0010 : 11 xm1 xm2 : i8
mem to xm, i8 1111 0011 : 0000 1111 : 1100 0010 : mod xm r/m : i8
xm to xm 0000 1111 : 0010 1111 : 11 xm1 xm2 mem to xm 0000 1111 : 0010 1111 : mod xm r/m mm to xm 0000 1111 : 0010 1010 : 11 xm1 mm1 mem to xm 0000 1111 : 0010 1010 : mod xm r/m xm to mm 0000 1111 : 0010 1101 : 11 mm1 xm1 mem to mm 0000 1111 : 0010 1101 : mod mm r/m rd to xm1 1111 0011 : 0000 1111 : 0010 1010 : 11 xm rd mem to xm 1111 0011 : 0000 1111 : 0010 1010 : mod xm r/m xm to rd 1111 0011 : 0000 1111 : 0010 1101 : 11 rd xm mem to rd 1111 0011 : 0000 1111 : 0010 1101 : mod rd r/m
mem to mm 0000 1111 : 1101 1011 : mod mm r/m PANDN mm2 to mm1 0000 1111 : 1101 1111 : 11 mm1 mm2 mem to mm 0000 1111 : 1101 1111 : mod mm r/m PCMPEQ mm1 with mm2 0000 1111 : 0111 01gg : 11 mm1 mm2 mm with mem 0000 1111 : 0111 01gg : mod mm r/m PCMPGT mm1 with mm2 0000 1111 : 0110 01gg : 11 mm1 mm2 mm with mem 0000 1111 : 0110 01gg : mod mm r/m PMADD mm2 to mm1 0000 1111 : 1111 0101 : 11 mm1 mm2 mem to mm 0000 1111 : 1111 0101 : mod mm r/m PMULH mm2 to mm1 0000 1111 : 1110 0101 : 11 mm1 mm2 mem to mm 0000 1111 : 1110 0101 : mod mm r/m PMULL mm2 to mm1 0000 1111 : 1101 0101 : 11 mm1 mm2 mem to mm 0000 1111 : 1101 0101 : mod mm r/m POR mm2 to mm1 0000 1111 : 1110 1011 : 11 mm1 mm2 mem to mm 0000 1111 : 1110 1011 : mod mm r/m PSLL mm1 by mm2 0000 1111 : 1111 00gg : 11 mm1 mm2 mm by mem 0000 1111 : 1111 00gg : mod mm r/m mm by i 0000 1111 : 0111 00gg : 11 110 mm : i8 PSRA mm1 by mm2 0000 1111 : 1110 00gg : 11 mm1 mm2 mm by mem 0000 1111 : 1110 00gg : mod mm r/m mm by i 0000 1111 : 0111 00gg : 11 100 mm : i8 PSRL mm1 by mm2 0000 1111 : 1101 00gg : 11 mm1 mm2 mm by mem 0000 1111 : 1101 00gg : mod mm r/m mm by i 0000 1111 : 0111 00gg : 11 010 mm : i8 PSUB mm1 to mm2 0000 1111 : 1111 10gg : 11 mm1 mm2 mm to mem 0000 1111 : 1111 10gg : mod mm r/m PSUBS mm1 to mm2 0000 1111 : 1110 10gg : 11 mm1 mm2 mm to mem 0000 1111 : 1110 10gg : mod mm r/m PSUBUS mm1 to mm2 0000 1111 : 1101 10gg : 11 mm1 mm2 mm to mem 0000 1111 : 1101 10gg : mod mm r/m PUNPCKH mm2 to mm1 0000 1111 : 0110 10gg : 11 mm1 mm2 mem to mm 0000 1111 : 0110 10gg : mod mm r/m PUNPCKL mm2 to mm1 0000 1111 : 0110 00gg : 11 mm1 mm2 mem to mm 0000 1111 : 0110 00gg : mod mm r/m PXOR mm2 to mm1 0000 1111 : 1110 1111 : 11 mm1 mm2 mem to mm 0000 1111 : 1110 1111 : mod mm r/m FXRSTOR 0000 1111 : 1010 1110 : 01 m512 MULSS xm to xm 1111 0011 : 0000 1111 : 0101 1001 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 1001 : mod xm r/m ORPS xm to xm 0000 1111 : 0101 0110 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 0110 : mod xm r/m RCPPS xm to xm 0000 1111 : 0101 0011 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 0011 : mod xm r/m RCPSS xm to xm 1111 0011 : 0000 1111 : 0101 0011 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 0011 : mod xm r/m RSQRTPS xm to xm 0000 1111 : 0101 0010 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 0010 : mod xm r/m RSQRTSS xm to xm 1111 0011 : 0000 1111 : 0101 0010 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 0010 : mod xm r/m SHUFPS xm to xm, i8 0000 1111 : 1100 0110 : 11 xm1 xm2 : i8
mem to xm, i8 0000 1111 : 1100 0110 : mod xm r/m : i8
CVTTPS2PI xm to mm
mem mm
CVTTSS2SI xm to rd mem to rd
0000 1111 : 0010 1100 : 11 mm1 xm1 0000 1111 : 0010 1100 : mod mm r/m
1111 0011 : 0000 1111 : 0010 1100 : 11 rd xm1 1111 0011 : 0000 1111 : 0010 1100 : mod rd r/m
DIVPS
xm to xm 0000 1111 : 0101 1110 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 1110 : mod xm r/m DIVSS xm to xm 1111 0011 : 0000 1111 : 0101 1110 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 1110 : mod xm r/m LDMXCSR md to MXCSR 0000 1111 : 1010 1110 : 10 md MAXPS xm to xm 0000 1111 : 0101 1111 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 1111 : mod xm r/m MAXSS xm to xm 1111 0011 : 0000 1111 : 0101 1111 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 1111 : mod xm r/m MINPS xm to xm 0000 1111 : 0101 1101 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 1101 : mod xm r/m MINSS xm to xm 1111 0011 : 0000 1111 : 0101 1101 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 1101 : mod xm r/m MOVAPS xm2 to xm1 0000 1111 : 0010 1000 : 11 xm2 xm1 mem to xm1 0000 1111 : 0010 1000 : mod xm r/m xm1 to xm2 0000 1111 : 0010 1001 : 11 xm1 xm2 xm1 to mem 0000 1111 : 0010 1001 : mod xm r/m MOVHLPS xm to xm 0000 1111 : 0001 0010 : 11 xm1 xm2 MOVHPS mem to xm 0000 1111 : 0001 0110 : mod xm r/m xm to mem 0000 1111 : 0001 0111 : mod xm r/m MOVLHPS xm to xm 0000 1111 : 0001 0110 : 11 xm1 xm2 MOVLPS mem to xm 0000 1111 : 0001 0010 : mod xm r/m xm to mem 0000 1111 : 0001 0011 : mod xm r/m MOVMSKPS xm to rd 0000 1111 : 0101 0000 : 11 rd xm MOVSS xm2 to xm1 1111 0011 : 0000 1111 : 0001 0000 : 11 xm2 xm1 mem to xm1 1111 0011 : 0000 1111 : 0001 0000 : mod xm r/m xm1 to xm2 1111 0011 : 0000 1111 : 0001 0000 : 11 xm1 xm2 xm1 to mem 1111 0011 : 0000 1111 : 0001 0000 : mod xm r/m MOVUPS xm2 to xm1 0000 1111 : 0001 0000 : 11 xm2 xm1 mem to xm1 0000 1111 : 0001 0000 : mod xm r/m xm1 to xm2 0000 1111 : 0001 0001 : xm1 xm2 xm1 to mem 0000 1111 : 0001 0001 : mod xm r/m MULPS xm to xm 0000 1111 : 0101 1001 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 1001 : mod xm r/m
mem to xm
0110 0110 : 0000 1111 : 0101 1000 : mod xm r/m
ADDSD xm to xm 1111 0010 : 0000 1111 : 0101 1000 : 11 xm1 xm2 mem to xm 1111 0010 : 0000 1111 : 0101 1000 : mod xm r/m ANDNPD xm to xm 0110 0110 : 0000 1111 : 0101 0101 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0101 0101 : mod xm r/m ANDPD xm to xm 0110 0110 : 0000 1111 : 0101 0100 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0101 0100 : mod xm r/m CMPPD xm to xm, ib 0110 0110 : 0000 1111 : 1100 0010 : 11 xm1 xm2 : ib
mem to xm, ib 0110 0110 : 0000 1111 : 1100 0010 : mod xm r/m : ib
CMPSD xm to xm, ib
SQRTPS
xm to xm 0000 1111 : 0101 0001 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 0001 : mod xm r/m SQRTSS xm to xm 0101 0011 : 0000 1111 : 0101 0001 : 11 xm1 xm2 mem to xm 0101 0011 : 0000 1111 : 0101 0001 : mod xm r/m STMXCSR MXCSR to mem 0000 1111 : 1010 1110 : 11 md SUBPS xm to xm 0000 1111 : 0101 1100 : 11 xm1 xm2 mem to xm 0000 1111 : 0101 1100 : mod xm r/m SUBSS xm to xm 1111 0011 : 0000 1111 : 0101 1100 : 11 xm1 xm2 mem to xm 1111 0011 : 0000 1111 : 0101 1100 : mod xm r/m UCOMISS xm to xm 0000 1111 : 0010 1110 : 11 xm1 xm2 mem to xm 0000 1111 : 0010 1110 : mod xm r/m
mem to xm, ib 1111 0010 : 0000 1111 : 1100 0010 : mod xm r/m : ib COMISD xm to xm 0110 0110 : 0000 1111 : 0010 1111 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0010 1111 : mod xm r/m CVTPI2PD mm to xm 0110 0110 : 0000 1111 : 0010 1010 : 11 xm1 mm1 mem to mm 0110 0110 : 0000 1111 : 0010 1010 : mod xm r/m
UNPCKHPS xm to xm
mem to xm UNPCKLPS xm to xm mem to xm XORPS xm to xm mem to xm PAVGB mm to mm mem to mm PAVGW mm to mm mem to mm PEXTRW mm to rd, ib PINSRW rd to mm, ib
mw to mm, ib
0000 1111 : 0001 0101 : 11 xm1 xm2 0000 1111 : 0001 0101 mod xm r/m 0000 1111 : 0001 0100 : 11 xm1 xm2 0000 1111 : 0001 0100 : mod xm r/m 0000 1111 : 0101 0111 : 11 xm1 xm2 0000 1111 : 0101 0111 : mod xm r/m 0000 1111 : 1110 0000 : 11 mm1 mm2 0000 1111 : 1110 0000 : mod mm r/m 0000 1111 : 1110 0011 : 11 mm1 mm2 0000 1111 : 1110 0011 : mod mm r/m 0000 1111 : 1100 0101 : 11 rd mm : ib 0000 1111 : 1100 0100 : 11 mm rd : ib
0000 1111 : 1100 0100 : mod mm r/m : ib
CVTPD2PS xm to xm
0110 0110 : 0000 1111 : 0101 1010 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0101 1010 : mod xm r/m
0000 1111 : 0101 1010 : 11 xm1 xm2 0000 1111 : 0101 1010 : mod xm r/m
1111 0010 : 0000 1111 : 0101 1010 : 11 xm1 xm2 1111 0010 : 0000 1111 : 0101 1010 : mod xm r/m 1111 0011 : 0000 1111 : 0101 1010 : 11 xm1 xm2 1111 0011 : 0000 1111 : 0101 1010 : mod xm r/m 1111 0010 : 0000 1111 : 1110 0110 : 11 xm1 xm2 1111 0010 : 0000 1111 : 1110 0110 : mod xm r/m 0110 0110 : 0000 1111 : 1110 0110 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1110 0110 : mod xm r/m 1111 0011 : 0000 1111 : 1110 0110 : 11 xm1 xm2 1111 0011 : 0000 1111 : 1110 0110 : mod xm r/m 0110 0110 : 0000 1111 : 0101 1011 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0101 1011 : mod xm r/m 1111 0011 : 0000 1111 : 0101 1011 : 11 xm1 xm2 1111 0011 : 0000 1111 : 0101 1011 : mod xm r/m
xm to xm
PMAXSW mm to mm mem to mm PMAXUB mm to mm mem to mm PMINSW mm to mm mem to mm PMINUB mm to mm mem to mm PMOVMSKB mm to rd PMULHUW mm to mm mem to mm PSADBW mm to mm mem to mm PSHUFW mm to mm, ib
MASKMOVQ
0000 1111 : 1110 1110 : 11 mm1 mm2 0000 1111 : 1110 1110 : mod mm r/m 0000 1111 : 1101 1110 : 11 mm1 mm2 0000 1111 : 1101 1110 : mod mm r/m 0000 1111 : 1110 1010 : 11 mm1 mm2 0000 1111 : 1110 1010 : mod mm r/m 0000 1111 : 1101 1010 : 11 mm1 mm2 0000 1111 : 1101 1010 : mod mm r/m 0000 1111 : 1101 0111 : 11 mm rd 0000 1111 : 1110 0100 : 11 mm1 mm2 0000 1111 : 1110 0100 : mod mm r/m 0000 1111 : 1111 0110 : 11 mm1 mm2 0000 1111 : 1111 0110 : mod mm r/m
xm to xm
mem to xm CVTDQ2PS xm to xm
0000 1111 : 0111 0000 : 11 mm1 mm2 : ib mem to mm, ib 0000 1111 : 0111 0000 : mod mm r/m : ib
mm to mm 0000 1111 : 1111 0111 : 11 mm1 mm2 MOVNTPS xm to mem 0000 1111 : 0010 1011 : mod xm r/m MOVNTQ mm to mem 0000 1111 : 1110 0111 : mod mm r/m PREFETCH0 0000 1111 : 0001 1000 : 01 mem PREFETCH1 0000 1111 : 0001 1000 : 10 mem PREFETCH2 0000 1111 : 0001 1000 : 11 mem PREFETCHNTA 0000 1111 : 0001 1000 : 00 mem SFENCE 0000 1111 : 1010 1110 : 1111 1000 ADDPD xm to xm 0110 0110 : 0000 1111 : 0101 1000 : 11 xm1 xm2 xm to mem 0110 0110 : 0000 1111 : 0001 0010 : mod xm r/m MOVMSKPD xm to rd 0110 0110 : 0000 1111 : 0101 0000 : 11 rd xm MOVSD xm2 xm1 1111 0010 : 0000 1111 : 0001 0001 : 11 xm2 xm1 mem to xm1 1111 0010 : 0000 1111 : 0001 0001 : mod xm r/m xm1 to xm2 1111 0010 : 0000 1111 : 0001 0000 : 11 xm1 xm2
1111 0010 : 0000 1111 : 0001 0000 : mod xm r/m 0110 0110 : 0000 1111 : 0001 0001 : 11 xm2 xm1 mem to xm1 0110 0110 : 0000 1111 : 0001 0001 : mod xm r/m xm1 to xm2 0110 0110 : 0000 1111 : 0001 0000 : 11 xm1 xm2 xm1 to mem 0110 0110 : 0000 1111 : 0001 0000 : mod xm r/m MULPD xm to xm 0110 0110 : 0000 1111 : 0101 1001 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0101 1001 : mod xm r/m MULSD xm to xm 1111 0010 : 0000 1111 : 0101 1001 : 11 xm1 xm2 mem to xm 1111 0010 : 0000 1111 : 0101 1001 : mod xm r/m ORPD xm to xm 0110 0110 : 0000 1111 : 0101 0110 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0101 0110 : mod xm r/m SHUFPD xm to xm, ib 0110 0110 : 0000 1111 : 1100 0110 : 11 xm1 xm2 : ib mem to xm, ib 0110 0110 : 0000 1111 : 1100 0110 : mod xm r/m : ib SQRTPD xm to xm 0110 0110 : 0000 1111 : 0101 0001 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0101 0001 : mod xm r/m SQRTSD xm to xm 1111 0010 : 0000 1111 : 0101 0001 : 11 xm1 xm2 mem to xm 1111 0010 : 0000 1111 : 0101 0001 : mod xm r/m SUBPD xm to xm 0110 0110 : 0000 1111 : 0101 1100 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0101 1100 : mod xm r/m SUBSD xm to xm 1111 0010 : 0000 1111 : 0101 1100 : 11 xm1 xm2 mem to xm 1111 0010 : 0000 1111 : 0101 1100 : mod xm r/m
mem to xm DIVPD xm to xm mem to xm DIVSD xm to xm mem to xm MAXPD xm to xm mem to xm MAXSD xm to xm mem to xm MINPD xm to xm mem to xm MINSD xm to xm mem to xm MOVAPD xm2 to xm1 mem to xm1 xm1 to xm2
0000 1111 : 0101 1011 : 11 xm1 xm2 0000 1111 : 0101 1011 : mod xm r/m
xm1 to mem
0110 0110 : 0000 1111 : 0101 1110 : 11 xm1 xm2 0110 0010 : 0000 1111 : 0101 1110 : mod xm r/m 1111 0010 : 0000 1111 : 0101 1110 : 11 xm1 xm2 1111 0010 : 0000 1111 : 0101 1110 : mod xm r/m 0110 0110 : 0000 1111 : 0101 1111 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0101 1111 : mod xm r/m 1111 0010 : 0000 1111 : 0101 1111 : 11 xm1 xm2 1111 0010 : 0000 1111 : 0101 1111 : mod xm r/m 0110 0110 : 0000 1111 : 0101 1101 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0101 1101 : mod xm r/m 1111 0010 : 0000 1111 : 0101 1101 : 11 xm1 xm2 1111 0010 : 0000 1111 : 0101 1101 : mod xm r/m 0110 0110 : 0000 1111 : 0010 1001 : 11 xm2 xm1 0110 0110 : 0000 1111 : 0010 1001 : mod xm r/m 0110 0110 : 0000 1111 : 0010 1000 : 11 xm1 xm2 xm1 to mem 0110 0110 : 0000 1111 : 0010 1000 : mod xm r/m MOVHPD mem to xm 0110 0110 : 0000 1111 : 0001 0111 : mod xm r/m xm to mem 0110 0110 : 0000 1111 : 0001 0110 : mod xm r/m MOVLPD mem to xm 0110 0110 : 0000 1111 : 0001 0011 : mod xm r/m mem to xm 0110 0110 : 0000 1111 : 1110 11gg : mod xm r/m PADDUS xm2 to xm1 0110 0110 : 0000 1111 : 1101 11gg : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1101 11gg : mod xm r/m PAND xm2 to xm1 0110 0110 : 0000 1111 : 1101 1011 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1101 1011 : mod xm r/m PANDN xm2 to xm1 0110 0110 : 0000 1111 : 1101 1111 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1101 1111 : mod xm r/m PAVGB xm to xm 0110 0110 : 0000 1111 : 1110 0000 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1110 0000 : mod xm r/m PAVGW xm to xm 0110 0110 : 0000 1111 : 1110 0011 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1110 0011 : mod xm r/m PCMPEQ xm1 with xm2 0110 0110 : 0000 1111 : 0111 01gg : 11 xm1 xm2 xm with mem 0110 0110 : 0000 1111 : 0111 01gg : mod xm r/m PCMPGT xm1 with xm2 0110 0110 : 0000 1111 : 0110 01gg : 11 xm1 xm2 xm with mem 0110 0110 : 0000 1111 : 0110 01gg : mod xm r/m PEXTRW xm to rd, ib 0110 0110 : 0000 1111 : 1100 0101 : 11 rd xm : ib PINSRW rd to xm, ib 0110 0110 : 0000 1111 : 1100 0100 : 11 xm rd : ib mw to xm, ib 0110 0110 : 0000 1111 : 1100 0100 : mod xm r/m : ib PMADD xm2 to xm1 0110 0110 : 0000 1111 : 1111 0101 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1111 0101 : mod xm r/m PMAXSW xm to xm 0110 0110 : 0000 1111 : 1110 1110 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1110 1110 : mod xm r/m PMAXUB xm to xm 0110 0110 : 0000 1111 : 1101 1110 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1101 1110 : mod xm r/m
XORPD MOVD
xm to xm reg to xm xm to reg
mem to xm
mem to xm xm to mem MOVDQA xm2 to xm1 xm1 to xm2 mem to xm xm to mem MOVDQU xm2 to xm1 xm1 to xm2 mem to xm xm to mem MOVQ2DQ mm to xm MOVDQ2Q xm to mm
xm2 to xm1
mem to xm
PACKSSWB xm2 to xm1
mem to xm
PACKUSWB xm2 to xm1
PADDQ
mem to xm mm to mm 0000 1111 : 1101 0100 : 11 mm1 mm2 mem to mm 0000 1111 : 1101 0100 : mod mm r/m xm to xm 0110 0110 : 0000 1111 : 1101 0100 : 11 xm1 xm2
mem to xm
0110 0110 : 0000 1111 : 1101 0100 : mod xm r/m 0110 0110 : 0000 1111 : 1111 11gg : 11 xm1 xm2 0110 0110 : 0000 1111 : 1111 11gg : mod xm r/m 0110 0110 : 0000 1111 : 1110 11gg : 11 xm1 xm2 0110 0110 : 0000 1111 : 1110 10gg : mod xm r/m
0110 0110 : 0000 1111 : 0010 1110 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0010 1110 : mod xm r/m 0110 0110 : 0000 1111 : 0001 0101 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0001 0101 : mod xm r/m 0110 0110 : 0000 1111 : 0001 0100 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0001 0100 : mod xm r/m 0110 0110 : 0000 1111 : 0101 0111 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0101 0111 : mod xm r/m 0110 0110 : 0000 1111 : 0110 1110 : 11 xm reg 0110 0110 : 0000 1111 : 0111 1110 : 11 xm reg 0110 0110 : 0000 1111 : 0110 1110 : mod xm r/m 0110 0110 : 0000 1111 : 0111 1110 : mod xm r/m 0110 0110 : 0000 1111 : 0110 1111 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0111 1111 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0110 1111 : mod xm r/m 0110 0110 : 0000 1111 : 0111 1111 : mod xm r/m 1111 0011 : 0000 1111 : 0110 1111 : 11 xm1 xm2 1111 0011 : 0000 1111 : 0111 1111 : 11 xm1 xm2 1111 0011 : 0000 1111 : 0110 1111 : mod xm r/m 1111 0011 : 0000 1111 : 0111 1111 : mod xm r/m 1111 0011 : 0000 1111 : 1101 0110 : 11 mm1 mm2 1111 0010 : 0000 1111 : 1101 0110 : 11 mm1 mm2 0110 0110 : 0000 1111 : 0111 1110 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1101 0110 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0111 1110 : mod xm r/m 0110 0110 : 0000 1111 : 1101 0110 : mod xm r/m 0110 0110 : 0000 1111 : 0110 1011 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0110 1011 : mod xm r/m 0110 0110 : 0000 1111 : 0110 0011 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0110 0011 : mod xm r/m 0110 0110 : 0000 1111 : 0110 0111 : 11 xm1 xm2 0110 0110 : 0000 1111 : 0110 0111 : mod xm r/m
PMULH PMULL
xm2 to xm1
mem to xm
xm2 to xm1
0110 0110 : 0000 1111 : 1110 1010 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1110 1010 : mod xm r/m 0110 0110 : 0000 1111 : 1101 1010 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1101 1010 : mod xm r/m 0110 0110 : 0000 1111 : 1101 0111 : 11 xm rd 0110 0110 : 0000 1111 : 1110 0101 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1110 0101 : mod xm r/m 0110 0110 : 0000 1111 : 1101 0101 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1101 0101 : mod xm r/m
0000 1111 : 1111 0100 : 11 mm1 mm2 0000 1111 : 1111 0100 : mod mm r/m
0110 0110 : 0000 1111 : 1111 0100 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1111 0100 : mod xm r/m POR xm2 to xm1 0110 0110 : 0000 1111 : 1110 1011 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1110 1011 : mod xm r/m PSADBW xm to xm 0110 0110 : 0000 1111 : 1111 0110 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1111 0110 : mod xm r/m PSHUFLW xm to xm, ib 1111 0010 : 0000 1111 : 0111 0000 : 11 xm1 xm2 : ib mem to xm, ib 1111 0010 : 0000 1111 : 0111 0000 : 11 mod xm r/m : ib PSHUFHW xm to xm, ib 1111 0011 : 0000 1111 : 0111 0000 : 11 xm1 xm2 : ib mem to xm, ib 1111 0011 : 0000 1111 : 0111 0000 : 11 mod xm r/m : ib PSHUFD xm to xm, ib 0110 0110 : 0000 1111 : 0111 0000 : 11 xm1 xm2 : ib mem to xm, ib 0110 0110 : 0000 1111 : 0111 0000 : 11 mod xm r/m : ib PSLLDQ xm, ib 0110 0110 : 0000 1111 : 0111 0011 : 11 111 xm : ib PSLL xm1 by xm2 0110 0110 : 0000 1111 : 1111 00gg : 11 xm1 xm2 xm by mem 0110 0110 : 0000 1111 : 1111 00gg : mod xm r/m xm by i 0110 0110 : 0000 1111 : 0111 00gg : 11 110 xm : ib PSRA xm1 by xm2 0110 0110 : 0000 1111 : 1110 00gg : 11 xm1 xm2 xm by mem 0110 0110 : 0000 1111 : 1110 00gg : mod xm r/m xm by i 0110 0110 : 0000 1111 : 0111 00gg : 11 100 xm : ib PSRLDQ xm, ib 0110 0110 : 0000 1111 : 0111 0011 : 11 011 xm : ib PSRL xm1 by xm2 0110 0110 : 0000 1111 : 1101 00gg : 11 xm1 xm2 xm by mem 0110 0110 : 0000 1111 : 1101 00gg : mod xm r/m xm by i 0110 0110 : 0000 1111 : 0111 00gg : 11 010 xm : ib
xm to xm
mem to xm
PSUBQ mm to mm
mem to mm xm to xm mem to xm
0000 1111 : 1111 1011 : 11 mm1 mm2 0000 1111 : 1111 1011 : mod mm r/m
0110 0110 : 0000 1111 : 1111 1011 : 11 xm1 xm2 0110 0110 : 0000 1111 : 1111 1011 : mod xm r/m 0110 0110 : 0000 1111 : 1111 10gg : 11 xm1 xm2 0110 0110 : 0000 1111 : 1111 10gg : mod xm r/m 0110 0110 : 0000 1111 : 1110 10gg : 11 xm1 xm2
PADD
xm2 to xm1 mem to xm PADDS xm2 to xm1 xm to mem PSUBUS xm1 to xm2 xm to mem PUNPCKH xm to xm
PSUB
0000 1111 : 1101 10gg : 11 xm1 xm2 0000 1111 : 1101 10gg : mod xm r/m
0110 0110 : 0000 1111 : 0110 10gg : 11 xm1 xm2 0110 0110 : 0000 1111 : 0110 10gg : mod xm r/m PUNPCKHQDQ xm to xm 0110 0110 : 0000 1111 : 0110 1101 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0110 1101 : mod xm r/m PUNPCKL xm to xm 0110 0110 : 0000 1111 : 0110 00gg : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0110 00gg : mod xm r/m PUNPCKLQDQ xm to xm 0110 0110 : 0000 1111 : 0110 1100 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 0110 1100 : mod xm r/m PXOR xm2 to xm1 0110 0110 : 0000 1111 : 1110 1111 : 11 xm1 xm2 mem to xm 0110 0110 : 0000 1111 : 1110 1111 : mod xm r/m MASKMOVDQU xm to xm 0110 0110 : 0000 1111 : 1111 0111 : 11 xm1 xm2
mem to xm
CLFLUSH mem 0000 1111 : 1010 1110 : mod r/m MOVNTPD xm to mem 0110 0110 : 0000 1111 : 0010 1011 : mod xm r/m MOVNTDQ xm to mem 0110 0110 : 0000 1111 : 1110 0111 : mod xm r/m MOVNTI reg to mem 0000 1111 : 1100 0011 : mod reg r/m PAUSE 1111 0011 : 1001 0000 LFENCE 0000 1111 : 1010 1110 : 11 101 000 MFENCE 0000 1111 : 1010 1110 : 11 110 000 F2XM1 11011 001 : 1111 0000 FABS 11011 001 : 1110 0001 FADD ST(0) ST(0) + 32-bit mem 11011 000 : mod 000 r/m ST(0) ST(0) + 64-bit mem 11011 100 : mod 000 r/m
xm1 to xm2 xm to mem PSUBS xm1 to xm2 FICOMP 16-bit mem 32-bit mem FIDIV ST(0) ST(0) / 16-bit mem ST(0) ST(0) / 32-bit mem FIDIVR ST(0) 16-bit mem / ST(0) ST(0) 32-bit mem / ST(0) FILD 16-bit mem 32-bit mem 64-bit mem FIMUL ST(0) ST(0) * 16-bit mem ST(0) ST(0) * 32-bit mem FINCSTP FINIT FIST 16-bit mem 32-bit mem FISTP 16-bit mem 32-bit mem 64-bit mem FISUB ST(0) ST(0) - 16-bit mem ST(0) ST(0) - 32-bit mem FISUBR ST(0) 16-bit mem - ST(0) ST(0) 32-bit mem - ST(0) FLD 32-bit mem
11011 110 : mod 011 r/m 11011 010 : mod 011 r/m 11011 110 : mod 110 r/m 11011 010 : mod 110 r/m 11011 110 : mod 111 r/m 11011 010 : mod 111 r/m 11011 111 : mod 000 r/m 11011 011 : mod 000 r/m 11011 111 : mod 101 r/m 11011 110 : mod 001 r/m 11011 010 : mod 001 r/m 11011 001 : 1111 0111 11011 011 : 1110 0011 11011 111 : mod 010 r/m 11011 011 : mod 010 r/m 11011 111 : mod 011 r/m 11011 011 : mod 011 r/m 11011 111 : mod 111 r/m 11011 110 : mod 100 r/m 11011 010 : mod 100 r/m 11011 110 : mod 101 r/m 11011 010 : mod 101 r/m 11011 001 : mod 000 r/m
ST(d) ST(0) + ST(i) 11011 d00 : 11 000 ST(i) FADDP ST(0) ST(0) + ST(i) 11011 110 : 11 000 ST(i) FBLD 11011 111 : mod 100 r/m FBSTP 11011 111 : mod 110 r/m FCHS 11011 001 1110 0000 FCLEX 11011 011 : 1110 0010 FCMOVcc Below (B) 11011 010 : 11 000 ST(i) Equal (E) 11011 010 : 11 001 ST(i) Below or Equal (BE) 11011 010 : 11 010 ST(i) Unordered (U) 11011 010 : 11 011 ST(i) Not Below (NB) 11011 011 : 11 000 ST(i) Not Equal (NE) 11011 011 : 11 001 ST(i) Not Below or Equal (NBE) 11011 011 : 11 010 ST(i) Not Unordered (NU) 11011 011 : 11 011 ST(i) FCOM 32-bit mem 11011 000 : mod 010 r/m 64-bit mem 11011 100 : mod 010 r/m ST(i) 11011 000 : 11 010 ST(i) FCOMP 32-bit mem 11011 000 : mod 011 r/m 64-bit mem 11011 100 : mod 011 r/m ST(i) 11011 000 : 11 011 ST(i) FCOMPP 11011 110 : 11 011 001 FCOMI 11011 011 : 11 110 ST(i) FCOMIP 11011 111 : 11 110 ST(i) FCOS 11011 001 : 1111 1111 FDECSTP 11011 001 : 1111 0110 FDIV ST(0) ST(0) / 16-bit mem 11011 000 : mod 110 r/m ST(0) ST(0) / 64-bit mem 11011 100 : mod 110 r/m ST(d) ST(0) / ST(i) 11011 d00 : 1111 R ST(i) FDIVP ST(0) ST(0) / ST(i) 11011 110 : 1111 1 ST(i) FDIVR ST(0) 32-bit mem / ST(0) 11011 000 : mod 111 r/m ST(0) 64-bit mem / ST(0) 11011 100 : mod 111 r/m ST(d) ST(i) / ST(0) 11011 d00 : 1111 R ST(i) FDIVRP ST(0) ST(i) / ST(0) 11011 110 : 1111 0 ST(i) FFREE 11011 101 : 1100 0 ST(i) FIADD ST(0) ST(0) / 16-bit mem 11011 110 : mod 000 r/m ST(0) ST(0) / 32-bit mem 11011 010 : mod 000 r/m FICOM 16-bit mem 11011 110 : mod 010 r/m 32-bit mem 11011 010 : mod 010 r/m FSUB ST(0) ST(0) 32-bit mem 11011 000 : mod 100 r/m ST(0) ST(0) 64-bit mem 11011 100 : mod 100 r/m ST(d) ST(0) ST(i) 11011 d00 : 1110 R ST(i) FSUBP ST(0) ST(0) ST(i) 11011 110 : 1110 1 ST(i) FSUBR ST(0) 32-bit mem - ST(0) 11011 000 : mod 101 r/m ST(0) 64-bit mem - ST(0) 11011 100 : mod 101 r/m ST(d) ST(i) ST(0) 11011 d00 : 1110 R ST(i) FSUBRP ST(i) ST(i) ST(0) 11011 110 : 1110 0 ST(i) FTST 11011 001 : 1110 0100 FUCOM 11011 101 : 1110 0 ST(i) FUCOMP 11011 101 : 1110 1 ST(i) FUCOMPP 11011 010 : 1110 1001 FUCOMI 11011 011 : 11 101 ST(i) FUCOMIP 11011 111 : 11 101 ST(i) FXAM 11011 001 : 1110 0101 FXCH 11011 001 : 1100 1 ST(i) FXTRACT 11011 001 : 1111 0100 FYL2X 11011 001 : 1111 0001 FYL2XP1 11011 001 : 1111 1001 FWAIT 1001 1011 PAVGUSB mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1011 1111 PF2ID
0000 1111 : 0000 1111 : mod mm r/m : 1011 1111 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 0001 1101 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 0001 1101
11011 101 : mod 000 r/m 11011 011 : mod 101 r/m 11011 001 : 11 000 ST(i) FLD1 11011 001 : 1110 1000 FLDCW 11011 001 : mod 101 r/m FLDENV 11011 001 : mod 100 r/m FLDL2E 11011 001 : 1110 1010 FLDL2T 11011 001 : 1110 1001 FLDLG2 11011 001 : 1110 1100 FLDLN2 11011 001 : 1110 1101 FLDPI 11011 001 : 1110 1011 FLDZ 11011 001 : 1110 1110 FMUL ST(0) ST(0) * 32-bit mem 11011 000 : mod 001 r/m ST(0) ST(0) * 64-bit mem 11011 100 : mod 001 r/m ST(d) ST(0) * ST(i) 11011 d00 : 1100 1 ST(i) FMULP ST(0) ST(0) * ST(i) 11011 110 : 1100 1 ST(i) FNOP 11011 001 : 1101 0000 FPATAN 11011 001 : 1111 0011 FPREM 11011 001 : 1111 1000 FPREM1 11011 001 : 1111 0101 FPTAN 11011 001 : 1111 0010 FRNDINT 11011 001 : 1111 1100 FRSTOR 11011 101 : mod 100 r/m FSAVE 11011 101 : mod 110 r/m FSCALE 11011 001 : 1111 1101 FSIN 11011 001 : 1111 1110 FSINCOS 11011 001 : 1111 1011 FSQRT 11011 001 : 1111 1010 FST 32-bit mem 11011 001 : mod 010 r/m 64-bit mem 11011 101 : mod 010 r/m ST(i) 11011 101 : 11 010 ST(i) FSTCW 11011 001 : mod 111 r/m FSTENV 11011 001 : mod 110 r/m FSTP 32-bit mem 11011 001 : mod 011 r/m 64-bit mem 11011 101 : mod 011 r/m 80-bit mem 11011 011 : mod 111 r/m ST(i) 11011 101 : 11 011 ST(i) FSTSW AX FPU Status Word 11011 111 : 1110 0000 mem FPU Status Word 11011 101 : mod 111 r/m
mem to mm
PFMIN PFMUL PFNACC PFPNACC PFRCP PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT PFSUB PFSUBR PI2FD
mem to mm
0000 1111 : 0000 1111 : mod mm r/m : 1010 0100 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1001 0100 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1001 0100 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1011 0100 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1011 0100 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1000 1010 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1000 1010 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1000 1110 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1000 1110 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1001 0110 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1001 0110 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 0110 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1010 0110 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1011 0110 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1011 0110 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 0111 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1010 0111 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1001 0111 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1001 0111 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1001 1010 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1001 1010 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 1010 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1010 1010 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 0000 1101
PF2IW
mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 0001 1100 0000 1111 : 0000 1111 : mod mm r/m : 0001 1100 PFACC mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 1110 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1010 1110 PFADD mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1001 1110 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1001 1110 PFCMPEQ mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1011 0000 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1011 0000 PFCMPGE mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1001 0000 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1001 0000 PFCMPGT mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 0000 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1010 0000 PFMAX mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 0100 PFMAX mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1010 0100
mem to mm
0000 1111 : 0000 1111 : mod mm r/m : 0000 1101 mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 0000 1101 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 0000 1101 PI2FW mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 0000 1100 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 0000 1100 PMULHRW mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1011 0111 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1011 0111 PREFETCH mm2 to mm1 0000 1111 : 0000 1101 : 11 000 mm
mem to mm
PI2FD
mem to mm
PREFETCHW mm2 to mm1
mem to mm
0000 1111 : 0000 1101 : mod 000 r/m 0000 1111 : 0000 1101 : 11 001 mm 0000 1111 : 0000 1101 : mod 001 r/m 0000 1111 : 0000 1110
PSWAPD FEMMS
mm2 to mm1 0000 1111 : 0000 1111 : 11 mm1 mm2 : 1011 1011 mem to mm 0000 1111 : 0000 1111 : mod mm r/m : 1011 1011
Pentium 6th Generation & NetBurst Processor Micro-Architectures with Interface to Memory Subsystem:
System Bus (64-bit) Bus Interface Unit 3rd Level Cache (NB server option) 2 Level Cache
nd
Load Unit
(16 entry buffer)
Reservation Station
st
Microcode Rom ID0 ID1 RAT ROB IFU0 IFU1 IFU2 Rd (In-Order issue)
Execution
(Out-Of-Order Core) RS Port 0-4 ROB Wb
Retirement
(In-Order unit) 3 ops in cycle
BTBs/Branch Prediction
0H
2H 3H
ECX EDX EAX EBX ECX EDX EAX EBX ECX EDX EAX EBX ECX EDX EAX EBX ECX EDX EAX EBX ECX EDX
80000000H
80000001H
80000002H
80000003H
80000004H
Bits 00-31 of 96-bit processor serial number. (Available in Pentium III only; otherwise reserved.) Bits 32-63 of 96-bit processor serial number. (Available in Pentium III only; otherwise reserved.) Extended Function CPUID Information Maximum Input Value for Extended Function CPUID Information Reserved. Reserved. Reserved. Extended Processor Signature and Extended Feature Bits. (Currently Reserved.) Reserved. Reserved. Reserved. Processor Brand String. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued. Processor Brand String Continued.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-31
CX8 APIC Reserved SEP MTRR PGE MCA CMOV PAT PSE-36 PSN CLFSH Reserved DS ACPI MMX FXSR SSE SSE2 SS Reserved TM Reserved
version to do model specific processing of the exception, or test for the presence of the Machine Check feature. CMPXCHG8B Instruction. The CMPXCHG8B (64-bits) instruction is supported (implicitly locked & atomic). APIC On-Chip. The processor contains an Advanced Programmable Interrupt Controller (APIC), responding to memory-mapped commands in the physical address range FFFE0000H to FFFE0FFFH (by default some processors permit the APIC to be relocated). Reserved SYSENTER and SYSEXIT Instructions. The SYSENTER and SYSEXITand associated MSRs are supported. Memory Type Range Registers. MTRRs are supported. The MTRRcap MSR contains feature bits that describe what memory types, how many variable MTRRS, and whether fixed MTRRs are supported. PTE Global Bit. The global bit in page directory entries (PDEs) and page table entries (PTEs) is supported, indicating TLB entries that are common to different processes and need not be flushed. The CR4.PGE bit controls this feature. Macine Check Architecture. The machine Check Architecture, which provides a compatible mechanism for error reporting in Pentium 4 processors, P6 family processors, and future processors, is supported. The MCG_CAP MSR contains feature bits describing how many banks of error reporting MSRs are supported. Conditional Move Instructions. The conditional move instruction CMOV is supported. In addition, if x87 FPU is present as indicated by the CPUID.FPU feature bit, then FCOMI and FCMOV instructions are supported. Page Attribute Table. Page Attribute Table is supported. This feature augments the Memory Type Range Registers (MTRRs), allowing an OS to specify attributes of memory on a 4K granularity through a linear address. 32-Bit Page Size Extension. Extended 4-Mb pages that are capable of addressing physical memiry beyond 4 Gb are supported. This feature indicates that the upper four bits of the physical address of the 4-Mb page is encoded by bits 13-16 of the page directory entry. Processor Serial Number. The processor supports the 96-bit processor ID number feature and it is enabled. CLFLUSH Instruction. CLFLUSH Instruction is supported. Reserved Debug Store. The processor supports the ability to write debug information into a memory resident buffer. This feature is used by the branch trace store (BTS) and precise event-based sampling (PEBS) facilities. Thermal Monitor and Software Controlled Clock Facilities. The processor implements internal MSRs that allow processor temperature to be monitored and processor performance to be modulated in predefined duty cycles under software control. Intel MMX Technology. The processor supports the Intel MMX technology. FXSAVE and FXRSTOR Instructions. The FXSAVE and FXSTOR instructions are supported for fast save and restore of the floating-point context. Presence if this bit also indicates that CR4.OSFXSR is available for an operating system to indicate that it supports the FXSAVE and FXSTOR instructions. SSE. The processor supports the SSE extensions. SSE2. The processor supports the SSE2 extensions. Self Snoop. The processor supports the management of conflicting memory types by performing a snoop of its own cache structure for transactions issued to the bus. Reserved Thermal Monitor. The processor implements the thermal monitor automatic thermal control circuitry (TCC). Reserved
44H 45H 50H 51H 52H 5BH 5CH 5DH 66H 67H 68H 70H 71H 72H 79H 7AH 7BH 7CH 82H 84H 85H
2nd level cache: 1 Mb, 4-way set associative, 32 byte line size 2nd level cache: 2 Mb, 4-way set associative, 32 byte line size Instruction TLB: 4 Kb and 2 Mb or 4 Mb pages, 64 entries Instruction TLB: 4 Kb and 2 Mb or 4 Mb pages, 128 entries Instruction TLB: 4 Kb and 2 Mb or 4 Mb pages, 256 entries Data TLB: 4 Kb and 4 Mb pages, 64 entries Data TLB: 4 Kb and 4 Mb pages, 128 entries Data TLB: 4 Kb and 4 Mb pages, 256 entries 1st level data cache: 8 Kb, 4-way set associative, 64 byte line size 1st level data cache: 16 Kb, 4-way set associative, 64 byte line size 1st level data cache: 32 Kb, 4-way set associative, 64 byte line size Trace cache: 12K-op, 8-way set associative Trace cache: 16K-op, 8-way set associative Trace cache: 32K-op, 8-way set associative 2nd level cache: 128 Kb, 8-way set associative, sectored, 64 byte line size 2nd level cache: 256 Kb, 8-way set associative, sectored, 64 byte line size 2nd level cache: 512 Kb, 8-way set associative, sectored, 64 byte line size 2nd level cache: 1 Mb, 8-way set associative, sectored, 64 byte line size 2nd level cache: 256 Kb, 8-way set associative, 32 byte line size 2nd level cache: 1 Mb, 8-way set associative, 32 byte line size 2nd level cache: 2 Mb, 8-way set associative, 32 byte line size
Hexadecimal-Binary-Decimal Conversion
Hex 0 1 2 3 4 5 6 7 Binary 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 000X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 00X0 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 0X00 0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 X000 0 4096 8192 1228 8 1638 4 2048 0 2457 6 2867 2 3276 8 3686 4 4096 0 4505 6 4915 2 5324 8 5734 4 6144 0
32-Bit Register Review EAX/EDX EBX ECX EBP ESI EDI ESP General-purpose, MUL, DIV, port I/O, report Pentium cycles Great general-purpose use. No important special functions. General-purpose, REP string inst. loop count, low B shift count Address stack variables (stack-frame pointer), can borrow use General purpose, source data pointer for REP string instructions General purpose, destination pointer for REP string instructions Address stack parameters & variables, cannot use unless no int.
8 9 A B C D E F