33937 lines
610 KiB
Plaintext
33937 lines
610 KiB
Plaintext
OPCODE LIST Release 61 Last change 16jul00
|
|
|
|
------------------ OPCODE.LST ----------------------------
|
|
This is DOC 'bout undocument command and document command
|
|
of any last processors. And 'bout some registers and
|
|
Chips specific stuffs.
|
|
-----------------------------------------------------------
|
|
(C) (P) Potemkin's Hackers Group 1994...1999
|
|
-----------------------------------------------------------
|
|
Revision 4.51 15 Oct 1999
|
|
-----------------------------------------------------------
|
|
Latest versions available on Web:
|
|
http://www.chat.ru/~phg
|
|
Our contact E-mail:
|
|
avp@gdev.msk.ru
|
|
ICQ UIN:
|
|
20570214
|
|
------------------------------------------------------------
|
|
[New In revision 4.50]
|
|
o AMD 3DNow! Extentions and Athlon CPU
|
|
o Update CPUID features summary
|
|
o Update OPCODE tables
|
|
o Update CPU revisions
|
|
-------------------------------------------------------------
|
|
|
|
---------------------------------------------------
|
|
OPCODE AAA - ASCII adjust AX after addition
|
|
|
|
CPU: 8086+
|
|
Type of Instruction: User
|
|
|
|
Instruction: AAA ; (no operands)
|
|
|
|
Description:
|
|
|
|
IF ((( AL and 0FH ) > 9 ) or (AF==1)
|
|
THEN {
|
|
IF CPU<286 THEN { AL <- AL+6 }
|
|
ELSE { AX <- AX+6 }
|
|
AH <- AH+1
|
|
CF <- 1
|
|
AF <- 1
|
|
} ELSE {
|
|
CF <- 0
|
|
AF <- 0
|
|
}
|
|
AL <- AL and 0Fh
|
|
|
|
Note: This istruction incorrectly documented in Intel's materials.
|
|
See description field.
|
|
|
|
Flags Affected: AF,CF (modified)
|
|
OF,SF,ZF,PF (undefined)
|
|
|
|
Faults:
|
|
RM PM V86 VME
|
|
None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form:
|
|
COP (Code of Operation) : 37H
|
|
|
|
Clocks:
|
|
AAA
|
|
8086: 4
|
|
8088: 4
|
|
80186: 8
|
|
80286: 3
|
|
80386: 4
|
|
i486: 3
|
|
Pentium: 3
|
|
|
|
Cx486SLC: 4
|
|
Cx486DX: 4
|
|
IBM 486BL3X: 4
|
|
UMC U5S: 1
|
|
|
|
---------------------------------------------------
|
|
OPCODE AAD - ASCII adjust AX before Division
|
|
|
|
CPU: 8086+
|
|
Type of Instruction: User
|
|
|
|
Instruction: AAD basen
|
|
|
|
Description:
|
|
AL <- (AH*basen) + AL
|
|
AH <- 0
|
|
|
|
Flags Affected: SF,ZF,PF (modified)
|
|
OF,AF,CF (undefined)
|
|
|
|
Faults:
|
|
RM PM V86 VME SMM
|
|
None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Note: AAD without operands means AAD with operand 0AH.
|
|
|
|
Note: NECs understand only AAD 0AH form.
|
|
|
|
+++++++++++++++++++++++
|
|
|
|
Physical Form: AAD imm8
|
|
|
|
COP (Code of Operation) : D5H imm8
|
|
|
|
Clocks: AAD 0AH
|
|
8086: 60
|
|
80186: 15
|
|
80286: 14
|
|
80386: 19
|
|
i486: 14
|
|
Pentium: 10
|
|
|
|
Cx486SLC: 4
|
|
Cx486DX: 4
|
|
|
|
IBM 486BL3X: 15
|
|
UMC U5S: 11
|
|
|
|
---------------------------------------------------
|
|
OPCODE AAM - ASCII adjust AX after Multiply
|
|
|
|
CPU: 8086+
|
|
Type of Instruction: User
|
|
|
|
Instruction: AAM basen
|
|
|
|
Description:
|
|
AH <- AL / basen
|
|
AL <- AL MOD basen
|
|
|
|
Flags Affected: SF,ZF,PF (modified)
|
|
OF,AF,CF (undefined)
|
|
|
|
Faults:
|
|
RM PM V86 VME SMM
|
|
None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Note: AAM without operands means AAM with operand 0AH.
|
|
|
|
WARNING: NECs understand only AAM 0Ah form.
|
|
|
|
+++++++++++++++++++++++
|
|
|
|
Physical Form: AAM imm8
|
|
|
|
COP (Code of Operation) : D4H imm8
|
|
|
|
Clocks: AAM 0AH
|
|
8086: 83
|
|
80186: 19
|
|
80286: 16
|
|
80386: 17
|
|
i486: 15
|
|
Pentium: 18
|
|
|
|
Cx486SLC: 16
|
|
Cx486DX: 16
|
|
|
|
IBM 486BL3X: 17
|
|
UMC U5S: 12
|
|
|
|
---------------------------------------------------
|
|
OPCODE ADD4S - Addition for packed BCD strings
|
|
|
|
CPU: all NECs V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: ADD4S
|
|
|
|
Description:
|
|
|
|
BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
|
|
BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
|
|
BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
|
|
|
|
Note: si,di, other registers not changed
|
|
|
|
Flags Affected: OF,CF,ZF
|
|
;; ZF set if both strings are zeros.
|
|
;; CF,OF set as result of operation with most
|
|
;; signification BCDs.
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: ADD4S
|
|
COP (Code of Operation) : 0FH 20H
|
|
|
|
Clocks: ADD4S
|
|
NEC V20: ~19*(CL/2)+7
|
|
|
|
-----------------------------------------------------------------
|
|
ADDPS - Packed Single-FP Add
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: ADDPS dest,src
|
|
|
|
Description:
|
|
dest[<0>] = dest[<0>] + src[<0>];
|
|
dest[<1>] = dest[<1>] + src[<1>];
|
|
dest[<2>] = dest[<2>] + src[<2>];
|
|
dest[<3>] = dest[<3>] + src[<3>];
|
|
addition is F.P.
|
|
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
ADDPS xmm1,xmm2/m128 ---- 0F 58 /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
ADDSS - Scalar Single-FP Add
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: ADDSS dest,src
|
|
|
|
Description:
|
|
dest[<0>] = dest[<0>] + src[<0>];
|
|
addition is F.P.
|
|
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
ADDSS xmm1,xmm2/m32 ---- F3 0F 58 /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
ANDNPS - Bit-wise Logical And Not For Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: ANDNPS dest,src
|
|
|
|
Description:
|
|
dest = NOT( dest AND src ); // Bitwize
|
|
|
|
Physical Form and Timing:
|
|
ANDNPS xmm1,xmm2/m128 ---- 0F 55 /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
ANDPS - Bit-wise Logical And For Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: ANDPS dest,src
|
|
|
|
Description:
|
|
dest = dest AND src; // Bitwize
|
|
|
|
Physical Form and Timing:
|
|
ANDPS xmm1,xmm2/m128 ---- 0F 54 /r ---- 2
|
|
|
|
---------------------------------------------------
|
|
OPCODE BOUND - Chack Array Index Against Bounds
|
|
|
|
CPU: 80186+,NECs
|
|
Type of Instruction: User - HLL support
|
|
|
|
Instruction: BOUND index,bound_array
|
|
|
|
Description:
|
|
|
|
IF (index < (opsize ptr [bound_array]))
|
|
OR
|
|
(index > (opsize ptr [bound_array+opsize]))
|
|
THEN INT 5;
|
|
|
|
Flags Affected: No Flags Affected
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Faults:
|
|
RM PM V86 VME SMM
|
|
#GP(0) if result is nonwritable seg.
|
|
#GP(0) illegal memory operand
|
|
in CS..GS (exc. SS)
|
|
#SS(0) illegal memory operand in SS
|
|
#PF #PF
|
|
#UD #UD #UD if 2nd operand is register
|
|
#13 if any part of operand lie
|
|
outside of 0..FFFFh
|
|
#AC #AC if CPL=3 and enable AC.
|
|
|
|
Note: (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
|
|
instruction that self.
|
|
(286+) saved as pointer to BOUND instruction.
|
|
|
|
+++++++++++++++++++++++
|
|
|
|
Physical Form: BOUND reg16,mem32
|
|
BOUND reg32,mem64
|
|
|
|
COP (Code of Operation) : 62H Postbyte
|
|
Note: for 32bit op. add Pfix 66h if in 16bit mode
|
|
|
|
Clocks: BOUND reg16,mem16
|
|
In Range Out Range
|
|
80186: 33-35
|
|
80286: 13 int+13
|
|
80386: 10
|
|
i486: 7
|
|
Pentium: 8 int+32
|
|
|
|
Cx486SLC: 11 int+11
|
|
Cx486DX: 11 int+11
|
|
|
|
---------------------------------------------------
|
|
OPCODE BRKCS - Break with Contex Switch
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: BRKCS bank
|
|
|
|
Description:
|
|
|
|
Perform a High-Speed Software Interrupt with contex-switch to
|
|
register bank indicated by the lower 3-bits of 'bank'.
|
|
|
|
Info: NEC V25/V35/V25 Plus/V35 Plus Bank System
|
|
|
|
This Chips have 8 32bytes register banks, which placed in
|
|
Internal chip RAM by addresses:
|
|
xxE00h..xxE1Fh Bank 0
|
|
xxE20h..xxE3Fh Bank 1
|
|
.........
|
|
xxEC0h..xxEDFh Bank 6
|
|
xxEE0h..xxEFFh Bank 7
|
|
xxF00h..xxFFFh Special Functions Register
|
|
Where xx is Value of IDB register.
|
|
IBD is Byte Register contained Internal data area base
|
|
IBD addresses is FFFFFh and xxFFFh where xx is data in IBD.
|
|
|
|
Format of Bank:
|
|
+0 Reserved
|
|
+2 Vector PC
|
|
+4 Save PSW
|
|
+6 Save PC
|
|
+8 DS0 ;DS
|
|
+A SS ;SS
|
|
+C PS ;CS
|
|
+E DS1 ;ES
|
|
+10 IY ;DI
|
|
+11 IX ;SI
|
|
+14 BP ;BP
|
|
+16 SP ;SP
|
|
+18 BW ;BX
|
|
+1A DW ;DX
|
|
+1C CW ;CX
|
|
+1E AW ;AX
|
|
|
|
Format of V25 etc. PSW (FLAGS):
|
|
Bit Description
|
|
15 1
|
|
14 RB2 \
|
|
13 RB1 > Current Bank Number
|
|
12 RB0 /
|
|
11 V ;OF
|
|
10 DIR ;DF
|
|
9 IE ;IF
|
|
8 BRK ;TF
|
|
7 S ;SF
|
|
6 Z ;ZF
|
|
5 F1 General Purpose user flag #1
|
|
(accessed by Flag Special Function Register)
|
|
4 AC ;AF
|
|
3 F0 General purpose user flag #0
|
|
(accessed by Flag Special Function Register)
|
|
2 P ;PF
|
|
1 BRKI I/O Trap Enable Flag
|
|
0 CY ;CF
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: BRKCS reg16
|
|
COP (Code of Operation) : 0Fh 2Dh <1111 1RRR>
|
|
|
|
Clocks: 15
|
|
|
|
---------------------------------------------------
|
|
OPCODE BRKEM - Break for Emulation
|
|
|
|
CPU: NEC/Sony V20/V30/V40/V50
|
|
Type of Instruction: System
|
|
|
|
Instruction: BRKEM intnum
|
|
|
|
Description:
|
|
|
|
PUSH FLAGS
|
|
PUSH CS
|
|
PUSH IP
|
|
MOV CS,0:[intnum*4+2]
|
|
MOV IP,0:[intnum*4]
|
|
MD <- 0; // Enable 8080 emulation
|
|
|
|
Note: BRKEM instruction do software interrupt and then New CS,IP loaded
|
|
it switch to 8080 mode i.e. CPU will execute 8080 code.
|
|
Mapping Table of Registers in 8080 Mode
|
|
8080 Md. A B C D E H L SP PC F
|
|
native. AL CH CL DH DL BH BL BP IP FLAGS(low)
|
|
For Return of 8080 mode use CALLN instruction.
|
|
Note: I.e. 8080 addressing only 64KB then "Real Address" is CS*16+PC
|
|
|
|
Flags Affected: MD
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: BRKEM imm8
|
|
COP (Code of Operation) : 0FH FFH imm8
|
|
|
|
Clocks: BRKEM imm8
|
|
NEC V20: 38
|
|
|
|
---------------------------------------------------
|
|
OPCODE BRKN - Break to Native Mode
|
|
|
|
CPU: NEC (V25/V35) Software Guard only
|
|
Type of Instruction: System
|
|
|
|
Instruction: BRKN int_vector
|
|
|
|
Description:
|
|
[sp-1,sp-2] <- PSW ; PSW EQU FLAGS
|
|
[sp-3,sp-4] <- PS ; PS EQU CS
|
|
[sp-5,sp-6] <- PC ; PC EQU IP
|
|
SP <- SP -6
|
|
IE <- 0
|
|
BRK <- 0
|
|
MD <- 1
|
|
PC <- [int_vector*4 +0,+1]
|
|
PS <- [int_vector*4 +2,+3]
|
|
|
|
Note: The BRKN instruction switches operations in Native Mode
|
|
from Security Mode via Interrupt call. In Normal Mode
|
|
Instruction executed as mPD70320/70322 (V25) operation mode.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: BRKN imm8
|
|
COP (Code of Operation) : 63h imm8
|
|
|
|
Clocks: 56+10T [44+10T]
|
|
|
|
---------------------------------------------------
|
|
OPCODE BRKS - Break to Security Mode
|
|
|
|
CPU: NEC (V25/V35) Software Guard only
|
|
Type of Instruction: System
|
|
|
|
Instruction: BRKS int_vector
|
|
|
|
Description:
|
|
[sp-1,sp-2] <- PSW ; PSW EQU FLAGS
|
|
[sp-3,sp-4] <- PS ; PS EQU CS
|
|
[sp-5,sp-6] <- PC ; PC EQU IP
|
|
SP <- SP -6
|
|
IE <- 0
|
|
BRK <- 0
|
|
MD <- 0
|
|
PC <- [int_vector*4 +0,+1]
|
|
PS <- [int_vector*4 +2,+3]
|
|
|
|
Note: The BRKS instruction switches operations in Security Mode
|
|
via Interrupt call. In Security Mode the fetched operation
|
|
code is executed after conversion in accordance with build-in
|
|
translation table
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: BRKS imm8
|
|
COP (Code of Operation) : F1h imm8
|
|
|
|
Clocks: 56+10T [44+10T]
|
|
|
|
---------------------------------------------------
|
|
OPCODE BRKXA - Break to Expansion Address
|
|
|
|
CPU: NEC V33/V53 only
|
|
Type of Instruction: System
|
|
|
|
Instruction: BRKXA int_vector
|
|
|
|
Description:
|
|
[sp-1,sp-2] <- PSW ; PSW EQU FLAGS
|
|
[sp-3,sp-4] <- PS ; PS EQU CS
|
|
[sp-5,sp-6] <- PC ; PC EQU IP
|
|
SP <- SP -6
|
|
IE <- 0
|
|
BRK <- 0
|
|
MD <- 0
|
|
PC <- [int_vector*4 +0,+1]
|
|
PS <- [int_vector*4 +2,+3]
|
|
Enter Expansion Address Mode.
|
|
|
|
Note: In NEC V53 Memory Space dividing into 1024 16K pages.
|
|
The programming model is Same as in Normal mode.
|
|
|
|
Mechanism is:
|
|
20 bit Logical Address: 19..14 Page Num 13..0 Offset
|
|
|
|
page Num convertin by internal table to 23..14 Page Base
|
|
tHE pHYSICAL ADDRESS is both Base and Offset.
|
|
|
|
Address Expansion Registers:
|
|
logical Address A19..A14 I/O Address
|
|
0 FF00h
|
|
1 FF02h
|
|
... ...
|
|
63 FF7Eh
|
|
|
|
Register XAM aliased with port # FF80h indicated current mode
|
|
of operation.
|
|
Format of XAM register (READ ONLY):
|
|
15..1 reserved
|
|
0 XA Flag, if=1 then in XA mode.
|
|
|
|
Format of V53 PSW:
|
|
15..12 1
|
|
11 V
|
|
10 DIR
|
|
9 IE
|
|
8 BRK
|
|
7 S
|
|
6 Z
|
|
5 0
|
|
4 AC
|
|
3 0
|
|
2 P
|
|
1 1
|
|
0 CY
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: BRKXA imm8
|
|
COP (Code of Operation) : 0Fh E0h imm8
|
|
|
|
Clocks: 12
|
|
|
|
---------------------------------------------------
|
|
OPCODE BSWAP - Bytes Swap
|
|
|
|
CPU: I486 +
|
|
Type of Instruction: User
|
|
|
|
Instruction: BSWAP dwordr
|
|
|
|
Description:
|
|
|
|
XCHG BYTE dwordr[31:24],dwordr[7:0]
|
|
XCHG BYTE dwordr[23:16],dwordr[15:8]
|
|
|
|
; Need Good Picture to Show It
|
|
|
|
Notes: This instruction used for converting big-endian
|
|
(Intel) format to little-endian (Motorolla etc.) format.
|
|
|
|
Flags Affected: None
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Physical Form: BSWAP r32
|
|
COP (Code of Operation): 0FH 11001rrr (For 32bit segment)
|
|
Clocks: Cyrix Cx486SLC : 4
|
|
i486 : 1
|
|
Pentium : 1
|
|
Cyrix Cx486DX : 4
|
|
UMC U5S : 2
|
|
IBM 486BL3X : 9
|
|
|
|
---------------------------------------------------
|
|
OPCODE BTCLR - Bit Test, If it True Clear and Branch
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: User
|
|
|
|
Instruction: BTCLR var,bitnumber,Short_Label
|
|
|
|
Description:
|
|
IF BIT(bitnumber OF var) =1 THEN
|
|
{
|
|
PC <- PC + ext - disp8;
|
|
BIT(bitnumber OF var) <-0
|
|
}
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: BTCLR reg/mem8,imm3, short_label
|
|
COP (Code of Operation) : 0Fh 9Ch PostByte imm3 Short_Label (Total=5 bytes)
|
|
|
|
Clocks: 29
|
|
|
|
---------------------------------------------------
|
|
OPCODE CALLN - Call Native Mode Routine
|
|
|
|
CPU: NEC/Sony V20/V30 etc
|
|
Type of Instruction: System
|
|
|
|
Instruction: CALLN intnum
|
|
|
|
Description:
|
|
CALLN instruction call (interrupt service in Native Mode)
|
|
from 8080 emulation mode:
|
|
PUSH FLAGS
|
|
PUSH CS
|
|
PUSH IP
|
|
IF <- 0
|
|
TF <- 0
|
|
MD <- 1
|
|
MOV CS,0:[intnum*4+2]
|
|
MOV IP,0:[intnum*4]
|
|
|
|
Flags Affected: IF,TF,MD
|
|
|
|
CPU mode: 8080 Emulation
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: CALLN imm8
|
|
COP (Code of Operation) : EDH EDH imm8
|
|
|
|
Clocks:
|
|
NEC V20/V30: 38-58
|
|
|
|
---------------------------------------------------
|
|
OPCODE CLEAR1 - Clear one bit
|
|
|
|
CPU: NEC/Sony all V-series.
|
|
Type of Instruction: User
|
|
|
|
Instruction: CLEAR1 dest,bitnumb
|
|
|
|
Description:
|
|
|
|
BIT bitnumb OF dest <- 0;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: CLEAR1 reg/mem8,CL
|
|
COP (Code of Operation) : 0FH 12H Postbyte
|
|
|
|
Physical Form: CLEAR1 reg/mem8,imm8
|
|
COP (Code of Operation) : 0FH 1AH Postbyte imm8
|
|
|
|
Physical Form: CLEAR1 reg/mem16,CL
|
|
COP (Code of Operation) : 0FH 13H Postbyte
|
|
|
|
Physical Form: CLEAR1 reg/mem16,imm8
|
|
COP (Code of Operation) : 0FH 1BH Postbyte imm8
|
|
|
|
Clocks: CLEAR1
|
|
r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
|
|
NEC V20: 5/14 6/15 5/14 6/15
|
|
|
|
---------------------------------------------------
|
|
OPCODE CMOVcc - Conditional Move
|
|
|
|
CPU: P6
|
|
Type of Instruction: User
|
|
|
|
Instruction: CMOVcc dest,sorc
|
|
|
|
Description:
|
|
IF condition(cc) is true THEN dest <- sorc;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form & COPs:
|
|
|
|
CMOVO reg,reg/mem 0FH 40H Postbyte
|
|
CMOVNO reg,reg/mem 0FH 41H Postbyte
|
|
CMOVC reg,reg/mem 0FH 42H Postbyte
|
|
CMOVNC reg,reg/mem 0FH 43H Postbyte
|
|
CMOVZ reg,reg/mem 0FH 44H Postbyte
|
|
CMOVNZ reg,reg/mem 0FH 45H Postbyte
|
|
CMOVNA reg,reg/mem 0FH 46H Postbyte
|
|
CMOVA reg,reg/mem 0FH 47H Postbyte
|
|
CMOVS reg,reg/mem 0FH 48H Postbyte
|
|
CMOVNS reg,reg/mem 0FH 49H Postbyte
|
|
CMOVP reg,reg/mem 0FH 4AH Postbyte
|
|
CMOVNP reg,reg/mem 0FH 4BH Postbyte
|
|
CMOVL reg,reg/mem 0FH 4CH Postbyte
|
|
CMOVNL reg,reg/mem 0FH 4DH Postbyte
|
|
CMOVNG reg,reg/mem 0FH 4EH Postbyte
|
|
CMOVG reg,reg/mem 0FH 4FH Postbyte
|
|
|
|
Clocks: ~1 (~pairing with other instructions)
|
|
|
|
---------------------------------------------------
|
|
OPCODE CMP4S - Compare for packed BCD strings
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: CMP4S
|
|
|
|
Description:
|
|
|
|
SetFlaGS( BCD STRING (ADDRESS=ES:DI,LENGTH=CL) -
|
|
BCD STRING (ADDRESS=DS:SI,LENGTH=CL) );
|
|
|
|
Note: si,di, other registers not changed
|
|
|
|
Flags Affected: OF,CF,ZF
|
|
;; ZF set if RESULT of subtraction is zero.
|
|
;; CF,OF set as result of operation with most
|
|
;; signification BCDs.
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: CMP4S
|
|
COP (Code of Operation) : 0FH 26H
|
|
|
|
Clocks: CMP4S
|
|
NEC V20: ~7+19*CL
|
|
|
|
-----------------------------------------------------------------
|
|
CMPPS - Packed Single FP-Compare
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CMPPS dest,src,predicate
|
|
|
|
Description:
|
|
operation predicate
|
|
EQ equal (dest == src) 0
|
|
LT less-than (dest < src) 1
|
|
LE less-equal (dest <= src) 2
|
|
UNORD unordered (dest ? src) 3
|
|
NEQ not-equal (dest <> src) 4
|
|
NLT not-less-that (dest => src) 5
|
|
NLE not-less-equal (dest > src) 6
|
|
ORD ordered !(dest ? src) 7
|
|
|
|
par for i = 0 to 3 do
|
|
cmp<i> = dest[<i>] operation(predicate) src[<i>];
|
|
if cmp<i> = true then
|
|
dest[<i>] = 0xffffffff;
|
|
else
|
|
dest[<i>] = 0x00000000;
|
|
endif
|
|
endfor endpar
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
Note: Compilers may implement additional instructions:
|
|
CMPEQPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,0
|
|
CMPLTPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,1
|
|
CMPLEPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,2
|
|
CMPUNORDPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,3
|
|
CMPNEQPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,4
|
|
CMPNLTPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,5
|
|
CMPNLEPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,6
|
|
CMPORDPS xmm1,xmm2 <=> CMPPS xmm1,xmm2,7
|
|
|
|
Physical Form and Timing:
|
|
CMPPS xmm1,xmm2/m128,imm8 ---- 0F C2 /r imm8 ---- 1-2
|
|
|
|
-----------------------------------------------------------------
|
|
CMPSS - Scalar Single FP-Compare
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CMPSS dest,src,predicate
|
|
|
|
Description:
|
|
operation predicate
|
|
EQ equal (dest == src) 0
|
|
LT less-than (dest < src) 1
|
|
LE less-equal (dest <= src) 2
|
|
UNORD unordered (dest ? src) 3
|
|
NEQ not-equal (dest <> src) 4
|
|
NLT not-less-that (dest => src) 5
|
|
NLE not-less-equal (dest > src) 6
|
|
ORD ordered !(dest ? src) 7
|
|
|
|
cmp = dest[<0>] operation(predicate) src[<0>];
|
|
if cmp = true then
|
|
dest[<0>] = 0xffffffff;
|
|
else
|
|
dest[<0>] = 0x00000000;
|
|
endif
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
Note: Compilers may implement additional instructions:
|
|
CMPEQSS xmm1,xmm2 <=> CMPSS xmm1,xmm2,0
|
|
CMPLTSS xmm1,xmm2 <=> CMPSS xmm1,xmm2,1
|
|
CMPLESS xmm1,xmm2 <=> CMPSS xmm1,xmm2,2
|
|
CMPUNORDSS xmm1,xmm2 <=> CMPSS xmm1,xmm2,3
|
|
CMPNEQSS xmm1,xmm2 <=> CMPSS xmm1,xmm2,4
|
|
CMPNLTSS xmm1,xmm2 <=> CMPSS xmm1,xmm2,5
|
|
CMPNLESS xmm1,xmm2 <=> CMPSS xmm1,xmm2,6
|
|
CMPORDSS xmm1,xmm2 <=> CMPSS xmm1,xmm2,7
|
|
|
|
Physical Form and Timing:
|
|
CMPSS xmm1,xmm2/m128,imm8 ---- F3 0F C2 /r imm8 ---- 1-2
|
|
|
|
---------------------------------------------------
|
|
OPCODE CMPXCHG8B - Compare and exchange 8 bytes
|
|
|
|
CPU: Pentium (tm), Pentium Pro(tm), AMD Am5k86
|
|
Type of Instruction: Operation
|
|
|
|
Instruction: CMPXCHG8B dest
|
|
|
|
Note: dest is memory operand: QWORD PTR [memory]
|
|
|
|
Description:
|
|
|
|
IF ( QWORD(EDX:EAX) = dest) THEN
|
|
{
|
|
ZF <- 1;
|
|
dest <- QWORD(ECX:EBX);
|
|
}
|
|
ELSE
|
|
{
|
|
ZF <- 0;
|
|
EDX:EAX <- dest
|
|
}
|
|
END
|
|
|
|
Flags Affected: ZF
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Physical Form: CMPXCHG8B mem64
|
|
COP (Code of Operation) : 0FH C7H Postbyte
|
|
Clocks: Pentium : 10
|
|
|
|
Note: Postbyte MMRRRMMM: MM<>11 if (==) then INT 6
|
|
|
|
---------------------------------------------------
|
|
OPCODE CMPXCHG - Compare and exchange
|
|
|
|
CPU: i486+
|
|
Type of Instruction: User
|
|
|
|
Instruction: CMPXCHG dest,sorc
|
|
|
|
Description:
|
|
|
|
Acc = if OperationSize(8) -> AL
|
|
OperationSize(16) -> AX
|
|
OperationSize(32) -> EAX
|
|
|
|
IF ( Acc = dest) THEN
|
|
{
|
|
ZF <- 1;
|
|
dest <- sorc;
|
|
}
|
|
ELSE
|
|
{
|
|
ZF <- 0;
|
|
Acc <- dest;
|
|
}
|
|
END
|
|
|
|
Note: This instruction used to support semaphores
|
|
|
|
Flags Affected: ZF ( see description)
|
|
OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: CMPXCHG r/m8,r8
|
|
COP (Code of Operation) : 0FH A6H Postbyte ; i486 (A-B0 step)
|
|
: 0FH B0H Postbyte ; i486 (B1+ step clones
|
|
; and upgrades)
|
|
|
|
Clocks:
|
|
Intel i486 : 6/7 if compare OK
|
|
: 6/10 if compare FAIL
|
|
Cyrix Cx486SLC : 5/7
|
|
Pentium (tm) : 6
|
|
|
|
Penalty if cache miss :
|
|
Intel i486 : 2
|
|
Cyrix Cx486SLC : 1
|
|
+++++++++++++++++++++
|
|
Physical Form: CMPXCHG r/m16,r16
|
|
CMPXCHG r/m32,r32
|
|
COP (Code of Operation) : 0FH A7H Postbyte ; i486 (A-B0 step)
|
|
: 0FH B1H Postbyte ; i486 (B1+ step clones
|
|
; and upgrades)
|
|
|
|
Clocks:
|
|
Intel i486 : 6/7 if compare OK
|
|
: 6/10 if compare FAIL
|
|
Cyrix Cx486SLC : 5/7
|
|
Pentium (tm) : 6
|
|
|
|
Penalty if cache miss :
|
|
Intel i486 : 2
|
|
Cyrix Cx486SLC : 1
|
|
|
|
-----------------------------------------------------------------
|
|
COMISS - Scalar Ordered Single-FP Compare and Set EFLAGS
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: COMISS dest,src
|
|
|
|
Description:
|
|
OF <- 0;
|
|
SF <- 0;
|
|
AF <- 0;
|
|
if (dest[<0>] UNORD src[<0>]) then
|
|
ZF <- 1;
|
|
PF <- 1;
|
|
CF <- 1;
|
|
elif (dest[<0>] > src[<0>]) then
|
|
ZF <- 0;
|
|
PF <- 0;
|
|
CF <- 0;
|
|
elif (dest[<0>] < src[<0>]) then
|
|
ZF <- 0;
|
|
PF <- 0;
|
|
CF <- 1;
|
|
else
|
|
ZF <- 1;
|
|
PF <- 0;
|
|
CF <- 0;
|
|
endif
|
|
<0> is 31..0
|
|
|
|
Physical Form and Timing:
|
|
COMISS xmm1,xmm2/m32 ---- 0F 2F /r ---- ?
|
|
|
|
---------------------------------------------------
|
|
OPCODE CPUID - CPU Identification
|
|
|
|
CPU: Intel 486DX/SX/DX2 SL Enhanced and all later
|
|
Intel processors include ( IntelDX4, IntelSX2,
|
|
Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
|
|
Cyrix M1, AMD K5, Intel P6, and AMD Ehnanced Am486 CPU,
|
|
such as A80486DX4-100SV8B.
|
|
|
|
Note: i.e. 1993+ years processors produced by Intel
|
|
Note: To know if your CPU support CPUID instruction
|
|
try to set ID flag ( bit 21 of EFLAGS ) to 1, and
|
|
if it sets this mean that CPUID support.(Soft).
|
|
Or If Your CPU is Intel Look for '&E' signature on
|
|
Top side of Chip.(Hard)
|
|
Type of Instruction: Operation
|
|
|
|
Instruction: CPUID
|
|
|
|
Description:
|
|
|
|
IF (EAX=0) THEN // All
|
|
{
|
|
EAX <- Maximum value of EAX to CALL CPUID instruction
|
|
1 for all processors (date 1 September 1994)
|
|
may be >1 in future microprocessors
|
|
|
|
;; EBX,EDX and ECX contain a OEM name string
|
|
;; for Intel this string is 'GenuineIntel'
|
|
|
|
EBX <- 756E6547H i.e. 'Genu'
|
|
EDX <- 49656E69H i.e. 'ineI'
|
|
ECX <- 6C65746EH i.e. 'ntel'
|
|
|
|
;; for UMC this string is 'UMC UMC UMC '
|
|
|
|
EBX <- 20434D55H i.e. 'UMC '
|
|
EDX <- 20434D55H i.e. 'UMC '
|
|
ECX <- 20434D55H i.e. 'UMC '
|
|
|
|
;; for Cyrix this string is 'CyrixInstead' (Cx6x86,Cx5x86 steps B+)
|
|
;; for AMD this string is 'AuthenticAMD' (K6,K5,486 Enhanced CPUs)
|
|
;; for last NexGen is 'NexGenDriven' (Nx5x86 latest models)
|
|
;; for Centaur Technology is 'CentaurHauls' (IDT)
|
|
;; for Rise Technology is 'RiseRiseRise'
|
|
}
|
|
|
|
ELSEIF (EAX=1) THEN // All
|
|
{
|
|
EAX[3:0] <- Stepping ID
|
|
EAX[7:4] <- Model
|
|
EAX[11:8] <- Family
|
|
; 3 - 386 family
|
|
; 4 - i486 family
|
|
; 5 - Pentium family
|
|
; 6 - Pentium Pro family
|
|
EAX[15:12] <- Reserved
|
|
; 0 - Original OEM processor
|
|
; 1 - OverDrive
|
|
; 2 - Dual Processor
|
|
Note: Pentium P54C have pin CPUTYPE which
|
|
define is this CPU First or Second e.t.c
|
|
in System.
|
|
So, if this chip set in "First" socket it
|
|
return for example 0425h, but THIS chip
|
|
return 2425h if we insert it in "Second"
|
|
socket.
|
|
Note: Refer to Appendix B for more information.
|
|
|
|
EAX[31:16] <- Reserved and set to 0s now
|
|
Note: This value in EAX[31:0] is upper 32-bit of 96-bit processor
|
|
serial number.
|
|
|
|
EDX <- Compability flags
|
|
;; below all info if bit flag =1
|
|
EDX[0] <- FPU: FPU on Chip
|
|
EDX[1] <- VME: Virtual Mode Extention present
|
|
EDX[2] <- DE: Debbuging Extentions
|
|
EDX[3] <- PSE: CPU support 4MB size pages
|
|
EDX[4] <- TSC: TSC present (See RDTSC command)
|
|
EDX[5] <- MSR: CPU have Pentium Compatible MSRs
|
|
EDX[6] <- PAE: Physical Address Extension (Intel)
|
|
EDX[6] <- PTE: Support PTE (Cyrix)
|
|
When set in PTE TLB will not be flushed
|
|
when CR3 is written.
|
|
EDX[7] <- MCE: Machine Check exception
|
|
EDX[8] <- CX8: Support CMPXCHG8B instruction
|
|
EDX[9] <- APIC: Local APIC on Chip (Intel)
|
|
PGE: Page Global Extension (K5)
|
|
EDX[10]<- reserved
|
|
EDX[11]<- SEP: Fast System Call feature (Pentium Pro)
|
|
EDX[12]<- MTRR: CPU support Memory Type Range Register (MTRR)
|
|
EDX[13]<- PGE: Page Global Feature support
|
|
EDX[14]<- MCA: Machine Check Architecture
|
|
EDX[15]<- CMOV: CPU support CMOV instruction
|
|
EDX[16]<- PAT: Page Attribute Table
|
|
EDX[17]<- PSE36: CPU support 4MB Pages for access memory higher
|
|
that 2GB.
|
|
EDX[18]<- SN: CPU Support Processor Serial Number
|
|
EDX[22..19] <- Reserved
|
|
EDX[23] <- MMX: CPU support IA MMX
|
|
EDX[24] <- FXSR: CPU Support Fast Save/Restore (IA MMX-2)
|
|
EDX[25] <- SIMD: Streaming SIMD Extension (IA MMX-2)
|
|
EDX[31:26] <- Reserved and set to 0s now
|
|
|
|
}
|
|
|
|
ELSEIF (EAX=2)
|
|
{
|
|
AL = 1 (Pentium Pro, Pentium II)
|
|
remainder of EAX and EBX,ECX,EDX contain bytes which
|
|
described cache architecture on this chip.
|
|
Description of this bytes is:
|
|
Value Description
|
|
00h None
|
|
01h Instruction TLB, 4K page, 4way, 64 entry
|
|
02h Instruction TLB, 4M page, 4way, 4 entry
|
|
03h Data TLB, 4K page, 4way, 64 entry
|
|
04h Data TLB, 4M page, 4way, 8 entry
|
|
06h Instruction Cache, 8K, 4 way, 32 byte per line
|
|
08h Instruction Cache, 16K, 4 way, 32 byte per line
|
|
0Ah Data cache, 8K, 2 way, 32 byte per line
|
|
0Ch Data cache, 16K, 4 way, 32 byte per line
|
|
40h No L2 cache
|
|
41h Unifed L2 cache, 32 byte per line, 4 way, 128KB
|
|
42h Unifed L2 cache, 32 byte per line, 4 way, 256KB
|
|
43h Unifed L2 cache, 32 byte per line, 4 way, 512KB
|
|
44h Unifed L2 cache, 32 byte per line, 4 way, 1MB
|
|
45h Unifed L2 cache, 32 byte per line, 4 way, 2MB
|
|
(Cyrix MediaGX MMX Enhanced)
|
|
70h TLB 32-bit entry, 4 way, 4K cache
|
|
80h L1 cache 4-way associative, 16byte/line
|
|
}
|
|
ELSEIF (EAX = 3) // Pentium III
|
|
{
|
|
EDX:ECX <- Lower 64-bit of 96-bit processor serial number.
|
|
}
|
|
ELSEIF (EAX = 80000000h) // (K5 not SSA/5),K6, Cyrix GXm
|
|
{
|
|
EBX,ECX,EDX <- Undefined
|
|
EAX <- Largest Extended function value recognized by CPUID.
|
|
(Note: Extended CPUID functions started with 80000000h)
|
|
(Example: For AMD 5k86 (K5) = 80000005h )
|
|
}
|
|
|
|
ELSEIF (EAX = 80000001h) // K5,K6,Cyrix GXm,IDT Winchip 2
|
|
{
|
|
EAX <- AMD Processor Signature
|
|
0000051Xh - for AMD 5k86 (K5 not SSA/5)
|
|
0000066Xh - for AMD 6k86 (K6)
|
|
EBX,ECX <- Undefined
|
|
EDX <- Extended Feature Flags
|
|
EDX[0] <- FPU: FPU on Chip
|
|
EDX[1] <- VME: Virtual Mode Extention present
|
|
EDX[2] <- DE: Debbuging Extentions
|
|
EDX[3] <- PSE: CPU support 4MB size pages
|
|
EDX[4] <- TSC: TSC present (See RDTSC command)
|
|
EDX[5] <- MSR: CPU have K5 Compatible MSRs
|
|
or Cyrix Compatible MSRs
|
|
EDX[6] <- PAE: Page Address Extensions
|
|
EDX[7] <- MCE: Machine Check exception
|
|
EDX[8] <- CX8: Support CMPXCHG8B instruction
|
|
EDX[9] <- APIC: CPU have local APIC (must be enabled)
|
|
EDX[10] <- Reserved
|
|
EDX[11] <- SYSCALL and SYSRET Instructions (!)
|
|
EDX[12]<- MTRR: Memory Type Range Registers
|
|
EDX[13]<- Global Paging Extensions (PTE-PGE)
|
|
EDX[14]<- MCA: Machine Check Architecture
|
|
EDX[15]<- CMOV: CPU support CMOV instruction (!)
|
|
EDX[16]<- FCMOV: CPU support FP. FCMOV (!)
|
|
EDX[17]<- PSE: Page Size Extention
|
|
EDX[21..18] <- Reserved
|
|
EDX[22] <- MMXE: CPU Support Extended MMX instructions
|
|
(AMD Athlon)
|
|
EDX[23] <- MMX: CPU support IA MMX
|
|
EDX[24] <- (Cyrix) Cyrix Extended MMX support
|
|
EDX[24] <- (AMD) FXSAVE/FXRSTOR instruction support
|
|
EDX[29..24] <- Reserved
|
|
EDX[30] <- CPU support Extended 3DNow! Instructions
|
|
EDX[31] <- AMD 3DNow! support
|
|
;Note: For AMD K5 = 000021BFh
|
|
For AMD K6 = 008005BFh
|
|
}
|
|
|
|
ELSEIF (EAX = 80000002h,80000003h,80000004h) // AMD K5,K6, Cyrix GXm
|
|
{ // IDT Winchip 2
|
|
EAX, EBX, ECX ,EDX = CPU Name
|
|
|
|
// Note: for AMD K5 (Don't forget x86 is BIG-Endian!!)
|
|
// CPUID(EAX) EAX EBX ECX EDX
|
|
|
|
// 80000002h 2D444D41 7428354B 5020296D 65636F72
|
|
// AMD- K5(r m) P roce
|
|
|
|
// 80000003h 726F7373 00000000 00000000 00000000
|
|
// ssor
|
|
|
|
// 80000004h 00000000 00000000 00000000 00000000
|
|
}
|
|
|
|
ELSEIF (EAX = 80000005h) // AMD K5,K6,Cyrix GXm
|
|
{ // L1 TLB and Cache information
|
|
EAX <- TLB Information (for 2M/4M pages):
|
|
see format of EBX.
|
|
EBX <- TLB Information (for 4K pages):
|
|
EBX[31..24] <- Data TLB: Associativity
|
|
(if Full assocuiativity = FFh)
|
|
see CPUID 80000006h for more datails
|
|
EBX[23..16] <- Data TLB: Number of Entryes
|
|
EBX[15..8] <- Instruction TLB: Associativity
|
|
(if Full assocuiativity = FFh)
|
|
EBX[7..0] <- Instruction TLB: Number of Entryes
|
|
ECX <- L1 Data Cache Information
|
|
ECX[31..24] <- Size in KB
|
|
ECX[23..16] <- Associativity (if full = FFh)
|
|
ECX[15..8] <- Lines per Tag
|
|
ECX[7..0] <- Line size in Bytes
|
|
EDX <- L1 Instruction Cache Information
|
|
ECX[31..24] <- Size in KB
|
|
ECX[23..16] <- Associativity (if full = FFh)
|
|
ECX[15..8] <- Lines per Tag
|
|
ECX[7..0] <- Line size in Bytes
|
|
// Note: after execution CPUID with EAX = 80000005h
|
|
// reg AMD K5 AMD K6
|
|
// EBX 04800000 02800140
|
|
// ECX 08040120 20020220
|
|
// EDX 10040120 20020220
|
|
}
|
|
ELSE THEN (EAX = 80000006h) // K6-III model-9, AMD Athlon
|
|
{ // L2 cache and TLB information
|
|
EAX = 2M/4M Pages and L2 TLB Info
|
|
bits description
|
|
31..28 Associativity (L2 Data TLB)
|
|
0000 L2 off
|
|
0001 Direct Mapped
|
|
0010 2-Way
|
|
0100 4-Way
|
|
0110 8-Way
|
|
1000 16-Way
|
|
1111 Full
|
|
27..16 Number of Entries (L2 Data TLB)
|
|
15..12 Associativity (L2 Instruction or Unifed TLB)
|
|
11..0 Number of entries (L2 Instruction or Unifed TLB)
|
|
EBX = 4K Pages and L2 TLB Info
|
|
bits description
|
|
31..28 Associativity (L2 Data TLB)
|
|
27..16 Number of Entries (L2 Data TLB)
|
|
15..12 Associativity (L2 Instruction or Unifed TLB)
|
|
11..0 Number of entries (L2 Instruction or Unifed TLB)
|
|
ECX = L2 Unifed Cache Info (K6-III: only this field)
|
|
bits description
|
|
31..16 Size (KB)
|
|
15..12 Associativity
|
|
11..8 Lines per tag
|
|
7..0 Line size (bytes)
|
|
EDX = reserved
|
|
}
|
|
ELSE THEN
|
|
{
|
|
EAX,EBX,ECX,EDX <- Undefined
|
|
}
|
|
END.
|
|
|
|
------------------------------------------------------
|
|
Notes: In Tables Below, you may see that Your CPU return other features
|
|
values, so in this tables, values writed on maximal. So possibly
|
|
some features exists on Your CPU, but not activated in time You
|
|
test, so CPUID return less functions that processor really can
|
|
support
|
|
------------------------------------------------------
|
|
Table of STANDART Features (CPUID/EAX=1) by Different Vendors
|
|
|
|
Media
|
|
(Cyrix) 6x86 6x86L GX 6x86MX MII GXm
|
|
EDX[0] <- FPU: + + + + + +
|
|
EDX[1] <- VME: - - - - - -
|
|
EDX[2] <- DE: - + - + + -
|
|
EDX[3] <- PSE: - - - - - -
|
|
EDX[4] <- TSC: - - - + + +
|
|
EDX[5] <- MSR: - - - + + +
|
|
EDX[6] <- PAE: - - - - -
|
|
EDX[6] <- PTE: ?
|
|
EDX[7] <- MCE: - - - - - -
|
|
EDX[8] <- CX8: - + - + + +
|
|
EDX[9] <- APIC: - - - - -
|
|
EDX[10]<- res - - - - - -
|
|
EDX[11]<- SEP: - - - - - -
|
|
EDX[12]<- MTRR: - - - - - -
|
|
EDX[13]<- PGE: - - - + + -
|
|
EDX[14]<- MCA: - - - - - -
|
|
EDX[15]<- CMOV: - - - + + +
|
|
EDX[16]<- PAT: - - - - - -
|
|
EDX[17]<- PSE36:- - - - - -
|
|
EDX[18]<- SN: - - - - - -
|
|
EDX[23]<- MMX: - - - + + +
|
|
EDX[24]<- FXSR: - - - - - -
|
|
EDX[25]<- SIMD: - - - - - -
|
|
|
|
IDT IDT AMD AMD AMD AMD AMD
|
|
(IDT/AMD) C6 C2 K5 K6 K6-2 K6-III Athlon
|
|
EDX[0] <- FPU: + + + + + + +
|
|
EDX[1] <- VME: - - + + + + +
|
|
EDX[2] <- DE: + + + + + + +
|
|
EDX[3] <- PSE: - - + + + + +
|
|
EDX[4] <- TSC: + + + + + + +
|
|
EDX[5] <- MSR: + + + + + + +
|
|
EDX[6] <- PAE: - - - - - - +
|
|
EDX[7] <- MCE: + + + + + + +
|
|
EDX[8] <- CX8: + + + + + + +
|
|
EDX[9] <- APIC: - - - - - x
|
|
EDX[9] <- GPE +
|
|
EDX[10]<- res - - - - - - -
|
|
EDX[11]<- SEP: - - - - - - +
|
|
EDX[12]<- MTRR: - - - - - - +
|
|
EDX[13]<- PGE: - - - - - - +
|
|
EDX[14]<- MCA: - - - - - - +
|
|
EDX[15]<- CMOV: - - - - - - +
|
|
EDX[16]<- PAT: - - - - - - +
|
|
EDX[17]<- PSE36:- - - - - - -
|
|
EDX[18]<- SN: - - - - - - -
|
|
EDX[23]<- MMX: + + - + + + +
|
|
EDX[24]<- FXSR: - - - - - - -
|
|
EDX[25]<- SIMD: - - - - - - -
|
|
|
|
Pentium Pentium Pentium Pentium
|
|
(Intel) Pentium w/MMX Pro II III Celeron
|
|
EDX[0] <- FPU: + + + + + +
|
|
EDX[1] <- VME: + + + + + +
|
|
EDX[2] <- DE: + + + + + +
|
|
EDX[3] <- PSE: + + + + + +
|
|
-------------------------------------------------------
|
|
EDX[4] <- TSC: + + + + + +
|
|
EDX[5] <- MSR: + + + + + +
|
|
EDX[6] <- PAE: - - + + + +
|
|
EDX[7] <- MCE: + + + + + +
|
|
-------------------------------------------------------
|
|
EDX[8] <- CX8: + + + + + +
|
|
EDX[9] <- APIC: (1) (1) (1) (1) (1) (1)
|
|
EDX[10]<- res - - - - ? -
|
|
EDX[11]<- SEP: - - + + + +
|
|
-------------------------------------------------------
|
|
EDX[12]<- MTRR: - - + + + +
|
|
EDX[13]<- PGE: - - + + + +
|
|
EDX[14]<- MCA: - - + + + +
|
|
EDX[15]<- CMOV: - - + + + +
|
|
-------------------------------------------------------
|
|
EDX[16]<- PAT: - - - (2) + +
|
|
EDX[17]<- PSE36:- - - (2) + +
|
|
EDX[18]<- SN: - - - - + -
|
|
EDX[23]<- MMX: - + - + + +
|
|
EDX[24]<- FXSR: - - - (2) + +
|
|
EDX[25]<- SIMD: - - - - + -
|
|
|
|
(1) = Intel produce chips with APIC and w/o APIC.
|
|
(2) = It start to support since "Deschutes" core
|
|
|
|
SL_enh SL_enh WB_Enh Intel Pentium UMC AMD
|
|
i486SX DX/DX2 i486DX2 DX4 OVDR U5S 5x86
|
|
EDX[0] <- FPU: - + + + + - +
|
|
EDX[1] <- VME: + + + + + - -
|
|
EDX[2] <- DE: - - - - + - -
|
|
EDX[3] <- PSE: - - + + + - -
|
|
-------------------------------------------------------
|
|
EDX[4] <- TSC: - - - - + - -
|
|
EDX[5] <- MSR: - - - - + - -
|
|
EDX[6] <- PAE: - - - - - - -
|
|
EDX[7] <- MCE: - - - - - - -
|
|
-------------------------------------------------------
|
|
EDX[8] <- CX8: - - - - + - -
|
|
EDX[9] <- APIC: - - - - - - -
|
|
no need to look higher flags, theys is 0s.
|
|
|
|
------------------------------------------------------
|
|
Table of EXTENDED Features (CPUID/EAX=80000001) by Different
|
|
Vendors
|
|
|
|
Cyrix IDT IDT AMD AMD AMD AMD
|
|
GXm C6 C2 K6 K6-2 K6-III Athlon
|
|
EDX[0] <- FPU: + + + + + + +
|
|
EDX[1] <- VME: - - - + + + +
|
|
EDX[2] <- DE: - + + + + + +
|
|
EDX[3] <- PSE: - - - + + + +
|
|
EDX[4] <- TSC: + + + + + + +
|
|
EDX[5] <- MSR: + + + + + + +
|
|
EDX[6] <- PAE: - - - - - - +
|
|
EDX[7] <- MCE: - + + + + + +
|
|
EDX[8] <- CX8: + + + + + + +
|
|
EDX[9] <- APIC: - - - - - - *
|
|
EDX[10]<- res - - - + - - -
|
|
EDX[11]<- SCL - - - - + + +
|
|
EDX[12]<- MTRR - - - - - - +
|
|
EDX[13]<- GPE - - - - + + +
|
|
EDX[14]<- MCE - - - - - - +
|
|
EDX[15]<- CMOV + - - - - - +
|
|
EDX[16]<- PAT ? - - - - - +
|
|
EDX[17]<- PSE36 - - - - - - -
|
|
EDX[22]<- AMMX - - - - - - +
|
|
EDX[23]<- MMX + + + + + + +
|
|
EDX[24]<- EMMX + - - - - - -
|
|
EDX[30]<- E3D! - - - - - - +
|
|
EDX[31]<- 3D! - - + - + + +
|
|
|
|
Refer to: Appendix B for more informations about CPU codes.
|
|
|
|
Note: On IDT C6 CPU we may set any Identification string and family/model/
|
|
stepping info. (See MSRs 108h,109h for More Details).
|
|
|
|
Here is 3 examples of Information we can may get from CPUID instruction:
|
|
|
|
1) UMC U5S
|
|
Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
|
|
and never support VME
|
|
|
|
Maximum Available of CPUID info entrys:1
|
|
Vendor string is : "UMC UMC UMC "
|
|
|
|
Model Info :
|
|
Stepping ID is : 3
|
|
Model : 2
|
|
Family : 4
|
|
M field : 0
|
|
Compability Flags:
|
|
FPU on Chip :-
|
|
Virtual Mode Extensions present :-
|
|
CPU support I/O breakpoints :-
|
|
CPU support 4MB pages :-
|
|
Time Stamp Counter Presents :-
|
|
CPU have Pentium compatible MSRs :-
|
|
Machine Check Exception Presents :-
|
|
CMPXCHG8B instruction support :-
|
|
APIC on Chip :-
|
|
|
|
2) Intel 486
|
|
Note: All SL Enhanced 486: { i486SX,i486DX,i486DX2 marked '&E' on chip
|
|
surface }, IntelSX2,IntelDX4 support VME !!!!
|
|
But: Sxs never have FPU on chip.
|
|
|
|
Maximum Available of CPUID info entrys:1
|
|
Vendor string is : "GenuineIntel"
|
|
|
|
Model Info :
|
|
Stepping ID is : 0
|
|
Model : 8
|
|
Family : 4
|
|
M field : 0
|
|
Compability Flags:
|
|
FPU on Chip :+
|
|
Virtual Mode Extensions present :+
|
|
CPU support I/O breakpoints :-
|
|
CPU support 4MB pages :-
|
|
Time Stamp Counter Presents :-
|
|
CPU have Pentium compatible MSRs :-
|
|
Machine Check Exception Presents :-
|
|
CMPXCHG8B instruction support :-
|
|
APIC on Chip :-
|
|
|
|
3) Pentium
|
|
Note: P54C may say that build-in APIC not present if it
|
|
not supported by external hardware !!!!! (This data from
|
|
P54C in single processor configuration)
|
|
|
|
Maximum Available of CPUID info entrys:1
|
|
Vendor string is : "GenuineIntel"
|
|
|
|
Model Info :
|
|
Stepping ID is : 1
|
|
Model : 2
|
|
Family : 5
|
|
M field : 0
|
|
Compability Flags:
|
|
FPU on Chip :+
|
|
Virtual Mode Extensions present :+
|
|
CPU support I/O breakpoints :+
|
|
CPU support 4MB pages :+
|
|
Time Stamp Counter Presents :+
|
|
CPU have Pentium compatible MSRs :+
|
|
Machine Check Exception Presents :+
|
|
CMPXCHG8B instruction support :+
|
|
APIC on Chip :-
|
|
|
|
4) Pentium OverDrive
|
|
Note: P24T never have Machine Check Exception
|
|
|
|
Maximum Available of CPUID info entrys:1
|
|
Vendor string is : "GenuineIntel"
|
|
|
|
Model Info :
|
|
Stepping ID is : 1
|
|
Model : 3
|
|
Family : 5
|
|
M field : 1
|
|
Compability Flags:
|
|
FPU on Chip :+
|
|
Virtual Mode Extensions present :+
|
|
CPU support I/O breakpoints :+
|
|
CPU support 4MB pages :+
|
|
Time Stamp Counter Presents :+
|
|
CPU have Pentium compatible MSRs :+
|
|
Machine Check Exception Presents :-
|
|
CMPXCHG8B instruction support :+
|
|
APIC on Chip :-
|
|
|
|
5) AMD Am5x86 (also AMD Enhanced 486).
|
|
|
|
Maximum Available of CPUID info entrys:1
|
|
Vendor string is : "AuthenticAMD"
|
|
|
|
Model Info :
|
|
Stepping ID is : 4
|
|
Model : 15
|
|
Family : 4
|
|
M field : 0
|
|
Compability Flags:
|
|
FPU on Chip :+
|
|
Virtual Mode Extensions present :-
|
|
CPU support I/O breakpoints :-
|
|
CPU support 4MB pages :-
|
|
Time Stamp Counter Presents :-
|
|
CPU have Pentium compatible MSRs :-
|
|
P6 Flag: n/a :-
|
|
Machine Check Exception Presents :-
|
|
CMPXCHG8B instruction support :-
|
|
|
|
6) Pentium Pro (P6)
|
|
|
|
Maximum Available of CPUID info entrys:2 <<-------------- !!!!
|
|
Vendor string is : "GenuineIntel"
|
|
|
|
Model Info :
|
|
Stepping ID is : 1
|
|
Model : 1
|
|
Family : 6
|
|
M field : 0
|
|
Compability Flags:
|
|
FPU on Chip :+
|
|
Virtual Mode Extensions present :+
|
|
CPU support I/O breakpoints :+
|
|
CPU support 4MB pages :+
|
|
Time Stamp Counter Presents :+
|
|
CPU have Pentium compatible MSRs :+
|
|
P6 Flag: n/a :+
|
|
Machine Check Exception Presents :+
|
|
CMPXCHG8B instruction support :+
|
|
APIC on Chip :+
|
|
Reserved :- ; bit 10
|
|
Fast System Call feature :+
|
|
Memory Type Range Regs. support :+
|
|
Page Global Feature support :+
|
|
Machine Check Architecture :+
|
|
CMOVxx instructions support :+
|
|
IA MMX support :+
|
|
|
|
7)
|
|
|
|
Maximum Available of CPUID info entrys:1
|
|
Vendor string is : "CyrixInstead"
|
|
|
|
Compability Flags:
|
|
FPU on Chip :+
|
|
Virtual Mode Extensions present :-
|
|
CPU support I/O breakpoints :+
|
|
CPU support 4MB pages :-
|
|
Time Stamp Counter Presents :+
|
|
CPU have Pentium compatible MSRs :+
|
|
P6 Flag: n/a :+
|
|
Machine Check Exception Presents :-
|
|
CMPXCHG8B instruction support :+
|
|
APIC on Chip :-
|
|
Reserved :-
|
|
Reserved :-
|
|
Memory Type Range Regs. support :-
|
|
Page Global Feature support :+
|
|
Machine Check Architecture :-
|
|
CMOVxx instructions support :+
|
|
IA MMX support :+
|
|
|
|
Note: Some Last NexGen Nx586 support CPUID instruction, but never support ID
|
|
flag in EFALGS, so check it with #UD hook.
|
|
|
|
Note: On Cyrix CPUs need to Enable CPUID instruction, setting CPUIDEN bit
|
|
in CCR4.
|
|
|
|
Note: Cyrix Cx6x86 return on CPUID(1) in EAX next data:
|
|
YYYYXXMMh - where
|
|
YYYY - normally 0s.
|
|
XX - value of control register 0FCh
|
|
(usually 05h, may be changed to any
|
|
other value by user).
|
|
MM - Model Unical Revision (according to DIR0)
|
|
|
|
Note: Cyrix 486s never support CPUID.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Physical Form: CPUID
|
|
COP (Code of Operation): 0FH A2H
|
|
Clocks: 486s & Pentium (EAX=1) : 14
|
|
486s & Pentium (EAX=0 or EAX>1) : 9
|
|
|
|
-----------------------------------------------------------------
|
|
CVTPI2PS - Packed Signed INT32 to Packed Single-FP Conversion
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CVTPI2PS dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- (float) src[<0>];
|
|
dest[<1>] <- (float) src[<1>];
|
|
<0> is 31..0
|
|
<1> is 63..32
|
|
|
|
Physical Form and Timing:
|
|
CVTPI2PS xmm,mm/m64 ---- 0F 2A /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
CVTPS2PI - Packed Single-FP to Packed INT32 Conversion
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CVTPS2PI dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- (int) src[<0>];
|
|
dest[<1>] <- (int) src[<1>];
|
|
src is in Single F.P. format
|
|
<0> is 31..0
|
|
<1> is 63..32
|
|
|
|
Physical Form and Timing:
|
|
CVTPS2PI mm,xmm/m64 ---- 0F 2D /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
CVTSI2SS - Scalar Signed INT32 to Single-FP Conversion
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CVTSI2SS dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- (float) src[<0>];
|
|
<0> is 31..0
|
|
|
|
Physical Form and Timing:
|
|
CVTSI2SS xmm,r/m32 ---- F3 0F 2A /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
CVTSS2SI - Scalae Single-FP to Signed INT32 Conversion
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CVTSS2SI dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- (int) src[<0>];
|
|
src is in Single F.P. format
|
|
<0> is 31..0
|
|
|
|
Physical Form and Timing:
|
|
CVTSS2SI r32,xmm/m32 ---- F3 0F 2D /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
CVTTPS2PI - Packed Single-FP to Packed INT32 Conversion (Truncate)
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CVTTPS2PI dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- (int) src[<0>];
|
|
dest[<1>] <- (int) src[<1>];
|
|
<0> is 31..0
|
|
<1> is 63..32
|
|
|
|
Physical Form and Timing:
|
|
CVTTPS2PI mm,xmm/m64 ---- 0F 2C /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
CVTTSS2SI - Scalar Single-FP to Signed INT32 Conversion (Truncate)
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: CVTTSS2SI dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- (int) src[<0>]
|
|
if conversion is unexact returning truncate value,
|
|
if result > maximal 32-bit value, result will be 0x80000000
|
|
|
|
Physical Form and Timing:
|
|
CVTTSS2SI r32,xmm/m32 ---- F3 0F 2C /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
DIVPS - Packed Single-FP Divide
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: DIVPS dest,src
|
|
|
|
Description:
|
|
dest[<0>] = dest[<0>] / src[<0>];
|
|
dest[<1>] = dest[<1>] / src[<1>];
|
|
dest[<2>] = dest[<2>] / src[<2>];
|
|
dest[<3>] = dest[<3>] / src[<3>];
|
|
|
|
Physical Form and Timing:
|
|
DIVPS xmm1,xmm2/m128 ---- 0F 5E /r ---- 24-106
|
|
|
|
-----------------------------------------------------------------
|
|
DIVSS - Scalar Single-FP. Divide
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: DIVSS dest,src
|
|
|
|
Description:
|
|
dest[<0>] = dest[<0>] / src[<0>];
|
|
|
|
Physical Form and Timing:
|
|
DIVSS xmm1,xmm2/r32 ---- F3 0F 5E /r ---- 7-??
|
|
|
|
---------------------------------------------------
|
|
OPCODE EMMS - Empty MMX State
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: EMMS
|
|
|
|
Description:
|
|
|
|
FloatPointTagWord <- FFFFh
|
|
|
|
Note: The EMMS instruction sets the values of the floating-point (FP) tag
|
|
word to empty (all ones). EMMS marks the registers as available, so
|
|
they can subsequently be used by floating-point instructions.
|
|
If a floating-point instruction loads into one of the registers
|
|
before it has been reset by the EMMS instruction, a floating-point
|
|
stack overflow can occur, which results in a FP exception or incorrect
|
|
result. All other MMX instructions validate the entire FP tag word (all
|
|
zeros).
|
|
This instruction must be used to dear the MMX state at the end of all
|
|
MMX routines, and before calling other routines that may execute
|
|
floating-point instructions.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
EMMS 0FH 77H
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE ESC - Escape Extrnal Cooprocessors
|
|
|
|
CPU: 8086...80386, any Hybrid 486.
|
|
Type of Instruction: User
|
|
|
|
Instruction: ESC Number,R/M
|
|
|
|
Description: This Instruction uses for Link with External Coprocessors
|
|
Such as NPX. External Coprocessors look at command sequence
|
|
at get ESC. CPU give Memory Operand sending to A-bus EA
|
|
doing pseudo-read operation.
|
|
{ If 2nd Operand is Register then Do Nothing,
|
|
If 2nd Operand is Memory then set EA (Effective Address)
|
|
in Address Bus }
|
|
First operand is Part of Command that Ext. coprocessors get.
|
|
|
|
Flags Affected: None
|
|
|
|
Example: ESC 0Fh,DX means FSQRT
|
|
|
|
Note: ESC mnemonic was used for 8086 CPU, later all were used alternative
|
|
mnemonic for cooprocessor instructions, such as FSQRT.
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form:
|
|
COP (Code of Operation) : <1101 1xxx> Postbyte
|
|
|
|
Clocks: ESC n,Reg ESC n,Mem8/Mem16
|
|
8088: 2 8/12+EA
|
|
286: 9-20 9-20
|
|
386: N/A N/A
|
|
486: N/A N/A
|
|
|
|
---------------------------------------------------
|
|
OPCODE EXT - Extract Bit Field
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: EXT start,len
|
|
|
|
Description:
|
|
|
|
AX <- BitField [
|
|
BASE = DS:SI
|
|
START BIT OFFSET = start
|
|
LENGTH = len
|
|
];
|
|
|
|
Note: si and start automatically UPDATE
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form : EXT reg8,reg8
|
|
COP (Code of Operation) : 0FH 33H PostByte
|
|
|
|
Clocks: EXT reg8,reg8
|
|
NEC V20: 26-55
|
|
|
|
---------------------------------------------------
|
|
OPCODE F4X4 - FPU: Multiplicate vector on Matrix 4x4
|
|
|
|
FPU: IIT FPUs.
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: F4X4
|
|
|
|
Description:
|
|
|
|
; This Instruction Multiplicate vector on
|
|
; Matrix 4X4
|
|
|
|
_ _ _ _ _ _
|
|
| | | | | |
|
|
| Xn | | A00 A01 A02 A03 | | X0 |
|
|
| Yn | = | A10 A11 A12 A13 | X | Y0 |
|
|
| Zn | | A20 A21 A22 A23 | | Z0 |
|
|
| Wn | | A30 A31 A31 A33 | | W0 |
|
|
|_ _| |_ _| |_ _|
|
|
|
|
; Data fetches/stores from/to FPU registers:
|
|
|
|
# of F E T C H E S STORE
|
|
Register Bank0 Bank1 Bank2 Bank0
|
|
ST X0 A33 A31 Xn
|
|
ST(1) Y0 A23 A21 Yn
|
|
ST(2) Z0 A13 A11 Zn
|
|
ST(3) W0 A03 A01 Wn
|
|
ST(4) A32 A30
|
|
ST(5) A22 A20
|
|
ST(6) A12 A10
|
|
ST(7) A02 A00
|
|
|
|
Note: See FSBP0,FSBP1,FSBP2 for more information
|
|
|
|
FPU Flags Affected: S
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: F4X4
|
|
COP (Code of Operation): DBH F1H
|
|
Clocks: IIT 2c87 : 242
|
|
IIT 3c87 : 242
|
|
IIT 3c87SX : 242
|
|
|
|
---------------------------------------------------
|
|
OPCODE FCMOVcc - Floating Point Conditional Move
|
|
|
|
CPU: P6
|
|
Type of Instruction: User
|
|
|
|
Instruction: FCMOVcc dest,sorc
|
|
|
|
Description:
|
|
IF condition(cc) is true THEN dest <- sorc;
|
|
|
|
Flags Affected: Int: None
|
|
Fp : None
|
|
|
|
Note: Testing Integer flags:
|
|
|
|
cc Meaning Test Flags Description
|
|
B Below CF=1 <
|
|
NB Not Below CF=0 >=
|
|
E Equal ZF=1 =
|
|
NE Not Equal ZF=0 !=
|
|
BE Below Equal (CF=1 .OR. ZF=1) <=
|
|
NBE Not BelowEqual (CF=0 .AND. ZF=0) >
|
|
U Unordered PF=1
|
|
NU Not Unordered PF!=1
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form & COPs:
|
|
|
|
FCMOVB ST,STi DA C0+i
|
|
FCMOVE ST,STi DA C8+i
|
|
FCMOVBE ST,STi DA D0+i
|
|
FCMOVU ST,STi DA D8+i
|
|
FCMOVNB ST,STi DB C0+i
|
|
FCMOVNE ST,STi DB C8+i
|
|
FCMOVNBE ST,STi DB D0+i
|
|
FCMOVNU ST,STi DB D8+i
|
|
|
|
Clocks: N/A
|
|
|
|
---------------------------------------------------
|
|
OPCODE FCOMI - Floating Point Compare setting Integer Flags
|
|
|
|
CPU: P6
|
|
Type of Instruction: User
|
|
|
|
Instruction: FuCOMIp ST0,STi
|
|
|
|
Description:
|
|
|
|
CASE ( result (compare(ST0,STi) ) OF
|
|
{ ; ZF PF CF
|
|
Not Comparable: 1 1 1
|
|
ST0 > STi : 0 0 0
|
|
ST0 < STi : 0 0 1
|
|
ST0 = STi : 1 0 0
|
|
}
|
|
|
|
CASE ( FP_stack_status ) OF
|
|
{ ; SF
|
|
Overflow : 1
|
|
Underflow : 0
|
|
Otherwize : 0
|
|
}
|
|
|
|
CASE ( instruction ) OF
|
|
{
|
|
FCOMI,FUCOMI : No FP stack adjustment;
|
|
FCOMIP,FUCOMIP : POP ST;
|
|
}
|
|
|
|
Flags Affected: Int: CF,ZF,PF,SF
|
|
Fp : None
|
|
|
|
Note: In any case Sign of zero Ignored , so +0.0 = -0.0
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form & COPs:
|
|
|
|
FCOMI ST0,STi DB F0+i
|
|
FCOMIP ST0,STi DF F0+i
|
|
FUCOMI ST0,STi DB E8+i
|
|
FUCOMIP ST0,STi DF E8+i
|
|
|
|
Clocks: N/A
|
|
|
|
-----------------------------------------------
|
|
OPCODE FEMMS - Faster Enter/Exit of MMX of F.P. state
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: FEMMS (no operands)
|
|
|
|
Description:
|
|
|
|
Clear MMX state after MMX instructions.
|
|
(FPU.TAG <- FFFFh).
|
|
Faster version of EMMS.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
FEMMS 0FH 0EH
|
|
|
|
---------------------------------------------------
|
|
OPCODE FINT - Finished Interrupt
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: FINT
|
|
|
|
Description:
|
|
Inticate to Internal Interrupt controller that
|
|
interrupt service Routine is completed. (EOI)
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: FINT
|
|
COP (Code of Operation) : 0Fh 92h
|
|
|
|
Clocks: 2
|
|
|
|
---------------------------------------------------
|
|
OPCODE FNDISI - Disable NPX Interrupt
|
|
|
|
FPU: i8087 only
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FNDISI
|
|
|
|
Description:
|
|
|
|
CW.IEM <- 1; // Enable NPX interrupt
|
|
|
|
Note: IEM is 7 of FPU.CW
|
|
|
|
FPU Flags Affected: None
|
|
|
|
CPU mode: 8087 support just real mode
|
|
|
|
Physical Form: FNDISI
|
|
COP (Code of Operation): DBH E1H
|
|
Clocks: i8087 5
|
|
|
|
---------------------------------------------------
|
|
OPCODE FNENI - Enable NPX Interrupt
|
|
|
|
FPU: i8087 only
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FNENI
|
|
|
|
Description:
|
|
|
|
CW.IEM <- 0; // Enable NPX interrupt
|
|
|
|
Note: IEM is 7 of FPU.CW
|
|
|
|
FPU Flags Affected: None
|
|
|
|
CPU mode: 8087 support just real mode
|
|
|
|
Physical Form: FNENI
|
|
COP (Code of Operation): DBH E0H
|
|
Clocks: i8087 5
|
|
|
|
---------------------------------------------------
|
|
OPCODE FNSTDW - FPU Not wait Store Device Word register
|
|
|
|
FPU: i387SL Mobile
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FNSTDW dest
|
|
|
|
Description:
|
|
|
|
dest <- Device Word
|
|
|
|
Format of Device word:
|
|
bit(s) Description
|
|
0-7 Reserved
|
|
8 S - Status bit:
|
|
if S=1 then FP device is a static design and OS
|
|
or APM Bios may set CLK slow to 0 Mhz without
|
|
lost any data.
|
|
9-15 Reserved
|
|
|
|
Note: Device word register valid only after FNINIT
|
|
|
|
FPU Flags Affected: None
|
|
|
|
CPU mode: Any
|
|
|
|
Physical Form: FNSTDW AX
|
|
COP (Code of Operation): DFH E1H
|
|
Clocks: i387SL Mobile: 13
|
|
|
|
---------------------------------------------------
|
|
OPCODE FNSTSG - FPU Not wait Store Signature Word register
|
|
|
|
FPU: i387SL Mobile
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FNSTSG dest
|
|
|
|
Description:
|
|
|
|
dest <- Signature Word
|
|
|
|
Format of Signature word:
|
|
bit(s) Description
|
|
3-0 Revision
|
|
7-4 Steppin
|
|
11-8 Family
|
|
15-12 Version
|
|
|
|
Note:
|
|
For i387(tm) SL Mobile Signature is:
|
|
Version = 2
|
|
Family = 3 ; 387
|
|
Stepping = 1 ; Ax step
|
|
Revision = 0 ; x0 step
|
|
i.e i387(tm) SL is A0 step
|
|
|
|
Note: This FPU is out of life
|
|
|
|
Note: Signature word register valid only after FNINIT
|
|
|
|
FPU Flags Affected: None
|
|
|
|
CPU mode: Any
|
|
|
|
Physical Form: FNSTSG AX
|
|
COP (Code of Operation): DFH E2H
|
|
Clocks: i387SL Mobile: 13
|
|
|
|
---------------------------------------------------
|
|
OPCODE FPO2 - Floating Point Operations 2nd Way
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: FPO2 fp_op,mem
|
|
|
|
Description:
|
|
This instruction was building for sending FP commands to
|
|
NEC NPX which never be realized
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form : FPO2 imm4,reg/mem
|
|
COP (Code of Operation) :
|
|
If imm4 in range 0-7 then
|
|
66H mmFFFMMM there FFF is imm4.
|
|
If imm4 in range 7-F then
|
|
67H mmFFFMMM there FFF is imm4.
|
|
|
|
Clocks: FPO2 imm4,reg/mem
|
|
NEC V20: 2/11
|
|
|
|
---------------------------------------------------
|
|
OPCODE FRICHOP - FPU: Round to Integer chop method
|
|
|
|
FPU: Cyrix FPUs and 486s with FPU on chip
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FRICHOP
|
|
|
|
Description:
|
|
|
|
ST <- ROUND ( ST,CHOP )
|
|
|
|
Note:
|
|
This instruction calculate rounding ST toward zero
|
|
i.e. ignoring part righter that decimal .
|
|
|
|
Examples:
|
|
|
|
1.2 -> 1.0
|
|
-1.2 -> -1.0
|
|
3.0 -> 3.0
|
|
0.0 -> 0.0
|
|
1.5 -> 1.0
|
|
-2.0 -> -2.0
|
|
|
|
FPU Flags Affected: S,P,D,I,C1
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: FRICHOP
|
|
COP (Code of Operation): DDH FCH
|
|
Clocks: Cx83D87 : 15
|
|
Cx83S87 : 15
|
|
CxEMC87 : 15
|
|
Cx487DLC :
|
|
|
|
---------------------------------------------------
|
|
OPCODE FRINEAR - FPU: Round to Integer Nearest method
|
|
|
|
FPU: Cyrix FPUs and 486s with FPU on chip
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FRINEAR
|
|
|
|
Description:
|
|
|
|
ST <- ROUND ( ST,NEAREST )
|
|
|
|
Note:
|
|
This instruction calculate rounding ST toward nearest
|
|
|
|
Examples:
|
|
|
|
1.2 -> 1.0
|
|
-1.2 -> -1.0
|
|
3.0 -> 3.0
|
|
0.0 -> 0.0
|
|
1.5 -> 1.0
|
|
1.8 -> 2.0
|
|
-2.0 -> -2.0
|
|
|
|
FPU Flags Affected: S,P,D,I,C1
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: FRINEAR
|
|
COP (Code of Operation): DFH FCH
|
|
Clocks: Cx83D87 : 15
|
|
Cx83S87 : 15
|
|
CxEMC87 : 15
|
|
Cx487DLC :
|
|
|
|
---------------------------------------------------
|
|
OPCODE FRINT2 - FPU: Round to Integer
|
|
|
|
FPU: Cyrix FPUs and 486s with FPU on chip
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FRINT2
|
|
|
|
Description:
|
|
|
|
IF ( exact half ) THEN
|
|
{
|
|
ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
|
|
}
|
|
ELSE
|
|
{
|
|
ST <- ROUND ( ST,NEAREST )
|
|
}
|
|
END
|
|
|
|
Note:
|
|
This instruction calculate rounding ST toward nearest,
|
|
but if number is exact half then this instruction round
|
|
it toward signed infinity. Sign of this infinity is same
|
|
with sign of number.
|
|
|
|
Examples:
|
|
|
|
1.2 -> 1.0
|
|
-1.2 -> -1.0
|
|
3.0 -> 3.0
|
|
0.0 -> 0.0
|
|
1.5 -> 2.0
|
|
1.8 -> 2.0
|
|
-2.0 -> -2.0
|
|
-1.5 -> -2.0
|
|
|
|
FPU Flags Affected: S,P,D,I,C1
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: FRINT2
|
|
COP (Code of Operation): DBH FCH
|
|
Clocks: Cx83D87 : 15
|
|
Cx83S87 : 15
|
|
CxEMC87 : 15
|
|
Cx487DLC :
|
|
|
|
---------------------------------------------------
|
|
OPCODE FRSTPM - FPU Reset Protected Mode
|
|
|
|
FPU: i287XL i287XLT
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FRSTPM
|
|
|
|
Description:
|
|
|
|
Reset Cooprocessor from Protected Mode
|
|
to Real Address mode.
|
|
|
|
FPU Flags Affected: None
|
|
|
|
CPU mode:Any ???
|
|
|
|
Physical Form: FRSTPM
|
|
COP (Code of Operation): DBH E5H
|
|
Clocks: i287XL : 12
|
|
i287XLT : 12
|
|
|
|
---------------------------------------------------
|
|
OPCODE FSBP0 - FPU: Set Bank pointer to Bank # 0
|
|
|
|
FPU: IIT FPUs.
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FSBP0
|
|
|
|
Description:
|
|
|
|
; This Instruction set current bank pointer to
|
|
; Bank # 0.
|
|
|
|
; Each bank contain eight 80bit registers
|
|
; There are 3 banks (0,1,2) in Chip
|
|
|
|
; After initialization FPU select bank # 0.
|
|
|
|
FPU Flags Affected: None
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: FSBP0
|
|
COP (Code of Operation): DBH E8H
|
|
Clocks: IIT 2c87 : 6
|
|
IIT 3c87 : 6
|
|
IIT 3c87SX : 6
|
|
|
|
---------------------------------------------------
|
|
OPCODE FSBP1 - FPU: Set Bank pointer to Bank # 1
|
|
|
|
FPU: IIT FPUs.
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FSBP1
|
|
|
|
Description:
|
|
|
|
; This Instruction set current bank pointer to
|
|
; Bank # 1.
|
|
|
|
; Each bank contain eight 80bit registers
|
|
; There are 3 banks (0,1,2) in Chip
|
|
|
|
; After initialization FPU select bank # 0.
|
|
|
|
FPU Flags Affected: None
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: FSBP1
|
|
COP (Code of Operation): DBH EBH
|
|
Clocks: IIT 2c87 : 6
|
|
IIT 3c87 : 6
|
|
IIT 3c87SX : 6
|
|
|
|
---------------------------------------------------
|
|
OPCODE FSBP2 - FPU: Set Bank pointer to Bank # 2
|
|
|
|
FPU: IIT FPUs.
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FSBP2
|
|
|
|
Description:
|
|
|
|
; This Instruction set current bank pointer to
|
|
; Bank # 2.
|
|
|
|
; Each bank contain eight 80bit registers
|
|
; There are 3 banks (0,1,2) in Chip
|
|
|
|
; After initialization FPU select bank # 0.
|
|
|
|
FPU Flags Affected: None
|
|
|
|
FPU mode: Any
|
|
|
|
Physical Form: FSBP2
|
|
COP (Code of Operation): DBH EAH
|
|
Clocks: IIT 2c87 : 6
|
|
IIT 3c87 : 6
|
|
IIT 3c87SX : 6
|
|
|
|
---------------------------------------------------
|
|
OPCODE FSETPM - FPU Set Protected Mode Adressing
|
|
|
|
FPU: 80287, i287XL i287XLT
|
|
Type of Instruction: FPU instruction
|
|
|
|
Instruction: FRSTPM
|
|
|
|
Description:
|
|
|
|
Setup Coprocessor for addressing in Protected mode
|
|
|
|
FPU Flags Affected: None
|
|
|
|
CPU mode:Any ???
|
|
|
|
Physical Form: FSETPM
|
|
COP (Code of Operation): DBH E4H
|
|
Clocks: i287XL : 12
|
|
i287XLT : 12
|
|
|
|
---------------------------------------------------
|
|
OPCODE FXRSTOR - Fast Restore F.P. Context
|
|
|
|
CPU: Katmai/Deschutes (IA MMX-2)
|
|
Type of Instruction: User
|
|
|
|
Instruction: FXRSTOR src
|
|
|
|
Description:
|
|
Fast Restore 94 (16-bit mode) or 108 (32-bit mode) byte of
|
|
F.P. context to memory.
|
|
Format of context as in standart x86 instruction: FSAVE.
|
|
|
|
Note: Check CPUID, EAX=1, bit 24 for knew CPU support this feature.
|
|
And then look at CR4.bit9.
|
|
|
|
Note: See FXSAVE for more information
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: any
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form & COPs:
|
|
|
|
FXRSTOR mem512byte 0F AE mm001mmm
|
|
|
|
Clocks: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE FXSAVE - Fast Save F.P. Context
|
|
|
|
CPU: Pentium II (Deschutes) +
|
|
Type of Instruction: User
|
|
|
|
Instruction: FXSAVE dest
|
|
|
|
Description:
|
|
Fast Save 94 (16-bit mode) or 108 (32-bit mode) byte of
|
|
F.P. context to memory.
|
|
Format of context as in standart x86 instruction: FSAVE.
|
|
|
|
Note: Check CPUID, EAX=1, bit 24 for knew CPU support this feature.
|
|
And then look at CR4.bit9.
|
|
|
|
Format of F.P./MMX Save Area:
|
|
Offset
|
|
(hex) Size Description
|
|
+00 WORD FCW (Control word)
|
|
+02 WORD FSW (Status word)
|
|
+04 WORD FTW (Tag word)
|
|
+06 WORD FOP (lower 11-bit F.P. opcode)
|
|
+08 DWORD IP (F.P. Instruction pointer)
|
|
+0C WORD CS
|
|
+10 DWORD DP (F.P. Data pointer)
|
|
+14 WORD DS
|
|
+18 DWORD MXCSR (Pentium III+)
|
|
see LDMXCSR instruction for more info
|
|
+20 TBYTE ST0/MM0
|
|
+30 TBYTE ST1/MM1
|
|
+40 TBYTE ST2/MM2
|
|
+50 TBYTE ST3/MM3
|
|
+60 TBYTE ST4/MM4
|
|
+70 TBYTE ST5/MM5
|
|
+80 TBYTE ST6/MM6
|
|
+90 TBYTE ST7/MM7
|
|
|
|
+A0 16BYTE XMM0 (Pentium III+)
|
|
+B0 16BYTE XMM1 (Pentium III+)
|
|
+C0 16BYTE XMM2 (Pentium III+)
|
|
+D0 16BYTE XMM3 (Pentium III+)
|
|
+E0 16BYTE XMM4 (Pentium III+)
|
|
+F0 16BYTE XMM5 (Pentium III+)
|
|
+100 16BYTE XMM6 (Pentium III+)
|
|
+110 16BYTE XMM7 (Pentium III+)
|
|
|
|
All other fields are reserved.
|
|
Full length of Save/Restore area is 512 byte. (200h)
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: any
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form & COPs:
|
|
|
|
FXSAVE mem512byte 0F AE mm000mmm
|
|
|
|
Clocks: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE IBTS - Insert Bits String
|
|
|
|
CPU: 80386 step A0-B0 only
|
|
Type of Instruction: User
|
|
|
|
Instruction: IBTS base,bitoffset,len,sorc
|
|
|
|
Description:
|
|
Write bit string length <len> bits from
|
|
<sorc> [bits <len> .. 0 ] (lowest bits) to bitfield,
|
|
defined by <base> and bitsoffset <bitoffset> from this base
|
|
to start of the field to write. String write from this start
|
|
field bit to higher memory addresses or register bits.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM,VM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: IBTS r/m16,AX,CL,r16
|
|
IBTS r/m32,EAX,CL,r32
|
|
COP (Code of Operation) : 0FH A7H Postbyte
|
|
|
|
Clocks: IBTS
|
|
80386: 12/19
|
|
|
|
---------------------------------------------------
|
|
OPCODE ICEBP - PWI Mode BreakPoint, ICE address space
|
|
|
|
CPU: IBM 486SLC2
|
|
Type of Instruction: System
|
|
|
|
Instruction: ICEBP
|
|
|
|
Description:
|
|
|
|
IF (condition) THEN ; see condition below
|
|
{
|
|
SAVE STATUS OF EXECUTION TO ICE space;
|
|
ENTER SMM;
|
|
}
|
|
ELSE
|
|
{
|
|
INT 1;
|
|
}
|
|
END
|
|
|
|
Note: This condition can be set before execution this instruction:
|
|
CPL=0
|
|
MSR1000H.EPCEA=1
|
|
MSR1000H.EPWI=1
|
|
|
|
See Appendix X for more info.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM0
|
|
|
|
Physical Form: ICEBP
|
|
COP (Code of Operation): F1H
|
|
Clocks: IBM 486SLC2 : 460
|
|
|
|
---------------------------------------------------
|
|
OPCODE ICEBP - In-Circuit Emulator Breakpoint
|
|
|
|
CPU: some models of i486, i386, Pentium, Pentium Pro
|
|
Type of Instruction: System
|
|
|
|
Instruction: ICEBP
|
|
|
|
Description:
|
|
|
|
IF (condition) THEN ; see condition below
|
|
{
|
|
CHANGED TO THE ICE instruction mode;
|
|
}
|
|
ELSE
|
|
{
|
|
INT 1;
|
|
}
|
|
END
|
|
|
|
Note: 386/486: Condition is DR7.bit12=1
|
|
(CPU must be supported ICE).
|
|
|
|
Note: This instruction very usefull to debbuging as Single-Byte Interrupt
|
|
but it generate never int 3, but int 1.
|
|
|
|
Note: On Pentium Interrupt redirection initiately disabled on PMCR
|
|
(Probe Mode Control Register), which is only accessable via debug port
|
|
i.e. Need external hardware for enable normal ICEBP execution.
|
|
|
|
Note: On Pentium Pro situation is the same.
|
|
But in Pentium Pro Intel named this instruction INT01.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM0
|
|
|
|
Physical Form: ICEBP
|
|
COP (Code of Operation): F1H
|
|
Clocks: : N/A
|
|
|
|
---------------------------------------------------
|
|
OPCODE ICERET - Return from PWI mode, ICE space
|
|
|
|
CPU: IBM 486SLC2
|
|
Type of Instruction: System Operation
|
|
(Work only then CPL=0)
|
|
|
|
Instruction: ICERET
|
|
|
|
Description:
|
|
Load All Registers (Include Shadow Registers) from Table
|
|
Which Begin on place pointed ES:EDI, and return from PWI
|
|
mode.
|
|
|
|
Format of ICERET Table:
|
|
|
|
Offset Len Description
|
|
0H 4 CR0
|
|
4H 4 EFLAGS
|
|
8H 4 EIP
|
|
CH 4 EDI
|
|
10H 4 ESI
|
|
14H 4 EBP
|
|
18H 4 ESP
|
|
1CH 4 EBX
|
|
20H 4 EDX
|
|
24H 4 ESX
|
|
28H 4 EAX
|
|
2CH 4 DR6
|
|
30H 4 DR7
|
|
34H 4 TR (16 bit, zero filled up)
|
|
38H 4 LDT ---------
|
|
3CH 4 GS ---------
|
|
40H 4 FS ---------
|
|
44H 4 DS ---------
|
|
48H 4 SS ---------
|
|
4CH 4 CS ---------
|
|
50H 4 ES ---------
|
|
54H 4 TSS.attrib
|
|
58H 4 TSS.base
|
|
5CH 4 TSS.limit
|
|
60H 4 Reserved
|
|
64H 4 IDT.base
|
|
68H 4 IDT.limit
|
|
6CH 4 REP OUTS overrun flag
|
|
70H 4 GDT.base
|
|
74H 4 GDT.limit
|
|
78H 4 LDT.attrib
|
|
7CH 4 LDT.base
|
|
80H 4 LDT.limit
|
|
84H 4 GS.attrib
|
|
88H 4 GS.base
|
|
8CH 4 GS.limit
|
|
90H 4 FS.attrib
|
|
94H 4 FS.base
|
|
98H 4 FS.limit
|
|
9CH 4 DS.attrib
|
|
A0H 4 DS.base
|
|
A4H 4 DS.limit
|
|
A8H 4 SS.attrib
|
|
ACH 4 SS.base
|
|
B0H 4 SS.limit
|
|
B4H 4 CS.attrib
|
|
B8H 4 CS.base
|
|
BCH 4 CS.limit
|
|
C0H 4 ES.attrib
|
|
C4H 4 ES.base
|
|
C8H 4 ES.limit
|
|
Unknown Unusable area
|
|
;; Temporary registers:
|
|
100H 4 TST
|
|
104H 4 IDX
|
|
108H 4 TMPH
|
|
10CH 4 TMPG
|
|
110H 4 TMPF
|
|
114H 4 TMPE
|
|
118H 4 TMPD
|
|
11CH 4 TMPC
|
|
120H 4 TMPB
|
|
124H 4 TMPA
|
|
|
|
128H 4 CR2
|
|
12CH 4 CR3
|
|
130H 4 MSR1001H (31-0)
|
|
134H 4 MSR1001H (63-32)
|
|
138H 4 MSR1000H (15-0)
|
|
13CH 4 DR0
|
|
140H 4 DR1
|
|
144H 4 DR2
|
|
148H 4 DR3
|
|
14CH 4 PEIP
|
|
Length of table is 150H bytes.
|
|
|
|
see Appendix X for more info.
|
|
|
|
Note: For descriptor format refer to LOADALL and RES3 instructions.
|
|
|
|
Flags Affected: All (FLAGS Register Reload)
|
|
|
|
CPU mode: SMM
|
|
|
|
Physical Form: ICERET
|
|
COP (Code of Operation): 0FH 07H Note: Code is same with Intel's LOADALL
|
|
Clocks: IBM 486SLC2 : 440
|
|
|
|
---------------------------------------------------
|
|
OPCODE INS - Insert Bit String
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: INS start,len
|
|
|
|
Description:
|
|
|
|
BitField [ BASE = ES:DI
|
|
START BIT OFFSET = start
|
|
LENGTH = len
|
|
] <- AX [ bits= (len-1)..0]
|
|
|
|
Note: di and start automatically UPDATE
|
|
Note: Alternative Name of this instruction is NECINS
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form : INS reg8,reg8
|
|
COP (Code of Operation) : 0FH 31H PostByte
|
|
|
|
Clocks: INS reg8,reg8
|
|
NEC V20: 31-117
|
|
|
|
---------------------------------------------------
|
|
OPCODE INVD - Invalidate Cache Buffer
|
|
|
|
CPU: I486 +
|
|
Type of Instruction: System
|
|
|
|
Instruction: INVD
|
|
|
|
Description:
|
|
|
|
FLUSH INTERNAL CACHE
|
|
( It means that all lines of internal caches sets as
|
|
invalid )
|
|
SIGNAL EXTERNAL CACHE TO FLUSH
|
|
|
|
Notes: This instruction not work in Real Mode and in
|
|
Protected mode work only in ring 0 ;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: PM0,SMM?
|
|
|
|
Physical Form: INVD
|
|
COP (Code of Operation): 0FH 08H
|
|
Clocks: Cyrix Cx486SLC : 4
|
|
i486 : 4
|
|
Pentium : 15
|
|
|
|
---------------------------------------------------
|
|
OPCODE INVLPG - Invalidate Page Entry In TLB
|
|
|
|
CPU: I486 +
|
|
Type of Instruction: System
|
|
|
|
Instruction: INVLPG mem
|
|
|
|
Description:
|
|
|
|
IF found in data or code (if both) (or common if single)
|
|
TLB entry with linear address (page part) same as
|
|
memory operand <mem> then mark this entry as Invalid;
|
|
|
|
Notes: This instruction not work in Real Mode and in
|
|
Protected mode work only in ring 0 ;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Physical Form: INVLPG mem
|
|
COP (Code of Operation): 0FH 01H mm111mmm
|
|
Clocks: Cyrix Cx486SLC : 4
|
|
i486 : 12 if hit
|
|
: 11 if not hit
|
|
Pentium : 25
|
|
|
|
---------------------------------------------------
|
|
OPCODE JMPE - Jump and change to 64-bit ISA.
|
|
|
|
CPU: Merced
|
|
Type of Instruction: User
|
|
|
|
Instruction: JMPX dest_addr
|
|
|
|
Description:
|
|
|
|
This instruction make jump to specified address, and
|
|
change execution mode from IA-32 to IA-64.
|
|
(So address must be 16-byte aligned).
|
|
|
|
Note: The other method to cnange execution mode to IA-64 is interrupt
|
|
to 64-bit code or IRET in IA-32 routine, which will be called from
|
|
IA-64.
|
|
|
|
back to IA-32 mode using commands: br.ia, rti and via interrupt.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: IA-32
|
|
|
|
Physical Form: JMPX rel16/rel32 0F B8 rel16/rel32
|
|
JMPX r/m(16/32) 0F 00 /6
|
|
COP (Code of Operation):
|
|
|
|
Clocks: Merced :
|
|
|
|
-----------------------------------------------------------------
|
|
LDMXCSR - Load Streaming SIMD Extension Control/Status
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: LDMXCSR src
|
|
|
|
Description:
|
|
MXCSR <- src;
|
|
Format of MXCSR:
|
|
Bits Description
|
|
31..16 Reserved
|
|
15 FZ (Flush to Zero)
|
|
14..13 RC (Round Control)
|
|
00 Round to nearest (even)
|
|
01 Round down (to minius infinity)
|
|
10 Round up (to positive infinity)
|
|
11 Round toward zero (Truncate)
|
|
12 PM (SIMD numeric exception masks)
|
|
11 UM
|
|
10 OM
|
|
9 ZM
|
|
8 DM
|
|
7 IM
|
|
6 Reserved
|
|
5 PE (SIMD numeric exceptions)
|
|
4 UE
|
|
3 OE
|
|
2 ZE
|
|
1 DE
|
|
0 IE
|
|
|
|
Physical Form and Timing:
|
|
LDMXCSR m32 ---- 0F AE /2 ---- ??
|
|
|
|
---------------------------------------------------
|
|
OPCODE LOADALL - Load All Registers
|
|
|
|
CPU: Intel 386+ +all clones
|
|
Type of Instruction: System
|
|
(Work only then CPL=0)
|
|
|
|
Instruction: LOADALL
|
|
|
|
Description:
|
|
Load All Registers (Include Shadow Registers) from Table
|
|
Which Begin on place pointed ES:EDI
|
|
|
|
Format of LOADALL Table:
|
|
|
|
Offset Len Description
|
|
0H 4 CR0
|
|
4H 4 EFLAGS
|
|
8H 4 EIP
|
|
CH 4 EDI
|
|
10H 4 ESI
|
|
14H 4 EBP
|
|
18H 4 ESP
|
|
1CH 4 EBX
|
|
20H 4 EDX
|
|
24H 4 ESX
|
|
28H 4 EAX
|
|
2CH 4 DR6
|
|
30H 4 DR7
|
|
34H 4 TR (16 bit, zero filled up)
|
|
38H 4 LDT ---------
|
|
3CH 4 GS ---------
|
|
40H 4 FS ---------
|
|
44H 4 DS ---------
|
|
48H 4 SS ---------
|
|
4CH 4 CS ---------
|
|
50H 4 ES ---------
|
|
54H 4 TSS.attrib
|
|
58H 4 TSS.base
|
|
5CH 4 TSS.limit
|
|
60H 4 0s
|
|
64H 4 IDT.base
|
|
68H 4 IDT.limit
|
|
6CH 4 0s
|
|
70H 4 GDT.base
|
|
74H 4 GDT.limit
|
|
78H 4 LDT.attrib
|
|
7CH 4 LDT.base
|
|
80H 4 LDT.limit
|
|
84H 4 GS.attrib
|
|
88H 4 GS.base
|
|
8CH 4 GS.limit
|
|
90H 4 FS.attrib
|
|
94H 4 FS.base
|
|
98H 4 FS.limit
|
|
9CH 4 DS.attrib
|
|
A0H 4 DS.base
|
|
A4H 4 DS.limit
|
|
A8H 4 SS.attrib
|
|
ACH 4 SS.base
|
|
B0H 4 SS.limit
|
|
B4H 4 CS.attrib
|
|
B8H 4 CS.base
|
|
BCH 4 CS.limit
|
|
C0H 4 ES.attrib
|
|
C4H 4 ES.base
|
|
C8H 4 ES.limit
|
|
CCH 4 Length of table
|
|
D0H 30h Unused,not loaded
|
|
100H 4 Temporary Register IST
|
|
104H 4 Temporary Register I
|
|
108H 4 Temporary Register H
|
|
10CH 4 Temporary Register G
|
|
110H 4 Temporary Register F
|
|
114H 4 Temporary Register E
|
|
118H 4 Temporary Register D
|
|
11CH 4 Temporary Register C
|
|
120H 4 Temporary Register B
|
|
124H 4 Temporary Register A
|
|
|
|
Format of Attrib field:
|
|
|
|
Byte Description
|
|
0 0s
|
|
1 AR (Access Right) byte in the Descriptor format
|
|
Note:
|
|
P bit is a valid bit
|
|
if valid bit=0 then Shadow Register is invalid and
|
|
INT 0DH - General Protection Fault call
|
|
DPL of SS,CS det. CPL
|
|
2-3 0s
|
|
|
|
Flags Affected: All (FLAGS Register Reload)
|
|
|
|
CPU mode: RM,PM0
|
|
|
|
Physical Form: LOADALL
|
|
COP (Code of Operation): 0FH 07H
|
|
Clocks: i386XX : n/a
|
|
i486XX : n/a
|
|
|
|
Note: This operation used 102 data transfer cycles on 32bit bus
|
|
Typical clocks:
|
|
i386SX: ~350
|
|
i386DX: ~290
|
|
i486XX: ~220
|
|
|
|
---------------------------------------------------
|
|
OPCODE LOADALL - Load All Registers From Table
|
|
|
|
CPU: Intel 80286 and all its clones
|
|
Type of Instruction: System
|
|
(Work only then CPL=0)
|
|
|
|
Instruction: LOADALL
|
|
|
|
Description:
|
|
Load All Registers (Include Shadow Registers) from Table
|
|
Which Begin on 000800H Address, Len of this table is
|
|
66H
|
|
|
|
Format of LOADALL Table:
|
|
|
|
Address Len Description
|
|
800H 6 None
|
|
806H 2 MSW
|
|
808H 14 None
|
|
816H 2 TR
|
|
818H 2 FLAGS
|
|
81AH 2 IP
|
|
81CH 2 LDTR
|
|
81EH 2 DS
|
|
820H 2 SS
|
|
822H 2 CS
|
|
824H 2 ES
|
|
826H 2 DI
|
|
828H 2 SI
|
|
82AH 2 BP
|
|
82CH 2 SP
|
|
82EH 2 BX
|
|
830H 2 DX
|
|
832H 2 CX
|
|
834H 2 AX
|
|
836H 6 ES Shadow Descriptor
|
|
83CH 6 CS Shadow Descriptor
|
|
842H 6 SS Shadow Descriptor
|
|
848H 6 DS Shadow Descriptor
|
|
84EH 6 GDTR
|
|
854H 6 LDT Shadow Descriptor
|
|
85AH 6 IDTR
|
|
860H 6 TSS Shadow Descriptor
|
|
|
|
Format of Shadow Descriptor:
|
|
|
|
Byte Description
|
|
0-2 24bit Phisical Address
|
|
3 AR (Access Right) byte
|
|
4-5 16bit Segment Limit
|
|
|
|
Format of GDTR and IDTR:
|
|
|
|
Byte Description
|
|
0-2 24bit Phisical Address
|
|
3 0s
|
|
4-5 16bit Segment Limit
|
|
|
|
Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
|
|
PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never support this
|
|
instruction.
|
|
|
|
Flags Affected: All (FLAGS Register Reload)
|
|
|
|
CPU mode: RM,PM0
|
|
|
|
Physical Form: LOADALL
|
|
COP (Code of Operation): 0FH 05H
|
|
Clocks: 80286 : 195
|
|
|
|
-----------------------------------------------------------------
|
|
MASKMOVQ - Byte Mask Write
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), Athlon+ (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: MASKMOVQ src,mask
|
|
|
|
Description:
|
|
#define MOVE_BYTE(check_bit,move_bits)
|
|
if (mask[check_bit] == 1) mem64[EDI][move_bits] = src[move_bits];
|
|
else mem64[EDI][move_bits] = 0;
|
|
endif;
|
|
#enddef
|
|
MOVE_BYTE(7 , 7..0);
|
|
MOVE_BYTE(15, 15..8);
|
|
MOVE_BYTE(23, 23..16);
|
|
MOVE_BYTE(31, 31..24);
|
|
MOVE_BYTE(39, 39..32);
|
|
MOVE_BYTE(47, 47..40);
|
|
MOVE_BYTE(55, 55..48);
|
|
MOVE_BYTE(63, 63..56);
|
|
|
|
Physical Form and Timing:
|
|
MASKMOVQ mm1,mm2 ---- 0F F7 /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
MAXPS - Packed Single-FP Maximum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MAXPS dest,src
|
|
|
|
Description:
|
|
par for i=0 to 3 do
|
|
if dest[<i>] is NaN then dest[<i>] <- src[<i>];
|
|
if src[<i>] is NaN then dest[<i>] <- src[<i>];
|
|
if src[<i>] >= dest[<i>] then dest[<i>] <- src[<i>];
|
|
endfor;
|
|
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MAXPS xmm1,xmm2/m128 ---- 0F 5F /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
MAXSS - Scalar Single-FP Maximum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MAXSS dest,src
|
|
|
|
Description:
|
|
if dest[<0>] is NaN then dest[<0>] <- src[<0>];
|
|
if src[<0>] is NaN then dest[<0>] <- src[<0>];
|
|
if src[<0>] >= dest[<0>] then dest[<0>] <- src[<0>];
|
|
|
|
Physical Form and Timing:
|
|
MAXSS xmm1,xmm2/m32 ---- F3 0F 5F /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
MINPS - Packed Single-FP Minimum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MINPS dest,src
|
|
|
|
Description:
|
|
par for i=0 to 3 do
|
|
if dest[<i>] is NaN then dest[<i>] <- src[<i>];
|
|
if src[<i>] is NaN then dest[<i>] <- src[<i>];
|
|
if src[<i>] < dest[<i>] then dest[<i>] <- src[<i>];
|
|
endfor;
|
|
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MINPS xmm1,xmm2/m128 ---- 0F 5D /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
MINSS - Scalar Single-FP Manimum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MINSS dest,src
|
|
|
|
Description:
|
|
if dest[<0>] is NaN then dest[<0>] <- src[<0>];
|
|
if src[<0>] is NaN then dest[<0>] <- src[<0>];
|
|
if src[<0>] < dest[<0>] then dest[<0>] <- src[<0>];
|
|
|
|
Physical Form and Timing:
|
|
MINSS xmm1,xmm2/m32 ---- F3 0F 5D /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
MOVAPS - Move Aligned Four Packed Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVAPS dest,src
|
|
|
|
Description:
|
|
dest <- src;
|
|
Note: This instruction moved 16-byte (128-bit) total size
|
|
4x 32-bit FP. from/to memory.
|
|
Address of this F.P. block must be 16-bytes aligned
|
|
|
|
Physical Form and Timing:
|
|
MOVAPS xmm1,xmm2/m128 ---- 0F 28 /r ---- ??
|
|
MOVAPS xmm2/m128,xmm1 ---- 0F 29 /r ---- ??
|
|
|
|
---------------------------------------------------
|
|
OPCODE MOVD - Move Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: MOVD dest,src
|
|
|
|
Description:
|
|
|
|
IF dest is MMi register THEN
|
|
{
|
|
dest[63..32] <- 0
|
|
dest[31..0] <- src
|
|
} ELSE ; If dest is DWORD
|
|
dest <- src [31..0]
|
|
|
|
Note: This instruction moved DWORDs to/from MMX registers
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If result in Non-Writable segment
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
MOVD mm,r/m32 0FH 6EH PostByte
|
|
MOVD r/m32,mm 0Fh 7Eh PostByte
|
|
|
|
mm,r/m32 r/m32,mm
|
|
P55C: n/a (~1) (~1)
|
|
future P6: n/a (~1) (~1)
|
|
|
|
-----------------------------------------------------------------
|
|
MOVHLPS - Move High to Low Packed Single-F.P.
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVHLPS dest,src
|
|
|
|
Description:
|
|
dest[<1>] <- src[<3>];
|
|
dest[<0>] <- src[<2>];
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MOVHLPS xmm1,xmm2 ---- 0F 12 /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
MOVHPS - Move High Packed Single FP.
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVHPS dest,src
|
|
|
|
Description:
|
|
if (dest is mem64) then
|
|
dest[<1>] <- src[<3>];
|
|
dest[<0>] <- src[<2>];
|
|
endif
|
|
if (src is mem64) then
|
|
dest[<3>] <- src[<1>];
|
|
dest[<2>] <- src[<0>];
|
|
endif
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MOVHPS xmm,m64 ---- 0F 16 /r ---- 1
|
|
MOVHPS m64,xmm ---- 0F 17 /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
MOVLHPS - Move Low to High Packed Single-F.P.
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVLHPS dest,src
|
|
|
|
Description:
|
|
dest[<3>] <- src[<1>];
|
|
dest[<2>] <- src[<0>];
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MOVLHPS xmm1,xmm2 ---- 0F 16 /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
MOVLPS - Move Low Packed Single FP.
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVLPS dest,src
|
|
|
|
Description:
|
|
dest[<1>] <- src[<1>];
|
|
dest[<0>] <- src[<0>];
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MOVLPS xmm,m64 ---- 0F 12 /r ---- 1
|
|
MOVLPS m64,xmm ---- 0F 13 /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
MOVMSKPS - Move Mask to Integer
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVMSKPS dest,src
|
|
|
|
Description:
|
|
dest[0] <- src[31]; // Single Bits, not bit groups
|
|
dest[1] <- src[63];
|
|
dest[2] <- src[95];
|
|
dest[3] <- src[127];
|
|
dest[31..4] <- 0;
|
|
|
|
Physical Form and Timing:
|
|
MOVMSKPS r32,xmm ---- 0F 50 /m ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
MOVNTPS - Move Aligned Four Packed Single-FP Non Temporal
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVNTPS dest,src
|
|
|
|
Description:
|
|
dest <- src; // This store mimimize cache pollution
|
|
// storing XMM 128-bit register
|
|
|
|
Physical Form and Timing:
|
|
MOVNTPS m128,xmm ---- 0F 2B /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
MOVNTQ - Move 64 bits non temporal
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVNTQ dest,src
|
|
|
|
Description:
|
|
dest <- src; // This store minimize cache pollution
|
|
// storing MM (MMX) 64-bit register
|
|
|
|
Physical Form and Timing:
|
|
MOVNTQ m64,mm ---- 0F E7 /r ---- ??
|
|
|
|
---------------------------------------------------
|
|
OPCODE MOVQ - Move Qwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: MOVQ dest,src
|
|
|
|
Description:
|
|
|
|
dest <- src
|
|
|
|
Note: This instruction moved QWORDs to/from MMX registers
|
|
Of course, IA support Big-endian QWORDS.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If result in Non-Writable segment
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
MOVQ mm,mm/m64 0FH 6FH PostByte
|
|
MOVQ mm/m64,mm 0Fh 7Fh PostByte
|
|
|
|
Note: In PostByte instead IU registers used MMX registers,
|
|
0Fh 6Fh C0h means MOVQ MM0,MM0
|
|
|
|
mm,r/m32 r/m32,mm
|
|
P55C: n/a (~1) (~1)
|
|
future P6: n/a (~1) (~1)
|
|
|
|
---------------------------------------------------
|
|
OPCODE MOVSPA - Move Stack Pointer After Bank Switched
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: MOVSPA
|
|
|
|
Description: This instruction transfer both SS and SP of the old register
|
|
bank to new register bank after the bank has been switched by
|
|
interrupt or BRKCS instruction.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: MOVSPA
|
|
COP (Code of Operation) : 0Fh 25h
|
|
|
|
Clocks: 16
|
|
|
|
---------------------------------------------------
|
|
OPCODE MOVSPB - Move Stack Pointer Before Bamk Switching
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: MOVSPB Number_of_bank
|
|
|
|
Description: The MOVSPB instruction transfers the current SP and SS before
|
|
the bank switching to new register bank.
|
|
|
|
Note: New Register Bank Number indicated by lower 3bit of Number_of_
|
|
_bank.
|
|
|
|
Note: See BRKCS instruction for more info about banks.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: MOVSPB reg16
|
|
COP (Code of Operation) : 0Fh 95h <1111 1RRR>
|
|
|
|
Clocks: 11
|
|
|
|
-----------------------------------------------------------------
|
|
MOVSS - Move Scalar Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVSS dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- src[<0>];
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
MOVSS xmm1,xmm2/m32 ---- F3 0F 10 /r ---- ??
|
|
MOVSS xmm2/m32,xmm1 ---- F3 0F 11 /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
MOVUPS - Move Unaligned Four Packed Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MOVUPS dest,src
|
|
|
|
Description:
|
|
dest <- src // Analigned move of XMM 128-bit register
|
|
|
|
Physical Form and Timing:
|
|
MOVUPS xmm1,xmm2/m128 ---- 0F 10 /r ---- ??
|
|
MOVUPS xmm2/m128,xmm1 ---- 0F 11 /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
MULPS - Packed Single-FP Multiply
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MULPS dest,src
|
|
|
|
Description:
|
|
dest[<0>] = dest[<0>] * src[<0>];
|
|
dest[<1>] = dest[<1>] * src[<1>];
|
|
dest[<2>] = dest[<2>] * src[<2>];
|
|
dest[<3>] = dest[<3>] * src[<3>];
|
|
|
|
Physical Form and Timing:
|
|
MULPS xmm1,xmm2/m128 ---- 0F 59 /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
MULSS - Scalar Single-FP Multiply
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: MULPS dest,src
|
|
|
|
Description:
|
|
dest[<0>] = dest[<0>] * src[<0>];
|
|
|
|
Physical Form and Timing:
|
|
MULSS xmm1,xmm2/m32 ---- F3 0F 59 /r ---- 2
|
|
|
|
---------------------------------------------------
|
|
OPCODE NOT1 - Invert a Specified bit
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: NOT1 dest,bitnumb
|
|
|
|
Description:
|
|
|
|
(BIT bitnumb OF dest) <- NOT (BIT bitnumb OF dest);
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: NOT1 reg/mem8,CL
|
|
COP (Code of Operation) : 0FH 16H Postbyte
|
|
|
|
Physical Form: NOT1 reg/mem8,imm8
|
|
COP (Code of Operation) : 0FH 1EH Postbyte imm8
|
|
|
|
Physical Form: NOT1 reg/mem16,CL
|
|
COP (Code of Operation) : 0FH 17H Postbyte
|
|
|
|
Physical Form: NOT1 reg/mem16,imm8
|
|
COP (Code of Operation) : 0FH 1FH Postbyte imm8
|
|
|
|
Clocks: NOT1
|
|
r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
|
|
NEC V20: 4/18 5/19 4/18 5/19
|
|
|
|
--------------------------------------------------
|
|
OPCODE OIO - Official Undefined Opcode
|
|
|
|
CPU: Cyrix Cx6x86 (same code on AMD Am5k86)
|
|
|
|
Logical Form: OIO
|
|
|
|
Description:
|
|
Caused #UD exception
|
|
|
|
Flags Affected: No Flags Affected
|
|
CPU Mode : RM,PM,VM,VME,SMM
|
|
|
|
Exceptions :
|
|
RM PM V86 VME SMM
|
|
#UD #UD #UD #UD #UD Undefined Instruction
|
|
No more Exceptions
|
|
|
|
Note :
|
|
This instruction caused #UD. AMD guaranteed that in future AMD's
|
|
CPUs this instruction will caused #UD. Of course all previous CPUs
|
|
(186+) caused #UD on this opcode. This instruction used by software
|
|
writers for testing #UD exception servise routine.
|
|
|
|
++++++++++++++++++++++++++++++
|
|
|
|
Physical Form : UD
|
|
|
|
COP (Code of Operation) : 0Fh FFh
|
|
|
|
Clocks : UD
|
|
8088: Not supported
|
|
NEC V20: Not supported
|
|
80186: ~int
|
|
80286: ~int
|
|
80386: ~int
|
|
Cx486SLC: ~int
|
|
i486: ~int
|
|
Cx486DX: ~int
|
|
Cx5x86: ~int
|
|
Pentium: ~int
|
|
Nx5x86: ~int
|
|
Cx6x86: ~int
|
|
Am5k86: ~int
|
|
Pentium Pro: ~int
|
|
|
|
++++++++++++++++++++++++++++++
|
|
|
|
-----------------------------------------------------------------
|
|
ORPS - Bit-wise Logical OR For Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: ORPS dest,src
|
|
|
|
Description:
|
|
dest = dest OR src; // Bitwize 128-bit
|
|
|
|
Physical Form and Timing:
|
|
ORPS xmm1,xmm2/m128 ---- 0F 56 /r ---- 2
|
|
|
|
---------------------------------------------------
|
|
OPCODE PACKSSDW - Pack with Signed Saturation dword to word
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PACKSSDW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- SaturateSignedDWordToSignedWord dest[31..0]
|
|
dest[31..16] <- SaturateSignedDWordToSignedWord dest[63..32]
|
|
dest[47..32] <- SaturateSignedDWordToSignedWord src[31..0]
|
|
dest[63..46] <- SaturateSignedDWordToSignedWord src[63..32]
|
|
|
|
Note: This instruction packs and saturates signed data from src and dest to
|
|
dest.
|
|
If signed value of word larger or smaller that the range of signed byte
|
|
value is saturated (in case of overflow to 7Fh, in underflow to 80h).
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PACKSSDW mm,mm/m64 0FH 6BH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PACKSSWB - Pack with Signed Saturation word to Byte
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PACKSSWB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- SaturateSignedWordToSignedByte dest[15..0]
|
|
dest[15..8] <- SaturateSignedWordToSignedByte dest[31..16]
|
|
dest[23..16] <- SaturateSignedWordToSignedByte dest[47..32]
|
|
dest[31..24] <- SaturateSignedWordToSignedByte dest[63..48]
|
|
dest[39..32] <- SaturateSignedWordToSignedByte src[15..0]
|
|
dest[47..40] <- SaturateSignedWordToSignedByte src[31..16]
|
|
dest[55..48] <- SaturateSignedWordToSignedByte src[47..32]
|
|
dest[63..56] <- SaturateSignedWordToSignedByte src[63..48]
|
|
|
|
Note: This instruction packs and saturates signed data from src and dest to
|
|
dest
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PACKSSWB mm,mm/m64 0FH 63H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PACKUSWB - Pack with Unsigned Saturation word to Byte
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PACKUSWB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- SaturateSignedWordToUnSignedByte dest[15..0]
|
|
dest[15..8] <- SaturateSignedWordToUnSignedByte dest[31..16]
|
|
dest[23..16] <- SaturateSignedWordToUnSignedByte dest[47..32]
|
|
dest[31..24] <- SaturateSignedWordToUnSignedByte dest[63..48]
|
|
dest[39..32] <- SaturateSignedWordToUnSignedByte src[15..0]
|
|
dest[47..40] <- SaturateSignedWordToUnSignedByte src[31..16]
|
|
dest[55..48] <- SaturateSignedWordToUnSignedByte src[47..32]
|
|
dest[63..56] <- SaturateSignedWordToUnSignedByte src[63..48]
|
|
|
|
Note: If signed value of word larger or smaller that the range of unsigned
|
|
byte, value is saturated (if overflow to FFh, if underflow to 0h).
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PACKUSWB mm,mm/m64 0FH 67H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDB - Packed Add Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- dest[7..0] + src[7..0]
|
|
dest[15..8] <- dest[15..8] + src[15..8]
|
|
dest[23..16] <- dest[23..16] + src[23..16]
|
|
dest[31..24] <- dest[31..24] + src[31..24]
|
|
dest[39..32] <- dest[39..32] + src[39..32]
|
|
dest[47..40] <- dest[47..40] + src[47..40]
|
|
dest[55..48] <- dest[55..48] + src[55..48]
|
|
dest[63..56] <- dest[63..56] + src[63..56]
|
|
|
|
Note: This instruction adds the bytes of the source to the bytes of the
|
|
destination and writes the results to the MMX register.
|
|
When the result is too large to be represented in a packed byte
|
|
(overflow), the result wraps around and the lower 8 bits are writen to
|
|
the destination register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDB mm,mm/m64 0FH FCH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDD - Packed Add Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDD dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[31..0] + src[31..0]
|
|
dest[63..32] <- dest[63..32] + src[63..32]
|
|
|
|
Note: This instruction adds the dwords of the source to the dwords of the
|
|
destination and writes the results to the MMX register.
|
|
When the result is too large to be represented in a packed dword
|
|
(overflow), the result wraps around and the lower 32 bits are writen to
|
|
the destination register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDW mm,mm/m64 0FH FEH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDSB - Packed Add with Saturation Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDSB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- SaturateToSignedByte(dest[7..0] + src[7..0])
|
|
dest[15..8] <- SaturateToSignedByte(dest[15..8] + src[15..8])
|
|
dest[23..16] <- SaturateToSignedByte(dest[23..16] + src[23..16])
|
|
dest[31..24] <- SaturateToSignedByte(dest[31..24] + src[31..24])
|
|
dest[39..32] <- SaturateToSignedByte(dest[39..32] + src[39..32])
|
|
dest[47..40] <- SaturateToSignedByte(dest[47..40] + src[47..40])
|
|
dest[55..48] <- SaturateToSignedByte(dest[55..48] + src[55..48])
|
|
dest[63..56] <- SaturateToSignedByte(dest[63..56] + src[63..56])
|
|
|
|
Note: This instruction adds the signed bytes of the source to the bytes of
|
|
the destination and writes the results to the MMX register.
|
|
If the result is larger or smaller than the range of a signed byte,
|
|
the value is saturated (in the case of a overflow - to 7FH, and in the
|
|
case of an underflow - to 80H).
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDSB mm,mm/m64 0FH ECH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PADDSIW - Packed Add with Saturation, using Implied Destination
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDSIW dest, src
|
|
|
|
Description:
|
|
dest[15..0] <- SaturateToSignedWord(dest[15..0] + src[15..0]
|
|
dest[31..16] <- SaturateToSignedWord(dest[31..16] + src[31..16]
|
|
dest[47..32] <- SaturateToSignedWord(dest[47..32] + src[47..32]
|
|
dest[63..48] <- SaturateToSignedWord(dest[63..48] + src[63..48]
|
|
|
|
Notes: This instruction adds the signed words of the source operand to
|
|
the signed words of the destination operand and writes the results to
|
|
the implied MMX register. The purpose of this instruction is the same
|
|
as the PADDSW instruction, except that it preserves both source
|
|
operands.
|
|
The DEST must be an MMX register. The SRC can be either an MMX
|
|
register or a 64-bit memory operand. The destination is an MMX register
|
|
which depends on the DEST.
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDSIW mm,mm/m64 0FH 51H PostByte
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDSW - Packed Add with Saturation Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDSW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- SaturateToSignedWord(dest[15..0] + src[15..0])
|
|
dest[31..16] <- SaturateToSignedWord(dest[31..16] + src[31..16])
|
|
dest[47..32] <- SaturateToSignedWord(dest[47..32] + src[47..32])
|
|
dest[63..48] <- SaturateToSignedWord(dest[63..48] + src[63..48])
|
|
|
|
Note: This instruction adds the signed words of the source to the words of
|
|
the destination and writes the results to the MMX register.
|
|
If the result is larger or smaller than the range of a signed word,
|
|
the value is saturated (in the case of a overflow - to 7FFFH, and in
|
|
the case of an underflow - to 8000H).
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDSW mm,mm/m64 0FH EDH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDUSB - Packed Add Unsigned with Saturation Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDUSB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- SaturateToUnsignedByte(dest[7..0] + src[7..0])
|
|
dest[15..8] <- SaturateToUnsignedByte(dest[15..8] + src[15..8])
|
|
dest[23..16] <- SaturateToUnsignedByte(dest[23..16] + src[23..16])
|
|
dest[31..24] <- SaturateToUnsignedByte(dest[31..24] + src[31..24])
|
|
dest[39..32] <- SaturateToUnsignedByte(dest[39..32] + src[39..32])
|
|
dest[47..40] <- SaturateToUnsignedByte(dest[47..40] + src[47..40])
|
|
dest[55..48] <- SaturateToUnsignedByte(dest[55..48] + src[55..48])
|
|
dest[63..56] <- SaturateToUnsignedByte(dest[63..56] + src[63..56])
|
|
|
|
Note: This instruction adds the unsigned bytes of the source to the
|
|
unsigned bytes of the destination operand and writes the results to the
|
|
MMX register.
|
|
When the result is larger than the range of an unsigned byte
|
|
(overflow), the value is saturated to FFH. When the result is smaller
|
|
than the range of an unsigned byte (underflow), the value is saturated
|
|
to 00H.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDUSB mm,mm/m64 0FH DCH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDUSW - Packed Add Unsigned with Saturation Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDUSW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- SaturateToUnsignedWord(dest[15..0] + src[15..0])
|
|
dest[31..16] <- SaturateToUnsignedWord(dest[31..16] + src[31..16])
|
|
dest[47..32] <- SaturateToUnsignedWord(dest[47..32] + src[47..32])
|
|
dest[63..48] <- SaturateToUnsignedWord(dest[63..48] + src[63..48])
|
|
|
|
Note: This instruction adds the unsigned words of the source to the
|
|
unsigned words of the destination operand and writes the results to the
|
|
MMX register.
|
|
When the result is larger than the range of an unsigned word
|
|
(overflow), the value is saturated to FFFFH. When the result is smaller
|
|
than the range of an unsigned byte (underflow), the value is saturated
|
|
to 0000H.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDUSW mm,mm/m64 0FH DDH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PADDW - Packed Add Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PADDW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- dest[15..0] + src[15..0]
|
|
dest[31..16] <- dest[31..16] + src[31..16]
|
|
dest[47..32] <- dest[47..32] + src[47..32]
|
|
dest[63..48] <- dest[63..48] + src[63..48]
|
|
|
|
Note: This instruction adds the words of the source to the words of the
|
|
destination and writes the results to the MMX register.
|
|
When the result is too large to be represented in a packed word
|
|
(overflow), the result wraps around and the lower 16 bits are writen to
|
|
the destination register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PADDW mm,mm/m64 0FH FDH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PAND - Bitwise Logical And
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PAND dest,src
|
|
|
|
Description:
|
|
|
|
dest <- dest AND src
|
|
|
|
Note: AND 64 bits from MMXregister/memory to MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PAND mm,mm/m64 0FH DBH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PANDN - Bitwise Logical And Not
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PANDN dest,src
|
|
|
|
Description:
|
|
|
|
dest <- (NOT dest) AND src
|
|
|
|
Note: Invert the 64 bits in MMX register, AND inverted MMX register with
|
|
MMXregister/memory.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PANDN mm,mm/m64 0FH DFH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PAVEB - Packed Average
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PAVEB dest, src
|
|
|
|
Description:
|
|
dest[7..0] <- (dest[7..0] + src[7..0]) >> 1
|
|
dest[15..8] <- (dest[15..8] + src[15..8]) >> 1
|
|
dest[23..16] <- (dest[23..16] + src[23..16]) >> 1
|
|
dest[31..24] <- (dest[31..24] + src[31..24]) >> 1
|
|
dest[39..32] <- (dest[39..32] + src[39..32]) >> 1
|
|
dest[47..40] <- (dest[47..40] + src[47..40]) >> 1
|
|
dest[55..48] <- (dest[55..48] + src[55..48]) >> 1
|
|
dest[63..56] <- (dest[63..56] + src[63..56]) >> 1
|
|
|
|
Notes: The PAVEB insruction calculates the average of the unsigned
|
|
bytes of the source operand and the unsigned bytes of the destination
|
|
operand and writes the result to the MMX register. The PAVEB
|
|
instruction cannot overflow.
|
|
M2 hardware versions before v1.3 interpret values as signed
|
|
bytes on this instruction.
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PAVEB mm,mm/m64 0FH 50H PostByte
|
|
|
|
-----------------------------------------------------------------
|
|
PAVGB - Packed Average Byte
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PAVGB dest,src
|
|
|
|
Description:
|
|
define AVERAGE(bits) // This is Unsigned operation :))
|
|
dest[bits] <- (size(8bits,(src[bits] + dest[bits])) + 1) >> 1;
|
|
enddef
|
|
AVERAGE(7..0);
|
|
AVERAGE(15..8);
|
|
AVERAGE(23..16);
|
|
AVERAGE(31..24);
|
|
AVERAGE(39..32);
|
|
AVERAGE(47..40);
|
|
AVERAGE(55..48);
|
|
AVERAGE(63..56);
|
|
|
|
Physical Form and Timing:
|
|
PAVGB mm1,mm2/m64 ---- 0F E0 /r ---- ??
|
|
|
|
-----------------------------------------------
|
|
OPCODE PAVGUSB - Avarage of Unsigned packed 8-bit Values
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PAVGUSB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- (dest[7..0] + src[7..0]) / 2;
|
|
dest[15..8] <- (dest[15..8] + src[15..8]) / 2;
|
|
dest[23..16] <- (dest[23..16] + src[23..16]) / 2;
|
|
dest[31..24] <- (dest[31..24] + src[31..24]) / 2;
|
|
dest[39..32] <- (dest[39..32] + src[39..32]) / 2;
|
|
dest[47..40] <- (dest[47..40] + src[47..40]) / 2;
|
|
dest[55..48] <- (dest[55..48] + src[55..48]) / 2;
|
|
dest[63..56] <- (dest[63..56] + src[63..56]) / 2;
|
|
|
|
Note: so, saturation rounding:
|
|
(FFH + FFH) / 2 => FFh
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PAVGUSB mm,mm/m64 0FH 0FH BFH Postbyte
|
|
|
|
-----------------------------------------------------------------
|
|
PAVGW - Packed Average Word
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PAVGW dest,src
|
|
|
|
Description:
|
|
define AVERAGE(bits) // This is Unsigned operation
|
|
dest[bits] <- (size(16bits,(src[bits] + dest[bits])) + 1) >> 1;
|
|
enddef
|
|
AVERAGE(15..0);
|
|
AVERAGE(31..16);
|
|
AVERAGE(47..32);
|
|
AVERAGE(63..48);
|
|
|
|
Physical Form and Timing:
|
|
PAVGW mm1,mm2/m64 ---- 0F E3 /r ---- ??
|
|
|
|
---------------------------------------------------
|
|
OPCODE PCMPEQB - Packed Compare for Equal Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PCMPEQB dest,src
|
|
|
|
Description:
|
|
|
|
IF dest[7..0] = src[7..0]
|
|
THEN
|
|
dest[7..0] <- FFH
|
|
ELSE
|
|
dest[7..0] <- 00H
|
|
IF dest[15..8] = src[15..8]
|
|
THEN
|
|
dest[15..8] <- FFH
|
|
ELSE
|
|
dest[15..8] <- 00H
|
|
IF dest[23..16] = src[23..16]
|
|
THEN
|
|
dest[23..16] <- FFH
|
|
ELSE
|
|
dest[23..16] <- 00H
|
|
IF dest[31..24] = src[31..24]
|
|
THEN
|
|
dest[31..24] <- FFH
|
|
ELSE
|
|
dest[31..24] <- 00H
|
|
IF dest[39..32] = src[39..32]
|
|
THEN
|
|
dest[39..32] <- FFH
|
|
ELSE
|
|
dest[39..32] <- 00H
|
|
IF dest[47..40] = src[47..40]
|
|
THEN
|
|
dest[47..40] <- FFH
|
|
ELSE
|
|
dest[47..40] <- 00H
|
|
IF dest[55..48] = src[55..48]
|
|
THEN
|
|
dest[55..48] <- FFH
|
|
ELSE
|
|
dest[55..48] <- 00H
|
|
IF dest[63..56] = src[63..56]
|
|
THEN
|
|
dest[63..56] <- FFH
|
|
ELSE
|
|
dest[63..56] <- 00H
|
|
|
|
Note: Compare packed byte in MMXregister/memory with packed byte in MMX
|
|
register for equality.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PCMPEQB mm,mm/m64 0FH 74H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PCMPEQD - Packed Compare for Equal Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PCMPEQD dest,src
|
|
|
|
Description:
|
|
|
|
IF dest[31..0] = src[31..0]
|
|
THEN
|
|
dest[31..0] <- FFFFFFFFH
|
|
ELSE
|
|
dest[31..0] <- 00000000H
|
|
IF dest[63..32] = src[63..32]
|
|
THEN
|
|
dest[63..32] <- FFFFFFFFH
|
|
ELSE
|
|
dest[63..32] <- 00000000H
|
|
|
|
Note: Compare packed dword in MMXregister/memory with packed dword in MMX
|
|
register for equality.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PCMPEQW mm,mm/m64 07H 76H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PCMPEQW - Packed Compare for Equal Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PCMPEQW dest,src
|
|
|
|
Description:
|
|
|
|
IF dest[15..0] = src[15..0]
|
|
THEN
|
|
dest[15..0] <- FFFFH
|
|
ELSE
|
|
dest[15..0] <- 0000H
|
|
IF dest[31..16] = src[31..16]
|
|
THEN
|
|
dest[31..16] <- FFFFH
|
|
ELSE
|
|
dest[31..16] <- 0000H
|
|
IF dest[47..32] = src[47..32]
|
|
THEN
|
|
dest[47..32] <- FFFFH
|
|
ELSE
|
|
dest[47..32] <- 0000H
|
|
IF dest[63..48] = src[63..48]
|
|
THEN
|
|
dest[63..48] <- FFFFH
|
|
ELSE
|
|
dest[63..48] <- 0000H
|
|
|
|
Note: Compare packed word in MMXregister/memory with packed word in MMX
|
|
register for equality.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PCMPEQW mm,mm/m64 07H 75H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PCMPGTB - Packed Compare for Greater Than Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PCMPGTB dest,src
|
|
|
|
Description:
|
|
|
|
IF dest[7..0] > src[7..0]
|
|
THEN
|
|
dest[7..0] <- FFH
|
|
ELSE
|
|
dest[7..0] <- 00H
|
|
IF dest[15..8] > src[15..8]
|
|
THEN
|
|
dest[15..8] <- FFH
|
|
ELSE
|
|
dest[15..8] <- 00H
|
|
IF dest[23..16] > src[23..16]
|
|
THEN
|
|
dest[23..16] <- FFH
|
|
ELSE
|
|
dest[23..16] <- 00H
|
|
IF dest[31..24] > src[31..24]
|
|
THEN
|
|
dest[31..24] <- FFH
|
|
ELSE
|
|
dest[31..24] <- 00H
|
|
IF dest[39..32] > src[39..32]
|
|
THEN
|
|
dest[39..32] <- FFH
|
|
ELSE
|
|
dest[39..32] <- 00H
|
|
IF dest[47..40] > src[47..40]
|
|
THEN
|
|
dest[47..40] <- FFH
|
|
ELSE
|
|
dest[47..40] <- 00H
|
|
IF dest[55..48] > src[55..48]
|
|
THEN
|
|
dest[55..48] <- FFH
|
|
ELSE
|
|
dest[55..48] <- 00H
|
|
IF dest[63..56] > src[63..56]
|
|
THEN
|
|
dest[63..56] <- FFH
|
|
ELSE
|
|
dest[63..56] <- 00H
|
|
|
|
Note: Compare packed byte in MMX register with packed byte in MMXregister/
|
|
/memory for greater value.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PCMPGTB mm,mm/m64 0FH 64H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PCMPGTD - Packed Compare for Greater Than Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PCMPGTD dest,src
|
|
|
|
Description:
|
|
|
|
IF dest[31..0] > src[31..0]
|
|
THEN
|
|
dest[31..0] <- FFFFFFFFH
|
|
ELSE
|
|
dest[31..0] <- 00000000H
|
|
IF dest[63..32] > src[63..32]
|
|
THEN
|
|
dest[63..32] <- FFFFFFFFH
|
|
ELSE
|
|
dest[63..32] <- 00000000H
|
|
|
|
Note: Compare packed dword in MMX register with packed dword in MMXregister/
|
|
/memory for greater value.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PCMPGTW mm,mm/m64 0FH 66H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PCMPGTW - Packed Compare for Greater Than Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PCMPGTW dest,src
|
|
|
|
Description:
|
|
|
|
IF dest[15..0] > src[15..0]
|
|
THEN
|
|
dest[15..0] <- FFFFH
|
|
ELSE
|
|
dest[15..0] <- 0000H
|
|
IF dest[31..16] > src[31..16]
|
|
THEN
|
|
dest[31..16] <- FFFFH
|
|
ELSE
|
|
dest[31..16] <- 0000H
|
|
IF dest[47..32] > src[47..32]
|
|
THEN
|
|
dest[47..32] <- FFFFH
|
|
ELSE
|
|
dest[47..32] <- 0000H
|
|
IF dest[63..48] > src[63..48]
|
|
THEN
|
|
dest[63..48] <- FFFFH
|
|
ELSE
|
|
dest[63..48] <- 0000H
|
|
|
|
Note: Compare packed word in MMX register with packed word in MMXregister/
|
|
memory for greater value.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PCMPGTW mm,mm/m64 0FH 65H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PDISTIB - Packed Distance and Accumulate with Implied Register
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PDISTIB dest, src
|
|
|
|
Description:
|
|
dest[7..0] <-
|
|
SaturateToUnsignedByte(dest[7..0] + abs(dest[7..0] - src[7..0]))
|
|
dest[15..8] <-
|
|
SaturateToUnsignedByte(dest[15..8] + abs(dest[15..8] - src[15..8]))
|
|
dest[23..16] <-
|
|
SaturateToUnsignedByte(dest[23..16] + abs(dest[23..16] - src[23..16]))
|
|
dest[31..24] <-
|
|
SaturateToUnsignedByte(dest[31..24] + abs(dest[31..24] - src[31..24]))
|
|
dest[39..32] <-
|
|
SaturateToUnsignedByte(dest[39..32] + abs(dest[39..32] - src[39..32]))
|
|
dest[47..40] <-
|
|
SaturateToUnsignedByte(dest[47..40] + abs(dest[47..40] - src[47..40]))
|
|
dest[55..48] <-
|
|
SaturateToUnsignedByte(dest[55..48] + abs(dest[55..48] - src[55..48]))
|
|
dest[63..56] <-
|
|
SaturateToUnsignedByte(dest[63..56] + abs(dest[63..56] - src[63..56]))
|
|
|
|
Notes: The PDISTIB instruction calculates the distance between the
|
|
unsigned bytes of two source operands, adds the result to the
|
|
unsigned byte in the implied destination operand, and saturates the
|
|
result. The result is written to the implied MMX register.
|
|
The DEST must be an MMX register. The SRC must be a 64-bit
|
|
memory operand. The accumulator and destination is an MMX register
|
|
which depends on the DEST.
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PDISTIB mm,m64 0FH 54H PostByte
|
|
|
|
-----------------------------------------------------------------
|
|
PEXTRW - Extract Word
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PEXTRW dest,src,which_word
|
|
|
|
Description:
|
|
word TMP = which_word AND 0x3;
|
|
word MM_TMP = (src >> (TMP * 16)) AND 0xffff;
|
|
dest[15..0] <- MM_TMP;
|
|
dest[31..16] <- 0;
|
|
|
|
Physical Form and Timing:
|
|
PEXTRW r32,mm,imm8 ---- 0F C5 /r imm8 ---- ??
|
|
|
|
-----------------------------------------------
|
|
OPCODE PF2ID - Convert Packed F.P. to 32-bit Integer
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PF2ID dest,src
|
|
|
|
Description:
|
|
|
|
if (src[31..0] > 2^31) then dest[31..0] <- 7FFFFFFFh;
|
|
if (src[31..0] <= -2^31) then dest[31..0] <- 80000000h;
|
|
dest[31..0] <- truncate(src[31..0]);
|
|
|
|
if (src[63..32] > 2^31) then dest[63..32] <- 7FFFFFFFh;
|
|
if (src[63..32] <= -2^31) then dest[63..32] <- 80000000h;
|
|
dest[63..32] <- truncate(src[63..32]);
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PF2ID mm,mm/m64 0FH 0FH 1DH Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PF2IW - Packed FP to Integer Word conversion with sign extend
|
|
|
|
CPU: 3DNow! extension (Athlon CPU)
|
|
Type of Instruction: User
|
|
|
|
Instruction: PF2IW dest,src
|
|
|
|
Description:
|
|
if (src[31:0] >= 2^15) dest[31:0] = 00007fffh;
|
|
elseif (src[31:0] <= -2^15) dest[31:0] = ffff8000h;
|
|
else dest[31:0] <- int(src[31:0]);
|
|
if (src[63:32] >= 2^15) dest[63:32] = 00007fffh;
|
|
elseif (src[63:32] <= -2^15) dest[63:32] = ffff8000h;
|
|
else dest[63:32] <- int(src[63:32]);
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PF2IW mm,mm/m64 0F 0F 1C Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFACC - F.P. Accumulate
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFACC dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[31..0] + dest[63..32];
|
|
dest[63..32] <- src[31..0] + src [63..32];
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFACC mm,mm/m64 0FH 0FH AEH Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFADD - Packed F.P. Addition
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFADD dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[31..0] + src[31..0];
|
|
dest[63..32] <- dest[63..32] + src[63..32];
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFADD mm,mm/m64 0FH 0FH 9EH Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFCMPEQ - Packed F.P. comparson, equal to
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFCMPEQ dest,src
|
|
|
|
Description:
|
|
|
|
if dest[31..0] == src[31..0]
|
|
then dest[31..0] <- FFFFFFFFh
|
|
else dest[31..0] <- 00000000h
|
|
|
|
if dest[63..32] == src[63..32]
|
|
then dest[63..32] <- FFFFFFFFh
|
|
else dest[63..32] <- 00000000h
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFCMPEQ mm,mm/m64 0FH 0FH B0H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFCMPGE - Packed F.P. comparison, greater or equal to
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFCMPGE dest,src
|
|
|
|
Description:
|
|
|
|
if dest[31..0] >= src[31..0]
|
|
then dest[31..0] <- FFFFFFFFh
|
|
else dest[31..0] <- 00000000h
|
|
|
|
if dest[63..32] >= src[63..32]
|
|
then dest[63..32] <- FFFFFFFFh
|
|
else dest[63..32] <- 00000000h
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFCMPGE mm,mm/m64 0FH 0FH 90H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFCMPGT - Packed F.P. compariason, greater to
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFCMPGT dest,src
|
|
|
|
Description:
|
|
|
|
if dest[31..0] > src[31..0]
|
|
then dest[31..0] <- FFFFFFFFh
|
|
else dest[31..0] <- 00000000h
|
|
|
|
if dest[63..32] > src[63..32]
|
|
then dest[63..32] <- FFFFFFFFh
|
|
else dest[63..32] <- 00000000h
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFCMPGT mm,mm/m64 0FH 0FH A0H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFMAX - Packed F.P. Maximum
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFMAX dest,src
|
|
|
|
Description:
|
|
|
|
if src[31..0] > dest[31..0] then dest[31..0] <- src[31..0];
|
|
if src[63..32] > dest[63..32] then dest[63..32] <- src[63..32];
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFMAX mm,mm/m64 0FH 0FH A4H
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFMIN - Packed F.P. Minimum
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFMIN dest,src
|
|
|
|
Description:
|
|
|
|
if src[31..0] < dest[31..0] then dest[31..0] <- src[31..0];
|
|
if src[63..32] < dest[63..32] then dest[63..32] <- src[63..32];
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFMIN mm,mm/m64 0FH 0FH 94H
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFMUL - Packed F.P. Multiplication
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFMUL dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[31..0] * src[31..0];
|
|
dest[63..32] <- dest[63..32] * src[63..32];
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFMUL mm,mm/m64 0FH 0FH B4H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFNACC - Packed Floating Point negative accumulate
|
|
|
|
CPU: 3DNow! extension (Athlon CPU)
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFNACC dest,src
|
|
|
|
Description:
|
|
dest[31:0] <- dest[31:0] - dest[63:32];
|
|
dest[63:32] <- src[31:0] - src[63:32]
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFNACC mm,mm/m64 0F 0F 8A Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFPNACC - Packed Floating Point Mixed Positive-Negative Accumulate
|
|
|
|
CPU: 3DNow! extension (Athlon CPU)
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFPNACC dest,src
|
|
|
|
Description:
|
|
dest[31:0] <- dest[31:0] - dest[63:32];
|
|
dest[63:32] <- src[31:0] + src[63:32];
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFPNACC mm,mm/m64 0F 0F 8E Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFRCP - F.P. Reciprocal Approximation
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFRCP dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- Reciprocal(src[31..0]);
|
|
dest[63..32] <- Reciprocal(src[63..32]);
|
|
|
|
Note:
|
|
Newton-Raphson algorithm:
|
|
|
|
Division
|
|
----------
|
|
|
|
q = a/b;
|
|
|
|
X(i+1) = X(i) * (2 - b * X(i));
|
|
|
|
X0 = RFRCP(b);
|
|
X1 = RFRCPIT1(b,X0);
|
|
X2 = RFRCPIT2(X1,X0);
|
|
q = PFMUL(a,X2);
|
|
|
|
Square Root
|
|
--------------
|
|
|
|
X(i+1) = 1/2 * X(i) * (3 - b * X(i)^2);
|
|
|
|
X0 = PFRSQRT(b);
|
|
X1 = PFMUL(X0,X0);
|
|
X2 = PFRSQIT(b,X1);
|
|
X3 = PFRCPIT2(X2,X0);
|
|
X4 = PFMUL(b,X3);
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFRCP mm,mm/m64 0FH 0FH 96H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFRCPIT1 - Packed F.P. Reciprocal, first iteration Step
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFRCIT1 dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- First_Step_Reciprocal(src[31..0]);
|
|
dest[63..32] <- First_Step_Reciprocal(src[63..32]);
|
|
|
|
Note: see PFRCP for more info.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFRCIT1 mm,mm/m64 0FH 0FH A6H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFRCPIT2 - Packed F.P. Reciprocal, second iteration Step
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFRCIT2 dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- Second_Step_Reciprocal(src[31..0]);
|
|
dest[63..32] <- Second_Step_Reciprocal(src[63..32]);
|
|
|
|
Note: see PFRCP for more info.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFRCIT2 mm,mm/m64 0FH 0FH B6H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFRSQIT1 - Packed F.P. Reciprocal Square Root, 1st iteration step
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFRSQIT1 dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- First_Step_Reciprocal_Square_Root(src[31..0]);
|
|
dest[63..32] <- First_Step_Reciprocal_Square_Root(src[63..32]);
|
|
|
|
Note: see RFRCP for more info
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFRSQIT1 mm,mm/m64 0FH 0FH A7H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFRSQRT - F.P. Reciprocal Square Root Approximation
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFRSQRT dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- Reciprocal_Square_Root(src[31..0]);
|
|
dest[63..32] <- Reciprocal_Square_Root(src[63..32]);
|
|
|
|
Note: see RFRCP for more info
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFRSQRT mm,mm/m64 0FH 0FH 97H Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFSUB - Packed F.P. Subtraction
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFSUB dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[31..0] - src[31..0];
|
|
dest[63..32] <- dest[63..32] - src[63..32];
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFSUB mm,mm/m64 0FH 0FH 9AH Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PFSUBR - Packed F.P. Reverse Subtraction
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PFSUBR dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- src[31..0] - dest[31..0];
|
|
dest[63..32] <- src[63..32] - dest[63..32];
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PFSUBR mm,mm/m64 0FH 0FH AAH Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PI2FD - Packed 32-bit Integer to F.P. conversion
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PI2FD dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- float(src[31..0]);
|
|
dest[63..32] <- float(src[63..32]);
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PI2FD mm,mm/m64 0FH 0FH 0DH Postbyte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PI2FW - Packed 16-bit Integer to FP Conversion
|
|
|
|
CPU: 3DNow! extension (Athlon CPU)
|
|
Type of Instruction: User
|
|
|
|
Instruction: PI2FW dest,src
|
|
|
|
Description:
|
|
dest[31:0] <- float(src[15:0]);
|
|
dest[63:32] <- float(src[47:32]);
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PI2FW mm,mm/m64 0F 0F 0C Postbyte
|
|
|
|
-----------------------------------------------------------------
|
|
PINSRW - Insert Word
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PINSRW dest,src,which_word
|
|
|
|
Description:
|
|
word TMP = which_word AND 0x3;
|
|
switch (TMP)
|
|
case 0: word MASK = 0x000000000000FFFF
|
|
case 1: word MASK = 0x00000000FFFF0000
|
|
case 2: word MASK = 0x0000FFFF00000000
|
|
case 4: word MASK = 0xFFFF000000000000
|
|
endswitch
|
|
dest <- (dest and NOT(MASK)) OR ((src << (TMP * 16)) AND MASK);
|
|
|
|
Physical Form and Timing:
|
|
PINSRW mm,r32/m16,imm8 ---- 0F C4 /r imm8 ---- ??
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMACHRIW - Packed Multiply and Accumulate with Rounding
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMACHRIW dest, src
|
|
|
|
Description:
|
|
dest[15..0] <-
|
|
dest[15..0] + (dest[15..0]*src[15..0] + 00004000H)[30..15]
|
|
dest[31..16] <-
|
|
dest[31..16] + (dest[31..16]*src[31..16] + 00004000H)[30..15]
|
|
dest[47..32] <-
|
|
dest[47..32] + (dest[47..32]*src[47..32] + 00004000H)[30..15]
|
|
dest[63..48] <-
|
|
dest[63..48] + (dest[63..48]*src[63..48] + 00004000H)[30..15]
|
|
|
|
Notes: The PMACHRIW multiplies the two source operands using the
|
|
method described for PMULHRW, and then accumulates the result with
|
|
the value in the implied destination register using wrap-around
|
|
arithmetic. The final result is placed in the implied DEST register.
|
|
The DEST must be an MMX register. The SRC must be a 64-bit
|
|
memory operand. The destination operand is an implied MMX register
|
|
that depends on the DEST.
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMACHRIW mm,m64 0FH 5EH PostByte
|
|
|
|
---------------------------------------------------
|
|
OPCODE PMADDWD - Packed Multiply and Add Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMADDWD dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[15..0] * src[15..0] + dest[31..16] * src[31..16]
|
|
dest[63..32] <- dest[47..32] * src[47..32] + dest[63..48] * src[63..48]
|
|
|
|
Note: Multiply the packed word in MMX register by the packed word in
|
|
MMXregister/memory. Add the 32-bit results pairwise and store in MMX
|
|
register as dword.
|
|
This instruction wraps around to 80000000H only when all four words
|
|
of both the source and destination operands are 8000H.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMADDWD mm,mm/m64 0FH F5H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMAGW - Packed Magnitude
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMAGW dest, src
|
|
|
|
Description:
|
|
IF abs(src[15..0]) > abs(dest[15..0]) THEN dest[15..] <-src[15..0]
|
|
IF abs(src[31..16]) > abs(dest[31..16]) THEN dest[31..16]<-src[31..16]
|
|
IF abs(src[47..32]) > abs(dest[47..32]) THEN dest[47..32]<-src[47..32]
|
|
IF abs(src[63..56]) > abs(dest[63..56]) THEN dest[63..56]<-src[63..56]
|
|
|
|
Notes: The PMAGW instruction compares the absolute value of the
|
|
packed words in the destination operand and sets the destination words
|
|
to the value that has the larger magnitude. The PMAGW instruction
|
|
does not change the sign of the value with the larger magnitude and
|
|
it does not saturate.
|
|
The DEST must be an MMX register. The SRC can be either an MMX
|
|
register or a 64-bit memory operand.
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMAGW mm,mm/m64 0FH 52H PostByte
|
|
|
|
-----------------------------------------------------------------
|
|
PMAXSW - Packed Signed Integer Word Maximum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PMAXSW dest,src
|
|
|
|
Description:
|
|
if (dest[<i>] < src[<i>]) then dest[<i>] <- src[<i>];
|
|
// Signed Integer
|
|
<0> = 0..15 <2> = 47..32
|
|
<1> = 31..16 <3> = 63..48
|
|
|
|
Physical Form and Timing:
|
|
PMAXSW mm1,mm2/m64 ---- 0F EE /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
PMAXUB - Packed Unsigned Integer Byte Maximum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PMAXUB dest,src
|
|
|
|
Description:
|
|
for i=0 to 7 do
|
|
if (dest[<i>] < src[<i>]) then dest[<i>] <- src[<i>];
|
|
// Unsigned int
|
|
endfor
|
|
<0> = 0..7 <4> = 39..32
|
|
<1> = 15..8 <5> = 47..40
|
|
<2> = 23..16 <6> = 55..48
|
|
<3> = 31..24 <7> = 63..56
|
|
|
|
Physical Form and Timing:
|
|
PMAXUB mm1,mm2/m64 ---- 0F DE /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
PMINSW - Packed Signed Integer Word Minimum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PMINSW dest,src
|
|
|
|
Description:
|
|
if (dest[<i>] > src[<i>]) then dest[<i>] <- src[<i>];
|
|
// Signed Integer
|
|
<0> = 0..15 <2> = 47..32
|
|
<1> = 31..16 <3> = 63..48
|
|
|
|
Physical Form and Timing:
|
|
PMINSW mm1,mm2/m64 ---- 0F EA /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
PMINUB - Packed Unsigned Integer Byte Minimum
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PMINUB dest,src
|
|
|
|
Description:
|
|
for i=0 to 7 do
|
|
if (dest[<i>] > src[<i>]) then dest[<i>] <- src[<i>];
|
|
// Unsigned int
|
|
endfor
|
|
<0> = 0..7 <4> = 39..32
|
|
<1> = 15..8 <5> = 47..40
|
|
<2> = 23..16 <6> = 55..48
|
|
<3> = 31..24 <7> = 63..56
|
|
|
|
Physical Form and Timing:
|
|
PMIN UB mm1,mm2/m64 ---- 0F DA /r ---- ??
|
|
|
|
-----------------------------------------------------------------
|
|
PMOVMSKB - Move Byte Mask to Integer
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PMOVMSKB dest,src
|
|
|
|
Description:
|
|
dest[31..8] <- 0;
|
|
dest[7] <- src[63];
|
|
dest[6] <- src[55];
|
|
dest[5] <- src[47];
|
|
dest[4] <- src[39];
|
|
dest[3] <- src[31];
|
|
dest[2] <- src[23];
|
|
dest[1] <- src[15];
|
|
dest[0] <- src[7];
|
|
|
|
Physical Form and Timing:
|
|
PMOVMSKB r32,mm ---- 0F D7 /r ---- ?
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMULHRIW - Packed Multiply High with Rounding, result to Implied Register
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMULHRIW dest, src
|
|
|
|
Description:
|
|
mmi[15..0] <- (dest[15..0]*src[15..0] + 00004000H)[30..15]
|
|
mmi[31..16] <- (dest[31..16]*src[31..16] + 00004000H)[30..15]
|
|
mmi[47..32] <- (dest[47..32]*src[47..32] + 00004000H)[30..15]
|
|
mmi[63..48] <- (dest[63..48]*src[63..48] + 00004000H)[30..15]
|
|
|
|
Notes: The PMULHRIW instruction are intended to give a result of the
|
|
form a 16x16 bit multiply with the LSB rounded before truncating to 16
|
|
bits.
|
|
The SRC can be either an MMX register or a 64-bit memory
|
|
operand. The destination is an MMX register, depending on the SRC.
|
|
The intent of the PMULHRIW instruction is the same as the PMULHRW
|
|
instrucction except that both sources are preserved
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMULHRIW mm,mm/m64 0FH 5DH PostByte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMULHRW - Packed Multiply High with Rounding
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMULHRW dest, src
|
|
|
|
Description:
|
|
dest[15..0] <- (dest[15..0]*src[15..0] + 00004000H)[30..15]
|
|
dest[31..16] <- (dest[31..16]*src[31..16] + 00004000H)[30..15]
|
|
dest[47..32] <- (dest[47..32]*src[47..32] + 00004000H)[30..15]
|
|
dest[63..48] <- (dest[63..48]*src[63..48] + 00004000H)[30..15]
|
|
|
|
Notes: The PMULHRW instruction are intended to give a result of the
|
|
form a 16x16 bit multiply with the LSB rounded before truncating to 16
|
|
bits. This is in contrast to the PMULHW instruction which gives a
|
|
resultof the form ss.14 with no rounding.
|
|
as the PADDSW instruction, except that it preserves both source
|
|
operands.
|
|
The SRC can be either an MMX register or a 64-bit memory
|
|
operand. The destination is an MMX register.
|
|
|
|
Flags Affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
|
|
#SS(0) If Illegal memory operands EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the operand lies outside of the
|
|
EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMULHRW mm,mm/m64 0FH 59H PostByte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMULHRW - Multiply Signed Packed 16-bits with rounding and store to 16bit
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMULHRW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- dest[15..0] * src[15..0];
|
|
dest[31..16] <- dest[31..16] * src[31..16];
|
|
dest[47..32] <- dest[47..32] * src[47..32];
|
|
dest[63..48] <- dest[63..48] * src[63..48];
|
|
|
|
Note: Saturation arithmetic.
|
|
This is not F.P. instruction
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMULHRW mm,mm/m64 0FH 0FH B7H Postvyte
|
|
|
|
-----------------------------------------------------------------
|
|
PMULHUW - Packed Multiply high unsignde word
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PMULHUW dest,src
|
|
|
|
Description:
|
|
|
|
temp1 <- dest[15:0] * src[15:0];
|
|
temp2 <- dest[31:16] * src[31:16];
|
|
temp3 <- dest[47:32] * src[47:32];
|
|
temp4 <- dest[63:48] * src[63:48];
|
|
|
|
dest[15:0] <- temp1[31:16];
|
|
dest[31:16] <- temp2[31:16];
|
|
dest[47:32] <- temp3[31:16];
|
|
dest[63:48] <- temp4[31:16];
|
|
|
|
Physical Form and Timing:
|
|
PMULHUW mm,mm/m64 0Fh E4h Postbyte
|
|
|
|
---------------------------------------------------
|
|
OPCODE PMULHW - Packed Multiply High by Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMULHW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- (dest[15..0] * src[15..0]) (31..16)
|
|
dest[31..16] <- (dest[31..16] * src[31..16]) (31..16)
|
|
dest[47..32] <- (dest[47..32] * src[47..32]) (31..16)
|
|
dest[63..48] <- (dest[63..48] * src[63..48]) (31..16)
|
|
|
|
Note: Multiply the signed packed word in MMX register with the signed
|
|
packed word in MMXregister/memory, then store the high-order 16 bits of
|
|
the results in MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMULHW mm,mm/m64 0FH E5H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PMULLW - Packed Multiply Low by Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMULLW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- (dest[15..0] * src[15..0]) (15..0)
|
|
dest[31..16] <- (dest[31..16] * src[31..16]) (15..0)
|
|
dest[47..32] <- (dest[47..32] * src[47..32]) (15..0)
|
|
dest[63..48] <- (dest[63..48] * src[63..48]) (15..0)
|
|
|
|
Note: Multiply the packed word in MMX register with the packed word in
|
|
MMXregister/memory, then store the low-order 16 bits of the results in
|
|
MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMULLW mm,mm/m64 0FH D5H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMVGEZB - Packed Conditional Move
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMVGEZB dest, src
|
|
|
|
Description:
|
|
|
|
if mmi[7..0] >= 0 then dest[7..0] <- src[7..0];
|
|
if mmi[15..8] >= 0 then dest[15..8] <- src[15..8];
|
|
if mmi[23..16] >= 0 then dest[23..16] <- src[23..16];
|
|
if mmi[31..24] >= 0 then dest[31..24] <- src[31..24];
|
|
if mmi[39..32] >= 0 then dest[39..32] <- src[39..32];
|
|
if mmi[47..40] >= 0 then dest[47..40] <- src[47..40];
|
|
if mmi[55..48] >= 0 then dest[55..48] <- src[55..48];
|
|
if mmi[63..56] >= 0 then dest[63..56] <- src[63..56];
|
|
|
|
Note: mmi is implied MMX register.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMVGEZB mm,mm/m64 0FH 5CH PostByte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMVLZB - Packed Conditional Move
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMVLZB dest, src
|
|
|
|
Description:
|
|
|
|
if mmi[7..0] < 0 then dest[7..0] <- src[7..0];
|
|
if mmi[15..8] < 0 then dest[15..8] <- src[15..8];
|
|
if mmi[23..16] < 0 then dest[23..16] <- src[23..16];
|
|
if mmi[31..24] < 0 then dest[31..24] <- src[31..24];
|
|
if mmi[39..32] < 0 then dest[39..32] <- src[39..32];
|
|
if mmi[47..40] < 0 then dest[47..40] <- src[47..40];
|
|
if mmi[55..48] < 0 then dest[55..48] <- src[55..48];
|
|
if mmi[63..56] < 0 then dest[63..56] <- src[63..56];
|
|
|
|
Note: mmi is implied MMX register.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMVLZB mm,mm/m64 0FH 5BH PostByte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMVNZB - Packed Conditional Move
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMVNZB dest, src
|
|
|
|
Description:
|
|
|
|
if mmi[7..0] <> 0 then dest[7..0] <- src[7..0];
|
|
if mmi[15..8] <> 0 then dest[15..8] <- src[15..8];
|
|
if mmi[23..16] <> 0 then dest[23..16] <- src[23..16];
|
|
if mmi[31..24] <> 0 then dest[31..24] <- src[31..24];
|
|
if mmi[39..32] <> 0 then dest[39..32] <- src[39..32];
|
|
if mmi[47..40] <> 0 then dest[47..40] <- src[47..40];
|
|
if mmi[55..48] <> 0 then dest[55..48] <- src[55..48];
|
|
if mmi[63..56] <> 0 then dest[63..56] <- src[63..56];
|
|
|
|
Note: mmi is implied MMX register.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMVNZB mm,mm/m64 0FH 5AH PostByte
|
|
|
|
-----------------------------------------------
|
|
OPCODE PMVZB - Packed Conditional Move
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PMVZB dest, src
|
|
|
|
Description:
|
|
|
|
if mmi[7..0] == 0 then dest[7..0] <- src[7..0];
|
|
if mmi[15..8] == 0 then dest[15..8] <- src[15..8];
|
|
if mmi[23..16] == 0 then dest[23..16] <- src[23..16];
|
|
if mmi[31..24] == 0 then dest[31..24] <- src[31..24];
|
|
if mmi[39..32] == 0 then dest[39..32] <- src[39..32];
|
|
if mmi[47..40] == 0 then dest[47..40] <- src[47..40];
|
|
if mmi[55..48] == 0 then dest[55..48] <- src[55..48];
|
|
if mmi[63..56] == 0 then dest[63..56] <- src[63..56];
|
|
|
|
Note: mmi is implied MMX register.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PMVZB mm,mm/m64 0FH 58H PostByte
|
|
|
|
---------------------------------------------------
|
|
OPCODE POR - Bitwise Logical Or
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: POR dest,src
|
|
|
|
Description:
|
|
|
|
dest <- dest OR src
|
|
|
|
Note: OR 64 bits from MMXregister/memory with MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
POR mm,mm/m64 0FH EBH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------------------------
|
|
PREFETCHxx - Prefetch
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PREFETCHxx src
|
|
|
|
Description:
|
|
Prefetch src memory into cache.
|
|
PREFETCH0 src - Temporal Data
|
|
Prefetch into all caches levels
|
|
PREFETCH1 src - Prefetch to all caches, except L1
|
|
PREFETCH2 src - Prefetch to all caches, except L1 and L2
|
|
PREFETCHNTA src - Non Temporal with respect to all cache levels -
|
|
prefetch to non-temporal cache structure
|
|
|
|
Physical Form and Timing:
|
|
PREFETCHNTA mem ---- 0F 18 /0 ---- ?
|
|
PREFETCH0 mem ---- 0F 18 /1 ---- ?
|
|
PREFETCH1 mem ---- 0F 18 /2 ---- ?
|
|
PREFETCH2 mem ---- 0F 18 /3 ---- ?
|
|
|
|
-----------------------------------------------
|
|
OPCODE PREFETCH - Prefetch CPU cache line into L1 data cache
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PREFETCH mem
|
|
|
|
Description:
|
|
|
|
PRELOAD_L1_DATA_CACHE_LINE(mem);
|
|
SET_LINE_STATE_TO_EXCLUSIVE; (MESI)
|
|
|
|
Note: If cache hit, then do nothing.
|
|
mem - is address of any cache-line byte.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PREFETCH mem8 0FH 0DH mm000xxx
|
|
|
|
-----------------------------------------------
|
|
OPCODE PREFETCHW - Prefetch CPU cache line into L1 data cache
|
|
|
|
CPU: AMD-3D
|
|
Type of Instruction: User
|
|
|
|
Instruction: PREFETCHW mem
|
|
|
|
Description:
|
|
|
|
PRELOAD_L1_DATA_CACHE_LINE(mem);
|
|
SET_LINE_STATE_TO_MODIFIED; (MESI)
|
|
|
|
Note: If cache hit, then do nothing.
|
|
mem - is address of any cache-line byte.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PREFETCHW mem8 0FH 0DH mm001xxx
|
|
|
|
-----------------------------------------------------------------
|
|
PSADBW - Packed Sum of Absolute Differenses
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PSADBW dest,src
|
|
|
|
Description:
|
|
SUM = 0;
|
|
for i = 1 to 7 do
|
|
SUM[15..0] = SUM[15..0] + ABS(dest[<i>] - src[<i>]);
|
|
endfor
|
|
dest[15..0] <- SUM[15..0];
|
|
dest[63..16] <- 0;
|
|
<0> = 0..7 <4> = 39..32
|
|
<1> = 15..8 <5> = 47..40
|
|
<2> = 23..16 <6> = 55..48
|
|
<3> = 31..24 <7> = 63..56
|
|
|
|
Physical Form and Timing:
|
|
PSADBW mm1,mm2/m64 ---- 0F F6 /r ---- ?
|
|
|
|
-----------------------------------------------------------------
|
|
PSHUFW - Packed Shuffle Word
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: PSHUFW dest,src,sc
|
|
|
|
Description:
|
|
Changed order of words to another:
|
|
dest[15..0] <- (src >> (sc[1..0] * 16)) [15..0];
|
|
dest[31..16] <- (src >> (sc[3..2] * 16)) [15..0];
|
|
dest[47..32] <- (src >> (sc[5..4] * 16)) [15..0];
|
|
dest[63..48] <- (src >> (sc[7..6] * 16)) [15..0];
|
|
|
|
Physical Form and Timing:
|
|
PSHUFW mm1,mm2/m64,imm8 ---- 0F 70 /r imm8 ---- ?
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSLLD - Packed Shift Left Logical Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSLLD dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest[31..0] <- dest[31..0] << temp
|
|
dest[63..32] <- dest[63..32] << temp
|
|
|
|
Note: Shift dwords in MMX register left by Imm8 or amount specified in MMX
|
|
register/memory, while shifting in zeros.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSLLD mm,mm/m64 0FH F2H PostByte
|
|
PSLLD mm,Imm8 0FH 72H/6 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSLLQ - Packed Shift Left Logical Qwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSLLQ dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest <- dest << temp
|
|
|
|
Note: Shift MMX register left by Imm8 or amount specified in MMXregister/
|
|
/memory, while shifting in zeros.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSLLQ mm,mm/m64 0FH F3H PostByte
|
|
PSLLQ mm,Imm8 0FH 73H/6 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSLLW - Packed Shift Left Logical Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSLLW dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest[15..0] <- dest[15..0] << temp
|
|
dest[31..16] <- dest[31..16] << temp
|
|
dest[47..32] <- dest[47..32] << temp
|
|
dest[63..48] <- dest[63..48] << temp
|
|
|
|
Note: Shift words in MMX register left by Imm8 or amount specified in MMX
|
|
register/memory, while shifting in zeros.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSLLW mm,mm/m64 0FH F1H PostByte
|
|
PSLLW mm,Imm8 0FH 71H/6 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSRAD - Packed Shift Right Arithmetic Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSRAD dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest[31..0] <- SignExtend(dest[31..0]) >> temp
|
|
dest[63..32] <- SignExtend(dest[63..32]) >> temp
|
|
|
|
Note: Shift dwords in MMX register right by Imm8 or amount specified in MMX
|
|
register/memory, while shifting in sign bits.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSRAD mm,mm/m64 0FH E2H PostByte
|
|
PSRAD mm,Imm8 0FH 72H/4 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSRAW - Packed Shift Right Arithmetic Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSRAW dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest[15..0] <- SignExtend(dest[15..0]) >> temp
|
|
dest[31..16] <- SignExtend(dest[31..16]) >> temp
|
|
dest[47..32] <- SignExtend(dest[47..32]) >> temp
|
|
dest[63..48] <- SignExtend(dest[63..48]) >> temp
|
|
|
|
Note: Shift words in MMX register right by Imm8 or amount specified in MMX
|
|
register/memory, while shifting in sign bits.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSRAW mm,mm/m64 0FH E1H PostByte
|
|
PSRAW mm,Imm8 0FH 71H/4 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSRLD - Packed Shift Right Logical Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSRLD dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest[31..0] <- dest[31..0] >> temp
|
|
dest[63..32] <- dest[63..32] >> temp
|
|
|
|
Note: Shift dwords in MMX register right by Imm8 or amount specified in MMX
|
|
register/memory, while shifting in zeros.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSRLD mm,mm/m64 0FH D2H PostByte
|
|
PSRLD mm,Imm8 0FH 72H/2 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSRLQ - Packed Shift Right Logical Qwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSRLQ dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest <- dest >> temp
|
|
|
|
Note: Shift MMX register right by Imm8 or amount specified in MMXregister/
|
|
/memory, while shifting in zeros.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSRLQ mm,mm/m64 0FH D3H PostByte
|
|
PSRLQ mm,Imm8 0FH 73H/2 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSRLW - Packed Shift Right Logical Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSRLW dest,src
|
|
|
|
Description:
|
|
|
|
temp <- src
|
|
dest[15..0] <- dest[15..0] >> temp
|
|
dest[31..16] <- dest[31..16] >> temp
|
|
dest[47..32] <- dest[47..32] >> temp
|
|
dest[63..48] <- dest[63..48] >> temp
|
|
|
|
Note: Shift words in MMX register right by Imm8 or amount specified in MMX
|
|
register/memory, while shifting in zeros.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSRLW mm,mm/m64 0FH D1H PostByte
|
|
PSRLW mm,Imm8 0FH 71H/2 PostByte ImmData
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBB - Packed Subtract Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- dest[7..0] - src[7..0]
|
|
dest[15..8] <- dest[15..8] - src[15..8]
|
|
dest[23..16] <- dest[23..16] - src[23..16]
|
|
dest[31..24] <- dest[31..24] - src[31..24]
|
|
dest[39..32] <- dest[39..32] - src[39..32]
|
|
dest[47..40] <- dest[47..40] - src[47..40]
|
|
dest[55..48] <- dest[55..48] - src[55..48]
|
|
dest[63..56] <- dest[63..56] - src[63..56]
|
|
|
|
Note: This instruction subtract packed byte in MMXregister/memory from
|
|
packed byte in MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBB mm,mm/m64 0FH F8H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBD - Packed Subtract Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBD dest,src
|
|
|
|
Description:
|
|
|
|
dest[31..0] <- dest[31..0] - src[31..0]
|
|
dest[63..32] <- dest[63..48] - src[63..32]
|
|
|
|
Note: This instruction subtract packed dword in MMXregister/memory from
|
|
packed dword in MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBD mm,mm/m64 0FH FAH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBSB - Packed Subtract with Saturation Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBSB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- SaturateToSignedByte(dest[7..0] - src[7..0])
|
|
dest[15..8] <- SaturateToSignedByte(dest[15..8] - src[15..8])
|
|
dest[23..16] <- SaturateToSignedByte(dest[23..16] - src[23..16])
|
|
dest[31..24] <- SaturateToSignedByte(dest[31..24] - src[31..24])
|
|
dest[39..32] <- SaturateToSignedByte(dest[39..32] - src[39..32])
|
|
dest[47..40] <- SaturateToSignedByte(dest[47..40] - src[47..40])
|
|
dest[55..48] <- SaturateToSignedByte(dest[55..48] - src[55..48])
|
|
dest[63..56] <- SaturateToSignedByte(dest[63..56] - src[63..56])
|
|
|
|
Note: This instruction subtract signed packed byte in MMXregister/memory
|
|
from signed packed byte in MMX register and saturate.
|
|
If the result is larger or smaller than the range of a signed byte,
|
|
the value is saturated; in the case of an overflow - to 7FH, and the
|
|
case of an underflow - to 80H
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBSB mm,mm/m64 0FH E8H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PSUBSIW - Packed Subtract with Saturation, using Implied Destination
|
|
|
|
CPU: Cyrix with Extended MMX Instruction Set
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBSIW dest, src
|
|
|
|
Description:
|
|
|
|
mmi[15..0] <- SaturateToSignedWord(dest[15..0] - src[15..0]);
|
|
mmi[31..16] <- SaturateToSignedWord(dest[31..16] - src[31..16]);
|
|
mmi[47..32] <- SaturateToSignedWord(dest[47..32] - src[47..32]);
|
|
mmi[63..48] <- SaturateToSignedWord(dest[63..48] - src[63..48]);
|
|
|
|
Note: mmi is implied MMX register.
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBSIW mm,mm/m64 0FH 55H PostByte
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBSW - Packed Subtract with Saturation Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBSW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- SaturateToSignedWord(dest[15..0] - src[15..0])
|
|
dest[31..16] <- SaturateToSignedWord(dest[31..16] - src[31..16])
|
|
dest[47..32] <- SaturateToSignedWord(dest[47..32] - src[47..32])
|
|
dest[63..48] <- SaturateToSignedWord(dest[63..48] - src[63..48])
|
|
|
|
Note: This instruction subtract signed packed word in MMXregister/memory
|
|
from signed packed word in MMX register and saturate.
|
|
If the result is larger or smaller than the range of a signed word,
|
|
the value is saturated; in the case of an overflow - to 7FFFH, and the
|
|
case of an underflow - to 8000H
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBSW mm,mm/m64 0FH E9H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBUSB - Packed Subtract Unsigned with Saturation Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBUSB dest,src
|
|
|
|
Description:
|
|
|
|
dest[7..0] <- SaturateToUnsignedByte(dest[7..0] - src[7..0])
|
|
dest[15..8] <- SaturateToUnsignedByte(dest[15..8] - src[15..8])
|
|
dest[23..16] <- SaturateToUnsignedByte(dest[23..16] - src[23..16])
|
|
dest[31..24] <- SaturateToUnsignedByte(dest[31..24] - src[31..24])
|
|
dest[39..32] <- SaturateToUnsignedByte(dest[39..32] - src[39..32])
|
|
dest[47..40] <- SaturateToUnsignedByte(dest[47..40] - src[47..40])
|
|
dest[55..48] <- SaturateToUnsignedByte(dest[55..48] - src[55..48])
|
|
dest[63..56] <- SaturateToUnsignedByte(dest[63..56] - src[63..56])
|
|
|
|
Note: This instruction subtract unsigned packed byte in MMXregister/memory
|
|
from unsigned packed byte in MMX register and saturate.
|
|
If the result element is less than zero (a negative value), it is
|
|
saturated to 00H
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBUSB mm,mm/m64 0FH D8H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBUSW - Packed Subtract Unsigned with Saturation Bytes
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBUSW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- SaturateToUnsignedWord(dest[15..0] - src[15..0])
|
|
dest[31..16] <- SaturateToUnsignedWord(dest[31..16] - src[31..16])
|
|
dest[47..32] <- SaturateToUnsignedWord(dest[47..32] - src[47..32])
|
|
dest[63..48] <- SaturateToUnsignedWord(dest[63..48] - src[63..48])
|
|
|
|
Note: This instruction subtract unsigned packed word in MMXregister/memory
|
|
from unsigned packed word in MMX register and saturate.
|
|
If the result element is less than zero (a negative value), it is
|
|
saturated to 0000H
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBUSW mm,mm/m64 0FH D9H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PSUBW - Packed Subtract Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSUBW dest,src
|
|
|
|
Description:
|
|
|
|
dest[15..0] <- dest[15..0] - src[15..0]
|
|
dest[31..16] <- dest[31..16] - src[31..16]
|
|
dest[47..32] <- dest[47..32] - src[47..32]
|
|
dest[63..48] <- dest[63..48] - src[63..48]
|
|
|
|
Note: This instruction subtract packed word in MMXregister/memory from
|
|
packed word in MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSUBW mm,mm/m64 0FH F9H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------
|
|
OPCODE PSWAPD - Packed Swap Doubleword
|
|
|
|
CPU: 3DNow! extension (Athlon CPU)
|
|
Type of Instruction: User
|
|
|
|
Instruction: PSWAPD dest, src
|
|
|
|
Description:
|
|
|
|
dest[63:32] <- src[31:0];
|
|
dest[31:0] <- src[63:32];
|
|
|
|
Note:
|
|
|
|
Flags Affected: None
|
|
|
|
++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PSWAPD mm,mm/m64 0Fh 0Fh BBh Postbyte
|
|
|
|
---------------------------------------------------
|
|
OPCODE PUNPCKHBW - Unpack High Bytes to Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PUNPCKHBW dest,src
|
|
|
|
Description:
|
|
|
|
dest[63..56] <- src[63..56]
|
|
dest[55..48] <- dest[63..56]
|
|
dest[47..40] <- src[55..48]
|
|
dest[39..32] <- dest[55..48]
|
|
dest[31..24] <- src[47..40]
|
|
dest[23..16] <- dest[47..40]
|
|
dest[15..8] <- src[39..32]
|
|
dest[7..0] <- dest[39..32]
|
|
|
|
Note: This instruction unpack and interleave the high-order data elements
|
|
of the destination and source operands into the destination operand.
|
|
The low-order data elements are ignored.
|
|
When unpacking from a memory operand, the full 64-bit operand is
|
|
accessed from memory. The instruction uses only the high-order 32 bits.
|
|
If the source operand is all zeros, the result is a zero extension of
|
|
the high-order elements of the destination operand. When using
|
|
PUNPCKHBW instruction the bytes are zero extended, or unpacked into
|
|
unsigned words.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PUNPCKHBW mm,mm/m64 0FH 68H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PUNPCKHDQ - Unpack High Dwords to Qwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PUNPCKHDQ dest,src
|
|
|
|
Description:
|
|
|
|
dest[63..32] <- src[63..32]
|
|
dest[31..0] <- dest[63..32]
|
|
|
|
Note: This instruction unpack and interleave the high-order data elements
|
|
of the destination and source operands into the destination operand.
|
|
The low-order data elements are ignored.
|
|
When unpacking from a memory operand, the full 64-bit operand is
|
|
accessed from memory. The instruction uses only the high-order 32 bits.
|
|
If the source operand is all zeros, the result is a zero extension of
|
|
the high-order elements of the destination operand.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PUNPCKHDQ mm,mm/m64 0FH 6AH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PUNPCKHWD - Unpack High Words to Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PUNPCKHWD dest,src
|
|
|
|
Description:
|
|
|
|
dest[63..56] <- src[63..48]
|
|
dest[47..32] <- dest[63..48]
|
|
dest[31..16] <- src[47..32]
|
|
dest[15..0] <- dest[47..32]
|
|
|
|
Note: This instruction unpack and interleave the high-order data elements
|
|
of the destination and source operands into the destination operand.
|
|
The low-order data elements are ignored.
|
|
When unpacking from a memory operand, the full 64-bit operand is
|
|
accessed from memory. The instruction uses only the high-order 32 bits.
|
|
If the source operand is all zeros, the result is a zero extension of
|
|
the high-order elements of the destination operand. When using
|
|
PUNPCKHWD instruction the words are zero extended, or unpacked into
|
|
unsigned doublewords.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PUNPCKHWD mm,mm/m64 0FH 69H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PUNPCKLBW - Unpack Low Bytes to Words
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PUNPCKLBW dest,src
|
|
|
|
Description:
|
|
|
|
dest[63..56] <- src[31..24]
|
|
dest[55..48] <- dest[31..24]
|
|
dest[47..40] <- src[23..16]
|
|
dest[39..32] <- dest[23..16]
|
|
dest[31..24] <- src[15..8]
|
|
dest[23..16] <- dest[15..8]
|
|
dest[15..8] <- src[7..0]
|
|
dest[7..0] <- dest[7..0]
|
|
|
|
Note: This instruction unpack and interleave the low-order data elements
|
|
of the destination and source operands into the destination operand.
|
|
The high-order data elements are ignored.
|
|
When the source data comes from 64-bit registers, the upper 32 bits
|
|
are ignored.
|
|
When unpacking from a memory operand, only 32 bits are accessed. The
|
|
instruction uses all 32 bits.
|
|
If the source operand is all zeros, the result is a zero extension of
|
|
the low-order elements of the destination operand. When using
|
|
PUNPCKLBW instruction the bytes are zero extended, or unpacked into
|
|
unsigned words.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PUNPCKLBW mm,mm/m32 0FH 60H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PUNPCKLDQ - Unpack Low Dwords to Qwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PUNPCKLDQ dest,src
|
|
|
|
Description:
|
|
|
|
dest[63..32] <- src[31..0]
|
|
dest[31..0] <- dest[31..0]
|
|
|
|
Note: This instruction unpack and interleave the low-order data elements
|
|
of the destination and source operands into the destination operand.
|
|
When the source data comes from 64-bit registers, the upper 32 bits
|
|
are ignored.
|
|
When unpacking from a memory operand, only 32 bits are accessed. The
|
|
instruction uses all 32 bits.
|
|
If the source operand is all zeros, the result is a zero extension of
|
|
the low-order elements of the destination operand.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PUNPCKLDQ mm,mm/m32 0FH 62H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PUNPCKLWD - Unpack Low Words to Dwords
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PUNPCKLWD dest,src
|
|
|
|
Description:
|
|
|
|
dest[63..48] <- src[31..16]
|
|
dest[47..32] <- dest[31..16]
|
|
dest[31..16] <- src[15..0]
|
|
dest[15..0] <- dest[15..0]
|
|
|
|
Note: This instruction unpack and interleave the low-order data elements
|
|
of the destination and source operands into the destination operand.
|
|
When the source data comes from 64-bit registers, the upper 32 bits
|
|
are ignored.
|
|
When unpacking from a memory operand, only 32 bits are accessed. The
|
|
instruction uses all 32 bits.
|
|
If the source operand is all zeros, the result is a zero extension of
|
|
the low-order elements of the destination operand. When using
|
|
PUNPCKLWD instruction the words are zero extended, or unpacked into
|
|
unsigned doublewords.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PUNPCKLWD mm,mm/m32 0FH 61H PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE PXOR - Bitwise Logical Exclusive OR
|
|
|
|
CPU: all which supported IA MMX:
|
|
Pentium (P55C only), Pentium (tm) Pro (P6) future models
|
|
Type of Instruction: User
|
|
|
|
Instruction: PXOR dest,src
|
|
|
|
Description:
|
|
|
|
dest <- dest XOR src
|
|
|
|
Note: XOR 64 bits from MMXregister/memory to MMX register.
|
|
|
|
Flags affected: None
|
|
|
|
Exceptions:
|
|
|
|
RM PM VM SMM Description
|
|
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
|
|
#SS(0) If illegal memory operand's EA in SS
|
|
#PF(fcode) If page fault
|
|
#AC #AC If unaligned memory reference then alignment
|
|
check enabled and in ring 3.
|
|
#UD #UD #UD #UD If CR0.EM = 1
|
|
#NM #NM #NM #NM If CR0.TS = 1
|
|
#MF #MF #MF #MF If pending FPU Exception
|
|
#13 #13 If any part of the the operand lies outside of
|
|
the EA space from 0 to FFFFH
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
PXOR mm,mm/m64 0FH EFH PostByte
|
|
|
|
P55C: n/a
|
|
future P6: n/a
|
|
|
|
-----------------------------------------------------------------
|
|
RCPPS - Packed Single-FP Reciprocal
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: RCPPS dest,src
|
|
|
|
Description:
|
|
for i = 0 to 3 do
|
|
dest[<i>] = APPROX(1.0 / src[<i>]);
|
|
endfor
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
RCPPS xmm1,xmm2/m128 ---- 0F 53 /r ---- 1
|
|
|
|
-----------------------------------------------------------------
|
|
RCPSS - Scalar Single-FP Reciprocal
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: RCPSS dest,src
|
|
|
|
Description:
|
|
dest[31..0] = APPROX(1.0 / src[31..0]);
|
|
|
|
Physical Form and Timing:
|
|
RCPSS xmm1,xmm2/m32 ---- F3 0F 53 /r ---- 1
|
|
|
|
---------------------------------------------------
|
|
OPCODE RDMSR - Read From Model Specified Register
|
|
|
|
CPU: Pentium (tm), IBM 386SLC,486SLC,486SLC2
|
|
Type of Instruction: System
|
|
|
|
Instruction: RDMSR
|
|
|
|
Description:
|
|
|
|
IF (ECX is valid number of MSR) and (CPL=0) THEN
|
|
{
|
|
EDX:EAX <- MSR [ECX];
|
|
}
|
|
ELSE
|
|
{
|
|
General Protection Fault INT 0DH (0)
|
|
}
|
|
END
|
|
|
|
Refer to Appendix W for more info.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM0,SMM
|
|
|
|
Physical Form: RDMSR
|
|
COP (Code of Operation): 0FH 32H
|
|
Clocks: Pentium : 20-24
|
|
|
|
---------------------------------------------------
|
|
OPCODE RDPMC - Read Perfomance Monitoring Counters
|
|
|
|
CPU: Pentium (tm) Pro (P6)
|
|
Type of Instruction: User
|
|
|
|
Instruction: RDPMC
|
|
|
|
Description:
|
|
|
|
IF ((CPL<>0) AND (CR4.PCE==0))
|
|
THEN { INT D (0) ; GENERAL PROTECTION FAULT }
|
|
ELSE { EDX:EAX <- PERFOMANCE_MONITORING_REGISTER[ECX] }
|
|
Note: Valid ECX values is 0,1.
|
|
Invalid ECX values call INT D(0)
|
|
|
|
Note: CR4.PSE = bit 8 of CR4
|
|
|
|
Note: Perfomance Monitoring Registers (PMR) are aliases to some Perfomance
|
|
Monitoring MSRs:
|
|
|
|
MSR 12h is Counter #0 (Read/Write) (Perfomance Monitoring Counter # 0)
|
|
bits Description
|
|
63..40 Reserved
|
|
39..0 Current counter value
|
|
|
|
MSR 13h is Counter #1 (Read/Write) (Perfomance Monitoring Counter # 1)
|
|
bits Description
|
|
63..40 Reserved
|
|
39..0 Current counter value
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
RDPMC 0FH 33H
|
|
P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE RDSHR - Read SMM Header Pointer Register
|
|
|
|
CPU: Cyrix Cx6x86MX
|
|
Type of Instruction: SMM mode only
|
|
|
|
Instruction: RDSHR dest
|
|
|
|
Description:
|
|
|
|
dest <- SMHR (SMM Header pointer Register)
|
|
|
|
Note: Format of SMHR:
|
|
Bits Description
|
|
31..2 SMM Header pointer address
|
|
1 Reserved
|
|
0 (Valid)
|
|
if =1, then address valid
|
|
|
|
Note: SMHR pointed to phisical address SMM space area,
|
|
where will be saved non-SMM contex when entered SMM.
|
|
|
|
Format of SMM Header (for Cx6x86MX):
|
|
Address Size Description
|
|
(Relative (bit)
|
|
to SMH
|
|
pointer)
|
|
+00 32 DR7
|
|
-04h 32 EFLAGS
|
|
-08h 32 CR0
|
|
-0Ch 32 current EIP
|
|
-10h 32 next EIP
|
|
-14h 16 CS selector
|
|
-16h 16 Reserved
|
|
-18h 64 CS descriptor
|
|
-20h 16 Context
|
|
all reserved , but
|
|
22..21 CPL
|
|
-22h 16 Context
|
|
all reserved, but
|
|
15 N (Nested SMI indicator)
|
|
if = 1, current SMI serviced from SMM.
|
|
13 IS (Internal SMI indicator)
|
|
if = 1, current SMI is result of internal SMI
|
|
event.
|
|
if = 0, current SMI result of external event
|
|
4 H (SMI during CPU HALT state indicator)
|
|
if = 1, CPU was in halt or shutdown state,
|
|
before SMI.
|
|
3 S (Software SMM entry indicator)
|
|
if = 1, SMM is result of SMINT instruction
|
|
2 P (REP INSx/REP OUTSx indicator)
|
|
if = 1, current instruction have REP pfix.
|
|
1 I (IN,INSx,OUT,OUTx indicator)
|
|
if = 1, current instruction perform I/O
|
|
read/write
|
|
0 C (Code segment writable indicator)
|
|
if = 1, current code segment is writable,
|
|
if = 0, ---//---- is not writable.
|
|
-24h 16 I/O Data Size
|
|
-26h 16 I/O Write Address
|
|
-28h 32 I/O Write Data
|
|
-2Ch 32 ESI or EDI
|
|
total size of SMM header = 30h
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: SMM
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: RDSHR reg/mem32
|
|
COP (Code of Operation) : 0FH 36H Postbyte
|
|
Clocks Cx6x86MX: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE RDTSC - Read From Time Stamp Counter
|
|
|
|
CPU: Pentium (tm), Pentium Pro, AMD Am5k86
|
|
Type of Instruction: System/User
|
|
|
|
Instruction: RDTSC
|
|
|
|
Description:
|
|
|
|
IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0)) THEN
|
|
{
|
|
EDX:EAX <- TSC;
|
|
}
|
|
ELSE
|
|
{
|
|
General Protection Fault INT 0DH (0)
|
|
}
|
|
END
|
|
|
|
Note: TSC is one of MSR and after global hardware reset (not SRESET , but
|
|
RESET ) it clear to 0000000000000000H.
|
|
TSC is MSR index 10h. TSC may set using WRMSR instruction.
|
|
TSC incremented every CPU core clock cycle.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM0,SMM
|
|
; PM,VM if enable
|
|
|
|
Physical Form: RDTSC
|
|
COP (Code of Operation): 0FH 31H
|
|
Clocks: Pentium : n/a [20-24]
|
|
|
|
---------------------------------------------------
|
|
OPCODE REPC - Repeat While Carry Flag
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: Prefix
|
|
|
|
Instruction: REPC
|
|
|
|
Description:
|
|
|
|
DO
|
|
CX=CX-1;
|
|
SERVICE_PENDING_INTERRUPT;
|
|
STRING_INSTRUCTION;
|
|
LOOPWHILE ((CX<>0) AND (CF==1));
|
|
|
|
Flags Affected: None
|
|
|
|
CPU Mode: RM 8086
|
|
|
|
Physical Form: REPC
|
|
COP (Code of Operation): 65H
|
|
Clocks: NEC V20 : 2
|
|
NEC V30 : 2
|
|
|
|
---------------------------------------------------
|
|
OPCODE REPNC - Repeat While Not Carry Flag
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: Prefix
|
|
|
|
Instruction: REPNC
|
|
|
|
Description:
|
|
|
|
DO
|
|
CX=CX-1;
|
|
SERVICE_PENDING_INTERRUPT;
|
|
STRING_INSTRUCTION;
|
|
LOOPWHILE ((CX<>0) AND (CF<>1));
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM 8086
|
|
|
|
Physical Form: REPNC
|
|
COP (Code of Operation): 64H
|
|
Clocks: NEC V20 : 2
|
|
NEC V30 : 2
|
|
|
|
---------------------------------------------------
|
|
OPCODE RES3 - Restore All CPU Registers
|
|
|
|
CPU: AMD Am386SXLV, Am386DXLV
|
|
Type of Instruction: System Operation
|
|
(Work only then CPL=0)
|
|
|
|
Instruction: RES3
|
|
|
|
Description:
|
|
Load All Registers (Include Shadow Registers) from Table
|
|
Which Begin on place pointed ES:EDI
|
|
|
|
Note:
|
|
This instruction is AMD analog Intel's LOADALL instruction
|
|
but it's more i.c. return from SMM used this instruction.
|
|
|
|
Then in SMM table is in SMRAM, then non SMM then table is
|
|
in main memory.
|
|
|
|
Format of RES3 Table:
|
|
|
|
Offset Len Description
|
|
0H 4 CR0
|
|
4H 4 EFLAGS
|
|
8H 4 EIP
|
|
CH 4 EDI
|
|
10H 4 ESI
|
|
14H 4 EBP
|
|
18H 4 ESP
|
|
1CH 4 EBX
|
|
20H 4 EDX
|
|
24H 4 ESX
|
|
28H 4 EAX
|
|
2CH 4 DR6
|
|
30H 4 DR7
|
|
34H 4 TR (16 bit, zero filled up)
|
|
38H 4 LDT ---------
|
|
3CH 4 GS ---------
|
|
40H 4 FS ---------
|
|
44H 4 DS ---------
|
|
48H 4 SS ---------
|
|
4CH 4 CS ---------
|
|
50H 4 ES ---------
|
|
54H 4 TSS.attrib
|
|
58H 4 TSS.base
|
|
5CH 4 TSS.limit
|
|
60H 4 Reserved
|
|
64H 4 IDT.base
|
|
68H 4 IDT.limit
|
|
6CH 4 REP OUTS overrun flag
|
|
70H 4 GDT.base
|
|
74H 4 GDT.limit
|
|
78H 4 LDT.attrib
|
|
7CH 4 LDT.base
|
|
80H 4 LDT.limit
|
|
84H 4 GS.attrib
|
|
88H 4 GS.base
|
|
8CH 4 GS.limit
|
|
90H 4 FS.attrib
|
|
94H 4 FS.base
|
|
98H 4 FS.limit
|
|
9CH 4 DS.attrib
|
|
A0H 4 DS.base
|
|
A4H 4 DS.limit
|
|
A8H 4 SS.attrib
|
|
ACH 4 SS.base
|
|
B0H 4 SS.limit
|
|
B4H 4 CS.attrib
|
|
B8H 4 CS.base
|
|
BCH 4 CS.limit
|
|
C0H 4 ES.attrib
|
|
C4H 4 ES.base
|
|
C8H 4 ES.limit
|
|
Unknown Unusable area
|
|
100H 4 Temporary register
|
|
104H 4 -------------
|
|
108H 4 -------------
|
|
10CH 4 -------------
|
|
110H 4 -------------
|
|
114H 4 -------------
|
|
118H 4 -------------
|
|
11CH 4 -------------
|
|
120H 4 -------------
|
|
124H 4 Last EIP (Last instruction EIP for Restart)
|
|
|
|
See APPENDIX X for more info.
|
|
|
|
Format of Attrib field:
|
|
|
|
Byte Description
|
|
0 0s
|
|
1 AR (Access Right) byte in the Descriptor format
|
|
Note:
|
|
P bit is a valid bit
|
|
if valid bit=0 then Shadow Register is invalid and
|
|
INT 0DH - General Protection Fault call
|
|
DPL of SS,CS det. CPL
|
|
2-3 0s
|
|
|
|
Flags Affected: All (FLAGS Register Reload)
|
|
|
|
CPU mode: RM,PM0,SMM
|
|
|
|
Physical Form: RES3
|
|
COP (Code of Operation): 0FH 07H Note: Code is same with Intel's LOADALL
|
|
Clocks: Am386SXLV : 366
|
|
Am386DXLV : 291
|
|
|
|
---------------------------------------------------
|
|
OPCODE RES4 - Restore All CPU Registers
|
|
|
|
CPU: AMD Am486SXLV, Am486DXLV
|
|
Type of Instruction: System Operation
|
|
(Work only then CPL=0)
|
|
|
|
Instruction: RES3
|
|
|
|
Description:
|
|
Load All Registers (Include Shadow Registers) from Table
|
|
Which Begin on place pointed ES:EDI
|
|
|
|
Note:
|
|
This instruction is AMD analog Intel's LOADALL instruction
|
|
but it's more i.c. return from SMM used this instruction.
|
|
|
|
Then in SMM table is in SMRAM, then non SMM then table is
|
|
in main memory.
|
|
|
|
Format of RES3 Table:
|
|
|
|
Offset Len Description
|
|
0H 4 CR0
|
|
4H 4 EFLAGS
|
|
8H 4 EIP
|
|
CH 4 EDI
|
|
10H 4 ESI
|
|
14H 4 EBP
|
|
18H 4 ESP
|
|
1CH 4 EBX
|
|
20H 4 EDX
|
|
24H 4 ESX
|
|
28H 4 EAX
|
|
2CH 4 DR6
|
|
30H 4 DR7
|
|
34H 4 TR (16 bit, zero filled up)
|
|
38H 4 LDT ---------
|
|
3CH 4 GS ---------
|
|
40H 4 FS ---------
|
|
44H 4 DS ---------
|
|
48H 4 SS ---------
|
|
4CH 4 CS ---------
|
|
50H 4 ES ---------
|
|
54H 4 TSS.attrib
|
|
58H 4 TSS.base
|
|
5CH 4 TSS.limit
|
|
60H 4 Reserved
|
|
64H 4 IDT.base
|
|
68H 4 IDT.limit
|
|
6CH 4 REP OUTS overrun flag
|
|
70H 4 GDT.base
|
|
74H 4 GDT.limit
|
|
78H 4 LDT.attrib
|
|
7CH 4 LDT.base
|
|
80H 4 LDT.limit
|
|
84H 4 GS.attrib
|
|
88H 4 GS.base
|
|
8CH 4 GS.limit
|
|
90H 4 FS.attrib
|
|
94H 4 FS.base
|
|
98H 4 FS.limit
|
|
9CH 4 DS.attrib
|
|
A0H 4 DS.base
|
|
A4H 4 DS.limit
|
|
A8H 4 SS.attrib
|
|
ACH 4 SS.base
|
|
B0H 4 SS.limit
|
|
B4H 4 CS.attrib
|
|
B8H 4 CS.base
|
|
BCH 4 CS.limit
|
|
C0H 4 ES.attrib
|
|
C4H 4 ES.base
|
|
C8H 4 ES.limit
|
|
Unknown Unusable area
|
|
100H 4 Temporary register
|
|
104H 4 -------------
|
|
108H 4 -------------
|
|
10CH 4 -------------
|
|
110H 4 -------------
|
|
114H 4 -------------
|
|
118H 4 -------------
|
|
11CH 4 -------------
|
|
120H 4 -------------
|
|
124H 4 Last EIP (Last instruction EIP for Restart)
|
|
128H 4 PEIP - Previous SRAM space instruction pointer
|
|
12EH 36 Unused
|
|
150H 22 Floating Pointer Internal Registers (Am486DXLV)
|
|
|
|
See Appendix X for more info.
|
|
|
|
Format of Attrib field:
|
|
|
|
Byte Description
|
|
0 0s
|
|
1 AR (Access Right) byte in the Descriptor format
|
|
Note:
|
|
P bit is a valid bit
|
|
if valid bit=0 then Shadow Register is invalid and
|
|
INT 0DH - General Protection Fault call
|
|
DPL of SS,CS det. CPL
|
|
2-3 0s
|
|
|
|
Flags Affected: All (FLAGS Register Reload)
|
|
|
|
CPU mode: RM,PM0,SMM
|
|
|
|
Physical Form: RES4
|
|
COP (Code of Operation): 0FH 07H Note: Code is same with Intel's LOADALL
|
|
Clocks: Am486SXLV : N/A
|
|
|
|
---------------------------------------------------
|
|
OPCODE RETRBI - Return from Register Bank Context
|
|
Switch Interrupt.
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: RETRBI
|
|
|
|
Description:
|
|
|
|
PC <- Save PC;
|
|
PSW <- Save PSW;
|
|
|
|
Flags Affected: All
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: RETRBI
|
|
COP (Code of Operation) : 0Fh 91h
|
|
|
|
Clocks: 12
|
|
|
|
---------------------------------------------------
|
|
OPCODE RETXA - Return from Expansion Address
|
|
|
|
CPU: NEC V33/V53 only
|
|
Type of Instruction: System
|
|
|
|
Instruction: RETXA int_vector
|
|
|
|
Description:
|
|
[sp-1,sp-2] <- PSW ; PSW EQU FLAGS
|
|
[sp-3,sp-4] <- PS ; PS EQU CS
|
|
[sp-5,sp-6] <- PC ; PC EQU IP
|
|
SP <- SP -6
|
|
IE <- 0
|
|
BRK <- 0
|
|
MD <- 0
|
|
PC <- [int_vector*4 +0,+1]
|
|
PS <- [int_vector*4 +2,+3]
|
|
Disable EA mode.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: RETXA imm8
|
|
COP (Code of Operation) : 0Fh F0h imm8
|
|
|
|
Clocks: 12
|
|
|
|
---------------------------------------------------
|
|
OPCODE ROL4 - Rotate left 4 bits
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: ROL4 dest
|
|
|
|
Description:
|
|
AL dest
|
|
|
|
bits 7 4 3 0 7 4 3 0
|
|
------------- -------------
|
|
| | o <--------| <-|-o |<--\
|
|
---------|---- ------------- |
|
|
| |
|
|
\---------------------------/
|
|
|
|
Note: This instruction Rotates (4bits) left out of dest through low 4bits
|
|
of AL
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form : ROL4 reg/mem8
|
|
COP (Code of Operation) : 0FH 28H PostByte
|
|
|
|
Clocks: ROL4 reg/mem8
|
|
NEC V20: 25/28
|
|
|
|
---------------------------------------------------
|
|
OPCODE ROR4 - Rotate right 4 bits
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: ROL4 dest
|
|
|
|
Description:
|
|
AL dest
|
|
|
|
bits 7 4 3 0 7 4 3 0
|
|
------------- -------------
|
|
| | o--|------>| o-|-> o-|--\
|
|
---------^---- ------------- |
|
|
| |
|
|
\---------------------------/
|
|
|
|
Note: This instruction Rotates (4bits) right out of dest through low 4bits
|
|
of AL
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form : ROR4 reg/mem8
|
|
COP (Code of Operation) : 0FH 2AH PostByte
|
|
|
|
Clocks: ROR4 reg/mem8
|
|
NEC V20: 29/33
|
|
|
|
---------------------------------------------------
|
|
OPCODE RSDC - Restore Register and Descriptor
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
TI Potomac
|
|
Type of Instruction: System
|
|
|
|
Instruction: RSDC sreg,sorc
|
|
|
|
Description:
|
|
|
|
sreg [selector,shadow_descriptor] <- sorc
|
|
|
|
; sorc is register and descriptor structure (see below)
|
|
|
|
; Note: This instruction load segment register
|
|
; include shadow descriptor
|
|
|
|
Format or Register and Descriptor Structure:
|
|
+00 Limit (15-0)
|
|
+02 Base (15-0)
|
|
+04 Base (23-16)
|
|
+05 AR byte
|
|
+06 AR2/Limit (19-16)
|
|
+07 Base (31-24)
|
|
+08 Selector
|
|
Length of structure is 0Ah
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
|
|
|
|
1) CPL=0
|
|
2) CCR1.bit1=1 ; SMI enable
|
|
3) SMAR size > 0
|
|
4A) in SMM
|
|
4B) CCR1.bit2=1 ; SMAC is on
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: RSDC sgeg,mem80
|
|
COP (Code of Operation) : 0FH 79H [mm sreg3 mmm]
|
|
Clocks IBM BL486DX: 10
|
|
TI 486SXL : 14
|
|
|
|
Note: sreg3 is: 000 ES
|
|
001 CS
|
|
010 SS
|
|
011 DS
|
|
100 FS
|
|
101 GS
|
|
|
|
---------------------------------------------------
|
|
OPCODE RSLDT - Restore LDTR and Descriptor
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
TI Potomac
|
|
Type of Instruction: System
|
|
|
|
Instruction: RSLDT sorc
|
|
|
|
Description:
|
|
|
|
LDTR [selector,shadow_descriptor] <- sorc
|
|
|
|
; sorc is register and descriptor structure (see below)
|
|
|
|
Format or Register and Descriptor Structure:
|
|
+00 Limit (15-0)
|
|
+02 Base (15-0)
|
|
+04 Base (23-16)
|
|
+05 AR byte
|
|
+06 AR2/Limit (19-16)
|
|
+07 Base (31-24)
|
|
+08 Selector
|
|
Length of structure is 0Ah
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
|
|
|
|
1) CPL=0
|
|
2) CCR1.bit1=1 ; SMI enable
|
|
3) SMAR size > 0
|
|
4A) in SMM
|
|
4B) CCR1.bit2=1 ; SMAC is on
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: RSLDT mem80
|
|
COP (Code of Operation) : 0FH 7BH [mm 000 mmm]
|
|
Clocks IBM BL486DX: 10
|
|
TI 486SXL : 14
|
|
|
|
---------------------------------------------------
|
|
OPCODE RSM - Resume from System Managment Mode
|
|
|
|
CPU: I486 SL Enhanced+,i486SL,i386CX,i386EX
|
|
Type of Instruction: System
|
|
|
|
Instruction: RSM
|
|
|
|
Description:
|
|
|
|
Restore execution state from SMRAM and
|
|
return to previous CPU mode
|
|
|
|
CPU mode: SMM only
|
|
( INT 6 - Undefined Opcode in all other mode )
|
|
|
|
Flags Affected: All
|
|
|
|
Note: CPU state restored from dump created entrance to SMM.
|
|
The CPU leave SMM and return to previous mode.
|
|
If CPU detect any invalid state it enters shutdown.
|
|
This invalid states is:
|
|
* The value stored in State Dump Base field is not 32K aligned
|
|
address
|
|
* Any Reserved bit of CR4 is set to 1 (Pentium only)
|
|
* Any illegal Combination of CR0:
|
|
** (PG=1 and PE=0)
|
|
** (NW=1 and CD=0)
|
|
|
|
Format of Execution State in SMRAM:
|
|
Offset Register
|
|
7FFCh CR0
|
|
7FF8h CR3
|
|
7FF4h EFLAGS
|
|
7FF0h EIP
|
|
7FECh EDI
|
|
7FE8h ESI
|
|
7FE4h EBP
|
|
7FE0h ESP
|
|
7FDCh EBX
|
|
7FD8h EDX
|
|
7FD4h ECX
|
|
7FD0h EAX
|
|
7FCCh DR7
|
|
7FC4h TR, upper 2 bytes reserved
|
|
7FC0h LDTR, upper 2 bytes reserved
|
|
7FBCh GS, upper 2 bytes reserved
|
|
7FB8h FS, upper 2 bytes reserved
|
|
7FB4h DS, upper 2 bytes reserved
|
|
7FB0h SS, upper 2 bytes reserved
|
|
7FACh CS, upper 2 bytes reserved
|
|
7FA8h ES, upper 2 bytes reserved
|
|
7F98h Reserved
|
|
7F94h IDT base (4 bytes)
|
|
7F8Ch Reserved
|
|
7F88h GDT base (4 bytes)
|
|
7F04h Reserved
|
|
7F02h Auto HALT Restart Slot (2 bytes)
|
|
Bits 15..2 are reserved
|
|
Bit 1 Bit 0 Description
|
|
0 0 Resume to next instruction in interrupted
|
|
program
|
|
0 1 Unpredictable
|
|
1 0 Return to next instruction after HALT
|
|
1 1 Return to HALT state
|
|
7F00h I/O Restart Slot (2 bytes)
|
|
When RSM execution if I/O restart slot = 0FFh then
|
|
EIP modified to instruction immediate preceding the
|
|
SMI# request i.e. CPU automatically reexecute I/O
|
|
instruction which be trapped by SMI.
|
|
7EFCh SMM Revision Identificator (4 bytes)
|
|
Bits Description
|
|
31..18 Reserved
|
|
17 If=1 Processor support SMBASE relocation
|
|
else not support
|
|
16 If =1 Processor support I/O Instruction Restart
|
|
15..0 SMM Revision Identificator
|
|
P5,486s = 0000h
|
|
P54C when I/O Restarts enable = 0002h
|
|
7EF8h SMBASE Slot (4 bytes)
|
|
SMBASE is 32KB aligned 32bit dword which contained a base
|
|
address for SMRAM.
|
|
Default value is 30000h
|
|
Starting Address for for jump in SMM is:
|
|
SMBASE+8000h
|
|
Starting address for State Save area is
|
|
SMBASE+[8000h+7FFFh]
|
|
7E00h Reserved
|
|
|
|
Note: In fields marked Reserved saved and restores next registers:
|
|
CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
|
|
Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
|
|
More Information Not available Yet.
|
|
|
|
Physical Form: RSM
|
|
COP (Code of Operation) : 0FH AAH
|
|
Clocks: i386CX : 338
|
|
i486 SL Enhanced : ???
|
|
IntelDX4 : 452 ; SMBASE relocation
|
|
: 456 ; AutoHALT restart
|
|
: 465 ; I/O Trap restart
|
|
Pentium : 83
|
|
|
|
---------------------------------------------------
|
|
OPCODE RSM - Resume from SMM
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
TI Potomac
|
|
Type of Instruction: System
|
|
|
|
Instruction: RSM
|
|
|
|
Description:
|
|
|
|
RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
|
|
SMM SPACE (defined by SMAR register);
|
|
EXIT SMM;
|
|
|
|
Format of SMM Header:
|
|
Offset Length Description
|
|
-00h - Nothing (Top of SMM space) (Not accessable)
|
|
-04h 32 DR7
|
|
-08h 32 EFLAGS
|
|
-0Ch 32 CR0
|
|
-10h 32 Current EIP
|
|
-14h 32 Next instruction EIP
|
|
-16h 16 Reserved
|
|
-18h 16 CS selector
|
|
-1Ch 32 CS descriptor(63-32)
|
|
-20h 32 CS descriptor(31-0)
|
|
-24h 32 SMM Flags
|
|
[ ALL BITS are Not available in Cx486S/S2/D/D2]
|
|
Bit Description
|
|
1 I (IN/INSx/OUT/OUTx Indicator)
|
|
If =0 current instruction performed
|
|
I/O read
|
|
=1 I/O write
|
|
2 P (REP INSx/OUTx Prefix)
|
|
If =1 current instruction has REP pfix.
|
|
=0 not has REP pfix
|
|
3 S (Software SMI)
|
|
If =1 current SMM is result of execution
|
|
SMINT instruction
|
|
=0 current SMM is result of hardware SMI
|
|
Note: TI 486SXL/SXL2 support only bits 1,2.
|
|
-26h 16 I/O Write Data size
|
|
[ Not available in Cx486S/S2/D/D2]
|
|
[ Not available in TI486SXL/SXL2]
|
|
[ Not available in TI486SLC/DLC/e]
|
|
1h = byte
|
|
3h = word
|
|
fh = dword
|
|
-28h 16 I/O Write Address
|
|
[ Not avaliable in Cx486S/S2/D/D2]
|
|
[ Not available in TI486SXL/SXL2]
|
|
[ Not available in TI486SLC/DLC/e]
|
|
-2Ch 32 I/O Write Data
|
|
[ Not avaliable in Cx486S/S2/D/D2]
|
|
[ Not available in TI486SXL/SXL2]
|
|
[ Not available in TI486SLC/DLC/e]
|
|
-30h 32 ESI or EDI
|
|
This field saved value of source/destination
|
|
for restart INSx/OUTSx instruction
|
|
[ Not avaliable in Cx486S/S2/D/D2]
|
|
|
|
Flags Affected: All
|
|
|
|
CPU mode: SMM
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: RSM
|
|
COP (Code of Operation) : 0FH AAH
|
|
Clocks IBM BL486DX: 76
|
|
TI 486SXL : 58
|
|
|
|
-----------------------------------------------------------------
|
|
RSQRTPS - Packed Single-FP Square Root Reciprocal
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: RSQRTPS dest,src
|
|
|
|
Description:
|
|
for i = 0 to 3 do
|
|
dest[<i>] = APPROX(1.0 / SQRT(src[<i>]));
|
|
endfor
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
RSQRTPS xmm1,xmm2/m128 ---- 0F 52 /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
RSQRTSS - Scalar Single-FP Square Root Reciprocal
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: RSQRTPS dest,src
|
|
|
|
Description:
|
|
dest[31..0] = APPROX(1.0 / SQRT(src[31..0]));
|
|
|
|
Physical Form and Timing:
|
|
RSQRTSS xmm1,xmm2/m128 ---- F3 0F 52 /r ---- 1
|
|
|
|
---------------------------------------------------
|
|
OPCODE RSTS - Restore TR and Descriptor
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
IBM BL486DX/DX2
|
|
Type of Instruction: System
|
|
|
|
Instruction: RSTS sorc
|
|
|
|
Description:
|
|
|
|
TR [selector,shadow_descriptor] <- sorc
|
|
|
|
; sorc is register and descriptor structure (see below)
|
|
|
|
Format or Register and Descriptor Structure:
|
|
+00 Limit (15-0)
|
|
+02 Base (15-0)
|
|
+04 Base (23-16)
|
|
+05 AR byte
|
|
+06 AR2/Limit (19-16)
|
|
+07 Base (31-24)
|
|
+08 Selector
|
|
Length of structure is 0Ah
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
|
|
|
|
1) CPL=0
|
|
2) CCR1.bit1=1 ; SMI enable
|
|
3) SMAR size > 0
|
|
4A) in SMM
|
|
4B) CCR1.bit2=1 ; SMAC is on
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: RSTS mem80
|
|
COP (Code of Operation) : 0FH 7DH [mm 000 mmm]
|
|
Clocks IBM BL486DX: 10
|
|
TI 486SXL : 14
|
|
|
|
---------------------------------------------------
|
|
OPCODE SET1 - Set a Specified Bit
|
|
|
|
CPU: NEC/Sony V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: SET1 dest,bitnumb
|
|
|
|
Description:
|
|
|
|
BIT bitnumb OF dest <- 1;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: SET1 reg/mem8,CL
|
|
COP (Code of Operation) : 0FH 14H Postbyte
|
|
|
|
Physical Form: SET1 reg/mem8,imm8
|
|
COP (Code of Operation) : 0FH 1CH Postbyte imm8
|
|
|
|
Physical Form: SET1 reg/mem16,CL
|
|
COP (Code of Operation) : 0FH 15H Postbyte
|
|
|
|
Physical Form: SET1 reg/mem16,imm8
|
|
COP (Code of Operation) : 0FH 1DH Postbyte imm8
|
|
|
|
Clocks: SET1
|
|
r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
|
|
NEC V20: 4/13 5/14 4/13 5/14
|
|
|
|
---------------------------------------------------
|
|
OPCODE SETALC - Set AL to Carry Flag
|
|
|
|
CPU: Intel 8086 and all its clones and upward
|
|
compatibility chips.
|
|
Type of Instruction: User
|
|
|
|
Instruction: SETALC
|
|
|
|
Description:
|
|
|
|
IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
Physical Form: SETALC
|
|
COP (Code of Operation): D6H
|
|
Clocks: 80286 : n/a [3]
|
|
80386 : n/a [3]
|
|
Cx486SLC : n/a [2]
|
|
i486 : n/a [3]
|
|
Pentium : n/a [3]
|
|
Note: n/a is Time that Intel etc not say.
|
|
[3] is real time it executed.
|
|
|
|
-----------------------------------------------------------------
|
|
SFENCE - Store Fence
|
|
|
|
CPU: Pentium III+ (KNI/MMX2), AMD Athlon (AMD EMMX)
|
|
Type of instruction: User
|
|
|
|
Instruction: SFENCE
|
|
|
|
Description:
|
|
Guranteed that every store instruction that precedes in program
|
|
order the store fence instruction is globally visible before any
|
|
store instruction follows the fence is globally visible.
|
|
|
|
Physical Form and Timing:
|
|
SFENCE ---- 0F AE F8 ---- ?
|
|
|
|
-----------------------------------------------------------------
|
|
SHUFPS - Shuffle Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: SHUFPS dest,src,sc
|
|
|
|
Description:
|
|
for i=0 to 3 do
|
|
SEL = (sc >> (i*2)) AND 3;
|
|
dest[<i>] <- src[<SEL>];
|
|
endfor
|
|
|
|
Physical Form and Timing:
|
|
SHUFPS xmm1,xmm2/m128,imm8 ---- 0F C6 /r imm8 ---- ?
|
|
|
|
---------------------------------------------------
|
|
OPCODE SMI - System Managment Interrupt
|
|
|
|
CPU: AMD Am386SXLV,Am386DXLV
|
|
AMD 486s
|
|
Type of Instruction: System
|
|
|
|
Instruction: SMI
|
|
|
|
Description:
|
|
|
|
IF (SMIE=1) THEN
|
|
{
|
|
SAVE STATUS OF EXECUTION TO SMRAM;
|
|
ENTER SMM;
|
|
SMMS <- 1;
|
|
}
|
|
ELSE
|
|
{
|
|
INT 1;
|
|
}
|
|
END
|
|
|
|
Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
|
|
=1 Enable soft SMI
|
|
=0 Disable soft SMI
|
|
SMMS is <SMM status bit> (DR6.bit12)
|
|
=1 SMM was entered
|
|
=0 SMM status cleared
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM?,PM0
|
|
|
|
Physical Form: SMI
|
|
COP (Code of Operation): F1H
|
|
Clocks: Am386SXLV : 357
|
|
Am386DXLV : 325
|
|
Am486xxxx : Don't know, do you?
|
|
|
|
---------------------------------------------------
|
|
OPCODE SMINT - Software SMM Interrupt
|
|
|
|
CPU: Cyrix Cx486DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
Note: Never in Cx486S/S2/D/D2
|
|
Never in any TI's chips.
|
|
Type of Instruction: System
|
|
|
|
Instruction: SMINT
|
|
|
|
Description:
|
|
SAVE CPU STATE TO SMM HEADER AT THE TOP OF
|
|
SMM SPACE (defined by SMAR register);
|
|
ENTER SMM MODE;
|
|
|
|
Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: SMINT
|
|
COP (Code of Operation) : 0FH 7EH
|
|
Clocks IBM BL486DX: 24
|
|
|
|
-----------------------------------------------------------------
|
|
SQRTPS - Packed Single-FP Square Root
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: SQRTPS dest,src
|
|
|
|
Description:
|
|
for i = 0 to 3 do
|
|
dest[<i>] = SQRT(src[<i>]);
|
|
endfor
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
SQRTPS xmm1,xmm2/m128 ---- 0F 51 /r ---- 56-114
|
|
|
|
-----------------------------------------------------------------
|
|
SQRTSS - Scalar Single-FP Square Root
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: SQRTSS dest,src
|
|
|
|
Description:
|
|
dest[31..0] = SQRT(src[31..0]);
|
|
|
|
Physical Form and Timing:
|
|
SQRTSS xmm1,xmm2/m32 ---- F3 0F 51 /r ---- 8-??
|
|
|
|
-----------------------------------------------------------------
|
|
STMXCSR - Store Streaming SIMD Extension Control/Status
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: STMXCSR dest
|
|
|
|
Description:
|
|
dest <- MXCSR
|
|
For format of MXCSR look LDMXCSR instruction
|
|
|
|
Physical Form and Timing:
|
|
STMXCSR m32 ---- 0F AE /3 ---- ?
|
|
|
|
---------------------------------------------------
|
|
OPCODE STOP - Stop CPU
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: STOP
|
|
|
|
Description:
|
|
PowerDown instruction, Stop Oscillator,
|
|
Halt CPU.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: STOP
|
|
COP (Code of Operation) : 0Fh BEh
|
|
|
|
Clocks: N/A
|
|
|
|
---------------------------------------------------
|
|
OPCODE SUB4S - Subtraction of packed BCD strings
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: SUB4S
|
|
|
|
Description:
|
|
|
|
BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
|
|
BCD STRING (ADDRESS=DS:SI,LENGTH=CL) -
|
|
BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
|
|
|
|
Length of BCD string in CL;
|
|
|
|
Note: si,di,cl and other registers not changed
|
|
|
|
Flags Affected: OF,CF,ZF
|
|
;; ZF set if result is zero.
|
|
;; CF,OF set as result of operation with most
|
|
;; signification BCDs.
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: SUB4S
|
|
COP (Code of Operation) : 0FH 22H
|
|
|
|
Clocks: SUB4S
|
|
NEC V20: ~7+19*CL
|
|
|
|
-----------------------------------------------------------------
|
|
SUBPS - Packed Single-FP Subtract
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: SUBPS dest,src
|
|
|
|
Description:
|
|
for i = 0 to 3 do
|
|
dest[<i>] = dest[<i>] - src[<i>];
|
|
endfor
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
SUBPS xmm1,xmm2/m128 ---- 0F 5C /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
SUBSS - Scalar Single-FP Subtract
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: SUBSS dest,src
|
|
|
|
Description:
|
|
dest[31..0] = dest[31..0] - src[31..0];
|
|
|
|
Physical Form and Timing:
|
|
SUBSS xmm1,xmm2/m32 ---- F3 0F 5C /r ---- 1
|
|
|
|
---------------------------------------------------
|
|
OPCODE SVDC - Save Register and Descriptor
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
TI Potomac
|
|
Type of Instruction: System
|
|
|
|
Instruction: SVDC dest,sreg
|
|
|
|
Description:
|
|
|
|
dest <- sreg [selector,shadow_descriptor]
|
|
|
|
; dest is register and descriptor structure (see below)
|
|
|
|
Format or Register and Descriptor Structure:
|
|
+00 Limit (15-0)
|
|
+02 Base (15-0)
|
|
+04 Base (23-16)
|
|
+05 AR byte
|
|
+06 AR2/Limit (19-16)
|
|
+07 Base (31-24)
|
|
+08 Selector
|
|
Length of structure is 0Ah
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
|
|
|
|
1) CPL=0
|
|
2) CCR1.bit1=1 ; SMI enable
|
|
3) SMAR size > 0
|
|
4A) in SMM
|
|
4B) CCR1.bit2=1 ; SMAC is on
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: SVDC mem80,sreg
|
|
COP (Code of Operation) : 0FH 78H [mm sreg3 mmm]
|
|
Clocks IBM BL486DX: 18
|
|
TI 486SXL : 22
|
|
|
|
Note: sreg3 is: 000 ES
|
|
001 CS
|
|
010 SS
|
|
011 DS
|
|
100 FS
|
|
101 GS
|
|
|
|
---------------------------------------------------
|
|
OPCODE SVLDT - Save LDTR and Descriptor
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
TI Potomac
|
|
Type of Instruction: System
|
|
|
|
Instruction: SVLDT dest
|
|
|
|
Description:
|
|
|
|
dest <- LDTR [selector,shadow_descriptor]
|
|
|
|
; dest is register and descriptor structure (see below)
|
|
|
|
Format or Register and Descriptor Structure:
|
|
+00 Limit (15-0)
|
|
+02 Base (15-0)
|
|
+04 Base (23-16)
|
|
+05 AR byte
|
|
+06 AR2/Limit (19-16)
|
|
+07 Base (31-24)
|
|
+08 Selector
|
|
Length of structure is 0Ah
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
|
|
|
|
1) CPL=0
|
|
2) CCR1.bit1=1 ; SMI enable
|
|
3) SMAR size > 0
|
|
4A) in SMM
|
|
4B) CCR1.bit2=1 ; SMAC is on
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: SVLDT mem80
|
|
COP (Code of Operation) : 0FH 7AH [mm 000 mmm]
|
|
Clocks IBM BL486DX: 18
|
|
TI 486SXL : 22
|
|
|
|
---------------------------------------------------
|
|
OPCODE SVTS - Save TR and Descriptor
|
|
|
|
CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
TI 486SLC/DLC/e
|
|
TI 486SXL/SXL2/SXLC
|
|
TI Potomac
|
|
Type of Instruction: System
|
|
|
|
Instruction: SVTS dest
|
|
|
|
Description:
|
|
|
|
dest <- TR [selector,shadow_descriptor]
|
|
|
|
; dest is register and descriptor structure (see below)
|
|
|
|
Format or Register and Descriptor Structure:
|
|
+00 Limit (15-0)
|
|
+02 Base (15-0)
|
|
+04 Base (23-16)
|
|
+05 AR byte
|
|
+06 AR2/Limit (19-16)
|
|
+07 Base (31-24)
|
|
+08 Selector
|
|
Length of structure is 0Ah
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
|
|
|
|
1) CPL=0
|
|
2) CCR1.bit1=1 ; SMI enable
|
|
3) SMAR size > 0
|
|
4A) in SMM
|
|
4B) CCR1.bit2=1 ; SMAC is on
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: SVTS mem80
|
|
COP (Code of Operation) : 0FH 7CH [mm 000 mmm]
|
|
Clocks IBM BL486DX: 18
|
|
TI 486SXL : 22
|
|
|
|
---------------------------------------------------
|
|
OPCODE SYSCALL - Call Operating System
|
|
|
|
CPU: AMD K6-2,K6-3
|
|
Type of Instruction: User
|
|
|
|
Instruction: SYSCALL
|
|
|
|
Description:
|
|
|
|
if EFER.SCE = 1 then
|
|
{ ECX <- EIP
|
|
EIP <- STAR[31..0]
|
|
IF <- 0
|
|
VM <- 0
|
|
CS.selector <- STAR[47..32]
|
|
SS.selector <- (STAR[47..32]) + 8
|
|
CS.base <- 0
|
|
SS.base <- 0
|
|
CS.limit <- 4G
|
|
SS.limit <- 4G
|
|
CS.attr <- ReadOnly
|
|
SS.attr <- R/W, Expand-Up
|
|
CPL <- 0
|
|
} else #UD;
|
|
|
|
Note: Passing control to fixed entry point for faster OS calls.
|
|
see RDMSR for description of STAR (SYSCALL Target Address register)
|
|
|
|
Note: Command opcode equal to 286 LOADALL undocument instruction.
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
SYSCALL 0FH 05H
|
|
Am6k86: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE SYSENTER - Call Operating System
|
|
|
|
CPU: Intel Pentium II
|
|
Type of Instruction: System
|
|
|
|
Instruction: SYSENTER
|
|
|
|
Description:
|
|
|
|
if CR.0.PE == 0 then #GP(0);
|
|
if SYSENTER_CS_MSR == 0 then #GP(0);
|
|
|
|
EFLAGS.VM <- 0;
|
|
EFLAGS.IF <- 0;
|
|
|
|
CS.SEL <- SYSENTER_CS_MSR;
|
|
CPL <- 0;
|
|
CS.BASE <- 0;
|
|
CS.LIMIT <- 0xffff;
|
|
CS.ATTR.G <- 1;
|
|
CS.ATTR.S <- 1;
|
|
CS.ATTR.TYPE <- 1011b;
|
|
CS.ATTR.D <- 1;
|
|
CS.ATTR.DPL <- 0;
|
|
CS.RPL <- 0;
|
|
CS.ATTR.P <- 1;
|
|
|
|
SS.SEL <- CS.SEL+8;
|
|
SS.BASE <- 0;
|
|
SS.LIMIT <- 0xffff;
|
|
SS.ATTR.G <- 1;
|
|
SS.ATTR.S <- 1;
|
|
SS.ATTR.TYPE <- 0011b;
|
|
SS.ATTR.D <- 1;
|
|
SS.ATTR.DPL <- 0;
|
|
SS.RPL <- 0;
|
|
SS.ATTR.P <- 1;
|
|
|
|
ESP <- SYSENTER_ESP_MSR;
|
|
EIP <- SYSENTER_EIP_MSR;
|
|
|
|
Note: How to check if this instruction present:
|
|
CPUID.SEP bit must be set.
|
|
AND
|
|
CPUID.FAMILY == 6 AND (CPUID.MODEL >=3) AND (CPUID.STEP >= 3)
|
|
|
|
Note: See MSR List for more Info. (MSRs 174h,175h,176h)
|
|
|
|
Note: Passing control to fixed entry point for faster OS calls.
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
SYSENTER 0FH 34H
|
|
P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE SYSEXIT - Return from Operation System
|
|
|
|
CPU: Intel Pentium II
|
|
Type of Instruction: Privelege (CPL =0)
|
|
|
|
Instruction: SYSRET
|
|
|
|
Description:
|
|
|
|
if CR.0.PE == 0 then #GP(0);
|
|
if SYSENTER_CS_MSR == 0 then #GP(0);
|
|
|
|
EFLAGS.VM <- 0;
|
|
EFLAGS.IF <- 0;
|
|
|
|
CS.SEL <- SYSENTER_CS_MSR + 16;
|
|
CPL <- 0;
|
|
CS.BASE <- 0;
|
|
CS.LIMIT <- 0xffff;
|
|
CS.ATTR.G <- 1;
|
|
CS.ATTR.S <- 1;
|
|
CS.ATTR.TYPE <- 1011b;
|
|
CS.ATTR.D <- 1;
|
|
CS.ATTR.DPL <- 0;
|
|
CS.RPL <- 0;
|
|
CS.ATTR.P <- 1;
|
|
|
|
SS.SEL <- CS.SEL+8;
|
|
SS.BASE <- 0;
|
|
SS.LIMIT <- 0xffff;
|
|
SS.ATTR.G <- 1;
|
|
SS.ATTR.S <- 1;
|
|
SS.ATTR.TYPE <- 0011b;
|
|
SS.ATTR.D <- 1;
|
|
SS.ATTR.DPL <- 0;
|
|
SS.RPL <- 0;
|
|
SS.ATTR.P <- 1;
|
|
|
|
ESP <- SYSENTER_ESP_MSR;
|
|
EIP <- SYSENTER_EIP_MSR;
|
|
|
|
Note: See SYSENTER for more Info.
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
SYSEXIT 0FH 35H
|
|
P6: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE SYSRET - Return from Operation System
|
|
|
|
CPU: AMD K6-2,K6-3
|
|
Type of Instruction: Privelege (CPL =0)
|
|
|
|
Instruction: SYSRET
|
|
|
|
Description:
|
|
|
|
if EFER.SCE == 1
|
|
{
|
|
if CPL == 0
|
|
{
|
|
EIP <- ECX
|
|
IF <- 1
|
|
CS.selector <- STAR[47..32] OR 3H
|
|
CS.base <- 0
|
|
CS.limit <- 4GB
|
|
CS.attr <- ReadOnly
|
|
SS <- (STAR[47..32]) + 16) OR 3H
|
|
} else #GP(0);
|
|
} else #UD;
|
|
|
|
Note: Passing control from OS entry point back to ring 3 client.
|
|
see RDMSR for description of STAR (SYSCALL Target Address register)
|
|
|
|
Note: Command opcode equal to 386/486 LOADALL undocument instruction.
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
COP & Times:
|
|
|
|
SYSRET 0FH 07H
|
|
Am6k86: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE TEST1 - Test a Specified bit
|
|
|
|
CPU: NEC/Sony all V-series
|
|
Type of Instruction: User
|
|
|
|
Instruction: NOT1 dest,bitnumb
|
|
|
|
Description:
|
|
IF dest IS 8BIT THEN bitn <- bitnumb AND 7;
|
|
IF dest IS 16BIT THEN bitn <- bitnumb AND Fh;
|
|
|
|
IF (BIT bitn OF dest) = 0 THEN
|
|
{
|
|
ZF <- 1;
|
|
}
|
|
ELSE {
|
|
ZF <- 0;
|
|
}
|
|
ENDIF
|
|
|
|
Flags Affected: ZF
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: TEST1 reg/mem8,CL
|
|
COP (Code of Operation) : 0FH 10H Postbyte
|
|
|
|
Physical Form: TEST1 reg/mem8,imm8
|
|
COP (Code of Operation) : 0FH 18H Postbyte imm8
|
|
|
|
Physical Form: TEST1 reg/mem16,CL
|
|
COP (Code of Operation) : 0FH 11H Postbyte
|
|
|
|
Physical Form: TEST1 reg/mem16,imm8
|
|
COP (Code of Operation) : 0FH 19H Postbyte imm8
|
|
|
|
Clocks: TEST1
|
|
r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
|
|
NEC V20: 3/12 4/13 3/12 4/13
|
|
|
|
---------------------------------------------------
|
|
OPCODE TSKSW - Task Switch
|
|
|
|
CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
|
|
Type of Instruction: System
|
|
|
|
Instruction: TSKSW reg16
|
|
|
|
Description: Perform a High-Speed task switch to the register bank indicated
|
|
by lower 3 bits of reg16. The PC and PSW are saved in the old
|
|
banks. PC and PSW save Registers and the new PC and PSW values
|
|
are retrived from the new register bank's save area.
|
|
|
|
Note: See BRKCS instruction for more Info about banks.
|
|
|
|
Flags Affected: All
|
|
|
|
CPU mode: RM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: TSCSW reg16
|
|
COP (Code of Operation) : 0Fh 94h <1111 1RRR>
|
|
|
|
Clocks: 11
|
|
|
|
-----------------------------------------------------------------
|
|
UCOMISS - Unordered Scalar Single-FP compare and Set EFLAGS
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: UCOMISS dest,src
|
|
|
|
Description:
|
|
OF <- 0;
|
|
SF <- 0;
|
|
AF <- 0;
|
|
|
|
if (dest[31..0] UNORD src[31..0]) then
|
|
ZF <- 1;
|
|
PF <- 1;
|
|
CF <- 1;
|
|
else if (dest[31..0] > src[31..0]) then
|
|
ZF <- 0;
|
|
PF <- 0;
|
|
CF <- 0;
|
|
else if (dest[31..0] < src[31..0]) then
|
|
ZF <- 0;
|
|
PF <- 0;
|
|
CF <- 1;
|
|
else // Equal
|
|
ZF <- 1;
|
|
PF <- 0;
|
|
CF <- 0;
|
|
endif
|
|
|
|
Physical Form and Timing:
|
|
UCOMISS xmm1,xmm2/m32 ---- 0F 2E /r ---- ?
|
|
|
|
-----------------------------------------------------------------
|
|
UNPCKHPS - Unpack High Packed Single-FP Data
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: UNPCKHPS dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- dest[<2>];
|
|
dest[<1>] <- src[<2>];
|
|
dest[<2>] <- dest[<3>];
|
|
dest[<3>] <- src[<3>];
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
UNPCKHPS xmm1,xmm2/m128 ---- 0F 15 /r ---- 2
|
|
|
|
-----------------------------------------------------------------
|
|
UNPCKLPS - Unpack Low Packed Single-FP Data
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: UNPCKLPS dest,src
|
|
|
|
Description:
|
|
dest[<0>] <- dest[<0>];
|
|
dest[<1>] <- src[<0>];
|
|
dest[<2>] <- dest[<1>];
|
|
dest[<3>] <- src[<1>];
|
|
<0> = 31..0 <2> = 95..64
|
|
<1> = 63..32 <3> = 127..96
|
|
|
|
Physical Form and Timing:
|
|
UNPCKLPS xmm1,xmm2/m128 ---- 0F 14 /r ---- 2
|
|
|
|
--------------------------------------------------
|
|
OPCODE UD - Undefined Instruction
|
|
|
|
CPU: AMD Am5k86 (SSA/5, K5)
|
|
|
|
Logical Form: UD
|
|
|
|
Description:
|
|
Caused #UD exception
|
|
|
|
Flags Affected: No Flags Affected
|
|
CPU Mode : RM,PM,VM,VME,SMM
|
|
|
|
Exceptions :
|
|
RM PM V86 VME SMM
|
|
#UD #UD #UD #UD #UD Undefined Instruction
|
|
No more Exceptions
|
|
|
|
Note :
|
|
This instruction caused #UD. AMD guaranteed that in future AMD's
|
|
CPUs this instruction will caused #UD. Of course all previous CPUs
|
|
(186+) caused #UD on this opcode. This instruction used by software
|
|
writers for testing #UD exception servise routine.
|
|
|
|
++++++++++++++++++++++++++++++
|
|
|
|
Physical Form : UD
|
|
|
|
COP (Code of Operation) : 0Fh FFh
|
|
|
|
Clocks : UD
|
|
8088: Not supported
|
|
NEC V20: Not supported
|
|
80186: ~int
|
|
80286: ~int
|
|
80386: ~int
|
|
Cx486SLC: ~int
|
|
i486: ~int
|
|
Cx486DX: ~int
|
|
Cx5x86: ~int
|
|
Pentium: ~int
|
|
Nx5x86: ~int
|
|
Cx6x86: ~int
|
|
Am5k86: ~int
|
|
Pentium Pro: ~int
|
|
|
|
++++++++++++++++++++++++++++++
|
|
|
|
--------------------------------------------------
|
|
OPCODE UD2 - Undefined Instruction
|
|
|
|
CPU: Pentium Pro+ and all other
|
|
|
|
Logical Form: UD2
|
|
|
|
Description:
|
|
Caused #UD exception
|
|
|
|
Flags Affected: No Flags Affected
|
|
CPU Mode : RM,PM,VM,VME,SMM
|
|
|
|
Exceptions :
|
|
RM PM V86 VME SMM
|
|
#UD #UD #UD #UD #UD Undefined Instruction
|
|
No more Exceptions
|
|
|
|
Note :
|
|
This instruction caused #UD. Intel guaranteed that in future Intel's
|
|
CPUs this instruction will caused #UD. Of course all previous CPUs
|
|
(186+) caused #UD on this opcode. This instruction used by software
|
|
writers for testing #UD exception servise routine.
|
|
|
|
++++++++++++++++++++++++++++++
|
|
|
|
Physical Form : UD2
|
|
|
|
COP (Code of Operation) : 0Fh 0Bh
|
|
|
|
Clocks : UD2
|
|
8088: Not supported
|
|
NEC V20: Not supported
|
|
80186: ~int
|
|
80286: ~int
|
|
80386: ~int
|
|
Cx486SLC: ~int
|
|
i486: ~int
|
|
Cx486DX: ~int
|
|
Cx5x86: ~int
|
|
Pentium: ~int
|
|
Nx5x86: ~int
|
|
Cx6x86: ~int
|
|
Am5k86: ~int
|
|
Pentium Pro: ~int
|
|
|
|
++++++++++++++++++++++++++++++
|
|
|
|
---------------------------------------------------
|
|
OPCODE UMOV - Mov Data to Main (User) Memory
|
|
|
|
CPU: AMD Am386SXLV,Am386DXLV
|
|
AMD 486s
|
|
IBM 486SLC2
|
|
Type of Instruction: Special System
|
|
|
|
Instruction: UMOV dest,sorc
|
|
|
|
Description:
|
|
|
|
dest <- sorc;
|
|
|
|
Note!!!!!: But all memory operands placed in Main memory only !
|
|
( i.e. not in SMRAM then in SMM )
|
|
|
|
WARNING: UMC's CPUs hang on execution this instruction !!!!!!
|
|
check that CPU is none UMC's before
|
|
|
|
Note: On Cyrix's CPUs UMOV opcodes do nothing. This way used to
|
|
determination of Cyrix Microprocessors.
|
|
|
|
Note: Pentium P54C never support this instruction
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM?,PM?,VM?,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: UMOV r/m8,r8
|
|
COP (Code of Operation) : 0FH 10H Postbyte
|
|
|
|
Clocks:
|
|
Am386SXLV or AM386DXLV: 2/2
|
|
IBM 486SLC2 : 4
|
|
+++++++++++++++++++++
|
|
Physical Form: UMOV r/m16,r16
|
|
UMOV r/m32,r32
|
|
COP (Code of Operation) : 0FH 11H Postbyte
|
|
|
|
Clocks:
|
|
Am386SXLV or AM386DXLV: 2/2
|
|
IBM 486SLC2 : 4
|
|
+++++++++++++++++++++++
|
|
Physical Form: UMOV r8,r/m8
|
|
COP (Code of Operation) : 0FH 12H Postbyte
|
|
|
|
Clocks:
|
|
Am386SXLV or AM386DXLV: 2/4
|
|
IBM 486SLC2 : 4
|
|
+++++++++++++++++++++
|
|
Physical Form: UMOV r16,r/m16
|
|
UMOV r32,r/m32
|
|
COP (Code of Operation) : 0FH 13H Postbyte
|
|
|
|
Clocks:
|
|
Am386SXLV or AM386DXLV: 2/4
|
|
IBM 486SLC2 : 4
|
|
|
|
---------------------------------------------------
|
|
OPCODE WBINVD - Write Back and Invalidate Cache
|
|
|
|
CPU: I486 +
|
|
Type of Instruction: System
|
|
|
|
Instruction: WBINVD
|
|
|
|
Description:
|
|
IF (internal cache is WB and in WB mode) THEN
|
|
{
|
|
Write Back Internal Cache;
|
|
}
|
|
Flush internal cache;
|
|
Signal external cache to Write Back;
|
|
Signal external cache to Flush;
|
|
|
|
Notes: This instruction not work in Real Mode and in
|
|
Protected mode work only in ring 0 ;
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: PM0,SMM
|
|
|
|
Physical Form: INVD
|
|
COP (Code of Operation): 0FH 09H
|
|
Clocks: Cyrix Cx486SLC : 4
|
|
i486 : 5
|
|
Pentium : 2000+
|
|
|
|
---------------------------------------------------
|
|
OPCODE WRMSR - Write to Model Specified Register
|
|
|
|
CPU: Pentium (tm), IBM 486SLC2
|
|
Type of Instruction: System
|
|
|
|
Instruction: WRMSR
|
|
|
|
Description:
|
|
|
|
IF (ECX is valid number of MSR) and (CPL=0) THEN
|
|
{
|
|
MSR [ECX] <- EDX:EAX;
|
|
}
|
|
ELSE
|
|
{
|
|
General Protection Fault INT 0DH (0)
|
|
}
|
|
END
|
|
|
|
Flags Affected: None
|
|
|
|
Note: Refer to RDMSR for more Info.
|
|
|
|
CPU mode: RM,PM0,SMM
|
|
|
|
Physical Form: WRMSR
|
|
COP (Code of Operation): 0FH 30H
|
|
Clocks: Pentium : 30-45
|
|
|
|
---------------------------------------------------
|
|
OPCODE WRSHR - Write SMM Header Pointer Register
|
|
|
|
CPU: Cyrix Cx6x86MX
|
|
Type of Instruction: SMM mode only
|
|
|
|
Instruction: WRSHR src
|
|
|
|
Description:
|
|
|
|
SMHR <- src
|
|
|
|
Note: See RDSHR for more details
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: SMM
|
|
|
|
++++++++++++++++
|
|
|
|
Physical Form: RDSHR reg/mem32
|
|
COP (Code of Operation) : 0FH 37H Postbyte
|
|
Clocks Cx6x86MX: n/a
|
|
|
|
---------------------------------------------------
|
|
OPCODE XADD - Exchange and addition
|
|
|
|
CPU: i486+
|
|
Type of Instruction: User
|
|
|
|
Instruction: XADD dest,sorc
|
|
|
|
Description:
|
|
|
|
Temporary <- dest;
|
|
dest <- dest + sorc;
|
|
sorc <- Temporary;
|
|
|
|
Flags Affected: ZF,OF,SF,AF,PF,CF ( like ADD instruction ) ( see description)
|
|
|
|
CPU mode: RM,PM,VM,SMM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: XADD r/m8,r8
|
|
COP (Code of Operation) : 0FH C0H Postbyte
|
|
|
|
Clocks:
|
|
Intel i486 : 3/4
|
|
Cyrix Cx486SLC : 3/6
|
|
Pentium (tm) : 3/4
|
|
|
|
Penalty if cache miss :
|
|
Intel i486 : 6/2 ; Unlocked/Locked
|
|
Cyrix Cx486SLC : 0 ; N/A
|
|
+++++++++++++++++++++
|
|
Physical Form: XADD r/m16,r16
|
|
XADD r/m32,r32
|
|
COP (Code of Operation) : 0FH C1H Postbyte
|
|
|
|
Clocks:
|
|
Intel i486 : 3/4
|
|
Cyrix Cx486SLC : 3/6
|
|
Pentium (tm) : 3/4
|
|
|
|
Penalty if cache miss :
|
|
Intel i486 : 6/2 ; Unlocked/Locked
|
|
Cyrix Cx486SLC : 1 ; N/A
|
|
|
|
---------------------------------------------------
|
|
OPCODE XBTS - Extract Bits String
|
|
|
|
CPU: 80386 step A0-B0 only
|
|
Type of Instruction: User
|
|
|
|
Instruction: XBTS dest,base,bitoffset,len
|
|
|
|
Description:
|
|
Write bit string length <len> bits from bitfield, defined by
|
|
<base> and bitsoffset <bitoffset> from this base to start of
|
|
the field to read. String read from this start field bit to
|
|
higher memory addresses or register bits.
|
|
And after it string placed to <dest> operand, lowest bit of
|
|
register or memory to bit 0 of <dest>.
|
|
|
|
Note: Use SHLD/SHRD instructions for extract bits strings.
|
|
On 80386 steps B1+ this opcode generation INT 6,
|
|
and on some of 486 other instruction replace this
|
|
instruction opcode.
|
|
|
|
Flags Affected: None
|
|
|
|
CPU mode: RM,PM,VM
|
|
|
|
+++++++++++++++++++++++
|
|
Physical Form: XBTS r16,r/m16,AX,CL
|
|
XBTS r32,r/m32,EAX,CL
|
|
COP (Code of Operation) : 0FH A6H Postbyte
|
|
|
|
Clocks: XBTS
|
|
80386: 6/13
|
|
|
|
-----------------------------------------------------------------
|
|
XORPS - Bit-wise Logical XOR For Single-FP
|
|
|
|
CPU: Pentium III+ (KNI/MMX2)
|
|
Type of instruction: User
|
|
|
|
Instruction: XORPS dest,src
|
|
|
|
Description:
|
|
dest = dest XOR src; // Bitwize 128-bit
|
|
|
|
Physical Form and Timing:
|
|
XORPS xmm1,xmm2/m128 ---- 0F 57 /r ---- 2
|
|
|
|
-----------------------------------------------------
|
|
APPENDIX A0
|
|
Cyrix Cx486SLC/DLC configuration Registers
|
|
|
|
for Cx486DLC:
|
|
Register Full Register Name Index size(bits)
|
|
CCR0 Configuration Control Register #0 C0H 8
|
|
CCR1 Configuration Control Register #1 C1H 8
|
|
NCR1 Non-cacheble Region #0 C4H-C6H 24
|
|
NCR2 Non-cachable Region #1 C7H-C9H 24
|
|
NCR3 Non-cacheble Region #2 CAH-CCH 24
|
|
NCR4 Non-cacheble Region #4 CDH-CFH 24
|
|
|
|
for Cx486SLC:
|
|
Register Full Register Name Index size(bits)
|
|
CCR0 Configuration Control Register #0 C0H 8
|
|
CCR1 Configuration Control Register #1 C1H 8
|
|
NCR1 Non-cacheble Region #0 C5H-C6H 16
|
|
NCR2 Non-cachable Region #1 C8H-C9H 16
|
|
NCR3 Non-cacheble Region #2 CBH-CCH 16
|
|
NCR4 Non-cacheble Region #4 CEH-CFH 16
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH then Cyrix CPU
|
|
generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR0 00H
|
|
CCR1 xxxx xxx0B
|
|
NCR1 000Fh
|
|
NCR2 0
|
|
NCR3 0
|
|
NCR4 0
|
|
|
|
format of registers:
|
|
|
|
CCR0:
|
|
Bit Name Description
|
|
7 SUSPEND
|
|
If =1 then enable SUSP# and SUSPA# pins, which used for
|
|
put CPU in PowerSave mode.
|
|
If =0 disable
|
|
|
|
6 CO (Cache Organisation)
|
|
If =0 2ways set associative
|
|
If =1 Dirrect Mapped
|
|
|
|
5 BARB
|
|
If =1 then enable flushing internal cache when begining
|
|
HOLD state.
|
|
IF =0 disable.
|
|
|
|
4 FLUSH
|
|
If =1 enable input pin FLUSH#
|
|
if =0 disable
|
|
|
|
3 KEN
|
|
If =1 enable input pin KEN#
|
|
if =0 disable
|
|
|
|
2 A20M
|
|
If =1 enable input pin A20M#
|
|
if =0 disable
|
|
|
|
1 NC1
|
|
If=1 then 640KB-1MB area never caching
|
|
If=0 caching (but see NCRi)
|
|
|
|
0 NC0
|
|
If=1 then first 64K of each 1MB bounds not caching,
|
|
when in Real or Virtual8086 mode
|
|
If =0 caching
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7-1 Reserved
|
|
0 RPL
|
|
If =1 then enable RPLSET,RPLVAL# pins
|
|
If =0 this pins are disable and float.
|
|
|
|
NCRi:
|
|
Byte Bits Description
|
|
0 7-0 Address bits A31-A24 of non-cacheble region start
|
|
(Reserved for Cx486SLC)
|
|
1 7-0 Address bits A23-A16 of non-cachable region start
|
|
2 7-4 Address bits A15-A12 of non-cacheble region start
|
|
2 3-0 Size of non-cacheble block:
|
|
0000 Disable NCRi
|
|
0001 4K
|
|
0010 8K
|
|
0011 16K
|
|
0100 32K
|
|
0101 64K
|
|
0110 128K
|
|
0111 256K
|
|
1000 512K
|
|
1001 1M
|
|
1010 2M
|
|
1011 4M
|
|
1100 8M
|
|
1101 16M
|
|
1110 32M
|
|
1111 4G
|
|
|
|
NCRi bytes:
|
|
|
|
Byte
|
|
NCRi 0 1 2
|
|
NCR1 C4H C5H C6H
|
|
NCR2 C7H C8H C9H
|
|
NCR3 CAH CBH CCH
|
|
NCR4 CDH CEH CFH
|
|
|
|
---------------------------------------------------
|
|
APPENDIX A1
|
|
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
|
|
IBM BL486DX/DX2
|
|
configuration Registers
|
|
|
|
Register Full Register Name Index size(bits)
|
|
CCR1 Configuration Control Register #1 C1H 8
|
|
CCR2 Configuration Control Register #2 C2H 8
|
|
CCR3 Configuration Control Register #3 C3H 8
|
|
SMAR SMM Address Region CDH-CFH 24
|
|
DIR0 Device Identification register #0 FEH 8
|
|
DIR1 Device Identification register #1 FFH 8
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
|
|
CPU generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR1 00H
|
|
CCR2 00H
|
|
CCR3 00H
|
|
SMAR 0
|
|
DIR0 see DIR0 description
|
|
DIR1 see DIR1 description
|
|
|
|
format of registers:
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7..5 Reserved
|
|
|
|
4 NO_LOCK (Negate LOCK#)
|
|
3 MMAC (Main Memory Access)
|
|
If =1 then all data access which occur within SMI
|
|
routine (when SMAC=1) accessing main memory instead
|
|
SMM space
|
|
=0 No affects on access
|
|
2 SMAC (System Managment Memory Access)
|
|
If =1 Any access within SMM memory space issued with SMAADS#
|
|
output active, SMI# ignored
|
|
=0 No affects on access
|
|
1 SMI (Enable SMM pins)
|
|
If =1 then enable SMI# i/o pin and SMADS# output pin
|
|
=0 Float it
|
|
0 RPL (Enable RPL pins)
|
|
If=1 then enable output pins RPLSET(1-0) and RPLVAL#
|
|
=0 Float it
|
|
|
|
CCR2:
|
|
Bit Name Description
|
|
7 SUSP (Enable Suspend pins)
|
|
If =1 SUSP# input and SUSPA# output pins enabled
|
|
=0 Float
|
|
6 BWRT (Enable Burst Write Cycle)
|
|
If =1 enable use of 16byte burst WB cycle
|
|
=0 disable
|
|
5 BARB (Enable cache coherency on Bus Arbitration)
|
|
If =1 enable write back of all dirty cache data when
|
|
HOLD is requered and prior to asserting HLDA.
|
|
=0 isable
|
|
4 WT1 (Write-Through Region 1)
|
|
If =1 Forces all writes to the 640KB-1MB region that
|
|
hit in cache issued on the external bus
|
|
3 HALT (Suspend on HALT)
|
|
If =1 CPU enters suspend mode following execution
|
|
HLT instruction.
|
|
2 LOCK_NW (Lock NW bit)
|
|
If =1 Prohibits changing the state of NW bit in CR0
|
|
1 WBAK (Enable WB Cache Interface pins)
|
|
If =1 then enable INVAL,WM_RST and HITM# pins
|
|
=0 float it
|
|
0 COP?? Reserved
|
|
(Award BIOS used this bit during coprocessor Test,
|
|
in Cx486S, Cx486S2 only)
|
|
(may be turn coprocessor on :)))
|
|
|
|
CCR3:
|
|
Note: Cyrix Cx486S/D never have CCR3 register.
|
|
Bit Name Description
|
|
7..2 Reserved
|
|
1 NMIEN (NMI Enable)
|
|
If =1 then NMI enable during SMM
|
|
If =0 NMI don't recognizing during SMM
|
|
0 SMI_LOCK (SMM Register Lock)
|
|
If =1 the following SMM control bits can not
|
|
be modified:
|
|
CCR1: bits 1,2,3
|
|
CCR3: bit 1
|
|
But this bit may be changed in SMM.
|
|
This bit (SMI_LOCK) clearing RESET only.
|
|
|
|
SMAR:
|
|
(Index CDh)
|
|
Bit Description
|
|
7..0 A31..A24 bits of starting adress of SMM region
|
|
(Index CEh)
|
|
Bit Description
|
|
7..0 A23..A16 bits of starting adress of SMM region
|
|
(Index CFh)
|
|
Bit Description
|
|
7..4 A15..A12 bits of starting adress of SMM region
|
|
3..0 Size of SMM region:
|
|
0000 SMM region disabled
|
|
0001 4K
|
|
0010 8K
|
|
0011 16K
|
|
0100 32K
|
|
0101 64K
|
|
0110 128K
|
|
0111 256K
|
|
1000 512K
|
|
1001 1M
|
|
1010 2M
|
|
1011 4M
|
|
1100 8M
|
|
1101 16M
|
|
1110 32M
|
|
1111 4K
|
|
|
|
DIR0:
|
|
Bit Description
|
|
7..0 (Device Identification)
|
|
-------------------------------------------
|
|
for Cx486SLC/e = 00h
|
|
for Cx486DLC = 01h
|
|
for Cx486SLC2 = 02h
|
|
for Cx486DLC2 = 03h
|
|
for Cx486SRx = 04h
|
|
for Cx486DRx = 05h
|
|
for Cx486SRx2 = 06h
|
|
for Cx486DRx2 = 07h
|
|
for Cx486SRu = 08h
|
|
for Cx486DRu = 09h
|
|
for Cx486SRu2 = 0Ah
|
|
for Cx486DRu2 = 0Bh
|
|
for Cx486S = 10h ; B Step
|
|
for Cx486S2 = 11h ; B Step
|
|
for Cx486Se = 12h or 14h or 16h ; 12h - B step
|
|
for Cx486S2e = 13h or 15h or 17h ; 12h - B step
|
|
for Cx486DX/BL486DX = 1Ah
|
|
for Cx486DX2/BL486DX2 = 1Bh
|
|
for ST486DX2 = 1Bh
|
|
for TI486DX2 = 1Bh
|
|
-------------------------------------------
|
|
for Cx486DX4 (x2 mode)= 1Bh (x2 mode)
|
|
Note: DIR1 = 36h for DX4
|
|
1Fh (x3 mode)
|
|
-------------------------------------------
|
|
for Cx5x86 (M1sc) = 28h (x1,S)
|
|
= 29h (x2,S)
|
|
= 2Ah (x1,P)
|
|
= 2Bh (x2,P)
|
|
= 2Ch (x4,S)
|
|
= 2Dh (x3,S)
|
|
= 2Eh (x4,P)
|
|
= 2Fh (x3,P)
|
|
-------------------------------------------
|
|
for Cyrix Cx6x86 (M1) = 20h,30h (1x,S) [DIR1 < 20h]
|
|
= 21h,31h (2x,S) [DIR1 < 20h]
|
|
= 22h,32h (1x,P) [DIR1 < 20h]
|
|
= 23h,33h (2x,P) [DIR1 < 20h]
|
|
= 24h,34h (4x,S) [DIR1 < 20h]
|
|
= 25h,35h (3x,S) [DIR1 < 20h]
|
|
= 26h,36h (4x,P) [DIR1 < 20h]
|
|
= 27h,37h (3x,P) [DIR1 < 20h]
|
|
-------------------------------------------
|
|
for Cyrix Cx6x86L(M1) = 30h (1x) [DIR1 > 21h]
|
|
= 31h (2x) [DIR1 > 21h]
|
|
= 35h (3x) [DIR1 > 21h]
|
|
= 34h (4x) [DIR1 > 21h]
|
|
-------------------------------------------
|
|
for Cyrix MediaGX = 41h (3x) [DIR1: 00h-2Fh]
|
|
= 44h (4x,S) [DIR1: 00h-2Fh]
|
|
= 45h (3x,S) [DIR1: 00h-2Fh]
|
|
= 46h (4x,P) [DIR1: 00h-2Fh]
|
|
= 47h (3x,P) [DIR1: 00h-2Fh]
|
|
------------------------------------------- cor/PCI
|
|
for Cyrix GXm = 40h x4
|
|
= 41h [DIR1: 50h-FFh] x10
|
|
[DIR1: 30h-4Fh] x6
|
|
= 42h x4
|
|
= 43h x6
|
|
= 44h [DIR1: 50h-FFh] x9
|
|
[DIR1: 30h-4Fh] x7
|
|
= 45h [DIR1: 50h-FFh] x5
|
|
[DIR1: 30h-4Fh] x8
|
|
= 46h x7
|
|
= 47h [DIR1: 30h-4Fh] x5
|
|
[DIR1: 50h-FFh] x8
|
|
-------------------------------------------
|
|
for Cyrix 6x86MX (M2) [DIR1: 00h-07h or 80h-8Fh]
|
|
and Cyrix MII (M2) [DIR1: 08h-7Fh]
|
|
= 50h (1.5x,S)
|
|
= 51h (2x,S)
|
|
= 52h (2.5x,S)
|
|
= 53h (3x,S)
|
|
= 54h (3.5x,S)
|
|
= 55h (4x,S)
|
|
= 56h (4.5x,S)
|
|
= 57h (5x,S)
|
|
= 58h (1,5x,P)
|
|
= 59h (2x,P)
|
|
= 5Ah (2.5x,P)
|
|
= 5Bh (3x,P)
|
|
= 5Ch (3.5x,P)
|
|
= 5Dh (4x,P)
|
|
= 5Eh (4.5x,P)
|
|
= 5Fh (5x,P)
|
|
-------------------------------------------
|
|
for TI486DX4 = 81h
|
|
for Cyrix OverDrive = FDh
|
|
for TI Potomac's = FFh ;; None connections
|
|
|
|
Important Note: The original Cx486SLC never have DIRi registers.
|
|
|
|
DIR1:
|
|
Note: Cyrix Cx486S/D never have DIR1 register.
|
|
Bit Name Description
|
|
7..4 SID Stepping Identificator
|
|
3..0 RID Revision Identification
|
|
|
|
See Appendix A3 for more information
|
|
|
|
CPU DIR0 DIR1 NOTE
|
|
Cx486DX-40 1Ah 05h
|
|
Cx486DX-50 1Ah 05h
|
|
Cx486DX2-50 1Bh 08h
|
|
Cx486DX2-50 1Bh 08h Marked 001 on pin side of chip
|
|
ST486DX2-66 1Bh 0Bh
|
|
ST486DX2-66 1Bh 0Bh
|
|
|
|
Cx486DX2-v80 1Bh 31h 3 VOLT
|
|
Cx486DX4-v100 1Fh 36h 3 VOLT
|
|
Cx5x86-100 2Dh 13h 3 VOLT
|
|
|
|
TI486DX2-66,80 1Bh 32h stepping eA0
|
|
TI486DX2-66,80 1Bh B2h stepping eB0
|
|
TI486DX4-100 81h 91h
|
|
|
|
-----------------------------------------------------
|
|
APPENDIX A2
|
|
TI486SXLC/SXL configuration Registers
|
|
|
|
for TI486SXL
|
|
--------------
|
|
Register Full Register Name Index size(bits)
|
|
CCR0 Configuration Control Register #0 C0H 8
|
|
CCR1 Configuration Control Register #1 C1H 8
|
|
ARR1 Address Region #1 C4H-C6H 24
|
|
ARR2 Address Region #2 C7H-C9H 24
|
|
ARR3 Address Region #3 CAH-CCH 24
|
|
ARR4 Address Region #4 CDH-CFH 24
|
|
|
|
for TI486SXLC
|
|
--------------
|
|
Register Full Register Name Index size(bits)
|
|
CCR0 Configuration Control Register #0 C0H 8
|
|
CCR1 Configuration Control Register #1 C1H 8
|
|
ARR1 Address Region #1 C5H-C6H 16
|
|
ARR2 Address Region #2 C8H-C9H 16
|
|
ARR3 Address Region #3 CBH-CCH 16
|
|
ARR4 Address Region #4 CEH-CFH 16
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH then Cyrix CPU
|
|
generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR0 00H
|
|
CCR1 xxxx xxx0B
|
|
ARR1 000Fh ; 4Gbyte Non-Caching Region
|
|
ARR2 0
|
|
ARR3 0
|
|
ARR4 0
|
|
|
|
format of registers:
|
|
|
|
CCR0:
|
|
Bit Name Description
|
|
7 SUS
|
|
If =1 then enable SUSP# and SUSPA# pins, which used for
|
|
put CPU in PowerSave mode.
|
|
If =0 disable
|
|
|
|
6 CKD (Clock Double)
|
|
If =0 Disable Clock-double mode
|
|
If =1 Enable Clock-Double mode
|
|
|
|
5 BARB
|
|
If =1 then enable flushing internal cache when begining
|
|
HOLD state.
|
|
IF =0 disable.
|
|
|
|
4 FLUSH
|
|
If =1 enable input pin FLUSH#
|
|
if =0 disable
|
|
|
|
3 KEN
|
|
If =1 enable input pin KEN#
|
|
if =0 disable
|
|
|
|
2 A20M
|
|
If =1 enable input pin A20M#
|
|
if =0 disable
|
|
|
|
1 NC1
|
|
If=1 then 640KB-1MB area never caching
|
|
If=0 caching (but see NCRi)
|
|
|
|
0 NC0
|
|
If=1 then first 64K of each 1MB bounds not caching,
|
|
when in Real or Virtual8086 mode
|
|
If =0 caching
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7 SM4
|
|
Access Region 4 Control
|
|
If=1 then Region 4 is non-cachable SMM Memory Space
|
|
If=0 Region 4 is non-cachable. SMI# input ignored.
|
|
|
|
6 WP3
|
|
Access Region 3 Control
|
|
If=1 then Region 3 is write-protected and cachable
|
|
If=0 Region 3 is non-cachable.
|
|
|
|
5 WP2
|
|
Access Region 2 Control
|
|
If=1 then Region 2 is write-protected and cachable
|
|
If=0 Region 2 is non-cachable.
|
|
|
|
4 WP1
|
|
Access Region 1 Control
|
|
If=1 then Region 1 is write-protected and cachable
|
|
If=0 Region 1 is non-cachable.
|
|
|
|
3 NMAC
|
|
Main Memory Access
|
|
If=1 All data accesses which occur within SMI service routine
|
|
(or then SMAC=1) will access main memory instead of SMM Memory space
|
|
If=0 No changes in access
|
|
|
|
2 SMAC
|
|
System Managment memory access
|
|
If=1 Any access to addresses within SMM memory space cause external bus
|
|
cycles to be issued with SMADS# output active. SMI# input is ignored.
|
|
|
|
1 SMI
|
|
Enable SMM Pins
|
|
If=1 SMI# input/output pin and SMADS# output pin are enabled
|
|
If=0 Disabled
|
|
|
|
0 Reserved
|
|
|
|
ARRi:
|
|
Byte Bits Description
|
|
0 7-0 Address bits A31-A24 of non-cacheble region start
|
|
(Reserved for TI486SXLC)
|
|
1 7-0 Address bits A23-A16 of non-cachable region start
|
|
2 7-4 Address bits A15-A12 of non-cacheble region start
|
|
2 3-0 Size of non-cacheble block:
|
|
0000 Disable NCRi
|
|
0001 4K
|
|
0010 8K
|
|
0011 16K
|
|
0100 32K
|
|
0101 64K
|
|
0110 128K
|
|
0111 256K
|
|
1000 512K
|
|
1001 1M
|
|
1010 2M
|
|
1011 4M
|
|
1100 8M
|
|
1101 16M
|
|
1110 32M
|
|
1111 4G
|
|
|
|
ARRi bytes:
|
|
|
|
Byte
|
|
ARRi 0 1 2
|
|
ARR1 C4H C5H C6H
|
|
ARR2 C7H C8H C9H
|
|
ARR3 CAH CBH CCH
|
|
ARR4 CDH CDH CEH
|
|
|
|
---------------------------------------------------
|
|
APPENDIX A3
|
|
Texas Instruments TI486DX2,TI486DX4
|
|
configuration Registers
|
|
|
|
Register Full Register Name Index size(bits)
|
|
CCR1 Configuration Control Register #1 C1H 8
|
|
CCR2 Configuration Control Register #2 C2H 8
|
|
CCR3 Configuration Control Register #3 C3H 8
|
|
SMAR SMM Address Region CDH-CFH 24
|
|
DIR0 Device Identification register #0 FEH 8
|
|
DIR1 Device Identification register #1 FFH 8
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
|
|
CPU generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR1 00H
|
|
CCR2 00H
|
|
CCR3 00H
|
|
SMAR 0
|
|
DIR0 see DIR0 description
|
|
DIR1 see DIR1 description
|
|
|
|
format of registers:
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7..5 Reserved
|
|
|
|
4 NO_LOCK (Negate LOCK#)
|
|
If =0 Usuall scheme
|
|
If =1 previously noncachable locked cycles will be
|
|
executed as unlocked, result is higher perfomanse.
|
|
3 MMAC (Main Memory Access)
|
|
If =1 then all data access which occur within SMI
|
|
routine (when SMAC=1) accessing main memory instead
|
|
SMM space
|
|
=0 No affects on access
|
|
2 SMAC (System Managment Memory Access)
|
|
If =1 Any access within SMM memory space issued with SMAADS#
|
|
output active, SMI# ignored
|
|
=0 No affects on access
|
|
1 SMI (Enable SMM pins)
|
|
If =1 then enable SMI# i/o pin and SMADS# output pin
|
|
=0 Float it
|
|
0 RPL (Enable RPL pins)
|
|
If=1 then enable output pins RPLSET(1-0) and RPLVAL#
|
|
=0 Float it
|
|
|
|
CCR2:
|
|
Bit Name Description
|
|
7 SUSP (Enable Suspend pins)
|
|
If =1 SUSP# input and SUSPA# output pins enabled
|
|
=0 Float
|
|
6 BWRT (Enable Burst Write Cycle)
|
|
If =1 enable use of 16byte burst WB cycle
|
|
=0 disable
|
|
5 BARB (Enable cache coherency on Bus Arbitration)
|
|
If =1 enable write back of all dirty cache data when
|
|
HOLD is requered and prior to asserting HLDA.
|
|
=0 isable
|
|
4 WT1 (Write-Through Region 1)
|
|
If =1 Forces all writes to the 640KB-1MB region that
|
|
hit in cache issued on the external bus
|
|
3 HALT (Suspend on HALT)
|
|
If =1 CPU enters suspend mode following execution
|
|
HLT instruction.
|
|
2 LOCK_NW (Lock NW bit)
|
|
If =1 Prohibits changing the state of NW bit in CR0
|
|
1 WBAK (Enable WB Cache Interface pins)
|
|
If =1 then enable INVAL,WM_RST and HITM# pins
|
|
=0 float it
|
|
0 Reserved
|
|
|
|
CCR3:
|
|
Note: Cyrix Cx486S/D never have CCR3 register.
|
|
Bit Name Description
|
|
7..4 Reserved
|
|
3 SM_MODE (SMM Mode Select)
|
|
If =0 then Normal SMM mode (Cyrix style)
|
|
If =1 then SL-compatible mode
|
|
(but SMI_LOCK MUST BE 0)
|
|
Note: For more info refer to
|
|
"TI486DX2 Microprocessor SM Mode Programming Guide"
|
|
// Texas Instruments 1995 (literature number SRZU019)
|
|
2 Reserved
|
|
1 NMIEN (NMI Enable)
|
|
If =1 then NMI enable during SMM
|
|
If =0 NMI don't recognizing during SMM
|
|
0 SMI_LOCK (SMM Register Lock)
|
|
If =1 the following SMM control bits can not
|
|
be modified:
|
|
CCR1: bits 1,2,3
|
|
CCR3: bit 1
|
|
Any SMAR bits
|
|
But this bit may be changed in SMM.
|
|
This bit (SMI_LOCK) clearing RESET only.
|
|
|
|
SMAR:
|
|
(Index CDh)
|
|
Bit Description
|
|
7..0 A31..A24 bits of starting adress of SMM region
|
|
(Index CEh)
|
|
Bit Description
|
|
7..0 A23..A16 bits of starting adress of SMM region
|
|
(Index CFh)
|
|
Bit Description
|
|
7..4 A15..A12 bits of starting adress of SMM region
|
|
3..0 Size of SMM region:
|
|
0000 SMM region disabled
|
|
0001 4K
|
|
0010 8K
|
|
0011 16K
|
|
0100 32K
|
|
0101 64K
|
|
0110 128K
|
|
0111 256K
|
|
1000 512K
|
|
1001 1M
|
|
1010 2M
|
|
1011 4M
|
|
1100 8M
|
|
1101 16M
|
|
1110 32M
|
|
1111 4K
|
|
|
|
DIR0:
|
|
Bit Description
|
|
7..0 (Device Identification)
|
|
for TI486DX2 = 1Bh (compare with Cyrix's DIR0)
|
|
for TI486DX4 = 81h
|
|
|
|
DIR1:
|
|
Bit Name Description
|
|
7 MID Manafacturer ID
|
|
0 = Cyrix
|
|
1 = Texas Instruments (support starting TI486DX2 eB0 steping)
|
|
6..4 SID Stepping Identificator
|
|
3..0 RID Revision Identification
|
|
|
|
see Appendix A1 for more info about identification.
|
|
|
|
---------------------------------------------------
|
|
APPENDIX A4
|
|
Cyrix Cx5x86, IBM 5x86
|
|
configuration Registers
|
|
for access
|
|
Register Full Register Name Index size(bits) MAPEN(3..0)
|
|
PCR0 Perfomance Control register 20h 8 1
|
|
CCR1 Configuration Control Register #1 C1H 8 x
|
|
CCR2 Configuration Control Register #2 C2H 8 x
|
|
CCR3 Configuration Control Register #3 C3H 8 x
|
|
CCR4 Configuration Control Register #4 E8h 8 1
|
|
SMAR SMM Address Region CDH-CFH 24 x
|
|
PMR Power Managment register F0h 8 1
|
|
DIR0 Device Identification register #0 FEH 8 x
|
|
DIR1 Device Identification register #1 FFH 8 x
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
|
|
CPU generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR1 00H
|
|
CCR2 00H
|
|
CCR3 00H
|
|
SMAR 0
|
|
DIR0 see DIR0 description
|
|
DIR1 see DIR1 description
|
|
|
|
format of registers:
|
|
|
|
PCR0:
|
|
Bit Name Description
|
|
7 LSSER If set, all memory reads/writes will occur in execution order
|
|
6..3 Reserved
|
|
2 LOOP_EN If set, enables faster support for loops.
|
|
1 BTB_EN If set, enables the Branch Target Buffer for branch prediction
|
|
0 RSTK_EN If se, enables call return stack
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7..4 Reserved
|
|
3 MMAC (Main Memory Access)
|
|
If =1 then all data access which occur within SMI
|
|
routine (when SMAC=1) accessing main memory instead
|
|
SMM space
|
|
=0 No affects on access
|
|
2 SMAC (System Managment Memory Access)
|
|
If =1 Any access within SMM memory space issued with SMAADS#
|
|
output active, SMI# ignored
|
|
=0 No affects on access
|
|
1 SMI (Enable SMM pins)
|
|
If =1 then enable SMI# i/o pin and SMADS# output pin
|
|
=0 Float it
|
|
0 Reserved
|
|
|
|
CCR2:
|
|
Bit Name Description
|
|
7 SUSP (Enable Suspend pins)
|
|
If =1 SUSP# input and SUSPA# output pins enabled
|
|
=0 Float
|
|
6 BWRT (Enable Burst Write Cycle)
|
|
If =1 enable use of 16byte burst WB cycle
|
|
=0 disable
|
|
5 Reserved
|
|
4 WT1 (Write-Through Region 1)
|
|
If =1 Forces all writes to the 640KB-1MB region that
|
|
hit in cache issued on the external bus
|
|
3 HALT (Suspend on HALT)
|
|
If =1 CPU enters suspend mode following execution
|
|
HLT instruction.
|
|
2 LOCK_NW (Lock NW bit)
|
|
If =1 Prohibits changing the state of NW bit in CR0
|
|
1 WBAK (Enable WB Cache Interface pins)
|
|
If =1 then enable INVAL,WM_RST and HITM# pins
|
|
=0 float it
|
|
0 Reserved
|
|
|
|
CCR3:
|
|
Bit Name Description
|
|
7..4 MAPEN(3-0) (Register Mapping Enable)
|
|
If set to 0001b all register accessible,
|
|
else 0000h then accessed only (C0j-CFh,FEh,FFh)
|
|
3 SMM_MODE
|
|
If =1, then CPU hardware interface pins are redefined to
|
|
function like SMM hardware interface on SL Enhanced Intel's CPUs
|
|
2 LINBRST
|
|
If =1, CPU will use linear address sequence when performing
|
|
burst cycle, If =0 CPU will used 1+4 address sequence.
|
|
1 NMIEN (NMI Enable)
|
|
If =1 then NMI enable during SMM
|
|
If =0 NMI don't recognizing during SMM
|
|
0 SMI_LOCK (SMM Register Lock)
|
|
If =1 the following SMM control bits can not
|
|
be modified:
|
|
CCR1: bits 1,2,3
|
|
CCR3: bit 1
|
|
But this bit may be changed in SMM.
|
|
This bit (SMI_LOCK) clearing RESET only.
|
|
|
|
SMAR:
|
|
(Index CDh)
|
|
Bit Description
|
|
7..0 A31..A24 bits of starting adress of SMM region
|
|
(Index CEh)
|
|
Bit Description
|
|
7..0 A23..A16 bits of starting adress of SMM region
|
|
(Index CFh)
|
|
Bit Description
|
|
7..4 A15..A12 bits of starting adress of SMM region
|
|
3..0 Size of SMM region:
|
|
0000 SMM region disabled
|
|
0001 4K
|
|
0010 8K
|
|
0011 16K
|
|
0100 32K
|
|
0101 64K
|
|
0110 128K
|
|
0111 256K
|
|
1000 512K
|
|
1001 1M
|
|
1010 2M
|
|
1011 4M
|
|
1100 8M
|
|
1101 16M
|
|
1110 32M
|
|
1111 4K
|
|
|
|
CCR4:
|
|
Bit Name Description
|
|
7 CPUIDEN (Enable CPUID instruction)
|
|
If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
|
|
enabled,
|
|
else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
|
|
Invalid Opcode
|
|
6 Reserved
|
|
5 FP_FAST
|
|
If =1, FPU execution reporting enabled
|
|
4 DTE
|
|
If =1, Directory Table Entry cache is enabled
|
|
3 MEM_BYP
|
|
If =1, Enabled memory read bypassing
|
|
2..0 IORT[2..0]
|
|
Specify minimum number of bus clocks between two I/O
|
|
accesses (I/O recovery time)
|
|
000 - No Delay
|
|
001 - 2 clk
|
|
010 - 4 clk
|
|
011 - 8 clk
|
|
100 - 16 clk
|
|
101 - 32 clk (Default Value)
|
|
110 - 64 clk
|
|
111 - 128 clk
|
|
|
|
PMR:
|
|
Bit Name Description
|
|
7..3 Reserved
|
|
2..0 CLK[2..0]
|
|
Select Bus/Core Operation Frequency
|
|
CLK2 CLK1 CLK0 Core/Bus
|
|
1 x x 1/2
|
|
0 0 0 1/1
|
|
0 0 1 2/1
|
|
0 1 0 3/1
|
|
0 1 1 reserved
|
|
|
|
DIR0:
|
|
Bit Description
|
|
7..0 (Device Identification)
|
|
Value Description Core/Bus clk
|
|
29h or 2Bh Cx/IBM/ST 5x86 2/1
|
|
2Dh or 2Fh Cx/IBM/ST 5x86 3/1
|
|
|
|
DIR1:
|
|
Bit Name Description
|
|
7..4 SID Stepping Identificator
|
|
3..0 RID Revision Identification
|
|
|
|
Note: 5x86 Cyrix/IBM/ST
|
|
Stepping Revision
|
|
0 0 EDX after reset = [15:8]=DIR1, [7:0]=DIR0
|
|
0 1 EDX after reset = [15:8]=DIR1, [7:0]=DIR0
|
|
0 2 EDX after reset = [15:8]=04h [7:0]=90h
|
|
0 5
|
|
1 3
|
|
|
|
see Appendix A1 for more info about identification.
|
|
|
|
---------------------------------------------------
|
|
APPENDIX A5
|
|
Cyrix Cx6x86 (M1), IBM 6x86
|
|
configuration Registers
|
|
for access
|
|
Register Full Register Name Index size(bits) MAPEN(3..0)
|
|
DBR0 30H 8 ?
|
|
??? 31H 8 ?
|
|
??? 32H 8 ?
|
|
??? 33H 8 ?
|
|
??? 34H 8 ?
|
|
??? 38H 8 ?
|
|
??? 3CH 8 ?
|
|
CCR0 Configuration Control Register #0 C0H 8 x
|
|
CCR1 Configuration Control Register #1 C1H 8 x
|
|
CCR2 Configuration Control Register #2 C2H 8 x
|
|
CCR3 Configuration Control Register #3 C3H 8 x
|
|
ARR0 Address Region Register #0 C4H-C6H 24 x
|
|
ARR1 Address Region Register #1 C7H-C9H 24 x
|
|
ARR2 Address Region Register #2 CAH-CCH 24 x
|
|
ARR3 Address Region Register #3 CDH-CFH 24 x
|
|
ARR4 Address Region Register #4 D0H-D2H 24 1
|
|
ARR5 Address Region Register #5 D3H-D5H 24 1
|
|
ARR6 Address Region Register #6 D6H-D8H 24 1
|
|
ARR7 Address Region Register #7 D9H-DBH 24 1
|
|
RCR0 Region Configuration Register #0 DCh 8 1
|
|
RCR1 Region Configuration Register #1 DDh 8 1
|
|
RCR2 Region Configuration Register #2 DEh 8 1
|
|
RCR3 Region Configuration Register #3 DFh 8 1
|
|
RCR4 Region Configuration Register #4 E0h 8 1
|
|
RCR5 Region Configuration Register #5 E1h 8 1
|
|
RCR6 Region Configuration Register #6 E2h 8 1
|
|
RCR7 Region Configuration Register #7 E3h 8 1
|
|
CCR4 Configuration Control Register #4 E8h 8 1
|
|
CCR5 Configuration Control Register #5 E9h 8 1
|
|
DIR0 Device Identification register #0 FEH 8 x
|
|
DIR1 Device Identification register #1 FFH 8 x
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
|
|
CPU generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR1 00H
|
|
CCR2 00H
|
|
CCR3 00H
|
|
SMAR 0
|
|
DIR0 see DIR0 description
|
|
DIR1 see DIR1 description
|
|
|
|
format of registers:
|
|
|
|
DBR0:
|
|
Note: This Register is Undocumented
|
|
Bit Name Description
|
|
7 ? ????
|
|
6 ? BTB TR access enabled
|
|
if = 1 MOV to/from TR1/2 enabled
|
|
5 ? Data bypassing and forwarding Enable
|
|
(default set to 1)
|
|
4-0 ? ???
|
|
|
|
Registers with Indexes 31h,32h,33h:
|
|
Used for perfomance control or CPU pipeline debbuging.
|
|
(Usually = 0).
|
|
|
|
Registers with indexes 34h,38h,3Ch exist, but description ????
|
|
|
|
CCR0:
|
|
Bit Name Description
|
|
7..2 Reserved
|
|
1 NC1 (Non-cachable 1MB)
|
|
If =1 then area 640KM-1MB is non-cachable.
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7 SM3 (System Managment Address Region 3)
|
|
If =1 then ARR3 used as SMM address space region
|
|
6..5 Reserved
|
|
4 NO_LOCK (No Lock Cycles)
|
|
If =1 all bus cycles are issued with LOCK# pin negated, except
|
|
page tables access and INTA cycles.
|
|
3 Reserved
|
|
2 SMAC (System Managment Memory Access)
|
|
If =1 Any access within SMM memory space issued with SMAADS#
|
|
output active, SMI# ignored
|
|
=0 No affects on access
|
|
1 SMI (Enable SMM pins)
|
|
If =1 then enable SMI# i/o pin and SMADS# output pin
|
|
=0 Float it
|
|
0 Reserved
|
|
|
|
CCR2:
|
|
Bit Name Description
|
|
7 SUSP (Enable Suspend pins)
|
|
If =1 SUSP# input and SUSPA# output pins enabled
|
|
=0 Float
|
|
6..5 Reserved
|
|
4 WPR1 (Write-Protected Region 1)
|
|
If =1 then any cachable accesses in the 640KB-1MB region
|
|
are Write-Protected
|
|
3 HALT (Suspend on HALT)
|
|
If =1 CPU enters suspend mode following execution
|
|
HLT instruction.
|
|
2 LOCK_NW (Lock NW bit)
|
|
If =1 Prohibits changing the state of NW bit in CR0
|
|
1..0 Reserved
|
|
|
|
CCR3:
|
|
Bit Name Description
|
|
7..4 MAPEN(3-0) (Register Mapping Enable)
|
|
If set to 0001b all register accessible,
|
|
else 0000h then accessed only (C0h-CFh,FEh,FFh)
|
|
3 Reserved
|
|
2 LINBRST
|
|
If =1, CPU will use linear address sequence when performing
|
|
burst cycle, If =0 CPU will used 1+4 address sequence.
|
|
1 NMIEN (NMI Enable)
|
|
If =1 then NMI enable during SMM
|
|
If =0 NMI don't recognizing during SMM
|
|
0 SMI_LOCK (SMM Register Lock)
|
|
If =1 the following SMM control bits can not
|
|
be modified:
|
|
CCR1: bits 1,2,3
|
|
CCR3: bit 1
|
|
ARR3: Starting address and Block size
|
|
But this bit may be changed in SMM.
|
|
This bit (SMI_LOCK) clearing RESET only.
|
|
|
|
ARRi:
|
|
-- Starting Address --- Region
|
|
ARR # A31-A24 A23-A16 A15-A12 Block Size
|
|
7..0 7..0 7..4 3..0 (Bits)
|
|
ARR0 C4h C5h C6h C6h (Index)
|
|
ARR1 C7h C8h C9h C9h
|
|
ARR2 CAh CBh CCh CCh
|
|
ARR3 CDh CEh CFh CFh
|
|
ARR4 D0h D1h D2h D2h
|
|
ARR5 D3h D4h D5h D5h
|
|
ARR6 D6h D7h D8h D8h
|
|
ARR7 D9h DAh DBh DBh
|
|
(ARRi^)
|
|
(index)
|
|
|
|
(Index ARRi+0)
|
|
Bit Description
|
|
7..0 A31..A24 bits of starting adress of region #i
|
|
(Index ARRi+1)
|
|
Bit Description
|
|
7..0 A23..A16 bits of starting adress of region #i
|
|
(Index ARRi+2)
|
|
Bit Description
|
|
7..4 A15..A12 bits of starting adress of region #i
|
|
3..0 Size of region #i :
|
|
Value ARR0-ARR6 ARR7
|
|
0000 **** region disabled ****
|
|
0001 4K 256K
|
|
0010 8K 512K
|
|
0011 16K 1M
|
|
0100 32K 2M
|
|
0101 64K 4M
|
|
0110 128K 8M
|
|
0111 256K 16M
|
|
1000 512K 32M
|
|
1001 1M 64M
|
|
1010 2M 128M
|
|
1011 4M 256M
|
|
1100 8M 512M
|
|
1101 16M 1G
|
|
1110 32M 2G
|
|
1111 4K 4G
|
|
|
|
RCRi:
|
|
Bit Name ARR# Description
|
|
7..6 any Reserved
|
|
5 NBL any If =1 LBA# pin is negated for corresponding region
|
|
4 WT any If =1 Write-Throught caching is enable for region
|
|
3 WG any If =1 Write Gathering enabled for region
|
|
2 WL any If =1 Weak Locking enable for region
|
|
1 WWO any If =1 weak write ordering enable for region
|
|
0 RCD 0..6 If =1 address region is non-cachable
|
|
0 RCE 7 If=1 region is cachable and implies thet address space
|
|
outside of region is non-cachable.
|
|
|
|
CCR4:
|
|
Bit Name Description
|
|
7 CPUIDEN (Enable CPUID instruction)
|
|
If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
|
|
enabled,
|
|
else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
|
|
Invalid Opcode
|
|
6..5 Reserved
|
|
4 DTE
|
|
If =1, Directory Table Entry cache is enabled
|
|
3 Reserved
|
|
2..0 IORT[2..0]
|
|
Specify minimum number of bus clocks between two I/O
|
|
accesses (I/O recovery time)
|
|
(base modeL) (some later models)
|
|
000 - No Delay 000 - fast
|
|
001 - 2 clk
|
|
010 - 4 clk
|
|
011 - 8 clk .......
|
|
100 - 16 clk
|
|
101 - 32 clk (Default Value)
|
|
110 - 64 clk
|
|
111 - 128 clk 111 - no delay
|
|
|
|
CCR5:
|
|
Bit Name Description
|
|
7 Reserved
|
|
6 VIPERM If = 1 then prevents any access to contol registers outside of
|
|
range C0..CF if MAPEN in CCR3 has the other value that 1.
|
|
Note:
|
|
This is effect of Disable CPU identification via DIR0
|
|
and DIR1 (reads FFh while VIPERM=1 and MAPEN != 1).
|
|
5 ARREN (Address region registers Enable)
|
|
If =1 then Enable all ARRs,
|
|
If =0 all ARRs disable, but if SM3=1 then ARR3 enable.
|
|
4 LBR1
|
|
If =1 LBA# pin asserted for all accesses to the 640KB-1MB
|
|
region
|
|
3..2 Reserved
|
|
1 SLOP (Slow Loop Instruction)
|
|
Slow Loop instruction make CPU more compatible with Pentium
|
|
for critical-timing rootining.
|
|
0 WT_ALLOC
|
|
If =1 new cache lines allocated for both read misses and
|
|
write misses, else only on read misses.
|
|
|
|
DIR0:
|
|
Bit Description
|
|
7..0 (Device Identification)
|
|
Value Description Core/Bus clk Note
|
|
20h or 22h 6x86 (M1) 1/1 Early 6x86
|
|
21h or 23h 6x86 (M1) 2/1
|
|
25h or 27h 6x86 (M1) 4/1
|
|
24h or 26h 6x86 (M1) 3/1
|
|
|
|
30h or 32h 6x86 (M1) 1/1 Modern 6x86
|
|
31h or 33h 6x86 (M1) 2/1
|
|
35h or 37h 6x86 (M1) 4/1
|
|
34h or 36h 6x86 (M1) 3/1
|
|
|
|
DIR1:
|
|
Bit Name Description
|
|
7..4 SID Stepping Identificator
|
|
3..0 RID Revision Identification
|
|
|
|
Value Description
|
|
0xh - Old Cyrix Samplers of 6x86 ???
|
|
1xh - Normal 6x86.
|
|
10h,11h,12h - Early 6x86s (with DIR0 = 2xh)
|
|
14h - v2.4
|
|
15h - v2.5
|
|
16h - v2.6
|
|
17h - v2.7 or 3.7
|
|
(first with no NT problems, with SLOP bit).
|
|
2xh - 6x86L (Dual Voltage,Lower Power)
|
|
20h,21h - Samplers
|
|
22h - v4.0 (no SLOP support)
|
|
|
|
Note: Register with Index FCh contains CPU family.
|
|
Initialized by 05h, but may be changed by USER, look CPUID instruction
|
|
for more info.
|
|
|
|
see Appendix A1 for more info about identification
|
|
-----------------------------
|
|
|
|
Format of TR1,TR2 registers:
|
|
|
|
Note: Need to Enable MOV to/from TR1/2 using DBR0 register in processor
|
|
control space.
|
|
|
|
TR1:
|
|
Bits Description
|
|
31..5? ?????
|
|
5..3 Index of register in BTB Control space.
|
|
(Register will be accesable via TR2)
|
|
2..0 ????
|
|
|
|
TR2:
|
|
Data, which will be written/reading from/to register
|
|
|
|
Registers in BTB control space:
|
|
|
|
Reg 4 - ???????
|
|
Reg 5:
|
|
Bits Description
|
|
0 BTB Disable
|
|
1 Far BTB COF hits enable.
|
|
If =1 enable BTB to predict intersegment jumps.
|
|
2 Return Stack Enable
|
|
3 ???? (used)
|
|
4..31 ?????
|
|
|
|
---------------------------------------------------
|
|
APPENDIX A6
|
|
Cyrix Cx6x86MX (M2)
|
|
for access
|
|
Register Full Register Name Index size(bits) MAPEN(3..0)
|
|
CCR0 Configuration Control Register #0 C0H 8 x
|
|
CCR1 Configuration Control Register #1 C1H 8 x
|
|
CCR2 Configuration Control Register #2 C2H 8 x
|
|
CCR3 Configuration Control Register #3 C3H 8 x
|
|
ARR0 Address Region Register #0 C4H-C6H 24 x
|
|
ARR1 Address Region Register #1 C7H-C9H 24 x
|
|
ARR2 Address Region Register #2 CAH-CCH 24 x
|
|
ARR3 Address Region Register #3 CDH-CFH 24 x
|
|
ARR4 Address Region Register #4 D0H-D2H 24 1
|
|
ARR5 Address Region Register #5 D3H-D5H 24 1
|
|
ARR6 Address Region Register #6 D6H-D8H 24 1
|
|
ARR7 Address Region Register #7 D9H-DBH 24 1
|
|
RCR0 Region Configuration Register #0 DCh 8 1
|
|
RCR1 Region Configuration Register #1 DDh 8 1
|
|
RCR2 Region Configuration Register #2 DEh 8 1
|
|
RCR3 Region Configuration Register #3 DFh 8 1
|
|
RCR4 Region Configuration Register #4 E0h 8 1
|
|
RCR5 Region Configuration Register #5 E1h 8 1
|
|
RCR6 Region Configuration Register #6 E2h 8 1
|
|
RCR7 Region Configuration Register #7 E3h 8 1
|
|
CCR4 Configuration Control Register #4 E8h 8 1
|
|
CCR5 Configuration Control Register #5 E9h 8 1
|
|
CCR6 Configuration Control Register #6 EAh 8 1
|
|
DIR0 Device Identification register #0 FEH 8 x
|
|
DIR1 Device Identification register #1 FFH 8 x
|
|
|
|
For access to this register You need to do:
|
|
|
|
A) write INDEX_OF_REGISTER to I/O port #22H
|
|
B) wait 5-6 clocks
|
|
D) read/write DATA from/to register via I/O port #23
|
|
|
|
Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
|
|
CPU generated external bus cycle. If You try to read I/O port
|
|
#22H CPU will generated external bus cycle too. Then index
|
|
is out of range all operations with port #23H will generate
|
|
external bus cycle.
|
|
|
|
State After Reset:
|
|
CCR1 00H
|
|
CCR2 00H
|
|
CCR3 00H
|
|
SMAR 0
|
|
DIR0 see DIR0 description
|
|
DIR1 see DIR1 description
|
|
|
|
format of registers:
|
|
|
|
CCR0:
|
|
Bit Name Description
|
|
7..2 Reserved
|
|
1 NC1 (Non-cachable 1MB)
|
|
If =1 then area 640KM-1MB is non-cachable.
|
|
|
|
CCR1:
|
|
Bit Name Description
|
|
7 SM3 (System Managment Address Region 3)
|
|
If =1 then ARR3 used as SMM address space region
|
|
6..5 Reserved
|
|
4 NO_LOCK (No Lock Cycles)
|
|
If =1 all bus cycles are issued with LOCK# pin negated, except
|
|
page tables access and INTA cycles.
|
|
3 Reserved
|
|
2 SMAC (System Managment Memory Access)
|
|
If =1 Any access within SMM memory space issued with SMAADS#
|
|
output active, SMI# ignored
|
|
=0 No affects on access
|
|
1 SMI (Enable SMM pins)
|
|
If =1 then enable SMI# i/o pin and SMADS# output pin
|
|
=0 Float it
|
|
0 Reserved
|
|
|
|
CCR2:
|
|
Bit Name Description
|
|
7 SUSP (Enable Suspend pins)
|
|
If =1 SUSP# input and SUSPA# output pins enabled
|
|
=0 Float
|
|
6..5 Reserved
|
|
4 WPR1 (Write-Protected Region 1)
|
|
If =1 then any cachable accesses in the 640KB-1MB region
|
|
are Write-Protected
|
|
3 HALT (Suspend on HALT)
|
|
If =1 CPU enters suspend mode following execution
|
|
HLT instruction.
|
|
2 LOCK_NW (Lock NW bit)
|
|
If =1 Prohibits changing the state of NW bit in CR0
|
|
1 SADS
|
|
If =1 CPU insert an idle cyce following the BRDY# and idle
|
|
cycle prior to asserting ADS#
|
|
0 Reserved
|
|
|
|
CCR3:
|
|
Bit Name Description
|
|
7..4 MAPEN(3-0) (Register Mapping Enable)
|
|
If set to 0001b all register accessible,
|
|
else 0000h then accessed only (C0h-CFh,FEh,FFh)
|
|
3 Reserved
|
|
2 LINBRST
|
|
If =1, CPU will use linear address sequence when performing
|
|
burst cycle, If =0 CPU will used 1+4 address sequence.
|
|
1 NMIEN (NMI Enable)
|
|
If =1 then NMI enable during SMM
|
|
If =0 NMI don't recognizing during SMM
|
|
0 SMI_LOCK (SMM Register Lock)
|
|
If =1 the following SMM control bits can not
|
|
be modified:
|
|
CCR1: bits 1,2,3
|
|
CCR3: bit 1
|
|
CCR6: bits 6,1,0
|
|
ARR3: Starting address and Block size
|
|
But this bit may be changed in SMM.
|
|
This bit (SMI_LOCK) clearing RESET only.
|
|
|
|
ARRi:
|
|
-- Starting Address --- Region
|
|
ARR # A31-A24 A23-A16 A15-A12 Block Size
|
|
7..0 7..0 7..4 3..0 (Bits)
|
|
ARR0 C4h C5h C6h C6h (Index)
|
|
ARR1 C7h C8h C9h C9h
|
|
ARR2 CAh CBh CCh CCh
|
|
ARR3 CDh CEh CFh CFh
|
|
ARR4 D0h D1h D2h D2h
|
|
ARR5 D3h D4h D5h D5h
|
|
ARR6 D6h D7h D8h D8h
|
|
ARR7 D9h DAh DBh DBh
|
|
(ARRi^)
|
|
(index)
|
|
|
|
(Index ARRi+0)
|
|
Bit Description
|
|
7..0 A31..A24 bits of starting adress of region #i
|
|
(Index ARRi+1)
|
|
Bit Description
|
|
7..0 A23..A16 bits of starting adress of region #i
|
|
(Index ARRi+2)
|
|
Bit Description
|
|
7..4 A15..A12 bits of starting adress of region #i
|
|
3..0 Size of region #i :
|
|
Value ARR0-ARR6 ARR7
|
|
0000 **** region disabled ****
|
|
0001 4K 256K
|
|
0010 8K 512K
|
|
0011 16K 1M
|
|
0100 32K 2M
|
|
0101 64K 4M
|
|
0110 128K 8M
|
|
0111 256K 16M
|
|
1000 512K 32M
|
|
1001 1M 64M
|
|
1010 2M 128M
|
|
1011 4M 256M
|
|
1100 8M 512M
|
|
1101 16M 1G
|
|
1110 32M 2G
|
|
1111 4G 4G
|
|
|
|
RCRi:
|
|
Bit Name ARR# Description
|
|
7 any Reserved
|
|
6 INV_RGN 0..6 If =1, then all memory outside specific memory region
|
|
treated as RCR flags for this region
|
|
(Inversion)
|
|
5 any Reserved
|
|
4 WT any If =1 Write-Throught caching is enable for region
|
|
3 WG any If =1 Write Gathering enabled for region
|
|
2 WL any If =1 Weak Locking enable for region
|
|
1 any Reserved
|
|
0 CD any If =1 address region is non-cachable
|
|
|
|
CCR4:
|
|
Bit Name Description
|
|
7 CPUIDEN (Enable CPUID instruction)
|
|
If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
|
|
enabled,
|
|
else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
|
|
Invalid Opcode
|
|
6..3 Reserved
|
|
2..0 IORT[2..0]
|
|
Specify minimum number of bus clocks between two I/O
|
|
accesses (I/O recovery time)
|
|
000 - 1 clk
|
|
001 - 2 clk
|
|
010 - 4 clk
|
|
011 - 8 clk
|
|
100 - 16 clk
|
|
101 - 32 clk (Default Value)
|
|
110 - 64 clk
|
|
111 - no delay
|
|
Note: 6x86 (M1), 000 - no delay, 111 - 128 clk
|
|
|
|
CCR5:
|
|
Bit Name Description
|
|
7..6 Reserved
|
|
5 ARREN (Address region registers Enable)
|
|
If =1 then Enable all ARRs,
|
|
If =0 all ARRs disable, but if SM3=1 then ARR3 enable.
|
|
4..1 Reserved
|
|
0 WT_ALLOC
|
|
If =1 new cache lines allocated for both read misses and
|
|
write misses, else only on read misses.
|
|
|
|
CCR6:
|
|
Bit Name Description
|
|
7 Reserved
|
|
6 N (Nested SMI Enable bit)
|
|
If =1 enable nesting of SMI
|
|
If = 0 disabled.
|
|
(This bit automatically cleared when entered every SMI routine)
|
|
5..2 Reserved
|
|
1 WP_ARR3 (Write Protected Memory Region # 3)
|
|
if =1 Memory region defined by ARR3 is write-protected,
|
|
when operating outside SMM mode
|
|
0 SMM_MODE (SMM Mode)
|
|
if = 1 Enable Cyrix Enhanced SMM
|
|
if = 0 Disable Cyrix Enhanced SMM
|
|
|
|
DIR0:
|
|
Bit Description
|
|
7..0 (Device Identification)
|
|
Value Description Core/Bus clk
|
|
5xh 6x86MX (see APPENDIX B for more details)
|
|
|
|
DIR1:
|
|
Bit Name Description
|
|
7..4 SID Stepping Identificator
|
|
3..0 RID Revision Identification
|
|
|
|
see Appendix A1 for more info about identification
|
|
|
|
Note: Try to test some Undocument Registers from Cx6x86.
|
|
|
|
----------------------------------------------
|
|
APPENDIX B
|
|
Codes which returned after Reset in EDX
|
|
|
|
DH DL
|
|
Type of CPU Steppin Model ID Revision
|
|
------------------------------------------------------------
|
|
i386DX A (00h) ??? :Early Models
|
|
B0-B10 03h 03h
|
|
04h :???
|
|
D0 05h
|
|
D1-D2 08h
|
|
E0,E1,F0 08h
|
|
------------------------------------------------------------
|
|
Am386DX/DXL A 03h 05h
|
|
B 08h
|
|
------------------------------------------------------------
|
|
i386SX A0 23h 04h
|
|
B 05h
|
|
C,D,E 08h
|
|
------------------------------------------------------------
|
|
Am386SX/SXL A1 23h 05h
|
|
B 08h
|
|
------------------------------------------------------------
|
|
Intel386CXSA A 23h 09h
|
|
------------------------------------------------------------
|
|
Intel386CXSB A 23h 09h
|
|
------------------------------------------------------------
|
|
i386EX A 23h 09h
|
|
------------------------------------------------------------
|
|
Intel386SXSA ? 23h 09h
|
|
------------------------------------------------------------
|
|
i376 A0 33h 05h
|
|
B 08h
|
|
------------------------------------------------------------
|
|
i386SL A0-A3 43h 0xh (05H)
|
|
B0-B1 1xh
|
|
------------------------------------------------------------
|
|
RapidCAD (tm) A 03h 40h
|
|
B 41h
|
|
------------------------------------------------------------
|
|
IBM 386SLC A A3h xxh
|
|
------------------------------------------------------------
|
|
Cx486SLC A 04h 10h
|
|
------------------------------------------------------------
|
|
TI486SLC/DLC/e A 04h 10h
|
|
B 11h
|
|
------------------------------------------------------------
|
|
TI486SXL/SXLC A 04h 10h
|
|
B 11h
|
|
------------------------------------------------------------
|
|
i486DX A0/A1 04h 00h
|
|
B2-B6 01h
|
|
C0 02h
|
|
C1 03h
|
|
D0 04h
|
|
cA2,cA3 10h
|
|
cB0,cB1 11h
|
|
cC0 13h
|
|
aA0,aA1 14h : SL Enhanced
|
|
aB0 15h : SL Enhanced
|
|
------------------------------------------------------------
|
|
Am486DX any 04h 12h
|
|
------------------------------------------------------------
|
|
UMC U5SD any 04h 1xh
|
|
------------------------------------------------------------
|
|
i486SX A0 04h 20h
|
|
B0 22h
|
|
bBx 23h : SL Enhanced
|
|
gAx 24h
|
|
cA0 27h
|
|
cB0 28h
|
|
aA0,aA1 2Ah : SL Enhanced
|
|
aB0,aC0 2Bh : SL Enhanced
|
|
------------------------------------------------------------
|
|
i487SX A0 04h 20h
|
|
B0 21h
|
|
------------------------------------------------------------
|
|
UMC U5S any 04h 23h
|
|
------------------------------------------------------------
|
|
UMC U5SX 486-A any 04h 23h
|
|
------------------------------------------------------------
|
|
UMC U5SD 04h 23h
|
|
------------------------------------------------------------
|
|
Cx5x86 0,rev 1- 04h 29h : core/bus clk=2/1 +clones
|
|
2Bh : core/bus clk=2/1 +clones
|
|
2Dh : core/bus clk=3/1 +clones
|
|
2Fh : core/bus clk=3/1 +clones
|
|
------------------------------------------------------------
|
|
i486DX2 & A0-A2 04h 32h
|
|
OverDrive (tm) B1 33h
|
|
aA0,aA1 34h : SL Enhanced
|
|
aB0,aC0 35h : SL Enhanced
|
|
------------------------------------------------------------
|
|
Am486DX2 any 04h 32h : 66 and 80 MHz
|
|
------------------------------------------------------------
|
|
Am486DXL2 any 04h 32h
|
|
------------------------------------------------------------
|
|
Am486DX4 any 04h 32h : Original
|
|
any 04h 84h : Enhanced in WT mode
|
|
04h 94h : Enhanced in WB mode
|
|
------------------------------------------------------------
|
|
UMC U486DX2 any 04h 3xh : ???
|
|
------------------------------------------------------------
|
|
UMC U486SX2 any 04h 5xh : ???
|
|
------------------------------------------------------------
|
|
i486SL A 04h 40h
|
|
?? 41h
|
|
------------------------------------------------------------
|
|
i486SX2 aC0 04h 5Bh : SL Enhanced
|
|
------------------------------------------------------------
|
|
IntelSX2 (tm) A 04h 5xh
|
|
OverDrive (tm)
|
|
------------------------------------------------------------
|
|
WB Enh IntelDX2 A 04h 70h : in WB mode
|
|
(P24D) 36h : in WT mode
|
|
------------------------------------------------------------
|
|
IBM BL486DX2 A 04h 80h
|
|
------------------------------------------------------------
|
|
IntelDX4 (tm) A 04h 80h
|
|
------------------------------------------------------------
|
|
TI TI486DX2 any 04h 80h
|
|
------------------------------------------------------------
|
|
TI TI486DX4 any 04h 81h
|
|
------------------------------------------------------------
|
|
IntelDX4 (tm) A 14h 80h : DX4ODPR (5V IntelDX4)
|
|
OverDrive (tm)
|
|
------------------------------------------------------------
|
|
Cx5x86 0,rev 2+ 04h 90h
|
|
------------------------------------------------------------
|
|
Write-Back Enh. A 04h 83h : WT Mode
|
|
IntelDX4 (tm) 90h : WB mode
|
|
------------------------------------------------------------
|
|
AMD Am5x86 A 04h 84h : x3, WT mode
|
|
94h : x3, WB mode
|
|
E4h : x4, WT mode
|
|
F4h : x4, WB mode
|
|
------------------------------------------------------------
|
|
IBM 486SLC A A4h 0xh
|
|
------------------------------------------------------------
|
|
IBM 486SLC2 Ax A4h 1xh
|
|
Bx 2xh
|
|
?? 3xh
|
|
------------------------------------------------------------
|
|
IBM 486BLX3 A 84h xxh
|
|
------------------------------------------------------------
|
|
Cyrix M5 all 00h 05h
|
|
(Cx486S/D)
|
|
------------------------------------------------------------
|
|
Cyrix M6 all 00h 06h
|
|
(Cx486DX)
|
|
------------------------------------------------------------
|
|
Cyrix M7 all 00h 07h
|
|
(Cx486DX2)
|
|
------------------------------------------------------------
|
|
Cyrix M8 all 00h 08h
|
|
(Cx486DX4)
|
|
------------------------------------------------------------
|
|
Am5k86 (SSA/5) all 05h 0xh ; Model 0
|
|
E 05h 00h
|
|
F 01h
|
|
------------------------------------------------------------
|
|
Am5k86 (K5) all 05h 1xh : (x1.5) ; Model 1
|
|
05h 2xh : (x1.75) ; Model 2
|
|
24h
|
|
05h 3xh : (x2) ; Model 3
|
|
------------------------------------------------------------
|
|
AMD K6 05h 6xh ; Model 6
|
|
61h
|
|
7xh ; Model 7
|
|
------------------------------------------------------------
|
|
AMD K6-2 05h 8xh ; Model 8
|
|
------------------------------------------------------------
|
|
AMD K6-III 05h 9xh ; Model 9
|
|
------------------------------------------------------------
|
|
Pentium (P5) Ax 05h 0xh : (FPU bug)
|
|
B1 05h 13h : (FPU bug)
|
|
B2 05h 14h : (FPU bug)
|
|
C1 05h 15h : (FPU bug)
|
|
D1 05h 17h
|
|
------------------------------------------------------------
|
|
Pentium (P54C) B1 05h 21h : (FPU bug)
|
|
(P54CS) B3 05h 22h : (FPU bug)
|
|
(P54CSQ) B5 05h 24h : (FPU bug)
|
|
C1 05h 25h
|
|
C2 25h
|
|
E0 26h : 75,90,100,120 MHz
|
|
cB1 2Bh : 120,133 MHz
|
|
cC0 2Ch : 133,150,166,200 MHz
|
|
------------------------------------------------------------
|
|
Pentium mA1 05h 25h
|
|
(P54LM) mcB1 2Bh
|
|
(Mobile) mcC0 2Ch
|
|
(Vcc=2.9V) mA4 70h
|
|
------------------------------------------------------------
|
|
Pentium Overdrive B1 15h 31h : PODP5V63, PODP5V83
|
|
(Vcc=5V)(P24T) B2 15h 31h : (Socket 3,6)
|
|
C0 15h 32h
|
|
------------------------------------------------------------
|
|
Pentium OverDrive tA0 05h 1Ah : PODP5V120, PODP5V133
|
|
(P5T) : (Socket 4)
|
|
------------------------------------------------------------
|
|
Pentium OverDrive aC0 05h 2Ch : PODP3V125, PODP3V150
|
|
(P54T) : PODP3V166
|
|
: (Socket 5,7)
|
|
------------------------------------------------------------
|
|
NexGen Nx586 05h 0xh
|
|
04h : 120 MHz
|
|
06h : 133 MHz
|
|
------------------------------------------------------------
|
|
Cx6x86 05h 2xh : early models
|
|
(M1) 30h : core/bus = 1/1
|
|
32h : core/bus = 1/1
|
|
31h : core/bus = 2/1
|
|
33h : core/bus = 2/1
|
|
34h : core/bus = 3/1
|
|
36h : core/bus = 3/1
|
|
35h : core/bus = 4/1
|
|
37h : core/bus = 4/1
|
|
------------------------------------------------------------
|
|
Pentium w/MMX A1 05h 41h
|
|
(P55C) A2 42h
|
|
xB1/mxB1 43h
|
|
xA3/mxA3 44h
|
|
myA0 81h
|
|
sB1 82h
|
|
------------------------------------------------------------
|
|
Pentium MMX oxA3 15h 44h
|
|
OverDrive (P55CTP)
|
|
------------------------------------------------------------
|
|
Cyrix MediaGX 05h 4xh
|
|
------------------------------------------------------------
|
|
Cyrix MediaGX 05h 4xh
|
|
MMX Enhanced
|
|
------------------------------------------------------------
|
|
IDT Winchip (C6) 05h 40h
|
|
------------------------------------------------------------
|
|
IDT Winchip 2 (C2) 05h 81h
|
|
------------------------------------------------------------
|
|
Cx6x86MX and MII 06h 51h : core/bus = x2
|
|
(M2) 06h 52h : core/bus = x2.5
|
|
06h 53h : core/bus = x3
|
|
06h 54h : core/bus = x3.5
|
|
06h 55h : core/bus = x4
|
|
06h 59h : core/bus = x2
|
|
06h 5Ah : core/bus = x2.5
|
|
06h 5Bh : core/bus = x3
|
|
06h 5Ch : core/bus = x3.5
|
|
06h 5Dh : core/bus = x4
|
|
------------------------------------------------------------
|
|
Intel Pentium OverDrive 25h 2xh : will be Set as second CPU
|
|
(P54M)
|
|
------------------------------------------------------------
|
|
Pentium Pro (P6) 06h 0xh ; Engineering Sample 133MHz 0.6mkm
|
|
06h 11h ; Engineering Sample 150MHz
|
|
B0 06h 11h ; 150 MHz
|
|
C0 06h 12h ; 150 MHz
|
|
sA0 06h 16h ; 166,180,200 MHz
|
|
sA1 06h 17h ; 166,180,200 MHz
|
|
sB1 06h 19h ; 166,180,200 MHz
|
|
------------------------------------------------------------
|
|
AMD Athlon 06h 1xh ; Model 1
|
|
------------------------------------------------------------
|
|
Pentium II C0 06h 33h
|
|
C1 06h 34h
|
|
(P6L,Klamath) dA0/mdA0/mmdA0 06h 50h
|
|
dA1 06h 51h
|
|
dB0/mdB0/mmdB0 06h 52h
|
|
mdB0 06h 52h
|
|
mmdB0 06h 52h
|
|
dB1 06h 53h
|
|
dB1 06h 62h
|
|
mdbA0/mdxA0/mqbA1/mqpA1 06h 6Ah
|
|
------------------------------------------------------------
|
|
Pentium II Xeon B0 06h 52h
|
|
B1 06h 53h
|
|
------------------------------------------------------------
|
|
Celeron dA0 06h 50h No-Cache
|
|
dA1 06h 51h No-Cache
|
|
dB0 06h 52h No-Cache
|
|
mA0 06h 60h (128KB cache) [Mendocino]
|
|
mB0 06h 65h (128KB cache) PPGA
|
|
------------------------------------------------------------
|
|
Pentium II TdB0 16h 32h
|
|
Overdrive
|
|
------------------------------------------------------------
|
|
Pentium III kB0 06h 72h
|
|
kC0 06h 73h
|
|
------------------------------------------------------------
|
|
Pentium III Xeon B0 06h 72h
|
|
C0 06h 73h
|
|
------------------------------------------------------------
|
|
|
|
Note: For detection Cyrix's chips refer to APPENDIX A1.
|
|
Note: Then Intel Pentium and higher chips, sometimes include build-in APIC
|
|
and setup such chips on motherbard as second CPU, change id code
|
|
from 0xxxh to 2xxxh.
|
|
|
|
--------------------------------------------
|
|
APPENDIX C0
|
|
iCOMP index for Intel's Microprocessors
|
|
|
|
i386SX-20 32
|
|
i386SX-25 39
|
|
i386SL-25 41
|
|
i386DX-25 49
|
|
i386DX-33 68
|
|
i486SX-20 78
|
|
i486SX-25 100 ; Base model for test iCOMP=100 by define
|
|
i486DX-25 122
|
|
i486SX-33 136
|
|
i486DX-33 166
|
|
i486DX2-20/40 166
|
|
IntelSX2-25/50 180
|
|
i486DX2-25/50 231
|
|
i486DX-50 249
|
|
IntelDX4-20/60 258
|
|
i486DX2-33/66 297
|
|
Pentium OverDrive-20/50 314 ; P24T
|
|
IntelDX4-25/75 319 ; P24C
|
|
IntelDX4-33/100 435 ; P24C
|
|
Pentium OverDrive-25/63 443 ; P24T
|
|
Pentium-(510\60) 510 ; P5
|
|
Pentium-(567\66) 567 ; P5
|
|
Pentium OverDrive-33/83 581 ; P24T
|
|
Pentium-(610\75) 610 ; P54C,P54LM
|
|
Pentium-(735\90) 735 ; P54C,P54LM
|
|
Pentium-(815\100) 815 ; P54C
|
|
Pentium-(1000\120) 1000 ; P54CSQ
|
|
Pentium-(133) 1110 ; P54CSQ
|
|
|
|
iCOMP index 2.0 for Intel Microprocessors
|
|
|
|
Pentium-75 67
|
|
Pentium-90 81
|
|
Pentium-100 90
|
|
Pentium-120 100 ; Base Model iCOMP 2.0 = 100
|
|
Pentium-133 111
|
|
Pentium-150 114
|
|
Pentium-166 127
|
|
Pentium-200 142
|
|
Pentium w/MMX-166 160
|
|
Pentium Pro-150-256 168
|
|
Pentium w/MMX-200 182
|
|
Pentium Pro-180-256 197
|
|
Pentium w/MMX-233 203
|
|
Pentium Pro-200-256 220
|
|
Celeron-266-0 213
|
|
Celeron-300-0 226
|
|
Pentium II-233 267
|
|
Celeron-300-128 296
|
|
Pentium II-266 303
|
|
Celeron-333-128 318
|
|
Pentium II-300 332
|
|
Pentium II-333 366
|
|
Pentium II-350 386
|
|
Pentium II-400 440
|
|
Pentium II-450 483
|
|
|
|
iCOMP index 3.0 for Intel Microprocessors
|
|
|
|
Pentium II-300 1000
|
|
Pentium II-400 1130
|
|
Pentium II-450 1500
|
|
Pentium III-450 1500
|
|
Pentium III-500 1650
|
|
|
|
----------------------------------------------
|
|
APPENDIX C1
|
|
Cyrix Microprocessors Relative Perfomance
|
|
|
|
Cyrix Inc. Used for declaration of perfomance of
|
|
theys microprocessors tests based on PC Bench 8.0
|
|
and normalization.
|
|
|
|
CPU Perfomance Scores
|
|
Cx486SLC-25 36
|
|
Cx486SLC-33 39
|
|
Cx486SLC2-50 40
|
|
Cx486DLC-33 69
|
|
Cx486DLC-40 83
|
|
Cx486DX-33 100 ; <--- Base Point
|
|
Cx486DX-40 118
|
|
Cx486DX2-50 139
|
|
Cx486DX-50 148
|
|
Cx486DX2-66 179
|
|
Cx486DX2-V80 209
|
|
|
|
----------------------------------------------
|
|
APPENDIX C2
|
|
|
|
CPU's perfomance
|
|
|
|
Note: Data was get on different M/B and configurations, so treat this
|
|
tables like simple numbers, which said perfomance is xxx +-10%.
|
|
|
|
CPUMark 32 CPUMark 16 P-rating
|
|
AMD Am5k86-75 (SSA/5) 154
|
|
AMD Am5k86-90 (SSA/5) 187
|
|
AMD Am5k86-100 (SSA/5) 208
|
|
AMD Am5k86-133 (K5) 271 247
|
|
AMD Am5k86-166 (K5) 306 303
|
|
|
|
Pentium-75 174 168
|
|
Pentium-90 210 201
|
|
Pentium-100 233 223
|
|
Pentium-120 257 247
|
|
Pentium-133 283 278
|
|
Pentium-150 286 296
|
|
Pentium-166 321 326
|
|
Pentium-200 358
|
|
|
|
Cyrix Cx6x86-P120+ 235 247
|
|
Cyrix Cx6x86-P133+ 260
|
|
Cyrix Cx6x86-P150+ 283 298
|
|
Cyrix Cx6x86-P166+ 316 329
|
|
Cyrix Cx6x86-P200+ 350 340
|
|
|
|
Pentium w/MMX-166 378 380
|
|
Pentium w/MMX-200 425 429
|
|
Pentium w/MMX-233 450 475
|
|
|
|
Pentium Pro-150-256 420
|
|
Pentium Pro-180-256 493
|
|
Pentium Pro-200-256 540 358
|
|
Pentium Pro-200-512 610
|
|
|
|
AMD K6-200 520 427
|
|
AMD K6-233 550 456
|
|
AMD K6-266 608
|
|
|
|
Pentium II-233 632 468
|
|
Pentium II-266 721 536
|
|
Pentium II-300 813 603
|
|
Pentium II-333
|
|
Pentium II-350 902
|
|
Pentium II-400 1030
|
|
Pentium II-450 1140
|
|
|
|
IDT Winchip C6-180
|
|
IDT Winchip C6-200 382 362
|
|
|
|
Cyrix Cx6x86MX/PR166
|
|
Cyrix Cx6x86MX/PR200 391 372
|
|
Cyrix Cx6x86MX/PR233 505 474
|
|
Cyrix Cx6x86MX/PR266
|
|
|
|
AMD K6-2-266 582
|
|
AMD K6-2-300 763
|
|
AMD K6-2-366 878
|
|
|
|
Cyrix MII-300 512
|
|
Cyrix MII-333
|
|
|
|
Celeron-266
|
|
Celeron-300
|
|
Celeron-300/128
|
|
Celeron-333/128 655
|
|
Celeron-366/128 685
|
|
Celeron-433/128
|
|
Celeron-466/128
|
|
|
|
PentII Xeon-400/512
|
|
PentII Xeon-450/512 1160
|
|
|
|
Pentium III-450
|
|
Pentium III-500 1260
|
|
|
|
PentIII Xeon-500/512
|
|
PentIII Xeon-550/512
|
|
|
|
------------------------------------------------
|
|
APPENDIX D0
|
|
Pentium P54C+ Build-in APIC
|
|
(Advanced programmable Interrupt Controller)
|
|
|
|
Base Address of Build-in APIC in memory location
|
|
is 0FEE00000H.
|
|
|
|
Map of APIC REgisters:
|
|
|
|
Offset (hex) Description Read/Write state
|
|
0 Reserved
|
|
10 Reserved
|
|
20 Local APIC ID R/W
|
|
30 Local APIC Version R
|
|
40-70 Reserved
|
|
80 Task Priority Register R/W
|
|
90 Arbitration Priority Register R
|
|
A0 Processor Priority Register R
|
|
B0 EOI Register W
|
|
C0 Remote read R
|
|
D0 Logical Destination R/W
|
|
E0 Destination Format Register 0..27 R
|
|
28..31 R/W
|
|
F0 Spurious Interrupt Vector Reg. 0..3 R
|
|
4..9 R/W
|
|
100-170 ISR 0-255 R
|
|
180-1F0 TMR 0-255 R
|
|
200-270 IRR 0-255 R
|
|
280 Error Status Register R
|
|
290-2F0 Reserved
|
|
300 Interrupt Command Reg. (0-31) R/W
|
|
310 Interrupt Command Reg. (32-63) R/W
|
|
320 Local Vector Table (Timer) R/W
|
|
330-340 Reserved
|
|
350 Local Vector Table (LINT0) R/W
|
|
360 Local Vector Table (LINT1) R/W
|
|
370 Local Vector Table (ERROR) R/W
|
|
380 Initial Count Reg. for Timer R/W
|
|
390 Current Count of Timer R
|
|
3A0-3D0 Reserved
|
|
3E0 Timer Divide Configuration Reg. R/W
|
|
3F0 Reserved
|
|
|
|
Note: Pentium-120MHz (Step C2) Never have APIC
|
|
|
|
---------------------------------------------------
|
|
APPENDIX D1 INTEL 386/486SL REGISTERS
|
|
|
|
Note: Intel Chipset for SL microprocessors (i386SL,i486SL) contain
|
|
self CPU and 82360SL chip.
|
|
|
|
[i386SL]
|
|
Note: address of register in Normal I/O space
|
|
|
|
Name of Register Address Default Value Where placed Size
|
|
CPUPWRMODE 22h 0 CPU 16
|
|
CFGSTAT 23h 0 82360SL 8
|
|
CFGINDEX 24h 0 82360SL 16
|
|
CFGDATA 25h xxh 82360SL 16
|
|
EMSCNTLREG 28h 0 CPU 8
|
|
EMSINDEXREG 2Ah 0 CPU 16
|
|
EMSDPREG 2Ch xxh CPU 16
|
|
PORT92 92h 0 CPU 8
|
|
PORT102 102h 0 CPU 8
|
|
FAIL SAFE NMI CTRL 461h 0 CPU 8
|
|
The followed ports visible only when they enabled,
|
|
Any writes to this ports caused the action it named.
|
|
FAST CPU RESET EFh N/A 82360SL 8
|
|
FAST A20 GATE EEh N/A 82360SL 8
|
|
SLOW CPU F4h N/A CPU 8
|
|
FAST CPU F5h N/A CPU 8
|
|
SFS DISABLE F9h N/A CPU 8
|
|
SFS ENABLE FBh N/A CPU 8
|
|
|
|
Format of CPUPWRMODE register (i386SL):
|
|
Bits Name Description
|
|
15 DT If Unlock Status { // See bit 0 of this register
|
|
if bit=0 then access to 82360SL
|
|
if bit=1 then access to CPUPWRMODE register
|
|
}
|
|
If Lock Staus { // i.e.SB=1
|
|
(De-Turbo Select Bit) Selected clock speed
|
|
If bit=0 then EFI/2
|
|
If bit=1 then EFI/4
|
|
}
|
|
14 0 Reserved
|
|
13..11 IMCPC (Idle MCP Clock)
|
|
13.12.11 Description
|
|
000 EFI
|
|
001 EFI/2
|
|
010 EFI/4
|
|
011 EFI/8
|
|
100 EFI/16
|
|
101 Reserved
|
|
110 Reserved
|
|
111 Stop Clock
|
|
10,9 SLC (Slow CPU clock)
|
|
10.9 Description
|
|
00 EFI
|
|
01 EFI/2
|
|
10 EFI/4
|
|
11 EFI?8
|
|
8 CPUCNFG
|
|
If =1 CPU Lock. (Write Protect to CPUPMODE register)
|
|
7 FD (Flash Disk Enable)
|
|
If bit=1 then phisical addresses D0000H - DFFFFh
|
|
automatically never caching.
|
|
6 0 Reserved
|
|
5,4 FCC (Fast CPU clock)
|
|
5.4 Description
|
|
00 EFI
|
|
01 EFI/2
|
|
10 EFI/4
|
|
11 EFI/8
|
|
3,2 US (Unit Select)
|
|
Select Unit of 82360SL which will be accessable through 23h-25h
|
|
I/O Ports
|
|
3.2 Description
|
|
00 On-Board Memory Controller
|
|
01 Cache Unit
|
|
10 Internal Bus Unit
|
|
11 External Bus Unit
|
|
1 UE (Unit Enable)
|
|
If =1 Enable to Access Units
|
|
else enable to access System bus.
|
|
0 SB (Status Bit)
|
|
If =0 Enable access to CPUPWRMODE register
|
|
If =1 Disable
|
|
|
|
Format of EMSCNTLREG:
|
|
Bits Description
|
|
7 (Global Enable)
|
|
If =1 EMS enable
|
|
6 Valid bit
|
|
5 EMSDP Status Bit (Read Only)
|
|
4..2 Reserved
|
|
1..0 Active EMS Set (0-3)
|
|
|
|
Format of EMSINDEXREG:
|
|
Bits Description
|
|
15..10 Reserved
|
|
9..8 EMS set (0-3)
|
|
7..6 Reserved
|
|
5..0 EMS Page Register Index (0-64)
|
|
|
|
Format of EMSDPREG:
|
|
Bits Description
|
|
15 This EMS Page Enable (i.e. page indexed by EMSINDEXREG)
|
|
14 EMS Valid bit
|
|
13..11 reserved
|
|
10..0 Address lines A24..A14 for page selected by EMSINDEXREG
|
|
|
|
Important Note:
|
|
i386SL have SIGNATURE register have index 30Eh in On-Board Memory Controller
|
|
Configuration Space. This Register contain Stepping Info of i386SL.
|
|
Stepping Signature Register DX register after reset
|
|
A0 4300h 4310h
|
|
A1 4300h 4310h
|
|
A2 4301h 4310h
|
|
A3 4302h 4310h
|
|
B0 4310h 4311h
|
|
B1 4311h 4311h
|
|
|
|
[i486SL]
|
|
Note: address of register in Normal I/O space
|
|
|
|
Name of Register Address Default Value Where placed Size
|
|
CPUPWRMODE 22h 100H CPU 16
|
|
CFGSTAT 23h 0 82360SL 8
|
|
CFGINDEX 24h 0 82360SL 16
|
|
CFGDATA 25h xxh 82360SL 16
|
|
PORT92 92h 0 CPU 8
|
|
PORT102 102h 0 CPU 8
|
|
FAIL SAFE NMI CTRL 461h 0 CPU 8
|
|
The followed ports visible only when they enabled
|
|
FAST CPU RESET EFh N/A 82360SL 8
|
|
FAST A20 GATE EEh N/A 82360SL 8
|
|
SLOW CPU F4h N/A CPU 8
|
|
FAST CPU F5h N/A CPU 8
|
|
SFS DISABLE F9h N/A CPU 8
|
|
SFS ENABLE FBh N/A CPU 8
|
|
|
|
Format of CPUPWRMODE register (i486SL):
|
|
Bits Name Description
|
|
15 DT If Unlock Status { // See bit 0 of this register
|
|
if bit=0 then access to 82360SL
|
|
if bit=1 then access to CPUPWRMODE register
|
|
}
|
|
If Lock Staus { // i.e.SB=1
|
|
(De-Turbo Select Bit) Selected clock speed
|
|
If bit=0 then EFI/2
|
|
If bit=1 then EFI/4
|
|
}
|
|
14..13 0 Reserved
|
|
12 FPUERROR
|
|
This bit controlled access to I/O port 0F0h,
|
|
if =0 then access to internal F0h port,
|
|
If =1 then access ISA bus.
|
|
11..9 0 Reserved
|
|
8 CPUCNFG
|
|
If =1 CPU Lock. (Write Protect to CPUPMODE register)
|
|
7 0 RESERVED
|
|
6,5 FCC (Fast CPU clock)
|
|
5.4 Description
|
|
00 CPUCLK=definition=EFI/2
|
|
01 CPUCLK/2
|
|
10 CPUCLK/4
|
|
11 CPUCLK/8
|
|
4 0 Reserved
|
|
3,2 US (Unit Select)
|
|
Select Unit of 82360SL which will be accessable through 23h-25h
|
|
I/O Ports
|
|
3.2 Description
|
|
00 On-Board Memory Controller
|
|
01 Reserved
|
|
10 Internal Bus Unit
|
|
11 External Bus Unit
|
|
1 UE (Unit Enable)
|
|
If =1 Enable to Access Units
|
|
else enable to access System bus.
|
|
0 SB (Status Bit)
|
|
If =0 Enable access to CPUPWRMODE register
|
|
If =1 Disable
|
|
|
|
Important Note:
|
|
i486SL have SIGNATURE register have index 70Ah in On-Board Memory Controller
|
|
Configuration Space. This Register contain Stepping Info of i486SL.
|
|
Format Of this register provided below:
|
|
Bits Description
|
|
15..12 Member of Family (4h - SL)
|
|
11..8 Family (4h - 486 family)
|
|
7..0 Revision Name (Not Same as in DX after reset)
|
|
|
|
---------------------------------------------------
|
|
APPENDIX D2 NS486SXF REGISTERS
|
|
|
|
Note: NS486SXF - Embedded 486-processor, which contain base (IBM PC/AT
|
|
compatible I/O on-chip.
|
|
|
|
I/O Port Range Desctription
|
|
0000h-001Fh DMA Controller
|
|
0020h-0021h Master PIC (Programmable Interrupt Controller)
|
|
0040h-0047h PS/2 Style PIT (with WATCHDOG timer)
|
|
0050h-0057h 3-Wire Interface
|
|
0070h-0071h Real Time Clock
|
|
0080h-008Fh DMA Controller
|
|
00A0h-00A1h Slave PIC
|
|
00C0h-00DFh DMA Controller
|
|
0278h-027Ah ECP (Option)
|
|
02E8h-02EFh COM4 (Option)
|
|
02F8h-02FFh COM2 (Option)
|
|
0378h-037Ah ECP (Option)
|
|
03BCh-03BEh ECP (Option)
|
|
03E0h-03E3h PCMCIA
|
|
03E8h-03EFh COM3 (Option)
|
|
03F8h-03FFh COM1 (Default)
|
|
0678h-067Dh ECP (Default)
|
|
0778h-077Dh ECP (Option)
|
|
07BCh-07C1h ECP (Option)
|
|
EF00h-EF57h Bus Interface Unit
|
|
EF70h-EF71h UART
|
|
EF80h-EF8Bh DRAM Controller
|
|
EF90h-EF93h Power Managment
|
|
EFA0h-EFA3h LCD Controller
|
|
EFB0h-EFBFh Interrupt Controller
|
|
EFC0h-EFCFh RIO and Bus Interface Unit
|
|
EFE0h-EFE1h DMA Controller
|
|
|
|
---------------------------------------------
|
|
APPENDIX E
|
|
Pentium (tm) Processor Pairing Instruction
|
|
|
|
Pentium (tm) is superscalar microprocessor
|
|
i.e. it may execute >1 instruction per CLK
|
|
cycle. It may execute maximum 2 instruction
|
|
per cycle.It have two integer pipes to execute
|
|
instruction. This pipes not same, and some
|
|
instruction may pairing (i.e. execute together)
|
|
(only if not link with this 2 instruction)
|
|
only in U pipe, some other only in V pipe, other
|
|
in any pipe,other absolutely not pairing and they
|
|
executed on U pipe only.
|
|
|
|
------ Integer Part
|
|
|
|
Note:
|
|
PU - is pairable if issued to U pipe
|
|
PV - is pairable if issued to V pipe
|
|
UV - pairable in either pipe
|
|
|
|
ADC Reg,Reg PU
|
|
Reg,Mem PU
|
|
Reg,Imm PU
|
|
Mem,Reg PU
|
|
Mem,Imm PU
|
|
ADD Reg,Reg UV
|
|
Reg,Mem UV
|
|
Reg,Imm UV
|
|
Mem,Reg UV
|
|
Mem,Imm UV
|
|
AND Reg,Reg UV
|
|
Reg,Mem UV
|
|
Reg,Imm UV
|
|
Mem,Reg UV
|
|
Mem,Imm UV
|
|
CALL direct PV
|
|
CMP Reg,Reg UV
|
|
Reg,Mem UV
|
|
Reg,Imm UV
|
|
Mem,Reg UV
|
|
Mem,Imm UV
|
|
DEC Reg UV
|
|
Mem UV
|
|
INC Reg UV
|
|
Mem UV
|
|
Jcc any PV
|
|
JMP Short PV
|
|
Direct PV
|
|
LEA Reg,Mem UV
|
|
MOV Reg,Reg/Mem/Imm UV
|
|
Mem,Reg UV
|
|
NOP UV
|
|
OR Reg,Reg UV
|
|
Reg,Mem UV
|
|
Reg,Imm UV
|
|
Mem,Reg UV
|
|
Mem,Imm UV
|
|
POP Reg UV
|
|
PUSH Reg UV
|
|
Imm UV
|
|
Rotates/Shifts:
|
|
Reg,1 PU
|
|
Mem,1 PU
|
|
Reg,Imm PU
|
|
Mem,Imm PU
|
|
SUB Reg,Reg UV
|
|
Reg,Mem UV
|
|
Reg,Imm UV
|
|
Mem,Reg UV
|
|
Mem,Imm UV
|
|
TEST Reg,Reg UV
|
|
Mem,Reg UV
|
|
Acc,Imm UV
|
|
XOR Reg,Reg UV
|
|
Reg,Mem UV
|
|
Reg,Imm UV
|
|
Mem,Reg UV
|
|
Mem,Imm UV
|
|
|
|
_____ Floating Part
|
|
|
|
Note: FX - Pairing with FXCH
|
|
(All other never pairing)
|
|
|
|
FABS FX
|
|
FADD FX
|
|
FADDP FX
|
|
FCHS FX
|
|
FCOM FX
|
|
FCOMP FX
|
|
FDIV/R/P/RP FX
|
|
FLD m32,m64,ST(i) FX Note: FLD m80 not pairing
|
|
FMUL/P FX
|
|
FSUB/P/R/RP FX
|
|
FTST FX
|
|
FUCOM/P/PP FX
|
|
|
|
For more information refer to:
|
|
1) Optimization for Intel's 32-Bit Processors
|
|
(Application Note AP-500)
|
|
Gary CArleton)
|
|
// Intel Corp. 1993
|
|
// Order Number 241799
|
|
2) Supplement to the Pentium (tm) Processor User's
|
|
Manual
|
|
// Intel Corp. 1993.
|
|
|
|
------------------------------------------------------------
|
|
APPENDIX F0 NON FP OPCODES
|
|
|
|
Base Format of opcodes:
|
|
<Basecode> <Postbyte> <offset> <immediate_operands>
|
|
|
|
Format of Postbyte:
|
|
|
|
MM RRR MMM
|
|
|
|
MM - Memory addresing mode
|
|
RRR - Register operand address
|
|
MMM - Memory operand address
|
|
|
|
RRR Register Names
|
|
Fields 8bit 16bit 32bit
|
|
000 AL AX EAX
|
|
001 CL CX ECX
|
|
010 DL DX EDX
|
|
011 BL BX EBX
|
|
100 AH SP ESP
|
|
101 CH BP EBP
|
|
110 DH SI ESI
|
|
111 BH DI EDI
|
|
|
|
16bit memory (No 32 bit memory address prefix):
|
|
MMM Default MM Field
|
|
Field Sreg 00 01 10 11=MMM is reg
|
|
000 DS [BX+SI] [BX+SI+O8] [BX+SI+O16]
|
|
001 DS [BX+DI] [BX+DI+O8] [BX+SI+O16]
|
|
010 SS [BP+SI] [BP+SI+O8] [BP+SI+O16]
|
|
011 SS [BP+DI] [BP+DI+O8] [BP+DI+O16]
|
|
100 DS [SI] [SI+O8] [SI+O16]
|
|
101 DS [DI] [DI+O8] [DI+O16]
|
|
110 SS [O16] [BP+O8] [BP+O16]
|
|
111 DS [BX] [BX+O8] [BX+O16]
|
|
Note: MMM=110,MM=00 Default Sreg is DS !!!!
|
|
|
|
32bit memory (Has 67h 32 bit memory address prefix):
|
|
MMM Default MM Field
|
|
Field Sreg 00 01 10 11=MMM is reg
|
|
000 DS [EAX] [EAX+O8] [EAX+O32]
|
|
001 DS [ECX] [ECX+O8] [ECX+O32]
|
|
010 DS [EDX] [EDX+O8] [EDX+O32]
|
|
011 DS [EBX] [EBX+O8] [EBX+O32]
|
|
100 see SIB [SIB] [SIB+O8] [SIB+O32]
|
|
101 SS [O32] [EBP+O8] [EBP+O32]
|
|
110 DS [ESI] [ESI+O8] [ESI+O32]
|
|
111 DS [EDI] [EDI+O8] [EDI+O32]
|
|
Note: MMM=110,MM=00 Default Sreg is DS !!!!
|
|
|
|
SIB is (Scale/Base/Index):
|
|
SS BBB III
|
|
Note: SIB address calculated as :
|
|
<SIB address>=<Base>+<Index>*(2^(Scale))
|
|
|
|
Field Default Base
|
|
BBB Sreg Register Note
|
|
000 DS EAX
|
|
001 DS ECX
|
|
010 DS EDX
|
|
011 DS EBX
|
|
100 SS ESP
|
|
101 DS O32 If MM=00 (Postbyte)
|
|
SS EBP If MM<>00 (Postbyte)
|
|
110 DS ESI
|
|
111 DS EDI
|
|
|
|
Field Index
|
|
III register Note
|
|
000 EAX
|
|
001 ECX
|
|
010 EDX
|
|
011 EBX
|
|
100 Never Index SS can be 00
|
|
101 EBP
|
|
110 ESI
|
|
111 EDI
|
|
|
|
Field Scale coefficient
|
|
SS =2^(SS)
|
|
00 1
|
|
01 2
|
|
10 4
|
|
11 8
|
|
|
|
Note:
|
|
<No comments> this code are for 8086 and all other processors
|
|
NEC V20+ : for NEC V-seria only
|
|
186+ : for 186/188 and higher
|
|
286+ : for 80286 and higher
|
|
386+ : for 80386 and higher
|
|
486+ : for i486 and higher
|
|
Cyrix M5+ : for Cyrix only (Cx486S and higher)
|
|
Pentium+ : for Pentium
|
|
Pentium Pro+ : for Pentium Pro and higher
|
|
Pentium II+ : for Pentium II and higher
|
|
MMX : Intel MMX
|
|
AMD 3D : AMD 3D MMX Extensions
|
|
Cyrix EMMX : Cyrix Extended MMX
|
|
KNI/MMX2 : Katmai New Instructions/Intel MMX2
|
|
<specified> : specified
|
|
|
|
mem8 - Memory Operand 8 bit
|
|
mem - Memory operand 16/32 or more bit (depends on operation size)
|
|
m64 - Memory operand 64-bit
|
|
m128 - Memory operand 128-bit
|
|
|
|
reg8 - Register 8 bit
|
|
reg - Register 16/32 bit
|
|
mm - MMX register Integer (64-bit)
|
|
xmm - MMX2 register F.P (128-bit)
|
|
imm8 - Immediate 8 bit
|
|
imm - Immediate 16/32 bit
|
|
|
|
----------------------- [TABLE00]: ---------------------------
|
|
|
|
00 ADD mem8,reg8
|
|
01 ADD mem,reg
|
|
02 ADD reg8,mem8
|
|
03 ADD reg,mem
|
|
04 ADD AL,imm8
|
|
05 ADD AX,imm
|
|
06 PUSH ES
|
|
07 POP ES
|
|
08 OR mem8,reg8
|
|
09 OR mem,reg
|
|
0A OR reg8,mem8
|
|
0B OR reg,mem
|
|
0C OR AL,imm8
|
|
0D OR AX,imm
|
|
0E PUSH CS
|
|
0F POP CS ; 8088 non CMOS versions
|
|
>>> TABLE 01 ; NECs & 286+
|
|
Invalid Opcode ; 186/188
|
|
|
|
10 ADC mem8,reg8
|
|
11 ADC mem,reg
|
|
12 ADC reg8,mem8
|
|
13 ADC reg,mem
|
|
14 ADC AL,imm8
|
|
15 ADC AX,imm
|
|
16 PUSH SS
|
|
17 POP SS
|
|
18 SBB mem8,reg8
|
|
19 SBB mem,reg
|
|
1A SBB reg8,mem8
|
|
1B SBB reg,mem
|
|
1C SBB AL,imm8
|
|
1D SBB AX,imm
|
|
1E PUSH DS
|
|
1F POP DS
|
|
|
|
20 AND mem8,reg8
|
|
21 AND mem,reg
|
|
22 AND reg8,mem8
|
|
23 AND reg,mem
|
|
24 AND AL,imm8
|
|
25 AND AX,imm
|
|
26 ES: segment prefix
|
|
27 DAA
|
|
28 SUB mem8,reg8
|
|
29 SUB mem,reg
|
|
2A SUB reg8,mem8
|
|
2B SUB reg,mem
|
|
2C SUB AL,imm8
|
|
2D SUB AX,imm
|
|
2E CS: segment prefix
|
|
2F DAS
|
|
|
|
30 XOR mem8,reg8
|
|
31 XOR mem,reg
|
|
32 XOR reg8,mem8
|
|
33 XOR reg,mem
|
|
34 XOR AL,imm8
|
|
35 XOR AX,imm
|
|
36 SS: segment prefix
|
|
37 AAA
|
|
38 CMP mem8,reg8
|
|
39 CMP mem,reg
|
|
3A CMP reg8,mem8
|
|
3B CMP reg,mem
|
|
3C CMP AL,imm8
|
|
3D CMP AX,imm
|
|
3E DS: segment prefix
|
|
3F AAS
|
|
|
|
40 INC AX
|
|
41 INC CX
|
|
42 INC DX
|
|
43 INC BX
|
|
44 INC SP
|
|
45 INC BP
|
|
46 INC SI
|
|
47 INC DI
|
|
48 DEC AX
|
|
49 DEC CX
|
|
4A DEC DX
|
|
4B DEC BX
|
|
4C DEC SP
|
|
4D DEC BP
|
|
4E DEC SI
|
|
4F DEC DI
|
|
|
|
50 PUSH AX
|
|
51 PUSH CX
|
|
52 PUSH DX
|
|
53 PUSH BX
|
|
54 PUSH SP
|
|
55 PUSH BP
|
|
56 PUSH SI
|
|
57 PUSH DI
|
|
58 POP AX
|
|
59 POP CX
|
|
5A POP DX
|
|
5B POP BX
|
|
5C POP SP
|
|
5D POP BP
|
|
5E POP SI
|
|
5F POP DI
|
|
|
|
60 PUSHA ; NECs & 186+
|
|
61 POPA ; NECs & 186+
|
|
62 BOUND reg,mem ; NECs & 186+
|
|
63 ARPL reg,mem ; 286+ PM
|
|
64 FS: segment prefix ; 386+
|
|
65 GS: segment prefix ; 386+
|
|
66 Memory access size prefix ; 386+
|
|
67 Operands size prefix ; 386+
|
|
68 PUSH imm ; NECs & 186+
|
|
69 IMUL reg,imm,mem ; NECs & 186+
|
|
6A PUSH imm8 ; NECs & 186+
|
|
6B IMUL reg,imm8,mem ; NECs & 186+
|
|
6C INSB ; 186+
|
|
6D INS ; 186+
|
|
6E OUTSB ; 186+
|
|
6F OUTS ; 186+
|
|
|
|
70 JO rel8
|
|
71 JNO rel8
|
|
72 JC rel8
|
|
73 JNC rel8
|
|
74 JZ rel8
|
|
75 JNZ rel8
|
|
76 JNA rel8
|
|
77 JA rel8
|
|
78 JS rel8
|
|
79 JNS rel8
|
|
7A JP rel8
|
|
7B JNP rel8
|
|
7C JL rel8
|
|
7D JNL rel8
|
|
7E JNG rel8
|
|
7F JG rel8
|
|
|
|
80 code extention [1]
|
|
81 code extention [2]
|
|
82 code extention [3]
|
|
83 code extention [4]
|
|
84 TEST mem8,reg8
|
|
85 TEST mem,reg
|
|
86 XCHG mem8,reg8
|
|
87 XCHG mem,reg
|
|
88 MOV mem8,reg8
|
|
89 MOV mem,reg
|
|
8A MOV reg8,mem8
|
|
8B MOV reg,mem
|
|
8C code extention [5]
|
|
8D LEA reg,mem
|
|
8E code extention [6]
|
|
8F code extention [7]
|
|
|
|
90 NOP
|
|
91 XCHG AX,CX
|
|
92 XCHG AX,DX
|
|
93 XCHG AX,BX
|
|
94 XCHG AX,SP
|
|
95 XCHG AX,BP
|
|
96 XCHG AX,SI
|
|
97 XCHG AX,DI
|
|
98 CBW
|
|
66 98 CWDE ; 386+
|
|
99 CWD
|
|
66 99 CDQ ; 386+
|
|
9A CALL FAR seg:offs
|
|
9B WAIT/FWAIT
|
|
9C PUSHF
|
|
66 9C PUSHFD ; 386+
|
|
9D POPF
|
|
66 9D POPFD ; 386+
|
|
9E SAHF
|
|
9F LAHF
|
|
|
|
A0 MOV AL,[imm]
|
|
A1 MOV AX,[imm]
|
|
A2 MOV [imm],AL
|
|
A3 MOV [imm],ax
|
|
A4 MOVSB
|
|
A5 MOVS
|
|
A6 CMPSB
|
|
A7 CMPS
|
|
A8 TEST AL,imm8
|
|
A9 TEST AX,imm
|
|
AA STOSB
|
|
AB STOS
|
|
AC LODSB
|
|
AD LODS
|
|
AE SCASB
|
|
AF SCAS
|
|
|
|
B0 MOV AL,imm8
|
|
B1 MOV CL,imm8
|
|
B2 MOV DL,imm8
|
|
B3 MOV BL,imm8
|
|
B4 MOV AH,imm8
|
|
B5 MOV CH,imm8
|
|
B6 MOV DH,imm8
|
|
B7 MOV BH,imm8
|
|
B8 MOV AX,imm
|
|
B9 MOV CX,imm
|
|
BA MOV DX,imm
|
|
BB MOV BX,imm
|
|
BC MOV SP,imm
|
|
BD MOV BP,imm
|
|
BE MOV SI,imm
|
|
BF MOV DI,imm
|
|
|
|
C0 code extention [8]
|
|
C1 code extention [9]
|
|
C2 RET NEAR imm
|
|
C3 RET NEAR
|
|
C4 LES reg,mem
|
|
C5 LDS reg,mem
|
|
C6 code extention [10]
|
|
C7 code extention [11]
|
|
C8 ENTER imm,imm8 ; NECs & 186+
|
|
C9 LEAVE ; NECs & 186+
|
|
CA RET FAR imm
|
|
CB RET FAR
|
|
CC INT 3
|
|
CD INT imm8
|
|
CE INTO
|
|
CF IRET
|
|
|
|
D0 code extention [12]
|
|
D1 code extention [13]
|
|
D2 code extention [14]
|
|
D3 code extention [15]
|
|
D4 AAM imm8 ; NECs w/o imm8 but D4 0A only
|
|
D5 AAD imm8 ; NECs w/o imm8 but D4 0A only
|
|
D6 SETALC ; 286+
|
|
D7 XLAT
|
|
D8-DF ESC imm6,mem ; Note: Refer to Appendix F1
|
|
; (Cooprocessor commands).
|
|
|
|
E0 LOOPNZ rel8
|
|
E1 LOOPZ rel8
|
|
E2 LOOP rel8
|
|
E3 JCXZ rel8
|
|
66 E3 JECXZ rel8 ; 386+
|
|
E4 IN AL,imm8
|
|
E5 IN AX,imm8
|
|
E6 OUT imm8,AL
|
|
E7 OUT imm8,AX
|
|
E8 CALL NEAR rel16
|
|
E9 JMP NEAR rel16
|
|
EA JMP FAR seg:offs
|
|
EB JMP SHORT rel8
|
|
EC IN AL,DX
|
|
ED IN AX,DX
|
|
EE OUT DX,AL
|
|
EF OUT DX,AX
|
|
|
|
F0 LOCK prefix
|
|
F1 SMI ; AMD Am386/486DXLV
|
|
F2 REPNZ
|
|
F3 REP/REPZ ; Used in KNI/MMX2 as
|
|
; Modificator !!!!!!
|
|
F4 HLT
|
|
F5 CMC
|
|
F6 code extention [16]
|
|
F7 code extention [17]
|
|
F8 CLC
|
|
F9 STC
|
|
FA CLI
|
|
FB STI
|
|
FC CLD
|
|
FD STD
|
|
FE code extention [18]
|
|
FF code extention [19]
|
|
|
|
----------------------- [TABLE 01]: ---------------------------
|
|
Note: First Byte of Operation is 0Fh
|
|
|
|
00 Extended Opcode 20 ; 286+
|
|
01 Extended Opcode 21 ; 286+
|
|
02 LAR reg,mem ; 286+
|
|
03 LSL reg,mem ; 286+
|
|
04 LOADALL ; 286 only
|
|
05 LOADALL ; 286 only
|
|
05 SYSCALL ; AMD K6
|
|
06 CLTS ; 286+
|
|
07 LOADALL ; 386,486, None Pentium+
|
|
RES3 ; AMD Am386zXLV
|
|
RES4 ; AMD Am486DXLV
|
|
ICERET ; IBM 386SLC,486SLC,486SLC2
|
|
SYSRET ; AMD K6
|
|
08 INVD ; 486+
|
|
09 WBINVD ; 486+
|
|
0A Reserved, INT 6
|
|
0B UD2 ; all, but documented on
|
|
; Pentium Pro only
|
|
0C
|
|
0D code extention [25] ; AMD 3DNow!
|
|
0E FEMMS ; AMD 3DNow!
|
|
0F >>> TABLE 02 ; AMD 3DNow!
|
|
|
|
10 UMOV mem8,reg8 ; Really different op. space
|
|
; 386-486, Never Pentium+
|
|
; on AMD Amz86zXLV,never Cx5x86+
|
|
TEST1 mem8,CL ; NEC V20+
|
|
MOVSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 10)
|
|
MOVUPS xmm,xmm/m128 ; KNI/MMX2
|
|
11 UMOV mem,reg ; see 0Fh,10h
|
|
TEST1 mem,CL ; NEC V20+
|
|
MOVSS xmm/m32,xmm ; KNI/MMX2 (F3 0F 11)
|
|
MOVUPS xmm/m128,xmm ; KNI/MMX2
|
|
12 UMOV reg8,mem8 ; see 0Fh,10h
|
|
CLEAR1 mem8,CL ; NEC V20+
|
|
MOVHLPS xmm,xmm ; KNI/MMX2
|
|
MOVLPS xmm,m64 ; KNI/MMX2
|
|
13 UMOV reg,mem ; see 0Fh,10h
|
|
CLEAR1 mem,CL ; NEC V20+
|
|
MOVLPS m64,xmm ; KNI/MMX2
|
|
14 SET1 mem8,CL ; NEC V20+
|
|
UNPCKLPS xmm,xmm/m128 ; KNI/MMX2
|
|
15 SET1 mem,CL ; NEC V20+
|
|
UNPCKHPS xmm,xmm/m128 ; KNI/MMX2
|
|
16 NOT1 mem8,CL ; NEC V20+
|
|
MOVHPS xmm,m64 ; KNI/MMX2
|
|
MOVLHPS xmm,xmm ; KNI/MMX2
|
|
17 NOT1 mem,CL ; NEC V20+
|
|
MOVHPS m64,xmm ; KNI/MMX2
|
|
18 TEST1 mem8,imm8 ; NEC V20+
|
|
code extension [26] ; KNI/MMX2
|
|
19 TEST1 mem,imm8 ; NEC V20+
|
|
1A CLEAR1 mem8,imm8 ; NEC V20+
|
|
1B CLEAR1 mem,imm8 ; NEC V20+
|
|
1C SET1 mem8,imm8 ; NEC V20+
|
|
1D SET1 mem,imm8 ; NEC V20+
|
|
1E NOT1 mem8,imm8 ; NEC V20+
|
|
1F NOT1 mem,imm8 ; NEC V20+
|
|
|
|
20 MOV reg32,CRn ; 386+
|
|
ADD4S ; NEC V20+
|
|
21 MOV reg32,DRn ; 386+
|
|
22 MOV CRn,reg32 ; 386+
|
|
SUB4S ; NEC V20+
|
|
23 MOV DRn,reg32 ; 386+
|
|
24 MOV reg32,TRn ; 386-486 only, and Cyrix
|
|
25
|
|
26 MOV TRn,reg32 ; 386-486 only, and Cyrix
|
|
CMPS4S ; NEC V20+
|
|
27
|
|
28 ROL4 mem8 ; NEC V20+
|
|
MOVAPS xmm,xmm/m128 ; KNI/MMX2
|
|
29 MOVAPS xmm/m128,xmm ; KNI/MMX2
|
|
2A ROL4 mem8 ; NEC V20+
|
|
CVTPI2PS xmm,mm/m64 ; KNI/MMX2
|
|
CVTSI2SS xmm,r32/m32 ; KNI/MMX2 (F3 0F 2A)
|
|
2B MOVNTPS m128,xmm ; KNI/MMX2
|
|
2C CVTTPS2PI mm,xmm/m64 ; KNI/MMX2
|
|
CVTTSS2SI r32,xmm/m32 ; KNI/MMX2 (F3 0F 2C)
|
|
2D CVTPS2PI mm,xmm/m64 ; KNI/MMX2
|
|
CVTSS2SI r32,xmm/m32 ; KNI/MMX2 (F3 0F 2D)
|
|
2E UCOMISS xmm,xmm/m32 ; KNI/MMX2
|
|
2F COMISS xmm,xmm/m32 ; KNI/MMX2
|
|
|
|
30 WRMSR ; Pentium+, IBM 386SLC,486SLC/SLC2
|
|
31 RDTSC ; Pentium+
|
|
INS reg8,reg8 ; NEC V20+ ; Note: NECINS
|
|
32 RDMSR ; Pentium, IBM 386SLC,486SLC/SLC2
|
|
33 EXT reg8,reg8 ; NEC V20+
|
|
RDPMC ; Pentium Pro+
|
|
34 SYSENTER ; Pentium II+
|
|
35 SYSEXIT ; Pentium II+
|
|
36 RDSHR reg/mem32 ; Cx6x86MX (SMM only)
|
|
37 WRSHR reg/mem32 ; Cx6x86MX (SMM only)
|
|
38
|
|
39
|
|
3A
|
|
3B
|
|
3C
|
|
3D
|
|
3E
|
|
3F
|
|
|
|
40 CMOVO reg,mem ; Pentium Pro+
|
|
41 CMOVNO reg,mem ; Pentium Pro+
|
|
42 CMOVC reg,mem ; Pentium Pro+
|
|
43 CMOVNC reg,mem ; Pentium Pro+
|
|
44 CMOVZ reg,mem ; Pentium Pro+
|
|
45 CMOVNZ reg,mem ; Pentium Pro+
|
|
46 CMOVA reg,mem ; Pentium Pro+
|
|
47 CMOVNA reg,mem ; Pentium Pro+
|
|
48 CMOVS reg,mem ; Pentium Pro+
|
|
49 CMOVNS reg,mem ; Pentium Pro+
|
|
4A CMOVP reg,mem ; Pentium Pro+
|
|
4B CMOVNP reg,mem ; Pentium Pro+
|
|
4C CMOVL reg,mem ; Pentium Pro+
|
|
4D CMOVNL reg,mem ; Pentium Pro+
|
|
4E CMOVNG reg,mem ; Pentium Pro+
|
|
4F CMOVG reg,mem ; Pentium Pro+
|
|
|
|
50 PAVEB mm,mm/m64 ; Cyrix EMMX
|
|
MOVMSKPS r32,xmm ; KNI/MMX2
|
|
51 PADDSIW mm,mm/m64 ; Cyrix EMMX
|
|
SQRTPS xmm,xmm/m128 ; KNI/MMX2
|
|
SQRTSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 51)
|
|
52 PMAGW mm,mm/m64 ; Cyrix EMMX
|
|
PSQRTPS xmm,xmm/m128 ; KNI/MMX2
|
|
PSQRTSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 52)
|
|
53 RCPPS xmm,xmm/m128 ; KNI/MMX2
|
|
RCPSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 53)
|
|
54 PDISTIB mm,m64 ; Cyrix EMMX
|
|
ANDPS xmm,xmm/m128 ; KNI/MMX2
|
|
55 PSUBSIW mm,mm/m64 ; Cyrix EMMX
|
|
ANDNPS xmm,xmm/m128 ; KNI/MMX2
|
|
56 ORPS xmm,xmm/m128 ; KNI/MMX2
|
|
57 XORPS xmm,xmm/m128 ; KNI/MMX2
|
|
58 PMVZB mm,m64 ; Cyrix EMMX
|
|
ADDPS xmm,xmm/m128 ; KNI/MMX2
|
|
ADDSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 58)
|
|
59 PMULHRW mm,mm/m64 ; Cyrix EMMX
|
|
MULPS xmm,xmm/m128 ; KNI/MMX2
|
|
MULSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 59)
|
|
5A PMVNZB mm,m64 ; Cyrix EMMX
|
|
5B PMVLZB mm,m64 ; Cyrix EMMX
|
|
5C PMVGEZB mm,m64 ; Cyrix EMMX
|
|
SUBPS xmm,xmm/m128 ; KNI/MMX2
|
|
SUBSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 5C)
|
|
5D PMULHRIW mm,mm/m64 ; Cyrix EMMX
|
|
MINPS xmm,xmm/m128 ; KNI/MMX2
|
|
MINSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 5D)
|
|
5E PMACHRIW mm,m64 ; Cyrix EMMX
|
|
DIVPS xmm,xmm/m128 ; KNI/MMX2
|
|
DIVSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 5E)
|
|
5F MAXPS xmm,xmm/m128 ; KNI/MMX2
|
|
MAXSS xmm,xmm/m32 ; KNI/MMX2 (F3 0F 5F)
|
|
|
|
60 PUNPCKLBW mm,mm/m32 ; MMX
|
|
61 PUNPCKLWD mm,mm/m32 ; MMX
|
|
62 PUNPCKLDQ mm,mm/m32 ; MMX
|
|
63 PACKSSWB mm,mm/m64 ; MMX
|
|
64 PCMPGTB mm,mm/m64 ; MMX
|
|
65 PCMPGTW mm,mm/m64 ; MMX
|
|
66 PCMPGTD mm,mm/m64 ; MMX
|
|
67 PACKUSWB mm,mm/m64 ; MMX
|
|
68 PUNPCKHBW mm,mm/m64 ; MMX
|
|
69 PUNPCKHWD mm,mm/m64 ; MMX
|
|
6A PUNPCKHDQ mm,mm/m64 ; MMX
|
|
6B PACKSSDW mm,mm/m64 ; MMX
|
|
6C
|
|
6D
|
|
6E MOVD mm,r/m32 ; MMX
|
|
6F MOVQ mm,mm/m64 ; MMX
|
|
|
|
70 PSHUFW mm,mm/m64,i8 ; KNI/MMX2,AMD EMMX
|
|
71 code extention [28] ; MMX
|
|
72 code extention [29] ; MMX
|
|
73 code extention [30] ; MMX
|
|
74 PCMPEQB mm,mm/m64 ; MMX
|
|
75 PCMPEQW mm,mm/m64 ; MMX
|
|
76 PCMPEQD mm,mm/m64 ; MMX
|
|
77 EMMS ; MMX
|
|
78 SVDC mem,sreg ; Cyrix M5+ (SMM only)
|
|
79 RSDC sreg,mem ; Cyrix M5+ (SMM only)
|
|
7A SVLDT mem ; Cyrix M5+ (SMM only)
|
|
7B RSLDT mem ; Cyrix M5+ (SMM only)
|
|
7C SVTS mem ; Cyrix M5+ (SMM only)
|
|
7D RSTS mem ; Cyrix M5+ (SMM only)
|
|
7E SMINT ; Cyrix M6+
|
|
7E MOVD r/m32,mm ; MMX
|
|
7F MOVD mm/m64,mm ; MMX
|
|
|
|
80 JO rel16 ; 386+
|
|
81 JNO rel16 ; 386+
|
|
82 JC rel16 ; 386+
|
|
83 JNC rel16 ; 386+
|
|
84 JZ rel16 ; 386+
|
|
85 JNZ rel16 ; 386+
|
|
86 JNA rel16 ; 386+
|
|
87 JA rel16 ; 386+
|
|
88 JS rel16 ; 386+
|
|
89 JNS rel16 ; 386+
|
|
8A JP rel16 ; 386+
|
|
8B JNP rel16 ; 386+
|
|
8C JL rel16 ; 386+
|
|
8D JNL rel16 ; 386+
|
|
8E JNG rel16 ; 386+
|
|
8F JG rel16 ; 386+
|
|
|
|
90 SETO mem8 ; 386+
|
|
91 SETNO mem8 ; 386+
|
|
92 SETC mem8 ; 386+
|
|
93 SETNC mem8 ; 386+
|
|
94 SETZ mem8 ; 386+
|
|
95 SETNZ mem8 ; 386+
|
|
96 SETNA mem8 ; 386+
|
|
97 SETA mem8 ; 386+
|
|
98 SETS mem8 ; 386+
|
|
99 SETNS mem8 ; 386+
|
|
9A SETP mem8 ; 386+
|
|
9B SETNP mem8 ; 386+
|
|
9C SETL mem8 ; 386+
|
|
9D SETNL mem8 ; 386+
|
|
9E SETNG mem8 ; 386+
|
|
9F SETG mem8 ; 386+
|
|
|
|
A0 PUSH FS ; 386+
|
|
A1 POP FS ; 386+
|
|
A2 CPUID ; 486 SL enhanced, Pentium+
|
|
; UMC,i386CX,Cyrix M1+,AMD K5+,
|
|
; Some NexGen, IDT
|
|
A3 BT mem,reg ; 386+
|
|
A4 SHLD mem,reg,imm ; 386+
|
|
A5 SHLD mem,reg,CL ; 386+
|
|
A6 XBTS reg,mem,AX,CL ; Intel (!!!) 80386 steps A0-B0
|
|
CMPXCHG mem8,reg8 ; Intel (!!!) 80486 steps A0-B0
|
|
A7 IBTS mem,AX,CL,reg ; Intel (!!!) 80386 steps A0-B0
|
|
CMPXCHG mem,reg ; Intel (!!!) 80486 steps A0-B0
|
|
A8 PUSH GS ; 386+
|
|
A9 POP GS ; 386+
|
|
AA RSM ; i486 SL Enhanced, i386CX
|
|
; Intel Pentium+, etc
|
|
AB BTS mem,reg ; 386+
|
|
AC SHRD mem,reg,imm ; 386+
|
|
AD SHRD mem,reg,CL ; 386+
|
|
AE code extention [24]
|
|
AF IMUL reg,mem ; 386+
|
|
|
|
B0 CMPXCHG mem8,reg8 ; 486+ (Intel B1+ step only)
|
|
B1 CMPXCHG mem,reg ; 486+ (Intel B1+ step only)
|
|
B2 LSS reg,mem ; 386+
|
|
B3 BTR mem,reg ; 386+
|
|
B4 LFS reg,mem ; 386+
|
|
B5 LGS reg,mem ; 386+
|
|
B6 MOVZX reg,mem8 ; 386+
|
|
B7 MOVZX reg32,mem ; 386+
|
|
B8
|
|
B9 UD2 ; one more Undefined Opcode-2
|
|
BA code extention [22]
|
|
BB BTC mem,reg ; 386+
|
|
BC BSF reg,mem ; 386+
|
|
BD BSR reg,mem ; 386+
|
|
BE MOVSX reg,mem8 ; 386+
|
|
BF MOVSX reg32,mem ; 386+
|
|
|
|
C0 XADD mem8,reg8 ; 486+
|
|
C1 XADD mem,reg ; 486+
|
|
C2 code extension [27] ; KNI/MMX2
|
|
C3
|
|
C4 PINSRW mm,r32/m16,i8 ; KNI/MMX2,AMD EMMX
|
|
C5 PEXTRW r32,mm,i8 ; KNI/MMX2,AMD EMMX
|
|
C6 SHUFPS xmm,xmm/m128,i8 ; KNI/MMX2
|
|
C7 code extention [23]
|
|
C8 BSWAP EAX ; 486+
|
|
C9 BSWAP ECX ; 486+
|
|
CA BSWAP EDX ; 486+
|
|
CB BSWAP EBX ; 486+
|
|
CC BSWAP ESP ; 486+
|
|
CD BSWAP EBP ; 486+
|
|
CE BSWAP ESI ; 486+
|
|
CF BSWAP EDI ; 486+
|
|
|
|
D0
|
|
D1 PSRLW mm,mm/m64 ; MMX
|
|
D2 PSRLD mm,mm/m64 ; MMX
|
|
D3 PSRLQ mm,mm/m64 ; MMX
|
|
D4
|
|
D5 PMULLW mm,mm/m64 ; MMX
|
|
D6
|
|
D7 PMOVMSKB r32,mm ; KNI/MMX2,AMD EMMX
|
|
D8 PSUBUSB mm,mm/m64 ; MMX
|
|
D9 PSUBUSW mm,mm/m64 ; MMX
|
|
DA PMINUB mm,mm/m64 ; KNI/MMX2,AMD EMMX
|
|
DB PAND mm,mm/m64 ; MMX
|
|
DC PADDUSB mm,mm/m64 ; MMX
|
|
DD PADDUSW mm,mm/m64 ; MMX
|
|
DE PMAXUB mm,mm/m64 ; KNI/MMX2,AMD EMMX
|
|
DF PANDN mm,mm/m64 ; MMX
|
|
|
|
E0 PAVGB mm,mm/m64 ; KNI/MMX2,AMD EMMX
|
|
E1 PSRAW mm,mm/m64 ; MMX
|
|
E2 PSRAD mm,mm/m64 ; MMX
|
|
E3 PAVGW mm,mm/m64 ; KNI/MMX2, AMD EMMX
|
|
E4 PMULHUW mm,mm/m64 ; KNI/MMX2, AMD EMMX
|
|
E5 PMULHW mm,mm/m64 ; MMX
|
|
E6
|
|
E7 MOVNTQ m64,mm ; KNI/MMX2, AMD EMMX
|
|
E8 PSUBSB mm,mm/m64 ; MMX
|
|
E9 PSUBSW mm,mm/m64 ; MMX
|
|
EA PMINSW mm,mm/m64 ; KNI/MMX2, AMD EMMX
|
|
EB POR mm,mm/m64 ; MMX
|
|
EC PADDSB mm,mm/m64 ; MMX
|
|
ED PADDSW mm,mm/m64 ; MMX
|
|
EE PMAXSW mm,mm/m64 ; KNI/MMX2, AMD EMMX
|
|
EF PXOR mm,mm/m64 ; MMX
|
|
|
|
F0
|
|
F1 PSLLW mm,mm/m64 ; MMX
|
|
F2 PSLLD mm,mm/m64 ; MMX
|
|
F3 PSLLQ mm,mm/m64 ; MMX
|
|
F4
|
|
F5 PMULADDWD mm,mm/m64 ; MMX
|
|
F6 PSADBW mm,mm/m64 ; KNI/MMX2, AMD EMMX
|
|
F7 MASKMOVQ mm,mm ; KNI/MMX2, AMD EMMX
|
|
F8 PSUBB mm,mm/m64 ; MMX
|
|
F9 PSUBW mm,mm/m64 ; MMX
|
|
FA PSUBD mm,mm/m64 ; MMX
|
|
FB
|
|
FC PADDB mm,mm/m64 ; MMX
|
|
FD PADDW mm,mm/m64 ; MMX
|
|
FE PADDD mm,mm/m64 ; MMX
|
|
FF UD ; AMD Am5k86+ and all other CPUs
|
|
FF OIO ; Cyrix Cx6x86+ and all other CPUs
|
|
FF BRKEM imm8 ; NEC V20+
|
|
|
|
---------------------- [TABLE 02] --------------------------
|
|
First bytes is 0Fh,0Fh
|
|
(In Table 02 marked only valid opcodes)
|
|
|
|
0C PI2FW mm,mm/m64 ; AMD 3FNow! extensions
|
|
0D PI2FD mm,mm/m64 ; AMD 3DNow!
|
|
1C PF2IW mm,mm/m64 ; AMD 3DNow! extensions
|
|
1D PF2ID mm,mm/m64 ; AMD 3DNow!
|
|
8A PFNACC mm,mm/m64 ; AMD 3DNow! extensions
|
|
8E PFPNACC mm,mm/m64 ; AMD 3DNow! extensions
|
|
90 PFCMPGE mm,mm/m64 ; AMD 3DNow!
|
|
94 PFMIN mm,mm/m64 ; AMD 3DNow!
|
|
96 PFRCP mm,mm/m64 ; AMD 3DNow!
|
|
97 PFRSQRT mm,mm/m64 ; AMD 3DNow!
|
|
9A PFSUB mm,mm/m64 ; AMD 3DNow!
|
|
9E PFADD mm,mm/m64 ; AMD 3DNow!
|
|
A0 PFCMPGT mm,mm/m64 ; AMD 3DNow!
|
|
A4 PFMAX mm,mm/m64 ; AMD 3DNow!
|
|
A6 PFRCPIT1 mm,mm/m64 ; AMD 3DNow!
|
|
A7 PFRSQIT1 mm,mm/m64 ; AMD 3DNow!
|
|
AA PFSUBR mm,mm/m64 ; AMD 3DNow!
|
|
AE PFACC mm,mm/m64 ; AMD 3DNow!
|
|
B0 PFCMPEQ mm,mm/m64 ; AMD 3DNow!
|
|
B4 PFMUL mm,mm/m64 ; AMD 3DNow!
|
|
B6 PFRCPIT2 mm,mm/m64 ; AMD 3DNow!
|
|
B7 PMULHRW mm,mm/m64 ; AMD 3DNow!
|
|
BB PSWAPD mm,mm/m64 ; AMD 3DNow! extension
|
|
BF PAVGUSB mm,mm/m64 ; AMD 3DNow!
|
|
|
|
**************************************************
|
|
CODE EXTENTIONS:
|
|
|
|
First byte(s) look at TABLES#00,01
|
|
Next byte have format
|
|
MMOOOMMM : MM is memory mode (see postbyte)
|
|
OOO select operation in this extention code field
|
|
MMM is memory field (see Postbyte)
|
|
|
|
Code Extention # 1
|
|
(First byte(s) = 80h)
|
|
Field
|
|
OOO Operation
|
|
000 ADD mem8,imm8
|
|
001 OR mem8,imm8
|
|
010 ADC mem8,imm8
|
|
011 SBB mem8,imm8
|
|
100 AND mem8,imm8
|
|
101 SUB mem8,imm8
|
|
110 XOR mem8,imm8
|
|
111 CMP mem8,imm8
|
|
|
|
Code Extention # 2
|
|
(First byte(s) = 81h)
|
|
Field
|
|
OOO Operation
|
|
000 ADD mem,imm
|
|
001 OR mem,imm
|
|
010 ADC mem,imm
|
|
011 SBB mem,imm
|
|
100 AND mem,imm
|
|
101 SUB mem,imm
|
|
110 XOR mem,imm
|
|
111 CMP mem,imm
|
|
|
|
Code Extention # 3
|
|
(First byte(s) = 82h)
|
|
Note: On some models, undefined code do nothing, on any work as 83h
|
|
None INT 6 at all.
|
|
Field
|
|
OOO Operation
|
|
000 ADD mem8,simm8
|
|
001
|
|
010 ADC mem8,simm8
|
|
011 SBB mem8,simm8
|
|
100
|
|
101 SUB mem8,simm8
|
|
110
|
|
111 CMP mem8,simm8
|
|
|
|
Code Extention # 4
|
|
(First byte(s) = 83h)
|
|
Field
|
|
OOO Operation
|
|
000 ADD mem,simm8
|
|
001 OR mem,simm8 ; 386+
|
|
010 ADC mem,simm8
|
|
011 SBB mem,simm8
|
|
100 AND mem,simm8 ; 386+
|
|
101 SUB mem,simm8
|
|
110 XOR mem,simm8 ; 388+
|
|
111 CMP mem,simm8
|
|
|
|
Code Extention # 5
|
|
(First byte(s) = 8Ch)
|
|
Field
|
|
OOO Operation
|
|
000 MOV mem,ES
|
|
001 MOV mem,CS
|
|
010 MOV mem,SS
|
|
011 MOV mem,DS
|
|
100 MOV mem,FS ; 386+
|
|
101 MOV mem,GS ; 386+
|
|
110
|
|
111
|
|
|
|
Code Extention # 6
|
|
(First byte(s) = 8Eh)
|
|
Field
|
|
OOO Operation
|
|
000 MOV ES,mem
|
|
001 MOV CS,mem ; Non CMOS version of 8086/8088 only
|
|
010 MOV SS,mem
|
|
011 MOV DS,mem
|
|
100 MOV FS,mem ; 386+
|
|
101 MOV GS,mem ; 386+
|
|
110
|
|
111
|
|
|
|
Code Extention # 7
|
|
(First byte(s) = 8Fh)
|
|
Note: i486 can eat any OOO.
|
|
Field
|
|
OOO Operation
|
|
000 POP mem
|
|
001
|
|
010
|
|
011
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extention # 8
|
|
(First byte(s) = C0h)
|
|
Field
|
|
OOO Operation
|
|
000 ROL mem8,imm8 ; 186+
|
|
001 ROR mem8,imm8 ; 186+
|
|
010 RCL mem8,imm8 ; 186+
|
|
011 RCR mem8,imm8 ; 186+
|
|
100 SHL mem8,imm8 ; 186+
|
|
101 SHR mem8,imm8 ; 186+
|
|
110 SAL mem8,imm8 ; 186+
|
|
111 SAR mem8,imm8 ; 186+
|
|
|
|
Code Extention # 9
|
|
(First byte(s) = C1h)
|
|
Field
|
|
OOO Operation
|
|
000 ROL mem,imm8 ; 186+
|
|
001 ROR mem,imm8 ; 186+
|
|
010 RCL mem,imm8 ; 186+
|
|
011 RCR mem,imm8 ; 186+
|
|
100 SHL mem,imm8 ; 186+
|
|
101 SHR mem,imm8 ; 186+
|
|
110 SAL mem,imm8 ; 186+
|
|
111 SAR mem,imm8 ; 186+
|
|
|
|
Code Extention # 10
|
|
(First byte(s) = C6h)
|
|
Note: i486 can eat any OOO field.
|
|
Field
|
|
OOO Operation
|
|
000 MOV mem8,imm8
|
|
001
|
|
010
|
|
011
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extention # 11
|
|
(First byte(s) = C7h)
|
|
Note: i486 can eat any OOO field
|
|
Field
|
|
OOO Operation
|
|
000 MOV mem,imm16
|
|
001
|
|
010
|
|
011
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extention # 12
|
|
(First byte(s) = D0h)
|
|
Field
|
|
OOO Operation
|
|
000 ROL mem8,1
|
|
001 ROR mem8,1
|
|
010 RCL mem8,1
|
|
011 RCR mem8,1
|
|
100 SHL mem8,1
|
|
101 SHR mem8,1
|
|
110 SAL mem8,1
|
|
111 SAR mem8,1
|
|
|
|
Code Extention # 13
|
|
(First byte(s) = D1h)
|
|
Field
|
|
OOO Operation
|
|
000 ROL mem,1
|
|
001 ROR mem,1
|
|
010 RCL mem,1
|
|
011 RCR mem,1
|
|
100 SHL mem,1
|
|
101 SHR mem,1
|
|
110 SAL mem,1
|
|
111 SAR mem,1
|
|
|
|
Code Extention # 14
|
|
(First byte(s) = D2h)
|
|
Field
|
|
OOO Operation
|
|
000 ROL mem8,CL
|
|
001 ROR mem8,CL
|
|
010 RCL mem8,CL
|
|
011 RCR mem8,CL
|
|
100 SHL mem8,CL
|
|
101 SHR mem8,CL
|
|
110 SAL mem8,CL
|
|
111 SAR mem8,CL
|
|
|
|
Code Extention # 15
|
|
(First byte(s) = D3h)
|
|
Field
|
|
OOO Operation
|
|
000 ROL mem,CL
|
|
001 ROR mem,CL
|
|
010 RCL mem,CL
|
|
011 RCR mem,CL
|
|
100 SHL mem,CL
|
|
101 SHR mem,CL
|
|
110 SAL mem,CL
|
|
111 SAR mem,CL
|
|
|
|
Code Extention # 16
|
|
(First byte(s) = F6h)
|
|
Note: Usually 001 do same thing as 000, TEST mem8,imm8
|
|
Field
|
|
OOO Operation
|
|
000 TEST mem8,imm8
|
|
001
|
|
010 NOT mem8
|
|
011 NEG mem8
|
|
100 MUL mem8
|
|
101 IMUL mem8
|
|
110 DIV mem8
|
|
111 IDIV mem8
|
|
|
|
Code Extention # 17
|
|
(First byte(s) = F7h)
|
|
Note: Usually 001 do same thing as 000, TEST mem,imm16
|
|
Field
|
|
OOO Operation
|
|
000 TEST mem,imm16
|
|
001
|
|
010 NOT mem
|
|
011 NEG mem
|
|
100 MUL mem
|
|
101 IMUL mem
|
|
110 DIV mem
|
|
111 IDIV mem
|
|
|
|
Code Extention # 18
|
|
(First byte(s) = FEh)
|
|
Field
|
|
OOO Operation
|
|
000 INC mem8
|
|
001 DEC mem8
|
|
010
|
|
011
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extention # 19
|
|
(First byte(s) = FFh)
|
|
Field
|
|
OOO Operation
|
|
000 INC mem
|
|
001 DEC mem
|
|
010 CALL NEAR mem
|
|
011 CALL FAR mem
|
|
100 JMP NEAR mem
|
|
101 JMP FAR mem
|
|
110 PUSH mem
|
|
111
|
|
|
|
Code Extention # 20
|
|
(First byte(s) = 0FH,00H)
|
|
Field
|
|
OOO Operation
|
|
000 SLDT mem ; 286+
|
|
001 STR mem ; 286+
|
|
010 LLDT mem ; 286+
|
|
011 LTR mem ; 286+
|
|
100 VERR mem ; 286+
|
|
101 VERW mem ; 286+
|
|
110
|
|
111
|
|
|
|
Code Extention # 21
|
|
(First byte(s) = 0Fh,01h)
|
|
Field
|
|
OOO Operation
|
|
000 SGDT mem ; 286+
|
|
001 SIDT mem ; 286+
|
|
010 LGDT mem ; 286+
|
|
011 LIDT mem ; 286+
|
|
100 SMSW mem ; 286+
|
|
101
|
|
110 LMSW mem ; 286+
|
|
111 INVLPG mem ; 486+
|
|
|
|
Code Extention # 22
|
|
(First byte(s) = 0Fh,BAh)
|
|
Field
|
|
OOO Operation
|
|
000
|
|
001
|
|
010
|
|
011
|
|
100 BT mem,imm8 ; 386+
|
|
101 BTS mem,imm8 ; 386+
|
|
110 BTR mem,imm8 ; 386+
|
|
111 BTC mem,imm8 ; 386+
|
|
|
|
Code Extention # 23
|
|
(First byte(s) = 0Fh,C7h)
|
|
Field
|
|
OOO Operation
|
|
000
|
|
001 CMPXCHG8B mem ; Pentium
|
|
010
|
|
011
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extention # 24
|
|
(First byte(s) = 0Fh,AEh)
|
|
Field
|
|
OOO Operation
|
|
000 FXSAVE mem512byte ; KNI/MMX2
|
|
001 FXRSTOR mem512byte ; KNI/MMX2
|
|
010 LDMXCSR m32 ; KNI/MMX2
|
|
011 STMXCSR m32 ; KNI/MMX2
|
|
100
|
|
101
|
|
110
|
|
111 SFENCE ; KNI/MMX2, AMD EMMX
|
|
(0F AE F8)
|
|
|
|
Code Extention # 25
|
|
(First byte(s) = 0Fh,0Dh)
|
|
Field
|
|
OOO Operation
|
|
000 PREFETCH mem ; AMD 3DNow!
|
|
001 PREFETCHW mem ; AMD 3DNow!
|
|
010
|
|
011
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extention # 26
|
|
(First byte(s) = 0Fh,18h)
|
|
Field
|
|
OOO Operation
|
|
000 PREFETCHNTA mem ; KNI/MMX2, AMD EMMX
|
|
001 PREFETCHT0 mem ; KNI/MMX2, AMD EMMX
|
|
010 PREFETCHT1 mem ; KNI/MMX2, AMD EMMX
|
|
011 PREFETCHT2 mem ; KNI/MMX2, AMD EMMX
|
|
100
|
|
101
|
|
110
|
|
111
|
|
|
|
Code Extension # 27
|
|
(First byte(s) = (F3h) 0Fh,C2h) ; KNI/MMX2 All extension
|
|
.
|
|
Instruction have unusuall x86 format:
|
|
<0Fh> <C2h> <Postbyte> [<Memory>] <Nextbyte>
|
|
<F3h> <0Fh> <C2h> <Postbyte> [<Memory>] <Nextbyte>
|
|
.
|
|
Next byte (w/o F3h Prefix) (with F3 prefix)
|
|
00 CMPEQPS xmm,xmm/m128 CMPEQSS xmm,xmm/m32 ; KNI/MMX2
|
|
01 CMPLTPS xmm,xmm/m128 CMPLTSS xmm,xmm/m32 ; KNI/MMX2
|
|
02 CMPLEPS xmm,xmm/m128 CMPLESS xmm,xmm/m32 ; KNI/MMX2
|
|
03 CMPUNORDPS xmm,xmm/m128 CMPUNORDSS xmm,xmm/m32 ; KNI/MMX2
|
|
04 CMPNEPS xmm,xmm/m128 CMPNESS xmm,xmm/m32 ; KNI/MMX2
|
|
05 CMPNLTPS xmm,xmm/m128 CMPNLTSS xmm,xmm/m32 ; KNI/MMX2
|
|
06 CMPNLEPS xmm,xmm/m128 CMPNLESS xmm,xmm/m32 ; KNI/MMX2
|
|
07 CMPORDPS xmm,xmm/m128 CMPORDSS xmm,xmm/m32 ; KNI/MMX2
|
|
.
|
|
Note: This is other forms of
|
|
CMPPS xmm,xmm/m128,imm8
|
|
CMPSS xmm,xmm/m32,imm8
|
|
|
|
Code Extention # 28
|
|
(First byte(s) = 0Fh,71h)
|
|
Field
|
|
OOO Operation
|
|
000
|
|
001
|
|
010 PSRLW mm,imm8 ; MMX
|
|
011
|
|
100 PSRAW mm,imm8 ; MMX
|
|
101
|
|
110 PSSLW mm,imm8 ; MMX
|
|
111
|
|
|
|
Code Extention # 29
|
|
(First byte(s) = 0Fh,72h)
|
|
Field
|
|
OOO Operation
|
|
000
|
|
001
|
|
010 PSRLD mm,imm8 ; MMX
|
|
011
|
|
100 PSRAD mm,imm8 ; MMX
|
|
101
|
|
110 PSLLD mm,imm8 ; MMX
|
|
111
|
|
|
|
Code Extention # 30
|
|
(First byte(s) = 0Fh,73h)
|
|
Field
|
|
OOO Operation
|
|
000
|
|
001
|
|
010 PSRLQ mm,imm8 ; MMX
|
|
011
|
|
100
|
|
101
|
|
110 PSLLQ mm,imm8 ; MMX
|
|
111
|
|
|
|
Note:
|
|
Here Provided small note about
|
|
Additional Instruction Sets
|
|
(SIMD subset)
|
|
Cyrix AMD 3DNow!
|
|
P5 P6 MMX EMMX 3DNow! SIMD EMMX ext
|
|
Pentium + - - - - - - -
|
|
Pentium/wMMX + - + - - - - -
|
|
Pentium Pro + + - - - - - -
|
|
Pentium II + + + - - - - -
|
|
Pentium III + + + - - + (+) -
|
|
AMD K5 + - - - - - - -
|
|
AMD K6 + + + - - - - -
|
|
AMD K6-2 + + + - + - - -
|
|
AMD K6-III + + + - + - - -
|
|
AMD Athlon + + + - + - + +
|
|
|
|
------------------------------------------------
|
|
APPENDIX F1 FLOATING POINT OPCODES
|
|
|
|
ESC 0 (First byte = D8h)
|
|
==========================
|
|
ESCAPE 000 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11 If MM=11
|
|
000 FADD mem32r FADD ST,ST(i)
|
|
001 FMUL mem32r FMUL ST,ST(i)
|
|
010 FCOM mem32r FCOM ST(i)
|
|
011 FCOMP mem32r FCOMP ST(i)
|
|
100 FSUB mem32r FSUB ST,ST(i)
|
|
101 FSUBR mem32r FSUBR ST,ST(i)
|
|
110 FDIV mem32r FDIV ST,ST(i)
|
|
111 FDIVR mem32r FDIVR ST,ST(i)
|
|
|
|
ESC 1 (First byte = D9h)
|
|
==========================
|
|
ESCAPE 001 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11 If MM=11
|
|
000 FLD mem32r FLD ST(i)
|
|
001 empty FXCH ST(i)
|
|
010 FST mem32r See Table marked ESC1-Extended codes
|
|
011 FSTP mem32r FSTP ST(i)
|
|
100 FLDENV mem See Table marked ESC1-Extended codes
|
|
101 FLDCW mem See Table marked ESC1-Extended codes
|
|
110 FSTENV mem See Table marked ESC1-Extended codes
|
|
111 FSTCW mem See Table marked ESC1-Extended codes
|
|
|
|
ESC1-Extended codes:
|
|
\ RRR
|
|
MMM \ 010 100 101 110 111
|
|
000 FNOP FCHS FLD1 F2XM1 FPREM
|
|
001 FABS FLDL2T FYL2X FYL2XP1
|
|
010 FLDL2E FPTAN FSQRT
|
|
011 FLDPI FPATAN FSINCOS'
|
|
100 FTST FLDLG2 FXTRACT FRNDINT
|
|
101 FXAM FLDLN2 FPREM1 FSCALE
|
|
110 FLDZ FDECSTP FSIN'
|
|
111 FINCSTP FCOS'
|
|
|
|
' means 387+ (include 287XL/XLT, 187!!!)
|
|
|
|
ESC 2 (First byte = DAh)
|
|
==========================
|
|
ESCAPE 010 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11
|
|
000 FIADD mem32i
|
|
001 FIMUL mem32i
|
|
010 FICOM mem32i
|
|
011 FICOMP mem32i
|
|
100 FISUB mem32i
|
|
101 FISUBR mem32i
|
|
110 FIDIV mem32i
|
|
111 FIDIVR mem32i
|
|
|
|
Note: P6
|
|
DA C0+i FCMOVB ST0,STi
|
|
DA C8+i FCMOVE ST0,STi
|
|
DA D0+i FCMOVBE ST0,STi
|
|
DA D8+i FCMOVU ST0,STi
|
|
|
|
ESC 3 (First byte = DBh)
|
|
==========================
|
|
ESCAPE 011 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11
|
|
000 FILD mem32i
|
|
001
|
|
010 FIST mem32i
|
|
011 FISTP mem32i
|
|
100
|
|
101 FLD mem80r
|
|
110
|
|
111 FSTP mem80r
|
|
|
|
So,If MM=11 we have next command (first byte = DBh)
|
|
Mnemonic Second byte of code
|
|
FNENI E0H (8087 only, others do nothing)
|
|
FNDISI E1H (8087 only, others do nothing)
|
|
FNCLEX E2H
|
|
FNINIT E3H
|
|
FSETPM E4H (287s only)
|
|
FRSTPM E5H (287XL/XLT only)
|
|
FSTB0 E8H (IIT)
|
|
FSTB2 EAH (IIT)
|
|
FSTB1 EBH (IIT)
|
|
F4X4 F1H (IIT)
|
|
FRINT2 FCH (Cyrix)
|
|
FUCOMI ST0,STi E8H+i (P6)
|
|
FCMOVNB ST0,STi C0H+i (P6)
|
|
FCMOVNE ST0,STi C8H+i (P6)
|
|
FCMOVNBE ST0,STi D0H+i (P6)
|
|
FCMOVNU ST0,STi D8H+i (P6)
|
|
FCOMPI ST0,STi F0H+i (P6)
|
|
|
|
ESC 4 (First byte = DCh)
|
|
==========================
|
|
ESCAPE 100 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11 If MM=11
|
|
000 FADD mem64r FADD ST(i),ST
|
|
001 FMUL mem64r FMUL ST(i),ST
|
|
010 FCOM mem64r FCOM ST(i)
|
|
011 FCOMP mem64r FCOMP ST(i)
|
|
100 FSUB mem64r FSUB ST(i),ST
|
|
101 FSUBR mem64r FSUBR ST(i),ST
|
|
110 FDIV mem64r FDIV ST(i),ST
|
|
111 FDIVR mem64r FDIVR ST(i),ST
|
|
|
|
ESC 5 (First byte = DDh)
|
|
==========================
|
|
ESCAPE 101 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11 If MM=11
|
|
000 FLD mem64r FFREE ST(i)
|
|
001 FXCH ST(i)
|
|
010 FST mem64r FST ST(i)
|
|
011 FSTP mem64r FSTP ST(i)
|
|
100 FNRSTOR mem
|
|
101
|
|
110 FNSAVE mem FUCOM ST(i)
|
|
111 FSTSW mem FUCOMP ST(i)
|
|
|
|
Note: FRICHOP have opcode (DDh FCh) (Cyrix)
|
|
|
|
ESC 6 (First byte = DEh)
|
|
==========================
|
|
ESCAPE 110 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11 If MM=11
|
|
000 FIADD mem16i FADDP ST(i),ST
|
|
001 FIMUL mem16i FMULP ST(i),ST
|
|
010 FICOM mem16i FCOMP ST(i),ST
|
|
011 FICOMP mem16i
|
|
100 FISUB mem16i FSUBP ST(i),ST
|
|
101 FISUBR mem16i FSUBRP ST(i),ST
|
|
110 FIDIV mem16i FDIVP ST(i),ST
|
|
111 FIDIVR mem16i FDIVRP ST(i),ST
|
|
|
|
Note: FCOMPP have opcode (DEh D9h) (Intel and all)
|
|
|
|
ESC 7 (First byte = DFh)
|
|
==========================
|
|
ESCAPE 111 MMRRRMMM
|
|
==========================
|
|
Operation
|
|
RRR If MM<>11 If MM=11
|
|
000 FILD mem16i FFREE ST(i)
|
|
001 FXCH ST(i)
|
|
010 FIST mem16i FST ST(i)
|
|
011 FISTP mem16i FSTP ST(i)
|
|
100 FBLD mem80b
|
|
101 FILD mem64i
|
|
110 FBSTP mem80b
|
|
111 FISTP mem64i
|
|
|
|
Note: Next Instruction have opcodes:
|
|
Mnemonic Opcode
|
|
FNSTSW AX DFh E0h (287+)
|
|
FNSTDW AX DFh E1h (387SL Mobile)
|
|
FSTSG AX DFh E2h (387SL Mobile)
|
|
FRINEAR DFh FCh (Cyrix)
|
|
FUCOMIP ST0,STi DFH E8H+i (P6)
|
|
FCOMIP ST0,STi DFH F0H+i (P6)
|
|
|
|
------------------------------------------------------------
|
|
APPENDIX F2 CPUs AND INSTRUCTION SET
|
|
|
|
Note:
|
|
Here Provided small note about Additional Instruction Sets:
|
|
P5 P6 MMX EMMX 3DNow! SIMD
|
|
Pentium +
|
|
Pentium/wMMX + +
|
|
Pentium Pro + +
|
|
Pentium II + + +
|
|
Celeron + + +
|
|
Pentium III + + + +
|
|
AMD K5 +
|
|
AMD K6 + +
|
|
AMD K6-2 + + +
|
|
AMD K6-3 + + +
|
|
Cyrix Cx6x86 (1)
|
|
Cyxix Cx6x86MX + + + +
|
|
Cyrix MII + + + +
|
|
IDT C6 + +
|
|
IDT WinChip 2 + + +
|
|
|
|
(1) - Not support CPUID
|
|
|
|
------------------------------------------
|
|
APPENDIX G
|
|
|
|
BUGS & CPU IDENTIFICATION INFO
|
|
|
|
1) How to separate i386SX and i386DX
|
|
(Cx486SLC and Cx486DLC)
|
|
Note: With 386DX type CPU possible to used
|
|
287 class NPX, and bit 4 in CR0
|
|
ET - Extention Type on DX we may to
|
|
clear to 0, but for SX and REAL 486
|
|
this bit always 1.
|
|
Routine:
|
|
mov eax,cr0
|
|
push eax
|
|
and al,0efh
|
|
mov cr0,eax
|
|
mov eax,cr0
|
|
test al,10h
|
|
pop eax
|
|
mov cr0,eax
|
|
jne SX/SLC
|
|
jmp DX/DLC
|
|
|
|
2) How to separate i486SX and i487SX/i486DX/DX2 etc
|
|
Routine:
|
|
memory_location DW ?
|
|
mov memory_location,0
|
|
fninit
|
|
fstcw memory_location
|
|
cmp memory_location,037Fh
|
|
jz i486SX
|
|
jmp i486DX/DX2etc/i487SX
|
|
|
|
3) How to separate Cyrix's CPUs and other
|
|
Be sure that Your CPU no Pentium before
|
|
UMOV executed on Intel and other in
|
|
Non SM modes as MOV.
|
|
But Cyrix executed this instruction as
|
|
Double NOP, and never generate INT 6.
|
|
So.
|
|
Mem_Loc DW 1
|
|
xor ax,ax
|
|
umov ax,Mem_Loc
|
|
or ax,ax
|
|
jz Cyrix
|
|
jmp No_Cyrix
|
|
|
|
4) Standart Way: Part 1
|
|
(Intel recomended this way)
|
|
|
|
pushf
|
|
pop ax
|
|
and ax,0fffh ; Clear bits 15..12
|
|
push ax
|
|
popf
|
|
pushf
|
|
pop ax
|
|
and ax,0f000h ; Is bits 15..12=0 ?
|
|
jz 286_CPU
|
|
and ax,8000h ; Is bit 15=0
|
|
jz 386_and_Higher
|
|
jmp 86_88and186_186etc
|
|
|
|
5) How separate 86/88, 186/188 and NECs
|
|
|
|
mov ax,1
|
|
mov cl,33
|
|
shl ax,cl
|
|
jnz 186_188
|
|
pusha ; Executed on 8086/8088 as JMP $+2
|
|
stc
|
|
jc NECs
|
|
jmp 86_88
|
|
|
|
6) Non CMOS 8086/88 execute command MOV CS,xxxx (Opcode 8Eh ...)
|
|
CMOS 80C86/88 ignore it.
|
|
|
|
7) Then Invalid Opcode NEC/Sony V40/V50 do INT 6
|
|
NEC/Sony V20/V30 don't.
|
|
|
|
8) Remember POP CS instruction on non-CMOS 8086/8088.
|
|
|
|
9) PUSH SP
|
|
286 placed in stack new value of SP
|
|
86/88 old.
|
|
|
|
10) Best way to Reset 286+ in Real Mode:
|
|
mov sp,1 (LOW BOUND)
|
|
push smth
|
|
|
|
note:
|
|
mov sp,ffffh (HIGH BOUND)
|
|
pop smth
|
|
caused non Stack Fault, but GPF.
|
|
|
|
11) Maximal Length of Instructian
|
|
86: N/R
|
|
286: 10 byte
|
|
386+: 15 byte
|
|
|
|
12) UMC Chips Detection (UMC U486SX, for other use CPUID)
|
|
db 64h,0dbh ; look like "SETALC FS:", but it none
|
|
cmp eax,0ab6b1b07h
|
|
je u486SX
|
|
jne Other
|
|
|
|
13) MSW on 386/486
|
|
On 386 MSR reserved bits = 1, so Real Mode 386 usually MSW = FFF0
|
|
Real Mode 486+ usually MSW = 0010
|
|
smsw ax
|
|
and ah,ah
|
|
jnz cpu_386
|
|
jz cpu_486_and_more
|
|
|
|
14) Selectors PUSH
|
|
486 write 2 bytes to stack and ADD ESP,4
|
|
Pentium Write all 4 bytes (and two of it are zero)
|
|
(The same situation, then pushing 16-bit error code on exception)
|
|
|
|
15) TSS I/O Map Addressing
|
|
Then I/O Map Base Address in TSS contain for example FFFFh,
|
|
(don't forget TSS Limit)
|
|
i486 wrap around segment and access invalid address near start of TSS.
|
|
Pentium caused GPF.
|
|
|
|
16) Prefetcher
|
|
up to 486 and 486 then instruction fetched to prefetcher and we write
|
|
into memory area, where this instruction placed, will be execute
|
|
already-prefetched command, but non-new.
|
|
Pentium flush prefetcher, when detect modify of fetched cache line,
|
|
so, for avoid this flush use different linear addresses for modify.
|
|
|
|
CPU Size_of_prefetch_queue Number_of_empty_bytes_in
|
|
(bytes) queue_needed_for_initiate
|
|
prefetch_cycle
|
|
8086/186/V20 6 2
|
|
8088/188/V30 4 1
|
|
286 6 2
|
|
386SX 16 2
|
|
386DX 16 4
|
|
|
|
17) DR4/DR5 :))
|
|
on 486 then accessing DR4/DR5 CPU accessed DR6/DR7.
|
|
on Pentium if CR4.DE=0 the same situation as on 486,
|
|
but if CR4.DE=1 then MOV from/to DR4/DR5 caused GPF.
|
|
|
|
18) NexGen Nx586
|
|
On Pentium and 486 we cannot set ET flag in CR0.
|
|
We may set ET flag in CR0.
|
|
(On 386 we may set this flag too).
|
|
|
|
19) IDIV
|
|
if result of IDIV will be 80h (byte IDIV) or 8000h (word IDIV)
|
|
86/88 caused INT 0 - Division by zero,
|
|
on 286+ 80h/8000h keeps as result and no exception
|
|
|
|
20) Division by zero
|
|
On 86/88 pointer in stack then caused Division by zero
|
|
pointed to DIV/IDIV instruction,
|
|
on 286+ pointed to next instruction.
|
|
|
|
21) FPU Exception
|
|
So, then FPU command with prefixes caused exception
|
|
on 86/88 pointer to failed instruction on stack pointed to ESC command,
|
|
on 386+ pointed to one of prefixes before ESC.
|
|
|
|
22) String commands
|
|
if while 86/88 execute string instruction interrupt caused,
|
|
CPU end execute instruction and goto next instruction,
|
|
CX,SI and DI have values after last complete iteration
|
|
To avoid it, use:
|
|
pushf
|
|
cli
|
|
rep STRING
|
|
popf
|
|
|
|
23) How to separate C&T 386 CPU form other (AMD,Intel)
|
|
(C&T none have POPAD bug, but Intel and AMD have)
|
|
mov esi,32
|
|
mov eax,12345678h
|
|
loop:
|
|
mov ebx,eax
|
|
mov edx,0
|
|
mov esi,0
|
|
pushad
|
|
popad
|
|
mov ecx,[edx+edi]
|
|
cmp eax,ebx
|
|
jnz AMD_Intel
|
|
rol eax,1
|
|
dec esi
|
|
jnz loop
|
|
jmp C_T_CPUs
|
|
|
|
------------------------------------------------
|
|
APPENDIX H
|
|
Internal Names Of Processors
|
|
|
|
(Intel)
|
|
P9 i386SX
|
|
P4 i486DX
|
|
P4S i486SX
|
|
P23S i487SX
|
|
P23T OverDrive for PGA(169)
|
|
P4T OverDrive for PGA(168)
|
|
P24S i486DX2
|
|
P24T Pentium OverDrive for i486DX2 socket 3 (Vcc=5V,core=3V).
|
|
P24CT Pentium OverDrive for Socket 3 (Vcc=3V)
|
|
P5 Pentium-60,66
|
|
P5T Overdrive for P5 socket (120/133 MHz).
|
|
P54C Pentium-90,100,75 x1.5 usually with APIC and Multiprocessing features
|
|
P54CS Pentium-120,133 x2 with reduced APIC and multipr. features
|
|
P55C Pentium w/MMX
|
|
P54LM Pentium P54C with 2.9V (for Notebooks)
|
|
P24C IntelDX4
|
|
P24D i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
|
|
P54M Overdrive ( include to P54C but P54C work too)
|
|
P6 Pentium Pro (no comments)
|
|
P6T Pentium Pro OverDrive (for extended Pentium Sockets)
|
|
P7 "Merced" (IA-64, VLIW command set "Tahoe")
|
|
P54CSQ 3xCLK Pentiums P120 etc.
|
|
P54CSLM P54CS with Low Power.
|
|
P6L Pentium II "Klamath" (P6+MMX, Slot 1, 66 MHz bus, L2 speed CLK/2)
|
|
Pentium II "Deschutes" (modernized Klamath, Slot 1, 66 or 100 MHz bus,
|
|
L2 speed CLK/2)
|
|
Celeron "Covington" (Slot1, Deschutes w/o L2 cache)
|
|
Celron "Mendocino" (Slot1, L2 speed at CLK)
|
|
Pentium II Xeon "Xeon" (Slot2, L2 speed at CLK)
|
|
Pentium III "Katmai" (Slot1, 100MHz system bus, SIMD (MMX2/KNI))
|
|
Pentium III Xeon "Tanner" (Slot2, 100MHz system bus, L2 speed at CLK)
|
|
P68 "Willamette" (Next gen P6: Pentium IV?)
|
|
"Dixon" (Mendocino, with L2 256KB)
|
|
"Coppermine" (future high-tech Pentium III 0.18m)
|
|
"Cascades" (future high-tech Pentium III Xeon)
|
|
"Foster" (THE LAST IA-32 INTEL CPU) :(
|
|
"McKinley" (Second Generation Merced)
|
|
|
|
(Cyrix)
|
|
M5 Cx486S/S2
|
|
M6 Cx486D/D2
|
|
C6 Cx487D
|
|
M7 Cx486DX/Cx486DX2
|
|
M8 Cx486DX4
|
|
M1 Cx6x86
|
|
M1SC Cx5x86
|
|
M1R Cx6x86L (0.35 mkm, reduced due size)
|
|
M2 Cx6x86MX
|
|
MII
|
|
MIII "Jalapeno" (may be will support 3DNow! :)
|
|
MediaGX (Integerated PCI and some perepheria)
|
|
GXm (MMX-version of MediaGX)
|
|
|
|
(AMD)
|
|
SSA/5 Am5k86 early series (K5 with big due size and with reduced some
|
|
features, 'cos don't work).
|
|
K5 Am5k86
|
|
K6 (IA MMX support)
|
|
K6-2 (3DNow!+ some extensions)
|
|
K6-III "Sharptooth" (K6-2 + L2 cache)
|
|
K7 (Slot A,512KB..8M L2 at Clk,Clk/2,Clk/3, 500MHz or higher)
|
|
|
|
(IDT)
|
|
C6 Winchip (MMX)
|
|
C2 "Winchip 2" (+3DNow! and higher cache)
|
|
"Winchip 4"
|
|
|
|
(Rise)
|
|
|
|
-------------------------------------------------
|
|
APPENDIX I FORMAT OF DEBUG CONTROL REGISTERS (DR6/DR7)
|
|
|
|
+---------+
|
|
| DR6 |
|
|
+---------+
|
|
|
|
[Am386xx/i386xx/i486xx/Am486xx]
|
|
3322222222221111 1 1 1 111
|
|
1098765432109876 5 4 3 210987654 3 2 1 0
|
|
----------------------------------------
|
|
0000000000000000 B B B 000000000 B B B B
|
|
T S D 3 2 1 0
|
|
----------------------------------------
|
|
|
|
[Intel Pentium]
|
|
3322222222221111 1 1 1 111
|
|
1098765432109876 5 4 3 210987654 3 2 1 0
|
|
----------------------------------------
|
|
1111111111111111 B B B 111111111 B B B B
|
|
T S D 3 2 1 0
|
|
----------------------------------------
|
|
|
|
[Cyrix Cx486DX,TI 486SXLC, TI 486SLC/e]
|
|
3322222222221111 1 1 1 111
|
|
1098765432109876 5 4 3 210987654 3 2 1 0
|
|
----------------------------------------
|
|
1111111111111111 B B 0 011111111 B B B B
|
|
T S 3 2 1 0
|
|
----------------------------------------
|
|
|
|
[TI 486SXL/Cx486SLC]
|
|
3322222222221111 1 1 1 111
|
|
1098765432109876 5 4 3 210987654 3 2 1 0
|
|
----------------------------------------
|
|
1111111111111111 B B 1 011111111 B B B B
|
|
T S 3 2 1 0
|
|
----------------------------------------
|
|
|
|
[IBM 486SLC2]
|
|
3322222222221111 1 1 1 1 11
|
|
1098765432109876 5 4 3 2 10987654 3 2 1 0
|
|
-----------------------------------------
|
|
0000000000000000 B B B B 00000000 B B B B
|
|
T S D K 3 2 1 0
|
|
----------------------------------------
|
|
|
|
[AMD Am486SXLV/Am386DXLV/Am386SXLV]
|
|
3322222222221111 1 1 1 1 11
|
|
1098765432109876 5 4 3 2 10987654 3 2 1 0
|
|
-----------------------------------------
|
|
0000000000000000 B B B S 00000000 B B B B
|
|
T S D M 3 2 1 0
|
|
M
|
|
S
|
|
----------------------------------------
|
|
|
|
[Cyrix Cx6x86] [Cx6x86MX]
|
|
3322222222221111 1 1 1 1 11
|
|
1098765432109876 5 4 3 2 10987654 3 2 1 0
|
|
-----------------------------------------
|
|
0000000000000000 B B 0 0 11111111 B B B B
|
|
T S 3 2 1 0
|
|
----------------------------------------
|
|
|
|
BT - Debug Trap due to Task Switch
|
|
BS - Debug Trap due to Single-Step
|
|
BD - Debug Fault due to attemped registeracess when GD bit set
|
|
BK - Debug Trap due to ICE
|
|
This bit set if exception 1 will invoked due to occurence of
|
|
ICEMD interrupt or ICEBP software breakpoint.
|
|
SMMS - SMM Status
|
|
if = 1 SMM is entered
|
|
B3 - Debug fault/trap due to Breakpoint # 3
|
|
B2 - Debug fault/trap due to Breakpoint # 2
|
|
B1 - Debug fault/trap due to Breakpoint # 1
|
|
B0 - Debug fault/trap due to Breakpoint # 0
|
|
|
|
+--------+
|
|
| DR7 |
|
|
+--------+
|
|
|
|
[Am386xx/i386xx/i486xx/Am486xx]
|
|
[TI486SXL/Cx486SLC]
|
|
33 22 22 22 22 22 11 11 11 1 111
|
|
10 98 76 54 32 10 98 76 54 3 210 9 8 7 6 5 4 3 2 1 0
|
|
----------------------------------------------------
|
|
LL RR LL RR LL RR LL RR 00 G 000 G L G L G L G L G L
|
|
EE // EE // EE // EE // D E E 3 3 2 2 1 1 0 0
|
|
NN WW NN WW NN WW NN WW
|
|
33 33 22 22 11 11 00 00
|
|
----------------------------------------------------
|
|
|
|
[Pentium/Cx486DX/Cx486DX2/Cx486DX4]
|
|
[TI486SLC/e / TI486SXLC/Cx6x86] [Cx6x86MX]
|
|
33 22 22 22 22 22 11 11 11 1 111
|
|
10 98 76 54 32 10 98 76 54 3 210 9 8 7 6 5 4 3 2 1 0
|
|
----------------------------------------------------
|
|
LL RR LL RR LL RR LL RR 00 G 001 G L G L G L G L G L
|
|
EE // EE // EE // EE // D E E 3 3 2 2 1 1 0 0
|
|
NN WW NN WW NN WW NN WW
|
|
33 33 22 22 11 11 00 00
|
|
----------------------------------------------------
|
|
|
|
[IBM486SLC2]
|
|
33 22 22 22 22 22 11 11 1 1 1 1 1 1
|
|
10 98 76 54 32 10 98 76 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-------------------------------------------------------
|
|
LL RR LL RR LL RR LL RR T T G T G 0 G L G L G L G L G L
|
|
EE // EE // EE // EE // T B D P M E E 3 3 2 2 1 1 0 0
|
|
NN WW NN WW NN WW NN WW
|
|
33 33 22 22 11 11 00 00
|
|
-------------------------------------------------------
|
|
|
|
[Am486SXLV/Am386DXLV/Am386SXLV]
|
|
33 22 22 22 22 22 11 11 111 1 11
|
|
10 98 76 54 32 10 98 76 543 2 10 9 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------------------
|
|
LL RR LL RR LL RR LL RR 000 S 00 G L G L G L G L G L
|
|
EE // EE // EE // EE // M E E 3 3 2 2 1 1 0 0
|
|
NN WW NN WW NN WW NN WW I
|
|
33 33 22 22 11 11 00 00 E
|
|
----------------------------------------------------
|
|
|
|
[Am486xx]
|
|
33 22 22 22 22 22 11 11 111111
|
|
10 98 76 54 32 10 98 76 543210 9 8 7 6 5 4 3 2 1 0
|
|
----------------------------------------------------
|
|
LL RR LL RR LL RR LL RR 000000 G L G L G L G L G L
|
|
EE // EE // EE // EE // E E 3 3 2 2 1 1 0 0
|
|
NN WW NN WW NN WW NN WW
|
|
33 33 22 22 11 11 00 00
|
|
----------------------------------------------------
|
|
|
|
LENi - Length of Breakpoint
|
|
00 - byte
|
|
01 - word
|
|
10 - undefined
|
|
11 - dword
|
|
R/Wi - Reaw/Write Instructions Enable
|
|
00 - Instruction Execute cause Debug Interrupt
|
|
01 - Data Writes only
|
|
10 - I/O Reads or Writes
|
|
11 - Data Reads or Writes
|
|
GD - Global Debug Register Access Protect
|
|
INT 1 will be caused if any instructions will be read/write
|
|
DRs. This bit cleared when invoking Debug Exception.
|
|
GE - Global Exact
|
|
Any data breakpoint traps will be reported exactly after
|
|
competition of the instruction that caused the operand
|
|
transfer.
|
|
LE - Local Exact (Cleared on Task Switches)
|
|
Note: 486+ always does exact data breakpoint matches,
|
|
regardless of GE/LE bits. But 386 not.
|
|
G3 - Global Enable Breakpoint # 3
|
|
L3 - Local Enable Breakpoint # 3 (Cleared on Task Switches)
|
|
G2 - Global Enable Breakpoint # 2
|
|
L2 - Local Enable Breakpoint # 2 (Cleared on Task Switches)
|
|
G1 - Global Enable Breakpoint # 1
|
|
L1 - Local Enable Breakpoint # 1 (Cleared on Task Switches)
|
|
G0 - Global Enable Breakpoint # 0
|
|
L0 - Local Enable Breakpoint # 0 (Cleared on Task Switches)
|
|
TT - Enable Task Trace Messages (to External ICE hardware)
|
|
TB - Enable Branch Trace Messages (to External ICE hardware)
|
|
TP - Exception 1 Handler Entry Convention
|
|
if TP=0 exception 1 will interrupt 1 in user address space
|
|
if TP=1 exception 1 will enter ICE mode
|
|
GM - Enable Global Mapping
|
|
if =1 Enable Mapping user memory addresses into ICE space.
|
|
(Paging Must be disabled)
|
|
SMIE - Software SMI Enable
|
|
if = 1 enable
|
|
|
|
Note:
|
|
DR7: Undocument features on Intel's CPUs.
|
|
see IBM 486SLC2. All this bits in DR7 exist on Intel CPUs,
|
|
but where thay are undocument. (bits 15,14,12).
|
|
|
|
-------------------------------------------------
|
|
APPENDIX I FORMAT OF DEBUG DATA REGISTERS (except DR0-DR5)
|
|
|
|
+---------+ +---------+
|
|
| DR4 | | DR5 |
|
|
+---------+ +---------+
|
|
|
|
DR4 and DR5 physically not exist, but then You accessing it using
|
|
MOV from/to DR, thay are aliasing to DR6,DR7.
|
|
|
|
+---------+
|
|
| DR3 |
|
|
+---------+
|
|
|
|
[386+]
|
|
3322222222221111111111
|
|
10987654321098765432109876543210
|
|
--------------------------------
|
|
BREAKPOINT_3_LINEAR_ADDRESS
|
|
--------------------------------
|
|
|
|
+---------+
|
|
| DR2 |
|
|
+---------+
|
|
|
|
[386+]
|
|
3322222222221111111111
|
|
10987654321098765432109876543210
|
|
--------------------------------
|
|
BREAKPOINT_2_LINEAR_ADDRESS
|
|
--------------------------------
|
|
|
|
+---------+
|
|
| DR1 |
|
|
+---------+
|
|
|
|
[386+]
|
|
3322222222221111111111
|
|
10987654321098765432109876543210
|
|
--------------------------------
|
|
BREAKPOINT_1_LINEAR_ADDRESS
|
|
--------------------------------
|
|
|
|
+---------+
|
|
| DR0 |
|
|
+---------+
|
|
|
|
[386+]
|
|
3322222222221111111111
|
|
10987654321098765432109876543210
|
|
--------------------------------
|
|
BREAKPOINT_0_LINEAR_ADDRESS
|
|
--------------------------------
|
|
|
|
-------------------------------------------------
|
|
APPENDIX K FORMAT OF CACHE TEST REGISTER (TR4/TR5/TR3)
|
|
|
|
+-------+
|
|
| TR4 |
|
|
+-------+
|
|
|
|
[i486xx/Cx486xx]
|
|
332222222222111111111 1
|
|
109876543210987654321 0 987 6543 210
|
|
-------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTTT V LLL VVVV %%%
|
|
AAAAAAAAAAAAAAAAAAAAA RRR AAAA
|
|
GGGGGGGGGGGGGGGGGGGGG UUU LLLL
|
|
IIII
|
|
DDDD
|
|
--------------------------------------
|
|
|
|
[Cx486SXL/e]
|
|
3322222222221111111111
|
|
10987654321098765432109 8 7 6543 210
|
|
-------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTTTTT % L VVVV 000
|
|
AAAAAAAAAAAAAAAAAAAAAAA R AAAA
|
|
GGGGGGGGGGGGGGGGGGGGGGG U LLLL
|
|
IIII
|
|
DDDD
|
|
-------------------------------------
|
|
|
|
[WB-Enhanced IntelDX2 WB-mode]
|
|
332222222222111111111 1
|
|
109876543210987654321 0 987 65432 1 0
|
|
--------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTTT % LLL %%%%% V V
|
|
AAAAAAAAAAAAAAAAAAAAA RRR H L
|
|
GGGGGGGGGGGGGGGGGGGGG UUU
|
|
--------------------------------------
|
|
|
|
[IntelDX4]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 987 6543 210
|
|
--------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTT % V LLL VVVV %%%
|
|
AAAAAAAAAAAAAAAAAAAA RRR AAAA
|
|
GGGGGGGGGGGGGGGGGGGG UUU LLLL
|
|
IIII
|
|
DDDD
|
|
--------------------------------------
|
|
|
|
[WB-Enhanced IntelDX4 WB-mode]
|
|
33222222222211111111 11
|
|
10987654321098765432 10 987 65432 10
|
|
--------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTT %% LLL %%%%% V V
|
|
AAAAAAAAAAAAAAAAAAAA RRR H L
|
|
GGGGGGGGGGGGGGGGGGGG UUU
|
|
--------------------------------------
|
|
|
|
[TI486SXL]
|
|
3322222222221111111 111
|
|
1098765432109876543 21098 7 6543 2 10
|
|
--------------------------------------
|
|
TTTTTTTTTTTTTTTTTTT %%%%% L VVVV V 00
|
|
AAAAAAAAAAAAAAAAAAA R AAAA A
|
|
GGGGGGGGGGGGGGGGGGG U LLLL L
|
|
IIII I
|
|
DDDD D
|
|
B
|
|
--------------------------------------
|
|
|
|
[AMD Enhanced 486 CPU with EXT=0]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 987 6543 210
|
|
--------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTT 0 V LLL VVVV %%%
|
|
AAAAAAAAAAAAAAAAAAAA RRR AAAA
|
|
GGGGGGGGGGGGGGGGGGGG UUU LLLL
|
|
IIII
|
|
DDDD
|
|
--------------------------------------
|
|
|
|
[AMD Enhanced 486 CPU with EXT=1]
|
|
3 32 2 22 22 22 22 111111111 1
|
|
1 09 8 76 54 32 10 987654321 0 987 6543 210
|
|
--------------------------------------------
|
|
% SS % SS SS SS SS %%%%%%%%% V LLL VVVV %%%
|
|
TT TT TT TT TT RRR AAAA
|
|
nn 33 22 11 00 UUU LLLL
|
|
IIII
|
|
DDDD
|
|
--------------------------------------------
|
|
|
|
[Cyrix Cx6x86]
|
|
33222222222211111111 11
|
|
10987654321098765432 1098 76 54 3210
|
|
--------------------------------------
|
|
TTTTTTTTTTTTTTTTTTTT %%%% MM MM MMMM
|
|
AAAAAAAAAAAAAAAAAAAA EE EE RRRR
|
|
GGGGGGGGGGGGGGGGGGGG SS SS UUUU
|
|
II II
|
|
UU LL
|
|
--------------------------------------
|
|
|
|
[Cyrix Cx6x86MX]
|
|
3322222222221111111111
|
|
109876543210987654321098765432 10
|
|
---------------------------------
|
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
|
|
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
|
|
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
|
|
---------------------------------
|
|
|
|
VALUD - dwords (or other size units) of Cache Line which Valid
|
|
LRU - LRU
|
|
V - is cache line entry valid
|
|
TAG - Tag of cache line
|
|
VL,VH - Define MESI state of line
|
|
VH VL State
|
|
1 1 M
|
|
0 1 E
|
|
1 0 S
|
|
0 0 I
|
|
VALIDB - Valid of Cache Line
|
|
STn - State of Cache Line (MESI)
|
|
ST3 - State of 3rd dword of cache line (MESI)
|
|
ST2 - State of 2nd dword of cache line (MESI)
|
|
ST1 - State of 1st dword of cache line (MESI)
|
|
ST0 - State of 0 dword of cache line (MESI)
|
|
00 - Invalid
|
|
01 - Exclusive
|
|
10 - Modified
|
|
11 - Shared
|
|
MESIU - Upper Sector of Cache Line MESI state
|
|
00 - Modified
|
|
01 - Shared
|
|
10 - Exclusive
|
|
11 - Invalid
|
|
MESIL - Lower Sector of Cache Line MESI state
|
|
00 - Modified
|
|
01 - Shared
|
|
10 - Exclusive
|
|
11 - Invalid
|
|
MRU - Used for Determinate LRU line
|
|
ADDR - Physical Address of Cache Line
|
|
|
|
+--------+
|
|
| TR5 |
|
|
+--------+
|
|
|
|
[i486xx/Am486xx/Cx486xx]
|
|
332222222222111111111 1
|
|
109876543210987654321 0987654 32 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%%%%%%%%%%% SSSSSSS EE CC
|
|
EEEEEEE NN TT
|
|
TTTTTTT TT LL
|
|
--------------------------------------
|
|
|
|
[TI486SXL/e]
|
|
33222222222211111111 11
|
|
10987654321098765432 10987654 3 2 10
|
|
--------------------------------------
|
|
%%%%%%%%%%%%%%%%%%%% SSSSSSSS % E CC
|
|
EEEEEEEE N TT
|
|
TTTTTTTT T LL
|
|
--------------------------------------
|
|
|
|
[WB-Enhanced IndelDX2 WB-mode]
|
|
332222222222111111 1 11 1
|
|
109876543210987654 3 21 0987654 32 10
|
|
---------------------------------------
|
|
%%%%%%%%%%%%%%%%%% S %% SSSSSSS EE CC
|
|
L EEEEEEE NN TT
|
|
F TTTTTTT TT LL
|
|
--------------------------------------
|
|
|
|
[IntelDX4]
|
|
33222222222211111111 11
|
|
10987654321098765432 10987654 32 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%%%%%%%%%% SSSSSSSS EE CC
|
|
EEEEEEEE NN TT
|
|
TTTTTTTT TT LL
|
|
--------------------------------------
|
|
|
|
[WB-Enhanced IntelDX4 WB-mode]
|
|
332222222222111111 1 1 11
|
|
109876543210987654 3 2 10987654 32 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%%%%%%%% S % SSSSSSSS EE CC
|
|
L EEEEEEEE NN TT
|
|
F TTTTTTTT TT LL
|
|
-------------------------------------
|
|
|
|
[TI486SXL]
|
|
3322222222221111111 1 11
|
|
1098765432109876543 2 10987654 32 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%%%%%%%%% W SSSSSSSS EE CC
|
|
A EEEEEEEE NN TT
|
|
Y TTTTTTTT TT LL
|
|
-------------------------------------
|
|
|
|
[AMD Enhanced 486 in WT-mode]
|
|
3322222222221111111 1 11
|
|
1098765432109876543 2 10987654 32 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%%%%%%%%% ( SSSSSSSS EE CC
|
|
S EEEEEEEE NN TT
|
|
E TTTTTTTT TT LL
|
|
T
|
|
)
|
|
-------------------------------------
|
|
|
|
[AMD Enhanced 486 in WB-mode]
|
|
332222222222 1 11 1111 1 11
|
|
109876543210 9 87 6543 2 10987654 32 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%% E SS %%%% ( SSSSSSSS EE CC
|
|
X TT S EEEEEEEE NN TT
|
|
T E TTTTTTTT TT LL
|
|
T
|
|
)
|
|
-------------------------------------
|
|
|
|
[Cx6x86]
|
|
332222222222111111 11 11
|
|
109876543210987654 32 1098765 432 10
|
|
-------------------------------------
|
|
%%%%%%%%%%%%%%%%%% WW SSSSSSS EEE CC
|
|
AA EEEEEEE NNN TT
|
|
YY TTTTTTT TTT LL
|
|
-------------------------------------
|
|
|
|
[Cx6x86MX]
|
|
33222222 2 222 1 111 1111 11
|
|
10987654 3 210 9 876 5432 1098 76 54 32 10
|
|
------------------------------------------
|
|
%%%%%%%% S %%% V MMM %%%% MMMM %% SS %% CC
|
|
M EEE RRRR EE TT
|
|
I SSS UUUU TT LL
|
|
III
|
|
------------------------------------------
|
|
|
|
CTL - Control (Select operation)
|
|
00 - Enable (Fill Buffer Write/Read Buffer Read)
|
|
01 - Perform Cache Line Write
|
|
10 - Perform Cache Line Read
|
|
11 - Perform Cache Line Flush
|
|
ENT - Select Entry for Operation
|
|
SET - Select Set for Operation
|
|
SLF -
|
|
WAY - Select Way for Operation
|
|
ST - State of set will be writing during write operation
|
|
00 - Invalid
|
|
01 - Exclusive
|
|
10 - Modified
|
|
11 - Shared
|
|
EXT - Extension
|
|
if EXT=0 bits 31..11 of TR4 contain TAG
|
|
if EXT=1 bits 31..11 of TR4 contain STi
|
|
SMI - SMI Address bit. Select separate/cachable SMI code/data space.
|
|
V,MESI - Select Valid & MESI
|
|
V MESI Description
|
|
1 000 Modified
|
|
1 001 Shared
|
|
1 010 Exclusive
|
|
0 011 Invalid
|
|
1 100 Locked Valid
|
|
0 111 Locked Invalid
|
|
else Undefined
|
|
MRU - Used for determinate LRU.
|
|
|
|
+-------+
|
|
| TR3 |
|
|
+-------+
|
|
|
|
[any,which support Cache Testing (all 486+)]
|
|
3322222222221111111111
|
|
10987654321098765432109876543210
|
|
--------------------------------
|
|
___________CACHE_DATA___________
|
|
--------------------------------
|
|
|
|
CACHE_DATA - Data which will be reading/writing to/from cache line part.
|
|
|
|
-------------------------------------------------
|
|
APPENDIX L FORMAT OF BTB TEST REGISTER (TR1/TR2)
|
|
|
|
Note: This kind of registers present only on Cx6x86 and may be
|
|
on Cx6x86MX.
|
|
|
|
+-------+
|
|
| TR1 |
|
|
+-------+
|
|
|
|
[Cx6x86]
|
|
3322222222221111111111
|
|
10987654321098765432109876 543 210
|
|
----------------------------------
|
|
?????????????????????????? III ???
|
|
DDD
|
|
XXX
|
|
----------------------------------
|
|
|
|
IDX - Index of Register in BTB control space, which may be accessed via TR2.
|
|
|
|
+-------+
|
|
| TR2 |
|
|
+-------+
|
|
|
|
[Cx6x86]
|
|
3322222222221111111111
|
|
10987654321098765432109876543210
|
|
--------------------------------
|
|
_____________DATA_______________
|
|
--------------------------------
|
|
|
|
DATA - data which will be reading/writing from/to BTB control space registers.
|
|
|
|
Note: Refer to Appendix A5 for more details.
|
|
|
|
-------------------------------------------------
|
|
APPENDIX K FORMAT OF TLB TEST REGISTER (TR6/TR7)
|
|
|
|
Note: Pentium and Higher Intel CPUs not support Test registers (TRs) at all.
|
|
|
|
+-------+
|
|
| TR6 |
|
|
+-------+
|
|
|
|
[i386xx] [i486xx] [TI486SXL]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 9 8 7 6 5 4321 0
|
|
-----------------------------------------
|
|
LLLLLLLLLLLLLLLLLLLL V D D U U W W %%%% O
|
|
AAAAAAAAAAAAAAAAAAAA # # # P
|
|
DDDDDDDDDDDDDDDDDDDD
|
|
DDDDDDDDDDDDDDDDDDDD
|
|
RRRRRRRRRRRRRRRRRRRR
|
|
-----------------------------------------
|
|
|
|
[Cx6x86]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 9 8 7 6 5 4 3 210
|
|
------------------------------------------
|
|
LLLLLLLLLLLLLLLLLLLL V D D U U W W A A CCC
|
|
AAAAAAAAAAAAAAAAAAAA # # # # MMM
|
|
DDDDDDDDDDDDDDDDDDDD DDD
|
|
DDDDDDDDDDDDDDDDDDDD
|
|
RRRRRRRRRRRRRRRRRRRR
|
|
------------------------------------------
|
|
|
|
[Cx6x86MX]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 9 8 7 6 5 4 3 210
|
|
------------------------------------------
|
|
LLLLLLLLLLLLLLLLLLLL V D P U 0 W 0 A 0 CCC
|
|
AAAAAAAAAAAAAAAAAAAA G MMM
|
|
DDDDDDDDDDDDDDDDDDDD DDD
|
|
DDDDDDDDDDDDDDDDDDDD 222
|
|
RRRRRRRRRRRRRRRRRRRR
|
|
------------------------------------------
|
|
|
|
LADDR - Linear Address
|
|
V - Valid bit for TLB entry
|
|
D,D# - The Dirty Bit for/from TLB entry (Normal and Reverse)
|
|
U,U# - The User/Supervisor bit for/from TLB Entry (Normal and Reverse)
|
|
W,W# - The Read/Write bit for/from TLB entry (Normal and Reverse)
|
|
OP - Operation
|
|
0 - TLB Write
|
|
1 - TLB LookUp
|
|
A,A# - The Accessed Bit (Normal and Reverse)
|
|
CMD - Array Command Select
|
|
000 - Direct Write to main TLB
|
|
001 - TLB lookup for an linear address in all arrays
|
|
100 - Write to variable page size mask only
|
|
110 - Write to variable page size, linear and physical addreses
|
|
101 - Read variable page size and linear address.
|
|
111 - Read variable page size cache physical and linear address
|
|
PG - Page Global bit
|
|
CMD2 - Array Command Select
|
|
Value Description
|
|
x00 - Write to L1 TLB
|
|
x01 - Write to L2 TLB
|
|
010 - Read from L1 TLB X-port
|
|
011 - Read from L2 TLB X-port
|
|
110 - Read from L1 TLB Y-port
|
|
111 - Read from L2 TLB Y-port
|
|
|
|
+-------+
|
|
| TR7 |
|
|
+-------+
|
|
|
|
[i386xx]
|
|
33222222222211111111 11
|
|
10987654321098765432 1098765 4 32 10
|
|
-------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP %%%%%%% H RR %%
|
|
HHHHHHHHHHHHHHHHHHHH T EE
|
|
YYYYYYYYYYYYYYYYYYYY PP
|
|
SSSSSSSSSSSSSSSSSSSS
|
|
-------------------------------------
|
|
|
|
[i486xx] [TI486SXL]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 987 65 4 32 10
|
|
---------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP P P LLL %% R RR %%
|
|
HHHHHHHHHHHHHHHHHHHH C W RRR P PP
|
|
YYYYYYYYYYYYYYYYYYYY D T UUU S //
|
|
SSSSSSSSSSSSSSSSSSSS / HH
|
|
H LL
|
|
I
|
|
---------------------------------------
|
|
|
|
[Cx6x86]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 987 6 5 4 3 210
|
|
----------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP P P BBB % H H H %%%
|
|
HHHHHHHHHHHHHHHHHHHH C W III V D B
|
|
YYYYYYYYYYYYYYYYYYYY D T
|
|
SSSSSSSSSSSSSSSSSSSS
|
|
----------------------------------------
|
|
|
|
[Cx6x86MX]
|
|
33222222222211111111 1 1
|
|
10987654321098765432 1 0 987 6 5 4 3 210
|
|
----------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP P P SSS % H H % HHH
|
|
HHHHHHHHHHHHHHHHHHHH C W EEE 1 2 SSS
|
|
YYYYYYYYYYYYYYYYYYYY D T TTT EEE
|
|
SSSSSSSSSSSSSSSSSSSS TTT
|
|
----------------------------------------
|
|
|
|
PHYS - Physiacl Address
|
|
HT - TLB Lookup Hit
|
|
REP - Replacement Pointer
|
|
PCD - Page Cache Disable
|
|
PWT - Page Write Throught
|
|
LRU - LRU
|
|
RPS/HI - Replacement Pointer Select (writes)/Hit Indication (LookUp)
|
|
RP/HL - Replacement Pointer (writes)/Hit Location (LookUp)
|
|
BI - Cell Index for victim TLB and block cache operation.
|
|
HV - Victim TLB Hit
|
|
HD - Main TLB Hit
|
|
HB - Variable-size Paging Mechanism Hit
|
|
SET - L2 TLB Set Selection (0..5h)
|
|
H1 - Hit in L1 TLB
|
|
H2 - Hit in L2 TLB
|
|
HSET - L2 set selection when L2 TLB hit occures (0h..5h)
|
|
|
|
----------------------------------------------------
|
|
APPENDIX N EFLAGS register format
|
|
|
|
+---------+
|
|
| EFLAGS |
|
|
+---------+
|
|
|
|
[Pentium P5] [Pentium P54C] [IntelDX4] [Am5k86]
|
|
[Pentium Pro] [Pentium II] [Am6k86] [Pentium w/MMX (P55C)]
|
|
3322222222 2 2 1 1 1 1 1 1 11 1 1
|
|
1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------------------
|
|
I V V A V R N IO O D I T S Z A P C
|
|
0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
|
|
P F
|
|
-----------------------------------------------------
|
|
|
|
[i486 SL Enhanced SX,DX,DX2] [IntelSX2] [Cx5x86]
|
|
[UMC] [Cx6x86] [Cx6x86MX]
|
|
3322222222 2 2 1 1 1 1 1 1 11 1 1
|
|
1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------------------
|
|
I A V R N IO O D I T S Z A P C
|
|
0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
|
|
-----------------------------------------------------
|
|
|
|
[i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
|
|
[IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2] [NexGen Nx586]
|
|
3322222222 2 2 1 1 1 1 1 1 11 1 1
|
|
1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------------------
|
|
A V R N IO O D I T S Z A P C
|
|
0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
|
|
-----------------------------------------------------
|
|
|
|
[i386 SX,DX,CX,EX] [AMD Am386 ] [C&T 38600 ] etc
|
|
[IBM 486SLC2]
|
|
3322222222 2 2 1 1 1 1 1 1 11 1 1
|
|
1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------------------
|
|
V R N IO O D I T S Z A P C
|
|
0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
|
|
-----------------------------------------------------
|
|
|
|
[i376]
|
|
3322222222 2 2 1 1 1 1 1 1 11 1 1
|
|
1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------------------
|
|
R N IO O D I T S Z A P C
|
|
0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
|
|
-----------------------------------------------------
|
|
|
|
[i286 and all clones]
|
|
1 1 11 1 1
|
|
5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
|
|
------------------------------
|
|
N IO O D I T S Z A P C
|
|
0 T PL F F F F F F 0 F 0 F 1 F
|
|
------------------------------
|
|
|
|
[NEC/Sony V20/V30]
|
|
1 1 1 1 1 1
|
|
5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-------------------------------
|
|
M O D I T S Z A P C
|
|
D 1 1 1 F F F F F F 0 F 0 F 1 F
|
|
-------------------------------
|
|
|
|
[80x186 ,EA,EB,EC,XL] [8086/88 and all clones]
|
|
1 1 1 1 1 1
|
|
5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
|
-------------------------------
|
|
O D I T S Z A P C
|
|
1 1 1 1 F F F F F F 0 F 0 F 1 F
|
|
-------------------------------
|
|
|
|
Flags Summary:
|
|
ID - Identification Flag
|
|
VIP - Virtual Interrupt Pending
|
|
VIF - Virtual Interrupt Flag
|
|
AC - Align Check
|
|
VM - Virtual 8086 Mode
|
|
RF - Resume Flag
|
|
MD - Mode Flag
|
|
NT - Nested Task flag
|
|
IOPL - Input/Output Privelege Level
|
|
OF - Overflow Flag
|
|
DF - Direction Flag
|
|
IF - Interrupt Flag
|
|
TF - Trap Flag
|
|
SF - Sign Flag
|
|
ZF - Zero Flag
|
|
AF - Auxiliary Carry Flag
|
|
PF - Parity Flag
|
|
CF - Carry Flag
|
|
|
|
---------------------------------------------------
|
|
APPENDIX O OLD CONTROL REGISTERS FORMAT (CR0-CR3)
|
|
|
|
+---------+
|
|
| CR0 |
|
|
+---------+
|
|
|
|
[Pentium P5] [Pentium P54C] [Pentium Pro]
|
|
[Pentium II] [Pentium w/MMX]
|
|
[Cx6x86MX] [Am6k86] [Am5k86]
|
|
3 3 2 2222222221 1 1 1 111111
|
|
1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
|
|
---------------------------------------------
|
|
P C N A W N T E M P
|
|
G D W 0000000000 M 0 P 0000000000 E 1 S M P E
|
|
---------------------------------------------
|
|
|
|
[IntelDX4] [486DX/DX2, IntelDX4 ]
|
|
3 3 2 2222222221 1 1 1 111111
|
|
1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
|
|
---------------------------------------------
|
|
P C N A W T M P
|
|
G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
|
|
---------------------------------------------
|
|
|
|
[Cx486SLC]
|
|
3 3 2 2222222221 1 1 1 111111
|
|
1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
|
|
---------------------------------------------
|
|
P C A W T E M P
|
|
G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
|
|
---------------------------------------------
|
|
|
|
[Cx486DLC]
|
|
3 3 2 2222222221 1 1 1 111111
|
|
1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
|
|
---------------------------------------------
|
|
P C N A W E T E M P
|
|
G D W 0000000000 M 0 P 0000000000 0 T S M P E
|
|
---------------------------------------------
|
|
|
|
[Intel i486SX,SX2]
|
|
3 3 2 2222222221 1 1 1 111111
|
|
1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
|
|
---------------------------------------------
|
|
P C N A W T E M P
|
|
G D W 0000000000 M 0 P 0000000000 * 1 S M P E
|
|
---------------------------------------------
|
|
|
|
[IBM 486SLC2]
|
|
3 32222222222111 1 111111
|
|
1 09876543210987 6 54321098765 4 3 2 1 0
|
|
---------------------------------------------
|
|
P W T E M P
|
|
G 00000000000000 P 0000000000 1 S M P E
|
|
---------------------------------------------
|
|
|
|
[Intel i386SX]
|
|
3 322222222221111111111
|
|
1 09876543210987654321098765 4 3 2 1 0
|
|
---------------------------------------------
|
|
P T E M P
|
|
G 0000000000000000000000000 1 S M P E
|
|
---------------------------------------------
|
|
|
|
[Intel i386DX]
|
|
3 322222222221111111111
|
|
1 09876543210987654321098765 4 3 2 1 0
|
|
---------------------------------------------
|
|
P E T E M P
|
|
G 0000000000000000000000000 T S M P E
|
|
---------------------------------------------
|
|
|
|
[80286]
|
|
Note: None CR0, but MSW
|
|
111111
|
|
543210987654 3 2 1 0
|
|
---------------------
|
|
T E M P
|
|
000000000000 S M P E
|
|
---------------------
|
|
|
|
PE - Protection Enable
|
|
MP - Monitor Processor
|
|
EM - Emulation
|
|
TS - Task Switch
|
|
ET - Extention Type
|
|
NE - Numeric Exception
|
|
WP - Write protect
|
|
AM - Align Mode
|
|
NW - No Write Throught
|
|
CD - Cache Disable
|
|
PG - Paging
|
|
|
|
+--------+
|
|
| CR1 |
|
|
+--------+
|
|
|
|
CR1 register not exist on x86 architecture. Usually aliased CR0.
|
|
|
|
+--------+
|
|
| CR2 |
|
|
+--------+
|
|
|
|
[386+]
|
|
3 322222222221111111111
|
|
1 0987654321098765432109876543210
|
|
---------------------------------
|
|
LAST_PAGE_FAULT_LINEAR_ADDRESS
|
|
---------------------------------
|
|
|
|
+--------+
|
|
| CR3 |
|
|
+--------+
|
|
|
|
[Intel i386xx] [Cyrix Cx486SLC]
|
|
33222222222211111111 11
|
|
10987654321098765432 109876543210
|
|
---------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP %%%%%%%%%%%%
|
|
DDDDDDDDDDDDDDDDDDDD
|
|
BBBBBBBBBBBBBBBBBBBB
|
|
RRRRRRRRRRRRRRRRRRRR
|
|
---------------------------------
|
|
|
|
[Intel i486xx] [Cx6x86] [Cx6x86MX]
|
|
[Pentium] [Pentium Pro] [Pentium II]
|
|
[Pentium w/MMX]
|
|
33222222222211111111 11
|
|
10987654321098765432 1098765 4 3 210
|
|
------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP %%%%%%% P P %%%
|
|
DDDDDDDDDDDDDDDDDDDD C W
|
|
BBBBBBBBBBBBBBBBBBBB D T
|
|
RRRRRRRRRRRRRRRRRRRR
|
|
------------------------------------
|
|
|
|
see APPENDIX
|
|
|
|
PDBR - Page Directory Base Register
|
|
PCD - Page Cache Disable
|
|
PWT - Page Write Whrought
|
|
|
|
---------------------------------------------------
|
|
APPENDIX P CR4 register format
|
|
|
|
+-------+
|
|
| CR4 |
|
|
+-------+
|
|
|
|
[Katmai] [Deschutes]
|
|
3322222222221111111111
|
|
1098765432109876543210 9 8 7 6 5 4 3 2 1 0
|
|
------------------------------------------
|
|
F P P M P P D T P V
|
|
0000000000000000000000 S C G C A S E S V M
|
|
R E E E E E D I E
|
|
------------------------------------------
|
|
|
|
[Pentium Pro] [Pentium II]
|
|
3322222222221111111111
|
|
10987654321098765432109 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------
|
|
P P M P P D T P V
|
|
00000000000000000000000 C G C A S E S V M
|
|
E E E E E D I E
|
|
-----------------------------------------
|
|
|
|
[IDT C6] [IDT WinChip 2]
|
|
3322222222221111111111
|
|
10987654321098765432109 8 7 6 54 3 2 10
|
|
---------------------------------------
|
|
P M D T
|
|
00000000000000000000000 C 0 C 00 E S 00
|
|
E E D
|
|
---------------------------------------
|
|
|
|
[Cx6x86MX/MII]
|
|
3322222222221111111111
|
|
10987654321098765432109 8 7 654 3 2 10
|
|
---------------------------------------
|
|
P P D T
|
|
00000000000000000000000 C G 000 E S 00
|
|
E E D
|
|
---------------------------------------
|
|
|
|
[Pentium w/MMX]
|
|
3322222222221111111111
|
|
10987654321098765432109 8 7 6 5 4 3 2 1 0
|
|
-----------------------------------------
|
|
P M P D T P V
|
|
00000000000000000000000 C 0 C 0 S E S V M
|
|
E E E D I E
|
|
-----------------------------------------
|
|
|
|
[AMD Am5k86] [AMD Am6k86] [AMD K6-III]
|
|
3322222222221111111111
|
|
109876543210987654321098 7 6 5 4 3 2 1 0
|
|
----------------------------------------
|
|
P M P D T P V
|
|
000000000000000000000000 G C 0 S E S V M
|
|
E E E D I E
|
|
----------------------------------------
|
|
|
|
[Pentium P5] [Pentium P54C]
|
|
3322222222221111111111
|
|
1098765432109876543210987 6 5 4 3 2 1 0
|
|
---------------------------------------
|
|
M P D T P V
|
|
0000000000000000000000000 C 0 S E S V M
|
|
E E D I E
|
|
----------------------------------------
|
|
|
|
[IntelDX4] [486s SL Enhanced]
|
|
3322222222221111111111
|
|
109876543210987654321098765432 1 0
|
|
----------------------------------
|
|
P V
|
|
000000000000000000000000000000 V M
|
|
I E
|
|
----------------------------------
|
|
|
|
FSR - Fast F.P. Context save/restore Enabled
|
|
PCE - Perfomance Monitoring Counters Enabled
|
|
PGE - Page Global Extension
|
|
MCE - Machine Check Enable
|
|
PAE - Physical Address Extention
|
|
PSE - Page Size Extention
|
|
DE - Debbuging Expection
|
|
TSD - Time Stamp Disable
|
|
PVI - Protected mode Virtual Interrupt
|
|
VME - Virtual Mode Exception
|
|
|
|
------------------------------------------------------
|
|
APPENDIX Q TYPE OF INTEL'S SOCKETS
|
|
|
|
Socket # Pins Vcc CPU OverDrive Bus Clk
|
|
----------------------------------------------
|
|
1 169 5 i486SX IntelSX2 ODP ..50MHz
|
|
i486DX IntelDX2 ODP
|
|
----------------------------------------------
|
|
2 238 5 i486SX IntelSX2 ODP ..50MHz
|
|
i486DX IntelDX2 ODP
|
|
i486DX2 IntelDX4 ODP
|
|
Pentium ODP (P24T)
|
|
----------------------------------------------
|
|
3 237 3/5 i486SX IntelSX2 ODP ..50Mhz
|
|
i486DX IntelDX2 ODP
|
|
i486DX2 IntelDX4 ODP
|
|
i486SX2 Pentium ODP (P24T)
|
|
IntelDX4
|
|
----------------------------------------------
|
|
4 273 5 Pentium (P5) Pentium ODP (P5T) ..66MHz
|
|
----------------------------------------------
|
|
5 320 3.3 Pentium (P54C) Pentium ODP (P54T) ..66Mhz
|
|
----------------------------------------------
|
|
6 235 3.3 IntelDX4 Pentium ODP (P24T)
|
|
----------------------------------------------
|
|
7 321 2.9-3.3 Pentium (P54C) Pentium ODP (P54T) ..100MHz
|
|
Pentium (P55C)
|
|
----------------------------------------------
|
|
8 387 2.9-3.3 Pentium Pro(P6) Pentium Pro ODP (P6T) ..66MHz
|
|
----------------------------------------------
|
|
Socket370 370 2.9? Celeron ...100MHz
|
|
----------------------------------------------
|
|
|
|
Slot # Pins Vcc CPU Overdrive
|
|
----------------------------------------------
|
|
1 242 2.9-3.3 Pentium II 66MHz
|
|
Celeron
|
|
Pentium III
|
|
----------------------------------------------
|
|
2 330 2.0? Pentium II Xeon 100MHz
|
|
Pentium III Xeon
|
|
-----------------------------------------------
|
|
Note: The main Pentium II chip have 528 pins.
|
|
|
|
------------------------------------------------------
|
|
APPENDIX R UNDEFINED FLAGS
|
|
|
|
See CPUUTIL.ZIP for UFLAGS.COM !!
|
|
|
|
Hey, Guys! Do You really think about set of 80x86 CPU cores and
|
|
"That's mean UNDEFINED FLAGS?".
|
|
|
|
1) Do You Ask Yourself: "How many 80x86 base cores are?"
|
|
Let's discuss about definitions:
|
|
What's mean "base core"?
|
|
"Base core" mean: same core clock for instructions, same undefined
|
|
features e.t.c., and was produced many CPUs this type.
|
|
(so, i486DX2 and i486DX have same core),
|
|
(but i486DX2 and IntelDX4 have differ (cos MUL time +etc.).
|
|
(i486SX integer core is look like i486DX core without NPX and all things
|
|
joined with it).
|
|
|
|
So we have next list of Main Base Cores:
|
|
8086/8088 (186s skipped)
|
|
286
|
|
386 (have some differents on vendors)
|
|
Cx486SLC/Cx486DX (and all clones like TI486SXL)
|
|
i486
|
|
UMC U5S
|
|
Cyrix Cx5x86 (M1sc)
|
|
Pentium
|
|
NexGen Nx5x86
|
|
Cyrix Cx6x86 (M1)
|
|
AMD Am5k86
|
|
Pentium Pro
|
|
|
|
Of course one Main Base Core have many CPUs which have differents between
|
|
self, for example: TI486SXL have Cx486DLC Base Core.
|
|
|
|
This Base Cores is relative, of course.
|
|
(We may discuss Where to push C&T 38600DX etc., but it doesn't matter)
|
|
|
|
2) How many situation with Undefined Flags exists?
|
|
|
|
Not too many, as You think:
|
|
MUL
|
|
DIV
|
|
IMUL
|
|
IDIV
|
|
NEG (ZF)
|
|
AND/OR/XOR/etc (AF)
|
|
Shift/Rotates (OF)
|
|
and some more.
|
|
|
|
3) What's To Do?
|
|
|
|
Let's make next experiment:
|
|
|
|
AH = 0
|
|
AH -> FLG
|
|
PERFORM TEST SEQUENCE
|
|
FLG -> AH
|
|
GET RESULT # 1
|
|
AH = FF
|
|
AH -> FLG
|
|
PERFORM TEST SEQUENCE
|
|
FLG -> AH
|
|
GET RESULT # 2
|
|
ANALYSING RESULTS. (WHICH BIT PASSED, WHICH DRIVEN BY INSTRUCTION
|
|
|
|
Main Test Sequences are:
|
|
|
|
MUL: mov ax,0000h
|
|
mov bx,1234h
|
|
mul bx
|
|
|
|
DIV: mov ax,1234h
|
|
mov bl,22h
|
|
div bl
|
|
|
|
IMUL: mov ax,0092h
|
|
mov bl,22h
|
|
imul bl
|
|
|
|
IDIV: mov ax,0ffeeh
|
|
mov bl,22h
|
|
idiv bl
|
|
|
|
LOG: mov ax,0ff00h
|
|
mov bx,0f0fh
|
|
and ax,bx
|
|
|
|
4) Result:
|
|
|
|
Here placed summary of Undefined flag analysis on CPUs.
|
|
------------------------------------------------------------------------
|
|
CPU ------------- Sequence -------------
|
|
CORE MUL DIV IMUL IDIV LOG Note
|
|
------------------------------------------------------------------------
|
|
286 ALL ALL ALL ALL ALL as 386,i486
|
|
DRIVEN DRIVEN DRIVEN DRIVEN DRIVEN
|
|
------------------------------------------------------------------------
|
|
386 ALL ALL ALL ALL ALL as 286,i486
|
|
DRIVEN DRIVEN DRIVEN DRIVEN DRIVEN
|
|
------------------------------------------------------------------------
|
|
i486 ALL ALL ALL ALL ALL as 286,386
|
|
DRIVEN DRIVEN DRIVEN DRIVEN DRIVEN
|
|
------------------------------------------------------------------------
|
|
Cx486SLC Z,S,P,A ALL Z,S,P,A ALL AF
|
|
PASSED PASSED PASSED PASSSED PASSED
|
|
------------------------------------------------------------------------
|
|
UMC U5S Z,S,P,A ALL Z,S,P,A ALL ALL
|
|
PASSED PASSED PASSED PASSED DRIVEN
|
|
------------------------------------------------------------------------
|
|
Cx5x86 P,A C,O,P,A P,A C,O,P,A ALL
|
|
PASSED PASSED PASSED PASSED DRIVEN
|
|
------------------------------------------------------------------------
|
|
Pentium Z,S,P,A ALL Z,S,P,A ALL ALL as Pentium Pro
|
|
Pentium w/MMX PASSED DRIVEN PASSED DRIVEN DRIVEN
|
|
------------------------------------------------------------------------
|
|
Nx5x86 ???? ???? ???? ???? ???? Somebody who have
|
|
???? ???? ???? ???? ???? NexGen please contact Me.
|
|
-------------------------------------------------------------------------
|
|
Cx6x86 ALL C,O ALL C,O ALL
|
|
DRIVEN PASSED DRIVEN PASSED DRIVEN
|
|
------------------------------------------------------------------------
|
|
Am5k86 Z,S,P,A C,O Z,S,P,A C,O ALL
|
|
K6 PASSED PASSED PASSED PASSED DRIVEN
|
|
------------------------------------------------------------------------
|
|
Pentium Pro Z,S,P,A ALL Z,S,P,A ALL ALL as Pentium
|
|
Pentium II PASSED DRIVEN PASSED DRIVEN DRIVEN
|
|
Celeron
|
|
------------------------------------------------------------------------
|
|
|
|
Note: See utilites, included to this OPCODE.LST for getting UNDEFINED FLAGS
|
|
on Your processor.
|
|
|
|
All looks like Intel and AMD frozen theys Undefined Flags conception :)
|
|
|
|
---------------------------------------------------
|
|
APPENDIX S FLOATING POINT REGISTERS FORMATS
|
|
|
|
+-------+
|
|
| CW |
|
|
+-------+
|
|
|
|
[8087]
|
|
1111 1 11
|
|
6543 2 10 98 7 6 5 4 3 2 1 0
|
|
----------------------------
|
|
%%%% I RR PP I % P U O Z D I
|
|
C CC CC E M M M M M M
|
|
M
|
|
----------------------------
|
|
|
|
[80287]
|
|
1111 1 11
|
|
6543 2 10 98 76 5 4 3 2 1 0
|
|
---------------------------
|
|
%%%% I RR PP %% P U O Z D I
|
|
C CC CC M M M M M M
|
|
|
|
---------------------------
|
|
|
|
[287XL/XLT,387SX/DX and all build-in FPUs]
|
|
11111 11
|
|
65432 10 98 76 5 4 3 2 1 0
|
|
----------------------------
|
|
%%%%% RR PP %% P U O Z D I
|
|
CC CC M M M M M M
|
|
----------------------------
|
|
|
|
IC - Infinity Control
|
|
if =0 Infinity is Projective
|
|
if =1 Infinity is Affine
|
|
RC - Round Control
|
|
00 - Round to nearest or soon
|
|
01 - Round down (toward -infinity)
|
|
10 - Round up (toward +infinity)
|
|
11 - Chop (Truncate toward 0)
|
|
PC - Precension Control
|
|
00 - 24 bit
|
|
01 - Reserved
|
|
10 - 53 bit
|
|
11 - 64 bit
|
|
IEM - Interrupt Mask Enable
|
|
0 - Interrupts Enable
|
|
1 - Interrupts Disable
|
|
PM - Precension mask
|
|
UM - Underflow mask
|
|
OM - Overflow Mask
|
|
ZM - Zero Maks
|
|
DM - Denormalized operand mask
|
|
IM - Invalid Operation Mask
|
|
|
|
All other F.P registers: ST(i), TAGS, SW have same format on all FPUs.
|
|
Present some different in FPU environment, but now is no time for describe
|
|
it here.
|
|
|
|
-------------------------------------------------
|
|
APPENDIX T FORMAT OF PAGE TABLES ENTRYES
|
|
|
|
In X86 Architecture there are 3 modes of Paging:
|
|
Mode A - i386..Pentium Compatible
|
|
|
|
The selection of paging mode:
|
|
|
|
CR0.PG CR4.PAE CR4.PSE page_desc.PS Page Size Address Space Paging Mode
|
|
0 x x x ----- Paging Disable -----
|
|
1 0 0 x 4K 32bit A
|
|
1 0 1 0 4K 32bit A
|
|
1 0 1 1 4M 32bit A
|
|
1 1 x 0 4K 36bit B
|
|
1 1 x 1 2M 36bit C
|
|
|
|
+----------------------------------------------------------------------------+
|
|
| ---------------- Paging Mode A ----------- |
|
|
+----------------------------------------------------------------------------+
|
|
|
|
Format of Linear Address:
|
|
|
|
[32 bit address, 4K pages]
|
|
bit description
|
|
31..22 index in PDT (Page Directory Table)
|
|
21..12 index in PT (Page Table)
|
|
11..0 offset within Page
|
|
|
|
[32 bit address, 4M pages]
|
|
bit description
|
|
31..22 index in PDT (Page Directory Table)
|
|
21..0 offset within Page
|
|
|
|
Format of CR3 register:
|
|
-----------------
|
|
bit description
|
|
31..12 PDT base address (31..12) (PDBR)
|
|
11..5 Reserved
|
|
4 PCD
|
|
3 PWT
|
|
2..0 Reserved (0)
|
|
|
|
+----------+
|
|
| CR3.PDBR |
|
|
+----------+
|
|
| PDT (Pages
|
|
| Directory Table)
|
|
\---->+----------------+
|
|
| .... |
|
|
+----------------+ PT (Pages Table)
|
|
| PT desc. |------>+-------------------+
|
|
+----------------+ | ...... |
|
|
| .... | +-------------------+
|
|
+----------------+ | Page desc. | ---> +-----------+
|
|
| | +-------------------+ | Page in |
|
|
| | | ..... | | memory 4K |
|
|
| | +-------------------+ +-----------+
|
|
+----------------+
|
|
| 4M page desc. |-----> +----------+
|
|
+----------------+ | Page in |
|
|
| | | memory |
|
|
+----------------+ | 4Mb |
|
|
+----------+
|
|
|
|
+------------------------------+
|
|
| Format of Pages Descriptors |
|
|
+------------------------------+
|
|
|
|
[Pentium Pro,Pentium II,AMD K5,K6]
|
|
(only page directory entrys support 4MB pages)
|
|
33222222222211111111 11
|
|
10987654321098765432 109 8 7 6 5 4 3 2 1 0
|
|
------------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP AAA G P D A P P U R P
|
|
FFFFFFFFFFFFFFFFFFFF VVV S C W / /
|
|
AAAAAAAAAAAAAAAAAAAA LLL D T S W
|
|
------------------------------------------
|
|
|
|
[Pentium,Cyrix Cx6x86MX]
|
|
(only page directory entrys support 4MB pages)
|
|
33222222222211111111 11
|
|
10987654321098765432 109 8 7 6 5 4 3 2 1 0
|
|
------------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP AAA 0 P D A P P U R P
|
|
FFFFFFFFFFFFFFFFFFFF VVV S C W / /
|
|
AAAAAAAAAAAAAAAAAAAA LLL D T S W
|
|
------------------------------------------
|
|
|
|
[i486 and clones]
|
|
33222222222211111111 11
|
|
10987654321098765432 109 8 7 6 5 4 3 2 1 0
|
|
------------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A P P U R P
|
|
FFFFFFFFFFFFFFFFFFFF VVV C W / /
|
|
AAAAAAAAAAAAAAAAAAAA LLL D T S W
|
|
------------------------------------------
|
|
|
|
[Cx486SLC/DLC,TI486SLC/DLC/e,TI486SXL and clones]
|
|
33222222222211111111 11
|
|
10987654321098765432 109 8 7 6 5 4 3 2 1 0
|
|
------------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A P 0 U R P
|
|
FFFFFFFFFFFFFFFFFFFF VVV C / /
|
|
AAAAAAAAAAAAAAAAAAAA LLL D S W
|
|
------------------------------------------
|
|
|
|
[i386 and all clones]
|
|
33222222222211111111 11
|
|
10987654321098765432 109 8 7 6 5 43 2 1 0
|
|
------------------------------------------
|
|
PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A 00 U R P
|
|
FFFFFFFFFFFFFFFFFFFF VVV / /
|
|
AAAAAAAAAAAAAAAAAAAA LLL S W
|
|
------------------------------------------
|
|
|
|
PFA - Physical Frame address
|
|
AVL - Available for Operating System
|
|
G - Global Page (valid if PGE bit in CR4 set
|
|
PS - Page Size
|
|
=0 Directory entry (if in PDT)
|
|
4K page (if in page table)
|
|
=1 4M boundary (descriptor must be in PDT only))
|
|
D - Dirty (ignored in PDT)
|
|
A - Accessed
|
|
PCD - Page Cache disable
|
|
PWT - Page Write throught
|
|
U/S - User/Supervisor
|
|
R/W - Read/Write
|
|
P - Present
|
|
|
|
+----------------------------------------------------------------------------+
|
|
| ---------------- Paging Modes B & C ----------- |
|
|
+----------------------------------------------------------------------------+
|
|
|
|
Schemes, which used in paging modes B and C support address extension
|
|
up to 64bit, but now can be used only 36 bits of it.
|
|
|
|
Format of Linear Address:
|
|
|
|
[36 bit address, 4K pages] (mode B)
|
|
bit description
|
|
31..30 index in PDPT (Page Directory Pointers Table)
|
|
29..21 index in PDT (Page Directory Table)
|
|
20..12 index in PT (Page Table)
|
|
11..0 offset within Page
|
|
|
|
[36 bit address, 2M pages] (mode C)
|
|
bit description
|
|
31..30 index in PDPT (Page Directory Pointers Table)
|
|
29..21 index in PDT (Page Directory Table)
|
|
20..0 offset within Page
|
|
|
|
Format of CR3 register:
|
|
--------------------
|
|
bit description
|
|
31..5 PDPT base address (38..12) (PDBR)
|
|
4 PCD
|
|
3 PWT
|
|
2..0 Reserved (0)
|
|
|
|
PDPT (Page Directory
|
|
Pointer Table) +----------+
|
|
+----------+ <--------------------| CR3.PDBR |
|
|
| ... | +----------+
|
|
+----------+
|
|
| PDT desc |
|
|
+----------+
|
|
| PDT (Pages
|
|
| Directory Table)
|
|
\---->+----------------+
|
|
| .... |
|
|
+----------------+ PT (Pages Table)
|
|
| PT desc. |------>+-------------------+
|
|
+----------------+ | ...... |
|
|
| .... | +-------------------+
|
|
+----------------+ | Page desc. | ---> +-----------+
|
|
| | +-------------------+ | Page in |
|
|
| | | ..... | | memory 4K |
|
|
| | +-------------------+ +-----------+
|
|
+----------------+
|
|
| 2M page desc. |-----> +----------+
|
|
+----------------+ | Page in |
|
|
| | | memory |
|
|
+----------------+ | 2M |
|
|
+----------+
|
|
|
|
Format of Page Directory Pointer Table Entry (4 entry/PDPT):
|
|
----------------------------------
|
|
|
|
6 3 3 1 1
|
|
3 ... 6 5 ..... 2 1 ... 9 8..5 4 3 2..0
|
|
-------+---------+-------+----+-+-+----
|
|
%%%%%%%| PDT Base| | %% |P|P| %%%
|
|
%%%%%%%| Address | AVAIL | %% |C|W| %%%
|
|
%%%%%%%|(35..12) | | %% |D|T| %%%
|
|
-------+---------+-------+----+-+-+----
|
|
|
|
Format of Page Directory Table Entry (512 entry/PDT)
|
|
----------------------------
|
|
|
|
[4K pages DT]: (Mode B)
|
|
6 3 3 1 1
|
|
3 ... 6 5 ..... 2 1 ... 9 8..6 5 4 3 2 1 0
|
|
-------+---------+-------+----+-+-+-+-+-+-
|
|
%%%%%%%| PT Base | | %% | |P|P|U|R|
|
|
%%%%%%%| Address | AVAIL | %% |A|C|W|/|/|P
|
|
%%%%%%%|(35..12) | | %% | |D|T|S|W|
|
|
-------+---------+-------+----+-+-+-+-+-+-
|
|
|
|
[2M page]: (Mode C)
|
|
6 3 3 2 2 1 1
|
|
3 ... 6 5 ..... 1 0..2 1 ... 9 8 7 6 5 4 3 2 1 0
|
|
-------+---------+----+-------+-+-+-+-+-+-+-+-+-
|
|
%%%%%%%|Page Base| %% | | | | | |P|P|U|R|
|
|
%%%%%%%| Address | %% | AVAIL |G|1|D|A|C|W|/|/|P
|
|
%%%%%%%|(35..21) | %% | | | | | |D|T|S|W|
|
|
-------+---------+----+-------+-+-+-+-+-+-+-+-+-
|
|
|
|
Format of Page Table Entry (512 entry/PT):
|
|
-------------------------
|
|
|
|
[2K page]: (Mode B)
|
|
6 3 3 1 1
|
|
3 ... 6 5 ..... 2 1 ... 9 8 7 6 5 4 3 2 1 0
|
|
-------+---------+-------+-+-+-+-+-+-+-+-+-
|
|
%%%%%%%|Page Base| | | | | |P|P|U|R|
|
|
%%%%%%%| Address | AVAIL |G|0|D|A|C|W|/|/|P
|
|
%%%%%%%|(35..21) | | | | | |D|T|S|W|
|
|
-------+---------+-------+-+-+-+-+-+-+-+-+-
|
|
|
|
The means of bits same as in Paging Mode A.
|
|
|
|
-------------------------------------------------
|
|
APPENDIX U FORMAT OF DESCRIPTORS
|
|
|
|
+-------------------------------+
|
|
| Format of Generic Descriptor: |
|
|
+-------------------------------+
|
|
|
|
+00 WORD Segment Limit (Low) (15..0)
|
|
+02 WORD Segment Base (Low) (15..0)
|
|
+04 BYTE Segment Base (Mid) (23..16)
|
|
+05 BYTE Access Rights Byte (AR)
|
|
+06 BYTE Segment Limit (High) (19..16)/AR2
|
|
+07 BYTE Segment Base (High) (31..24)
|
|
|
|
This format have data and code segment descriptors.
|
|
|
|
+----------+
|
|
| AR | Access Rights Byte
|
|
+----------+
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | S | | | | | [General AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
P - (Present segment)
|
|
=0 segment not present
|
|
=1 segment present in memory
|
|
|
|
DPL - (Descriptor Privelege Level)
|
|
00 - Highest
|
|
11 - Lowest
|
|
|
|
S - (System)
|
|
=0 descriptor is system
|
|
=1 descriptor is segment
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 1 | E | | | | [segment AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
E - (Extended Type of Segment Descriptor)
|
|
=0 data segment
|
|
=1 code segment
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 1 | 1 | C | R | A | [Code segment AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
C - (Control Bit)
|
|
=0 Working rules of calling segment wia gates, using PL.
|
|
=1 Segment may be immediate called using CALL FAR from
|
|
same or more privelege segment
|
|
|
|
R - (Readable segment)
|
|
=0 Reading disable (only execution enable)
|
|
=1 Enable reading
|
|
|
|
A - (Accessable)
|
|
=0 None accesses into segment was
|
|
=1 Some accesses was
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 1 | 0 | ED | W | A | [Data segment AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
ED - (Expand Down)
|
|
=0 Expand Up
|
|
=1 Expand down
|
|
|
|
W - (Writable)
|
|
=0 Write disable
|
|
=1 Write enable
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | T Y P E | [System descriptor AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
TYPE - (Type of System descriptor)
|
|
0000 - Not Used
|
|
0001 - Available TSS (286 style)
|
|
0010 - LDT
|
|
0011 - Busy TSS (286 style)
|
|
0100 - Call Gate (286 style)
|
|
0101 - Task Gate (286 style)
|
|
0110 - Interrupt Gate (286 style)
|
|
0111 - Trap Gate (286 style)
|
|
1000 - Not Used
|
|
1001 - Available TSS (386 style)
|
|
1010 - Reserved
|
|
1011 - Busy TSS (386 style)
|
|
1100 - Call Gate (386 style)
|
|
1101 - Reserved
|
|
1110 - Interrupt Gate (386 style)
|
|
1111 - Trap Gate (386 style)
|
|
|
|
+--------+
|
|
| AR2 |
|
|
+--------+
|
|
|
|
+----+----+----+----+
|
|
| G | D | 0 | X |
|
|
+----+----+----+----+
|
|
|
|
G - (Granularity)
|
|
=0 Segment limit calculated in Bytes (up to 2^20 bytes)
|
|
=1 Segment limit calculated in Pages of 4K (up to 2^32 bytes)
|
|
|
|
D - (Dimensions)
|
|
=0 16 bit segment
|
|
=1 32 bit segment
|
|
Note: need for code segments, 'cos opcodes in 16-bit and 32-bit
|
|
segments are different.
|
|
|
|
X - Available for Operating System
|
|
|
|
+---------------------------------------------------------------------------+
|
|
| ------------------------ System Descriptors -----------------------------|
|
|
+---------------------------------------------------------------------------+
|
|
|
|
+-----+
|
|
| LDT |
|
|
+-----+
|
|
|
|
+00 WORD LDT Limit (Low) 15..0
|
|
+02 WORD LDT Base (15..0) (Low)
|
|
+04 BYTE LDT Base (23..16) (Mid)
|
|
+05 BYTE AR
|
|
+06 BYTE AR2
|
|
+07 BYTE LDT Base (31..24) (High)
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 0 | 0 | 1 | 0 | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
+---------------+
|
|
| 286 Call Gate |
|
|
+---------------+
|
|
|
|
+00 WORD Offset 15..0
|
|
+02 WORD Selector
|
|
+04 BYTE Word Count (5 bit)
|
|
+05 BYTE AR
|
|
+06 WORD 0
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 0 | 1 | 0 | 0 | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
+---------------+
|
|
| 386 Call Gate |
|
|
+---------------+
|
|
|
|
+00 WORD Offset 15..0 (Low)
|
|
+02 WORD Selector
|
|
+04 BYTE Dword Count (5 bit)
|
|
+05 BYTE AR
|
|
+06 WORD Offset 31..16
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 1 | 1 | 0 | 0 | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
+---------+
|
|
| 286 TSS |
|
|
+---------+
|
|
|
|
+00 WORD TSS Limit (15..0)
|
|
+02 WORD TSS Base (15..0) (Low)
|
|
+04 BYTE TSS Base (23..16) (Mid)
|
|
+05 BYTE AR
|
|
+06 WORD 0
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 0 | 0 | B | 1 | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
B - (Busy)
|
|
=0 TSS is available
|
|
=1 TSS is busy (active,current)
|
|
|
|
+---------+
|
|
| 386 TSS |
|
|
+---------+
|
|
|
|
+00 WORD TSS Limit (15..0) (Low)
|
|
+02 WORD TSS Base (15..0) (Low)
|
|
+04 BYTE TSS Base (23..16)(Mid)
|
|
+05 BYTE AR
|
|
+06 BYTE AR2/TSS Limit High (19..16)
|
|
+07 BYTE TSS Base (31..24) (High)
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 1 | 0 | B | 1 | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
+-------------------------+
|
|
| Interrupt/Trap Gate 286 |
|
|
+-------------------------+
|
|
|
|
+00 WORD Offset 15..0
|
|
+02 WORD Selector
|
|
+04 BYTE 0
|
|
+05 BYTE AR
|
|
+06 WORD 0
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 0 | 1 | 1 | T | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
T - (Trap Flag)
|
|
=0 Interrupt Gate
|
|
=1 Trap Gate
|
|
|
|
+-------------------------+
|
|
| Interrupt/Trap Gate 386 |
|
|
+-------------------------+
|
|
|
|
+00 WORD Offset 15..0 (Low)
|
|
+02 WORD Selector
|
|
+04 BYTE 0
|
|
+05 BYTE AR
|
|
+06 WORD Offset 31..16 (High)
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 1 | 1 | 1 | T | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
+-----------+
|
|
| Task Gate |
|
|
+-----------+
|
|
|
|
+00 WORD 0
|
|
+02 WORD TSS Selector
|
|
+04 BYTE 0
|
|
+05 BYTE AR
|
|
+06 WORD 0
|
|
|
|
+----+----+----+----+----+----+----+----+
|
|
| P | DPL | 0 | 0 | 1 | 0 | 1 | [AR]
|
|
+----+----+----+----+----+----+----+----+
|
|
|
|
+----------------------------------+
|
|
| Possible Tables for Descriptors |
|
|
+----------------------------------+
|
|
---------------+-----------------------+---------------------------
|
|
Lowest 5 bits | | Valid in
|
|
of AR | Type | GDT LDT IDT
|
|
---------------+-----------------------+---------------------------
|
|
00010 LDT + - -
|
|
0*0*1 286 TSS + - -
|
|
0*100 Call Gate + + -
|
|
0*101 Task Gate + + +
|
|
0*110 Interrupt Gate - - +
|
|
0*111 Trap Gate - - +
|
|
10*** Data segment + + -
|
|
11*** Code segment + + -
|
|
|
|
-------------------------------------------------
|
|
APPENDIX V FORMAT OF TSS
|
|
|
|
+--------------------+
|
|
| Format of 286 TSS |
|
|
+--------------------+
|
|
|
|
+00 WORD Previous TSS Selector (Back Link)
|
|
+02 WORD Offset of stack ring 0
|
|
+04 WORD Selector of stack ring 0
|
|
+06 WORD Offset of stack ring 1
|
|
+08 WORD Selector of stack ring 1
|
|
+0A WORD Offset of stack ring 2
|
|
+0C WORD Selector of stack ring 2
|
|
+0E WORD IP
|
|
+10 WORD FLG
|
|
+12 WORD AX
|
|
+14 WORD CX
|
|
+16 WORD DX
|
|
+18 WORD BX
|
|
+1A WORD SP
|
|
+1C WORD BP
|
|
+1E WORD SI
|
|
+20 WORD DI
|
|
+22 WORD ES
|
|
+24 WORD CS
|
|
+26 WORD SS
|
|
+28 WORD DS
|
|
+2A WORD LDT
|
|
Note: Len of 286 TSS is 2Ch bytes (44d)
|
|
|
|
+--------------------+
|
|
| Format of 386 TSS |
|
|
+--------------------+
|
|
|
|
High word/Low word
|
|
+00 DWORD 0/Previous TSS selector (Back Link)
|
|
+04 DWORD Stack pointer for ring 0
|
|
+08 DWORD 0/Stack Selector for ring 0
|
|
+0C DWORD Stack pointer for ring 1
|
|
+10 DWORD 0/Stack Selector for ring 1
|
|
+14 DWORD Stack pointer for ring 2
|
|
+18 DWORD 0/Stack Selector for ring 2
|
|
+1C DWORD CR3
|
|
+20 DWORD EIP
|
|
+24 DWORD EFLAGS
|
|
+28 DWORD EAX
|
|
+2C DWORD ECX
|
|
+30 DWORD EDX
|
|
+34 DWORD EBX
|
|
+38 DWORD ESP
|
|
+3C DWORD EBP
|
|
+40 DWORD ESI
|
|
+44 DWORD EDI
|
|
+48 DWORD 0/ES
|
|
+4C DWORD 0/CS
|
|
+50 DWORD 0/SS
|
|
+54 DWORD 0/DS
|
|
+58 DWORD 0/FS
|
|
+5C DWORD 0/GS
|
|
+60 DWORD 0/LDT
|
|
+64 WORD Trap Bits
|
|
+66 WORD Offset within TSS to I/O Permission Map
|
|
Minimal Length of TSS is 68 bytes.
|
|
|
|
IPM is IO Permition Map Base address
|
|
TSS_LAST is last byte of TSS.
|
|
|
|
+IPM-20h 20h BYTEs Software Interrupt Redirection Bitmap (VME)
|
|
1 bit/int
|
|
+IPM xxh BYTEs I/O Permition Bitmap
|
|
1 bit/port
|
|
+TSS_LAST BYTE I/O PAD Byte
|
|
PAD byte show which bits in last byte of
|
|
I/O permission bitmap valid.
|
|
(recommended to set up this byte to FF)
|
|
|
|
TSS
|
|
|
|
+----------------+
|
|
| |
|
|
| ..... |
|
|
| |
|
|
+----------------+
|
|
| offset to IPM |----------------+
|
|
+----------------+ |
|
|
| .... | |
|
|
| .... | |
|
|
+----------------+ |
|
|
|Int Redir Bitmap| |
|
|
+----------------+ <--------------+
|
|
| IPM |
|
|
+----------------+
|
|
| PAD BYTE |
|
|
+----------------+ <------ TSS Limit
|
|
|
|
---------------------------------------------------
|
|
APPENDIX W - Model Specific Registers List
|
|
|
|
[See MSR.LST]
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX X - SYSTEM MANAGMENT MODE (SMM)
|
|
|
|
+----------------+
|
|
| Base SM Modes: |
|
|
+----------------+
|
|
|
|
There are 4 base types of SMM in x86 CPUs (unfortunetly, I don't knew
|
|
SMM in NexGen):
|
|
|
|
Activation Bytes Hidden RAM Hidden RAM SMM
|
|
Vendor Hard Soft Saved Save Area SMM code start Type
|
|
AMD 386SXLV + SMI 228 6000:0000 FFFFFFF0 \
|
|
AMD 386DXLV + SMI 228 6000:0000 FFFFFFF0 | old AMD
|
|
AMD 486DXLV + SMI 364 6000:0000 FFFFFFF0 /
|
|
-----------------------------------------------------------
|
|
Cx486SLC/DLC + HLT - - - \
|
|
Cx486SLC/e + - 35 User Definded User Defined | Cyrix
|
|
Cx486S..Cx486MX + (SMINT) 48 User Defined User Defined /
|
|
-----------------------------------------------------------
|
|
IBM 386/486SLC + ICEBP 284 6000:0000 FFFFFFF0 ] IBM
|
|
-----------------------------------------------------------
|
|
i386SL/i486SL + Timer 512 3000:FE00 3000:8000 \
|
|
i486SL-Enhanced + - 512 3000:FE00 3000:8000 | Intel
|
|
Pentium + (APIC) 512 3000:FE00 3000:8000 |
|
|
Pentium Pro/II + (APIC) 512 3000:FE00 3000:8000 /
|
|
|
|
Intel Type SMM support all Intel CPUs (starting i386SL or i486
|
|
SL-Enhanced), and AMD K5, K6 and later, IDT C6.
|
|
|
|
+---------------+
|
|
| Intel SMM |
|
|
+---------------+
|
|
|
|
Format of SMRAM
|
|
|
|
Ofset from Actual
|
|
SMBASE Description Size Writeable
|
|
FFFC 4 CR0 32 -
|
|
FFF8 4 CR3 32 -
|
|
FFF4 4 EFLAGS 32 +
|
|
FFF0 4 EIP 32 +
|
|
FFEC 4 EDI 32 +
|
|
FFE8 4 ESI 32 +
|
|
FFE4 4 EBP 32 +
|
|
FFE0 4 ESP 32 +
|
|
FFDC 4 EBX 32 +
|
|
FFD8 4 EDX 32 +
|
|
FFD4 4 ECX 32 +
|
|
FFD0 4 EAX 32 +
|
|
FFCC 4 DR6 32 -
|
|
FFC8 4 DR7 32 -
|
|
FFC4 4 TR 16 -
|
|
FFC0 4 LDTR 16 -
|
|
FFBC 4 GS 16 -
|
|
FFB8 4 FS 16 -
|
|
FFB4 4 DS 16 -
|
|
FFB0 4 SS 16 -
|
|
FFAC 4 CS 16 -
|
|
FFA8 4 ES 16 -
|
|
FFA4 4 I/O trap Dword 32 -
|
|
FFA0 8 reserved -
|
|
FF9C 4 I/O trap EIP 32 -
|
|
FF94 8 reserved -
|
|
FF90 4 IDT Base 32 -
|
|
FF8C 4 IDT Limit 20 -
|
|
FF88 4 GDT Base 32 -
|
|
FF84 4 GDT Limit 20 -
|
|
FF80 4 TSS Attribute 12 -
|
|
FF7C 4 TSS Base 32 -
|
|
FF78 4 TSS Limit 20 -
|
|
FF74 4 LDT Attribute 12 -
|
|
FF70 4 LDT Base 32 -
|
|
FF6C 4 LDT Limit 20 -
|
|
FF68 4 GS Attribute 12 -
|
|
FF64 4 GS Base 32 -
|
|
FF60 4 GS Limit 20 -
|
|
FF5C 4 FS Attribute 12 -
|
|
FF58 4 FS Base 32 -
|
|
FF54 4 FS Limit 20 -
|
|
FF50 4 DS Attribute 12 -
|
|
FF4C 4 DS Base 32 -
|
|
FF48 4 DS Limit 20 -
|
|
FF44 4 SS Attribute 12 -
|
|
FF40 4 SS Base 32 -
|
|
FF3C 4 SS Limit 20 -
|
|
FF38 4 CS Attribute 12 -
|
|
FF34 4 CS Base 32 -
|
|
FF30 4 CS Limit 20 -
|
|
FF2C 4 ES Attribute 12 -
|
|
FF28 4 ES Base 32 -
|
|
FF24 4 ES Limit 20 -
|
|
FF18 12 reserved -
|
|
FF14 4 CR2 32 -
|
|
FF10 4 CR4 32 -
|
|
FF0C 4 I/O Restart ESI 32 -
|
|
FF08 4 I/O Restart ECX 32 -
|
|
FF04 4 I/O Restart EDI 32 -
|
|
FF02 2 Auto HALT Restart Slot 16* +
|
|
FF00 2 I/O Trap Restart Slot 16* +
|
|
FEFC 4 SMM Revision ID 32 -
|
|
FEF8 4 SMBASE Slot 32 +
|
|
7E00 248 reserved -
|
|
|
|
Note: if Actual size < fiels size, then all upper that actual size bits are
|
|
reserved.
|
|
|
|
+---------------+
|
|
| Cyrix SMM |
|
|
+---------------+
|
|
Full description of Cyrix SMM will be placed in future OPCODE.LST.
|
|
Now see SMINT and some other Cyrix SMM commands for more details.
|
|
See APPENDIX A1-A6 for more details.
|
|
|
|
Format of SMRAM:
|
|
|
|
+00 <-------- Here pointed SMHR register (M2)
|
|
-04 4 DR7
|
|
-08 4 EFLAGS
|
|
-0C 4 CR0
|
|
-10 4 Current EIP
|
|
-14 4 Next EIP
|
|
-18 4 CS selector
|
|
-20 8 CS descriptor
|
|
-24 4 Bitfields
|
|
Bit Description
|
|
22..21 CPL
|
|
15 N (Nested SMI Indicator)
|
|
13 IS (Internal SMI Indicator)
|
|
4 H (SMI on HLT instruction)
|
|
3 S (Software SMI entrance)
|
|
2 P (REP INSx/OUTSx indicator)
|
|
1 I (IN/INSx/OUT/OUTSx indicator)
|
|
0 C (Code segment writable flag)
|
|
-26 2 I/O Write Data Size
|
|
-28 2 I/O Write Address
|
|
-2C 4 I/O Write Data
|
|
-30 4 ESI or EDI
|
|
|
|
+-------------------+
|
|
| Old-style AMD SMM |
|
|
+-------------------+
|
|
|
|
Format of SMRAM:
|
|
|
|
Offset Bytes Description
|
|
|
|
60000 4 CR0
|
|
60004 4 EFLAGS
|
|
60008 4 EIP
|
|
6000C 4 EDI
|
|
60010 4 ESI
|
|
60014 4 EBP
|
|
60018 4 ESP
|
|
6001C 4 EBX
|
|
60020 4 EDX
|
|
60024 4 ECX
|
|
60028 4 EAX
|
|
6002C 4 DR6
|
|
60030 4 DR7
|
|
60034 4 TR selector
|
|
60038 4 LDT selector
|
|
6003C 4 GS selector
|
|
60040 4 FS selector
|
|
60044 4 DS selector
|
|
60048 4 SS selector
|
|
6004C 4 CS selector
|
|
60050 4 ES selector
|
|
60054 4 TSS descriptor (ATTR)
|
|
60058 4 TSS descriptor (BASE)
|
|
6005C 4 TSS descriptor (LIMIT)
|
|
60060 4 reserved
|
|
60064 4 IDTR (BASE)
|
|
60068 4 IDTR (LIMIT)
|
|
6006C 4 REP OUTS Overrun Flag
|
|
60070 4 GDTR (BASE)
|
|
60074 4 GDTR (LIMIT)
|
|
60078 4 LDT (ATTR)
|
|
6007C 4 LDT (BASE)
|
|
60080 4 LDT (LIMIT)
|
|
60084 4 GS (ATTR)
|
|
60088 4 GS (BASE)
|
|
6008C 4 GS (LIMIT)
|
|
60090 4 FS (ATTR)
|
|
60094 4 FS (BASE)
|
|
60098 4 FS (LIMIT)
|
|
6009C 4 DS (ATTR)
|
|
600A0 4 DS (BASE)
|
|
600A4 4 DS (LIMIT)
|
|
600A8 4 SS (ATTR)
|
|
600AC 4 SS (BASE)
|
|
600B0 4 SS (LIMIT)
|
|
600B4 4 CS (ATTR)
|
|
600B8 4 CS (BASE)
|
|
600BC 4 CS (LIMIT)
|
|
600C0 4 ES (ATTR)
|
|
600C4 4 ES (BASE)
|
|
600C8 4 ES (LIMIT)
|
|
....
|
|
60100 4 Temporary Register TST
|
|
60104 4 Temporary Register IDX
|
|
60108 4 Temporary Register TMPH
|
|
6010C 4 Temporary Register TMPG
|
|
60110 4 Temporary Register TMPF
|
|
60114 4 Temporary Register TMPE
|
|
60118 4 Temporary Register TMPD
|
|
6011C 4 Temporary Register TMPC
|
|
60120 4 Temporary Register TMPB
|
|
60124 4 LEIP (Last EIP)
|
|
------------- AMD Am486DXLV additional fields
|
|
60128 4 PEIP
|
|
6012C 36 Unused
|
|
60150 88 F.P. Internal Registers
|
|
|
|
Note: See LOADALL for More Information
|
|
|
|
+-------------------+
|
|
| IBM SMM |
|
|
+-------------------+
|
|
|
|
Format of SMRAM:
|
|
|
|
Offset Bytes Description
|
|
60000 4 CR0
|
|
60004 4 EFLAGS
|
|
60008 4 EIP
|
|
6000C 4 EDI
|
|
60010 4 ESI
|
|
60014 4 EBP
|
|
60018 4 ESP
|
|
6001C 4 EBX
|
|
60020 4 EDX
|
|
60024 4 ECX
|
|
60028 4 EAX
|
|
6002C 4 DR6
|
|
60030 4 DR7
|
|
60034 4 TR selector
|
|
60038 4 LDT selector
|
|
6003C 4 GS selector
|
|
60040 4 FS selector
|
|
60044 4 DS selector
|
|
60048 4 SS selector
|
|
6004C 4 CS selector
|
|
60050 4 ES selector
|
|
60054 4 TSS descriptor (ATTR)
|
|
60058 4 TSS descriptor (BASE)
|
|
6005C 4 TSS descriptor (LIMIT)
|
|
60060 4 reserved
|
|
60064 4 IDTR (BASE)
|
|
60068 4 IDTR (LIMIT)
|
|
6006C 4 REP OUTS Overrun Flag
|
|
60070 4 GDTR (BASE)
|
|
60074 4 GDTR (LIMIT)
|
|
60078 4 LDT (ATTR)
|
|
6007C 4 LDT (BASE)
|
|
60080 4 LDT (LIMIT)
|
|
60084 4 GS (ATTR)
|
|
60088 4 GS (BASE)
|
|
6008C 4 GS (LIMIT)
|
|
60090 4 FS (ATTR)
|
|
60094 4 FS (BASE)
|
|
60098 4 FS (LIMIT)
|
|
6009C 4 DS (ATTR)
|
|
600A0 4 DS (BASE)
|
|
600A4 4 DS (LIMIT)
|
|
600A8 4 SS (ATTR)
|
|
600AC 4 SS (BASE)
|
|
600B0 4 SS (LIMIT)
|
|
600B4 4 CS (ATTR)
|
|
600B8 4 CS (BASE)
|
|
600BC 4 CS (LIMIT)
|
|
600C0 4 ES (ATTR)
|
|
600C4 4 ES (BASE)
|
|
600C8 4 ES (LIMIT)
|
|
...
|
|
60100 4 Temporary Register TST
|
|
60104 4 Temporary Register IDX
|
|
60108 4 Temporary Register TMPH
|
|
6010C 4 Temporary Register TMPG
|
|
60110 4 Temporary Register TMPF
|
|
60114 4 Temporary Register TMPE
|
|
60118 4 Temporary Register TMPD
|
|
6011C 4 Temporary Register TMPC
|
|
60120 4 Temporary Register TMPB
|
|
60124 4 Temporary Register TMPA
|
|
60128 4 CR2
|
|
6012C 4 CR3
|
|
60130 4 MSR 1001h (0..31)
|
|
60134 4 MSR 1001h (63..32)
|
|
60138 4 MSR 1000h (0..31)
|
|
6013C 4 DR0
|
|
60140 4 DR1
|
|
60144 4 DR2
|
|
60148 4 DR3
|
|
6014C 4 PEIP (Previous Hidden Memory Space Instruction Pointer)
|
|
|
|
Note: See ICEBP/ICERET for More Information
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y0 - Vendor Instruction Time for Intel 8088 CPU
|
|
|
|
AAA 4
|
|
AAD 60
|
|
AAM 83
|
|
AAS 4
|
|
ADC AL,imm8 4
|
|
ADC AX,imm16 4
|
|
ADC r/m8,imm8 4/17+EA
|
|
ADC r/m16,imm8 4/25+EA
|
|
ADC r/m16,imm16 4/25+EA
|
|
ADC r/m8,r8 3/16+EA
|
|
ADC r/m16,r16 3/24+EA
|
|
ADC r8,r/m8 3/9+EA
|
|
ADC r16,r/m16 3/13+EA
|
|
ADD AL,imm8 4
|
|
ADD AX,imm16 4
|
|
ADD r/m8,imm8 4/17+EA
|
|
ADD r/m16,imm8 4/25+EA
|
|
ADD r/m16,imm16 4/25+EA
|
|
ADD r/m8,r8 3/16+EA
|
|
ADD r/m16,r16 3/24+EA
|
|
ADD r8,r/m8 3/9+EA
|
|
ADD r16,r/m16 3/13+EA
|
|
AND AL,imm8 4
|
|
AND AX,imm16 4
|
|
AND r/m8,imm8 4/16+EA
|
|
AND r/m16,imm16 4/25+EA
|
|
AND r/m8,r8 3/16+EA
|
|
AND r/m16,r16 3/24+EA
|
|
AND r8,r/m8 3/9+EA
|
|
AND r16,r/m16 3/13+EA
|
|
CALL rel16 19(23)
|
|
CALL r/m16 16(24)/21(29)+EA
|
|
CALL ptr16:16 28(36)
|
|
CALL m16:16 37(57)+EA
|
|
CBW 2
|
|
CLC 2
|
|
CLD 2
|
|
CLI 2
|
|
CMC 2
|
|
CMP AL,imm8 4
|
|
CMP AX,imm16 4
|
|
CMP r/m8,imm8 4/10+EA
|
|
CMP r/m16,imm8 4/-
|
|
CMP r/m16,imm16 4/14+EA
|
|
CMP r/m8,r8 3/9+EA
|
|
CMP r/m16,r16 3/13+EA
|
|
CMP r8,r/m8 3/9+EA
|
|
CMP r16,r/m16 3/13+EA
|
|
CMPSB 22
|
|
CMPSW 30
|
|
CWD 5
|
|
DAA 4
|
|
DAS 4
|
|
DEC r/m8 3/15+EA
|
|
DEC r/m16 2/23+EA
|
|
DEC r16 2
|
|
DIV r/m8 80-90/(86-96)+EA
|
|
DIV r/m16 144-162/(154-172)+EA
|
|
HLT 2
|
|
IDIV r/m8 101-112/(107-118)+EA
|
|
IDIV r/m16 165-184/(175-194)+EA
|
|
IMUL r/m8 80-98/(86-104)+EA
|
|
IMUL r/m16 128-154/(138-164)+EA
|
|
IN AL,imm8 10
|
|
IN AX,imm8 14
|
|
IN AL,DX 8
|
|
IN AX,DX 12
|
|
INC r/m8 3/15+EA
|
|
INC r/m16 2/23+EA
|
|
INC r16 2
|
|
INT 3 53(72)
|
|
INT imm8 51(71)
|
|
INTO 53(73) or 4
|
|
IRET 32(44)
|
|
Jcc rel8 4 or 16
|
|
JCXZ rel8 6 or 18
|
|
JMP rel8 15
|
|
JMP rel16 15
|
|
JMP r/m16 11/18+EA
|
|
JMP ptr16:16 15
|
|
JMP m16:16 24+EA
|
|
LAHF 4
|
|
LDS r16,m16:16 24+EA
|
|
LES r16,m16:16 24+EA
|
|
LEA r16,m 2+EA
|
|
LODSB 12
|
|
LODSW 16
|
|
LOOP rel8 5 or 17
|
|
LOOPE rel8 6 or 18
|
|
LOOPNE rel8 5 or 19
|
|
MOV r/m8,r8 2/9+EA
|
|
MOV r/m16,r16 2/13+EA
|
|
MOV r8,r/m8 2/8+EA
|
|
MOV r16,r/m16 2/12+EA
|
|
MOV r/m16,sreg 2/9(13)+EA
|
|
MOV sreg,r/m16 2/8(12)+EA
|
|
MOV AL,moffs8 10
|
|
MOV AX,moffs16 14
|
|
MOV moffs8,AL 10
|
|
MOV moffs16,AX 14
|
|
MOV r8,imm8 4
|
|
MOV r16,imm16 4
|
|
MOV r/m8,imm8 4/10+EA
|
|
MOV r/m16,imm16 4/14+EA
|
|
MOVSB 18
|
|
MOVSW 26
|
|
MUL r/m8 70-77/(76-83)+EA
|
|
MUL r/m16 118-133/(128-143)+EA
|
|
NEG r/m8 3/16+EA
|
|
NEG r/m16 3/24+EA
|
|
NOP 3
|
|
NOT r/m8 3/16+EA
|
|
NOT r/m16 3/24+EA
|
|
OR AL,imm8 4
|
|
OR AX,imm16 4
|
|
OR r/m8,imm8 4/17+EA
|
|
OR r/m16,imm16 4/25+EA
|
|
OR r/m8,r8 3/16+EA
|
|
OR r/m16,r16 3/24+EA
|
|
OR r8,r/m8 3/9+EA
|
|
OR r16,r/m16 3/13+EA
|
|
OUT imm8,AL 10
|
|
OUT imm8,AX 14
|
|
OUT DX,AL 8
|
|
OUT DX,AX 12
|
|
POP m16 25+EA
|
|
POP r16 12
|
|
POP sreg 12
|
|
POPF 12
|
|
PUSH r/m16 15/24+EA
|
|
PUSH r16 15
|
|
PUSH sreg 14
|
|
PUSHF 14
|
|
RCL r/m8,1 2/15+EA
|
|
RCL r/m16,1 2/23+EA
|
|
RCL r/m8,CL 8+4*bit/20+EA+4*bit
|
|
RCL r/m16,CL 8+4*bit/28+EA+4*bit
|
|
RCR r/m8,1 2/15+EA
|
|
RCR r/m16,1 2/23+EA
|
|
RCR r/m8,CL 8+4*bit/20+EA+4*bit
|
|
RCR r/m16,CL 8+4*bit/28+EA+4*bit
|
|
ROL r/m8,1 2/15+EA
|
|
ROL r/m16,1 2/23+EA
|
|
ROL r/m8,CL 8+4*bit/20+EA+4*bit
|
|
ROL r/m16,CL 8+4*bit/28+EA+4*bit
|
|
ROR r/m8,1 2/15+EA
|
|
ROR r/m16,1 2/23+EA
|
|
ROR r/m8,CL 8+4*bit/20+EA+4*bit
|
|
ROR r/m16,CL 8+4*bit/28+EA+4*bit
|
|
REP MOVSB 9+17*reps
|
|
REP MOVSW 9+25*reps
|
|
REP LODSB n/a
|
|
REP LODSW n/a
|
|
REP STOSB 9+10*reps
|
|
REP STOSW 9+14*reps
|
|
REPE CMPSB 9+17*reps
|
|
REPE CMPSW 9+25*reps
|
|
REPE SCASB 9+15*reps
|
|
REPE SCASW 9+19*reps
|
|
REPNE CMPSB 9+17*reps
|
|
REPNE CMPSW 9+25*reps
|
|
REPNE SCASB 9+15*reps
|
|
REPNE SCASW 9+19*reps
|
|
RET (near) 20
|
|
RET imm16 (near) 24
|
|
RET (far) 32
|
|
RET imm16 (far) 31
|
|
SAHF 4
|
|
SAL r/m8,1 2/15+EA
|
|
SAL r/m16,1 2/23+EA
|
|
SAL r/m8,CL 8+4*bit/20+EA+4*bit
|
|
SAL r/m16,CL 8+4*bit/28+EA+4*bit
|
|
SAR r/m8,1 2/15+EA
|
|
SAR r/m16,1 2/23+EA
|
|
SAR r/m8,CL 8+4*bit/20+EA+4*bit
|
|
SAR r/m16,CL 8+4*bit/28+EA+4*bit
|
|
SHL r/m8,1 2/15+EA
|
|
SHL r/m16,1 2/23+EA
|
|
SHL r/m8,CL 8+4*bit/20+EA+4*bit
|
|
SHL r/m16,CL 8+4*bit/28+EA+4*bit
|
|
SHR r/m8,1 2/15+EA
|
|
SHR r/m16,1 2/23+EA
|
|
SHR r/m8,CL 8+4*bit/20+EA+4*bit
|
|
SHR r/m16,CL 8+4*bit/28+EA+4*bit
|
|
SBB AL,imm8 4
|
|
SBB AX,imm16 4
|
|
SBB r/m8,imm8 4/17+EA
|
|
SBB r/m16,imm8 4/25+EA
|
|
SBB r/m16,imm16 4/25+EA
|
|
SBB r/m8,r8 3/16+EA
|
|
SBB r/m16,r16 3/24+EA
|
|
SBB r8,r/m8 3/9+EA
|
|
SBB r16,r/m16 3/16+EA
|
|
SCASB 15
|
|
SCASW 19
|
|
SETALC n/a
|
|
STC 2
|
|
STD 2
|
|
STI 2
|
|
STOSB 11
|
|
STOSW 15
|
|
SUB AL,imm8 4
|
|
SUB AX,imm16 4
|
|
SUB r/m8,imm8 4/17+EA
|
|
SUB r/m16,imm8 4/25+EA
|
|
SUB r/m16,imm16 4/25+EA
|
|
SUB r/m8,r8 3/16+EA
|
|
SUB r/m16,r16 3/24+EA
|
|
SUB r8,r/m8 3/9+EA
|
|
SUB r16,r/m16 3/13+EA
|
|
TEST AL,imm8 4
|
|
TEST AX,imm16 4
|
|
TEST r/m8,imm8 5/11+EA
|
|
TEST r/m16,imm16 5/11+EA
|
|
TEST r/m8,r8 3/9+EA
|
|
TEST r/m16,r16 3/13+EA
|
|
WAIT 3+5*number_of_wait_cycles
|
|
XCHG AX,r16 3
|
|
XCHG r/m8,r8 4/17+EA
|
|
XCHG r/m16,r16 4/25+EA
|
|
XLAT 11
|
|
XOR AL,imm8 4
|
|
XOR AX,imm16 4
|
|
XOR r/m8,imm8 4/17+EA
|
|
XOR r/m16,imm16 4/25+EA
|
|
XOR r/m8,r8 3/16+EA
|
|
XOR r/m16,r16 3/24+EA
|
|
XOR r8,r/m8 3/9+EA
|
|
XOR r16,r/m16 3/13+EA
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y1 - Vendor Instruction Time for Intel i80186 CPU
|
|
|
|
AAA 8
|
|
AAD 15
|
|
AAD imm8 15 ?? (n/a)
|
|
AAM 19
|
|
AAM imm8 19 ?? (n/a)
|
|
AAS 7
|
|
ADC AL,imm8 3
|
|
ADC AX,imm16 4
|
|
ADC r/m8,imm8 4/16
|
|
ADC r/m16,imm16 4/16
|
|
ADC r/m8,r8 3/15
|
|
ADC r/m16,r16 3/15
|
|
ADC r8,r/m8 3/10
|
|
ADC r16,r/m16 3/10
|
|
ADD AL,imm8 3
|
|
ADD AX,imm16 4
|
|
ADD r/m8,imm8 4/16
|
|
ADD r/m32,imm8 4/16
|
|
ADD r/m8,r8 3/15
|
|
ADD r/m16,r16 3/15
|
|
ADD r8,r/m8 3/10
|
|
ADD r16,r/m16 3/10
|
|
AND AL,imm8 3
|
|
AND AX,imm16 4
|
|
AND r/m8,imm8 4/16
|
|
AND r/m16,imm16 4/16
|
|
AND r/m8,r8 3/15
|
|
AND r/m16,r16 3/15
|
|
AND r8,r/m8 3/10
|
|
AND r16,r/m16 3/10
|
|
BOUND r16,m16&16 33-35
|
|
CALL rel16 15
|
|
CALL r/m16 13/19
|
|
CALL ptr16:16 23
|
|
CALL m16:16 38
|
|
CBW 2
|
|
CLC 2
|
|
CLD 2
|
|
CLI 2
|
|
CMC 2
|
|
CMP AL,imm8 3
|
|
CMP AX,imm16 4
|
|
CMP r/m8,imm8 3/10
|
|
CMP r/m16,imm16 3/10
|
|
CMP r/m8,r8 3/10
|
|
CMP r/m16,r16 3/10
|
|
CMP r8,r/m8 3/10
|
|
CMP r16,r/m16 3/10
|
|
CMPSB 22
|
|
CMPSW 22
|
|
CWD 4
|
|
DAA 4
|
|
DAS 4
|
|
DEC r/m8 3/15
|
|
DEC r/m16 3/15
|
|
DEC r16 3
|
|
DIV r/m8 29/35
|
|
DIV r/m16 38/44
|
|
ESC imm4,r/m n/a
|
|
ENTER imm16,0 15
|
|
ENTER imm16,1 25
|
|
ENTER imm16,imm8 22+16*(level-1)
|
|
HLT 2
|
|
IDIV r/m8 44-52/50-58
|
|
IDIV r/m16 53-61/59-67
|
|
IMUL r/m8 25-28/31-34
|
|
IMUL r/m16 34-47/40-43
|
|
IMUL r16,imm8 22-25/29-32 (~)
|
|
IMUL r16,imm16 22-25/29-32 (~)
|
|
IMUL r16,r/m16,imm8 22-25/29-32 (~)
|
|
IMUL r16,r/m16,imm16 22-25/29-32 (~)
|
|
IN AL,imm8 10
|
|
IN AX,imm8 10
|
|
IN AL,DX 8
|
|
IN AX,DX 8
|
|
INC r/m8 3/15
|
|
INC r/m16 3/15
|
|
INC r16 3
|
|
INSB 14
|
|
INSW 14
|
|
INT 3 45
|
|
INT imm8 47
|
|
INTO 4 or 48
|
|
IRET 28
|
|
Jcc rel8 4 or 13
|
|
JCXZ rel8 5 or 15
|
|
JMP rel8 14
|
|
JMP rel16 14
|
|
JMP r/m16 11/17
|
|
JMP ptr16:16 14
|
|
JMP m16:16 26
|
|
LAHF 2
|
|
LDS r16,m16:16 18
|
|
LES r16,m16:16 18
|
|
LEA r16,m 6
|
|
LEAVE 8
|
|
LODSB 12
|
|
LODSW 12
|
|
LOOP rel8 6 or 16
|
|
LOOPE rel8 6 or 16
|
|
LOOPNE rel8 6 or 16
|
|
MOV r/m8,r8 2/12
|
|
MOV r/m16,r16 2/12
|
|
MOV r8,r/m8 2/9
|
|
MOV r16,r/m16 2/9
|
|
MOV r/m16,sreg 2/11
|
|
MOV sreg,r/m16 2/9
|
|
MOV AL,moffs8 8
|
|
MOV AX,moffs16 8
|
|
MOV moffs8,AL 9
|
|
MOV moffs16,AX 9
|
|
MOV r8,imm8 3
|
|
MOV r16,imm16 4
|
|
MOV r/m8,imm8 3/12
|
|
MOV r/m16,imm16 4/13
|
|
MOVSB 14
|
|
MOVSW 14
|
|
MUL r/m8 26-28/32-34
|
|
MUL r/m16 35-37/41-43
|
|
NEG r/m8 3/10
|
|
NEG r/m16 3/10
|
|
NOP 3
|
|
NOT r/m8 3/10
|
|
NOT r/m16 3/10
|
|
OR AL,imm8 3
|
|
OR AX,imm16 4
|
|
OR r/m8,imm8 4/16
|
|
OR r/m16,imm16 4/16
|
|
OR r/m8,r8 3/15
|
|
OR r/m16,r16 3/15
|
|
OR r8,r/m8 3/10
|
|
OR r16,r/m16 3/10
|
|
OUT imm8,AL 9
|
|
OUT imm8,AX 9
|
|
OUT DX,AL 7
|
|
OUT DX,AX 7
|
|
OUTSB 14
|
|
OUTSW 14
|
|
POP m16 20
|
|
POP r16 10
|
|
POP sreg 8
|
|
POPA 51
|
|
POPF 8
|
|
PUSH r/m16 10/16
|
|
PUSH r16 10
|
|
PUSH imm8 10
|
|
PUSH imm16 10
|
|
PUSH sreg 9
|
|
PUSHA 36
|
|
PUSHF 9
|
|
RCL r/m8,1 2/15
|
|
RCL r/m16,1 2/15
|
|
RCL r/m8,CL 5+n/17+n
|
|
RCL r/m16,CL 5+n/17+n
|
|
RCL r/m8,imm8 5+n/17+n
|
|
RCL r/m16,imm8 5+n/17+n
|
|
RCR r/m8,1 2/15
|
|
RCR r/m16,1 2/15
|
|
RCR r/m8,CL 5+n/17+n
|
|
RCR r/m16,CL 5+n/17+n
|
|
RCR r/m8,imm8 5+n/17+n
|
|
RCR r/m16,imm8 5+n/17+n
|
|
ROL r/m8,1 2/15
|
|
ROL r/m16,1 2/15
|
|
ROL r/m8,CL 5+n/17+n
|
|
ROL r/m16,CL 5+n/17+n
|
|
ROL r/m8,imm8 5+n/17+n
|
|
ROL r/m16,imm8 5+n/17+n
|
|
ROR r/m8,1 2/15
|
|
ROR r/m16,1 2/15
|
|
ROR r/m8,CL 5+n/17+n
|
|
ROR r/m16,CL 5+n/17+n
|
|
ROR r/m8,imm8 5+n/17+n
|
|
ROR r/m16,imm8 5+n/17+n
|
|
RET (near) 16
|
|
RET (far) 22
|
|
RET imm16 (near) 18
|
|
RET imm16 (far) 25
|
|
SAHF 3
|
|
SAL r/m8,1 2/15
|
|
SAL r/m16,1 2/15
|
|
SAL r/m8,CL 5+n/17+n
|
|
SAL r/m16,CL 5+n/17+n
|
|
SAL r/m8,imm8 5+n/17+n
|
|
SAL r/m16,imm8 5+n/17+n
|
|
SAR r/m8,1 2/15
|
|
SAR r/m16,1 2/15
|
|
SAR r/m8,CL 5+n/17+n
|
|
SAR r/m16,CL 5+n/17+n
|
|
SAR r/m8,imm8 5+n/17+n
|
|
SAR r/m16,imm8 5+n/17+n
|
|
SHL r/m8,1 2/15
|
|
SHL r/m16,1 2/15
|
|
SHL r/m8,CL 5+n/17+n
|
|
SHL r/m16,CL 5+n/17+n
|
|
SHL r/m8,imm8 5+n/17+n
|
|
SHL r/m16,imm8 5+n/17+n
|
|
SHR r/m8,1 2/15
|
|
SHR r/m16,1 2/15
|
|
SHR r/m8,CL 5+n/17+n
|
|
SHR r/m16,CL 5+n/17+n
|
|
SHR r/m8,imm8 5+n/17+n
|
|
SHR r/m16,imm8 5+n/17+n
|
|
SBB AL,imm8 3
|
|
SBB AX,imm16 4
|
|
SBB r/m8,imm8 4/16
|
|
SBB r/m16,imm16 4/16
|
|
SBB r/m8,r8 3/15
|
|
SBB r/m16,r16 3/15
|
|
SBB r8,r/m8 3/10
|
|
SBB r16,r/m16 3/10
|
|
SCASB 15
|
|
SCASW 15
|
|
SETALC n/a
|
|
STC 2
|
|
STD 2
|
|
STI 2
|
|
STOSB 10
|
|
STOSW 10
|
|
SUB AL,imm8 3
|
|
SUB AX,imm16 4
|
|
SUB r/m8,imm8 4/16
|
|
SUB r/m16,imm16 4/16
|
|
SUB r/m8,r8 3/15
|
|
SUB r/m16,r16 3/15
|
|
SUB r8,r/m8 3/10
|
|
SUB r16,r/m16 3/10
|
|
TEST AL,imm8 3
|
|
TEST AX,imm16 4
|
|
TEST r/m8,imm8 4/10
|
|
TEST r/m16,imm16 4/10
|
|
TEST r/m8,r8 3/10
|
|
TEST r/m16,r16 3/10
|
|
WAIT 6 (min)
|
|
XCHG AX,r16 3
|
|
XCHG r/m8,r8 4/17
|
|
XCHG r/m16,r16 4/17
|
|
XLAT 11
|
|
XOR AL,imm8 3
|
|
XOR AX,imm16 4
|
|
XOR r/m8,imm8 4/16
|
|
XOR r/m16,imm16 4/16
|
|
XOR r/m8,r8 3/15
|
|
XOR r/m16,r16 3/15
|
|
XOR r8,r/m8 3/10
|
|
XOR r16,r/m16 3/10
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y2 - Vendor Instruction Time for NEC V20 CPU
|
|
|
|
AAA 3
|
|
AAD 7
|
|
AAD imm8 7
|
|
AAM 15
|
|
AAM imm8 15
|
|
AAS 3
|
|
ADC AL,imm8 4
|
|
ADC AX,imm16 4
|
|
ADC r/m8,imm8 4/18
|
|
ADC r/m16,imm16 4/26
|
|
ADC r/m8,r8 2/15
|
|
ADC r/m16,r16 2/24
|
|
ADC r8,r/m8 2/11
|
|
ADC r16,r/m16 2/15
|
|
ADD AL,imm8 4
|
|
ADD AX,imm16 4
|
|
ADD r/m8,imm8 4/18
|
|
ADD r/m16,imm16 4/26
|
|
ADD r/m8,r8 2/15
|
|
ADD r/m16,r16 2/24
|
|
ADD r8,r/m8 2/11
|
|
ADD r16,r/m16 2/15
|
|
AND AL,imm8 4
|
|
AND AX,imm16 4
|
|
AND r/m8,imm8 4/18
|
|
AND r/m16,imm16 4/26
|
|
AND r/m8,r8 2/15
|
|
AND r/m16,r16 2/24
|
|
AND r8,r/m8 2/11
|
|
AND r16,r/m16 2/15
|
|
BOUND r16,m16&16 18-23/73-76
|
|
CALL rel16 16-20
|
|
CALL r/m16 14-18/23-31
|
|
CALL ptr16:16 21-29
|
|
CALL m16:16 31-47
|
|
CBW 2
|
|
CLC 2
|
|
CLD 2
|
|
CLI 2
|
|
CMC 2
|
|
CMP AL,imm8 4
|
|
CMP AX,imm16 4
|
|
CMP r/m8,imm8 4/13
|
|
CMP r/m16,imm16 4/17
|
|
CMP r/m8,r8 2/11
|
|
CMP r/m16,r16 2/15
|
|
CMP r8,r/m8 2/11
|
|
CMP r16,r/m16 2/15
|
|
CMPSB 7+14n !!
|
|
CMPSW 7+14n !!
|
|
CWD 4-5
|
|
DAA 3
|
|
DAS 7
|
|
DEC r/m8 2/16
|
|
DEC r/m16 2/24
|
|
DEC r16 2
|
|
DIV r/m8 19/25
|
|
DIV r/m16 25/35
|
|
ESC imm4,r/m n/a
|
|
ENTER imm16,0 16
|
|
ENTER imm16,1 23 ??
|
|
ENTER imm16,imm8 23+16*(level-1)
|
|
HLT 2
|
|
IDIV r/m8 29/35
|
|
IDIV r/m16 43/53
|
|
IMUL r/m8 33/39
|
|
IMUL r/m16 47/57
|
|
IMUL r16,r/m16,imm8 28-34/34-44
|
|
IMUL r16,r/m16,imm16 36-42/46-52
|
|
IN AL,imm8 9
|
|
IN AX,imm8 13
|
|
IN AL,DX 8
|
|
IN AX,DX 12
|
|
INC r/m8 2/16
|
|
INC r/m16 2/24
|
|
INC r16 2
|
|
INSB 9+8n !!
|
|
INSW 9+8n !!
|
|
INT 3 38-50
|
|
INT imm8 38-50
|
|
INTO 3 or 52
|
|
IRET 27-39
|
|
Jcc rel8 4 or 14
|
|
JCXZ rel8 5 or 13
|
|
JMP rel8 12
|
|
JMP rel16 13
|
|
JMP r/m16 11/20-24
|
|
JMP ptr16:16 15
|
|
JMP m16:16 27-35
|
|
LAHF 2
|
|
LDS r16,m16:16 18-26
|
|
LES r16,m16:16 18-26
|
|
LEA r16,m 4
|
|
LEAVE 6/10
|
|
LODSB 7+9n !!
|
|
LODSW 7+9n !!
|
|
LOOP rel8 5 or 13
|
|
LOOPE rel8 5 or 14
|
|
LOOPNE rel8 5 or 14
|
|
MOV r/m8,r8 2/9
|
|
MOV r/m16,r16 2/13
|
|
MOV r8,r/m8 2/11
|
|
MOV r16,r/m16 2/15
|
|
MOV r/m16,sreg 2/10-14
|
|
MOV sreg,r/m16 2/11-15
|
|
MOV AL,moffs8 10
|
|
MOV AX,moffs16 14
|
|
MOV moffs8,AL 9
|
|
MOV moffs16,AX 13
|
|
MOV r8,imm8 4
|
|
MOV r16,imm16 4
|
|
MOV r/m8,imm8 4/11
|
|
MOV r/m16,imm16 4/15
|
|
MOVSB 11+8n !!
|
|
MOVSW 11+8n !!
|
|
MUL r/m8 21/27
|
|
MUL r/m16 30/36
|
|
NEG r/m8 2/16
|
|
NEG r/m16 2/24
|
|
NOP 3
|
|
NOT r/m8 2/16
|
|
NOT r/m16 2/24
|
|
OR AL,imm8 4
|
|
OR AX,imm16 4
|
|
OR r/m8,imm8 4/18
|
|
OR r/m16,imm16 4/26
|
|
OR r/m8,r8 2/15
|
|
OR r/m16,r16 2/24
|
|
OR r8,r/m8 2/11
|
|
OR r16,r/m16 2/15
|
|
OUT imm8,AL 8
|
|
OUT imm8,AX 12
|
|
OUT DX,AL 8
|
|
OUT DX,AX 12
|
|
OUTSB 9+8n !!
|
|
OUTSW 9+8n !!
|
|
POP m16 17-25
|
|
POP r16 8-12
|
|
POP sreg 8-12
|
|
POPA 43-75
|
|
POPF 8-12
|
|
PUSH r/m16 8-12/18-26
|
|
PUSH r16 8-12
|
|
PUSH imm8 7
|
|
PUSH imm16 12
|
|
PUSH sreg 8-12
|
|
PUSHA 35-67
|
|
PUSHF 8-12
|
|
RCL r/m8,1 2/2-4
|
|
RCL r/m16,1 2/2-4
|
|
RCL r/m8,CL 7+n/19+n
|
|
RCL r/m16,CL 7+n/27+n
|
|
RCL r/m8,imm8 7+n/19+n
|
|
RCL r/m16,imm8 7+n/27+n
|
|
RCR r/m8,1 2/16
|
|
RCR r/m16,1 2/24
|
|
RCR r/m8,CL 7+n/19+n
|
|
RCR r/m16,CL 7+n/27+n
|
|
RCR r/m8,imm8 7+n/19+n
|
|
RCR r/m16,imm8 7+n/27+n
|
|
ROL r/m8,1 2/16
|
|
ROL r/m16,1 2/24
|
|
ROL r/m8,CL 7+n/19+n
|
|
ROL r/m16,CL 7+n/27+n
|
|
ROL r/m8,imm8 7+n/19+n
|
|
ROL r/m16,imm8 7+n/27+n
|
|
ROR r/m8,1 2/16
|
|
ROR r/m16,1 2/24
|
|
ROR r/m8,CL 7+n/19+n
|
|
ROR r/m16,CL 7+n/27+n
|
|
ROR r/m8,imm8 2/16
|
|
ROR r/m16,imm8 2/24
|
|
RET (near) 15-19
|
|
RET (far) 21-29
|
|
RET imm16 (near) 20-24
|
|
RET imm16 (far) 24-32
|
|
SAHF 3
|
|
SAL r/m8,1 2/16
|
|
SAL r/m16,1 2/24
|
|
SAL r/m8,CL 7+n/19+n
|
|
SAL r/m16,CL 7+n/27+n
|
|
SAL r/m8,imm8 7+n/19+n
|
|
SAL r/m16,imm8 7+n/27+n
|
|
SAR r/m8,1 2/16
|
|
SAR r/m16,1 2/24
|
|
SAR r/m8,CL 7+n/19+n
|
|
SAR r/m16,CL 7+n/27+n
|
|
SAR r/m8,imm8 7+n/19+n
|
|
SAR r/m16,imm8 7+n/27+n
|
|
SHL r/m8,1 2/16
|
|
SHL r/m16,1 2/24
|
|
SHL r/m8,CL 7+n/19+n
|
|
SHL r/m16,CL 7+n/27+n
|
|
SHL r/m8,imm8 7+n/19+n
|
|
SHL r/m16,imm8 7+n/27+n
|
|
SHR r/m8,1 2/16
|
|
SHR r/m16,1 2/24
|
|
SHR r/m8,CL 7+n/19+n
|
|
SHR r/m16,CL 7+n/27+n
|
|
SHR r/m8,imm8 7+n/19+n
|
|
SHR r/m16,imm8 7+n/27+n
|
|
SBB AL,imm8 4
|
|
SBB AX,imm16 4
|
|
SBB r/m8,imm8 4/18
|
|
SBB r/m16,imm16 4/26
|
|
SBB r/m8,r8 2/15
|
|
SBB r/m16,r16 2/24
|
|
SBB r8,r/m8 2/11
|
|
SBB r16,r/m16 2/15
|
|
SCASB 7+10n !!
|
|
SCASW 7+10n!!
|
|
SETALC n/a
|
|
STC 2
|
|
STD 2
|
|
STI 2
|
|
STOSB 7+4n !!
|
|
STOSW 7+4n !!
|
|
SUB AL,imm8 4
|
|
SUB AX,imm16 4
|
|
SUB r/m8,imm8 4/18
|
|
SUB r/m16,imm16 4/26
|
|
SUB r/m8,r8 2/15
|
|
SUB r/m16,r16 2/24
|
|
SUB r8,r/m8 2/11
|
|
SUB r16,r/m16 2/15
|
|
TEST AL,imm8 4
|
|
TEST AX,imm16 4
|
|
TEST r/m8,imm8 4/11
|
|
TEST r/m16,imm16 4/15
|
|
TEST r/m8,r8 2/10
|
|
TEST r/m16,r16 2/14
|
|
WAIT 2+5n (n = number of times POLL pin sampled)
|
|
XCHG AX,r16 2
|
|
XCHG r/m8,r8 3/16
|
|
XCHG r/m16,r16 3/24
|
|
XLAT 9
|
|
XOR AL,imm8 4
|
|
XOR AX,imm16 4
|
|
XOR r/m8,imm8 4/18
|
|
XOR r/m16,imm16 4/26
|
|
XOR r/m8,r8 2/15
|
|
XOR r/m16,r16 2/24
|
|
XOR r8,r/m8 2/11
|
|
XOR r16,r/m16 2/15
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y3 - Vendor Instruction Time for Intel i286 CPU
|
|
|
|
AAA 3
|
|
AAD 14
|
|
AAD imm8 n/a
|
|
AAM 16
|
|
AAM imm8 n/a
|
|
AAS 3
|
|
ADC AL,imm8 3
|
|
ADC AX,imm16 3
|
|
ADC r/m8,imm8 3/7+EA
|
|
ADC r/m16,imm16 3/7+EA
|
|
ADC r/m8,r8 2/7+EA
|
|
ADC r/m16,r16 2/7+EA
|
|
ADC r8,r/m8 2/7+EA
|
|
ADC r16,r/m16 2/7+EA
|
|
ADD AL,imm8 3
|
|
ADD AX,imm16 3
|
|
ADD r/m8,imm8 3/7+EA
|
|
ADD r/m16,imm16 3/7+EA
|
|
ADD r/m8,r8 2/7+EA
|
|
ADD r/m16,r16 2/7+EA
|
|
ADD r8,r/m8 2/7+EA
|
|
ADD r16,r/m16 2/7+EA
|
|
AND AL,imm8 3
|
|
AND AX,imm16 3
|
|
AND r/m8,imm8 3/7+EA
|
|
AND r/m16,imm16 3/7+EA
|
|
AND r/m8,r8 2/7+EA
|
|
AND r/m16,r16 2/7+EA
|
|
AND r8,r/m8 2/7+EA
|
|
AND r16,r/m16 2/7+EA
|
|
ARPL r/m16,r16 10/11+EA
|
|
BOUND r16,m16&16 13+EA
|
|
CALL rel16 7+m
|
|
CALL r/m16 7+m/11+m
|
|
CALL ptr16:16 13+m
|
|
CALL ptr16:16 (PM, direct segment) 26+m
|
|
CALL ptr16:16 (PM, via call gate, same p 41+m
|
|
CALL ptr16:16 (PM, via call gate, more p 82+m
|
|
CALL ptr16:16 (PM, via call gate, more p 86+4*param+m
|
|
CALL m16:16 16+m
|
|
CALL m16:16 (PM, direct segment) 29+m
|
|
CALL m16:16 (PM, via gate, same priveleg44+m
|
|
CALL m16:16 (PM, via gate, more priveleg83+m
|
|
CALL m16:16 (PM, via gate, more priveleg90+4*param+m
|
|
CBW 2
|
|
CLC 2
|
|
CLD 2
|
|
CLI 3
|
|
CLTS 2
|
|
CMC 2
|
|
CMP AL,imm8 3
|
|
CMP AX,imm16 3
|
|
CMP r/m8,imm8 3/6+
|
|
CMP r/m16,imm8 3/6+EA
|
|
CMP r/m16,imm16 3/6+EA
|
|
CMP r/m8,r8 2/7+EA
|
|
CMP r/m16,r16 2/7+EA
|
|
CMP r8,r/m8 2/6+EA
|
|
CMP r16,r/m16 2/6+EA
|
|
CMPSB f
|
|
CMPSW f
|
|
CWD 2
|
|
DAA 3
|
|
DAS 3
|
|
DEC r/m8 2/7+EA
|
|
DEC r/m16 2/7+EA
|
|
DEC r16 2
|
|
DIV r/m8 14/17+EA
|
|
DIV r/m16 22/25+EA
|
|
ESC imm4,r/m (9-20)+EA
|
|
ENTER imm16,0 11
|
|
ENTER imm16,1 15
|
|
ENTER imm16,imm8 16+4*(n-1)
|
|
HLT 2
|
|
IDIV r/m8 17/20+EA
|
|
IDIV r/m16 25/28+EA
|
|
IMUL r/m8 13/16+EA
|
|
IMUL r/m16 21/24+EA
|
|
IMUL r16,r/m16 21/24+EA
|
|
IMUL r16,imm8 ??
|
|
IMUL r16,imm16 ??
|
|
IMUL r16,r/m16,imm8 21/24+EA
|
|
IMUL r16,r/m16,imm16 21/24+EA
|
|
IN AL,imm8 5
|
|
IN AL,imm8 (PM, CPL <= IOPL) 5
|
|
IN AX,imm8 5
|
|
IN AX,imm8 (PM, CPL <= IOPL) 5
|
|
IN AL,DX 5
|
|
IN AL,DX (PM, CPL <= IOPL) 5
|
|
IN AX,DX 5
|
|
IN AX,DX (PM, CPL <= IOPL) 5
|
|
INC r/m8 2/7+EA
|
|
INC r/m16 2/7+EA
|
|
INC r16 2
|
|
INSB f
|
|
INSW f
|
|
INT 3 23+m
|
|
INT 3 (PM, same privilege) 40+m
|
|
INT 3 (PM, more privelege) 78+m
|
|
INT imm8 23+m
|
|
INT imm8 (PM, same privilege) 40+m
|
|
INT imm8 (PM, more privelege) 78+m
|
|
INTO 24+m or 3
|
|
INTO (PM, same privilege) 40+m or 3
|
|
INTO (PM, more privelege) 78+m or 3
|
|
IRET 17
|
|
IRET (PM, to same privilege) 31+m
|
|
IRET (PM, to lesser privilege) 55+m
|
|
Jcc rel8 7+m or 3
|
|
JCXZ rel8 8+m or 4
|
|
JMP rel8 7+m
|
|
JMP rel16 7+m
|
|
JMP r/m16 7/11+m
|
|
JMP ptr16:16 11/23+m
|
|
JMP ptr16:16 (PM, direct segment) f
|
|
JMP ptr16:16 (PM, via call gate, same pr38+m
|
|
JMP m16:16 15/26+m
|
|
JMP m16:16 (PM, direct segment) f
|
|
JMP m16:16 (PM, via call gate, same priv41+m
|
|
LAHF 2
|
|
LAR r16,r/m16 14/16+
|
|
LDS r16,m16:16 7+/21+
|
|
LDS r16,m16:16 (PM) f
|
|
LDS r32,m16:32 (PM) f
|
|
LES r16,m16:16 7+/21+
|
|
LES r16,m16:16 (PM) f
|
|
LES r32,m16:32 (PM) f
|
|
LEA r16,m 3+
|
|
LEAVE 5
|
|
LGDT m16&32 11+
|
|
LIDT m16&32 12+
|
|
LLDT r/m16 17/19+
|
|
LMSW r/m16 3/6+
|
|
LOADALL f
|
|
LODSB 5+4*n
|
|
LODSW 5+4*n
|
|
LOOP rel8 8/4
|
|
LOOPE rel8 8/4
|
|
LOOPNE rel8 8/4
|
|
LSL r16,r/m16 14/16
|
|
LTR r/m16 17/19+
|
|
MOV r/m8,r8 2/3+
|
|
MOV r/m16,r16 2/3+
|
|
MOV r8,r/m8 2/5+
|
|
MOV r16,r/m16 2/5+
|
|
MOV r/m16,sreg 2/3+
|
|
MOV sreg,r/m16 2/5+
|
|
MOV sreg,r/m16 (PM) 17/19+
|
|
MOV AL,moffs8 5
|
|
MOV AX,moffs16 5
|
|
MOV moffs8,AL 3
|
|
MOV moffs16,AX 3
|
|
MOV r8,imm8 2
|
|
MOV r16,imm16 2
|
|
MOV r/m8,imm8 2/3+
|
|
MOV r/m16,imm16 2/3+
|
|
MOVSB 5+4*n
|
|
MOVSW 5
|
|
MUL r/m8 13/16+
|
|
MUL r/m16 21/24+
|
|
NEG r/m8 2/7
|
|
NEG r/m16 2/7
|
|
NOP 3
|
|
NOT r/m8 2/7
|
|
NOT r/m16 2/7
|
|
OR AL,imm8 3
|
|
OR AX,imm16 3
|
|
OR r/m8,imm8 3/7
|
|
OR r/m16,imm16 3/7
|
|
OR r/m8,r8 2/7
|
|
OR r/m16,r16 2/7
|
|
OR r8,r/m8 2/7
|
|
OR r16,r/m16 2/7
|
|
OUT imm8,AL 3
|
|
OUT imm8,AL (PM, CPL <= IOPL) 3
|
|
OUT imm8,AX 3
|
|
OUT imm8,AX (PM, CPL <= IOPL) 3
|
|
OUT DX,AL 3
|
|
OUT DX,AL (PM, CPL <= IOPL) 3
|
|
OUT DX,AX 3
|
|
OUT DX,AX (PM, CPL <= IOPL) 3
|
|
OUTSB 5+4*n
|
|
OUTSW 5
|
|
POP m16 5+
|
|
POP r16 5
|
|
POP sreg 5/20
|
|
POP sreg (PM) 20
|
|
POPA 19
|
|
POPF 5
|
|
POPF (PM) 5
|
|
PUSH r/m16 5+
|
|
PUSH r16 3
|
|
PUSH imm8 3
|
|
PUSH imm16 3
|
|
PUSH sreg 3
|
|
PUSHA 17+
|
|
PUSHF 3
|
|
PUSHF (PM) 3
|
|
RCL r/m8,1 2/7
|
|
RCL r/m16,1 2/7
|
|
RCL r/m8,CL 5/8+n
|
|
RCL r/m16,CL 5/8+n
|
|
RCL r/m8,imm8 5/8+n
|
|
RCL r/m16,imm8 5/8+n
|
|
RCR r/m8,1 2/7
|
|
RCR r/m16,1 2/7
|
|
RCR r/m8,CL 5/8+n
|
|
RCR r/m16,CL 5/8+n
|
|
RCR r/m8,imm8 5/8+n
|
|
RCR r/m16,imm8 5/8+n
|
|
ROL r/m8,1 2/7
|
|
ROL r/m16,1 2/7
|
|
ROL r/m8,CL 5/8+n
|
|
ROL r/m16,CL 5/8+n
|
|
ROL r/m8,imm8 5/8+n
|
|
ROL r/m16,imm8 5/8+n
|
|
ROR r/m8,1 2/7
|
|
ROR r/m16,1 2/7
|
|
ROR r/m8,CL 5/8+n
|
|
ROR r/m16,CL 5/8+n
|
|
ROR r/m8,imm8 5/8+n
|
|
ROR r/m16,imm8 5/8+n
|
|
RDTSC f
|
|
RET (near) 11+m
|
|
RET (far) 15+m
|
|
RET (PM, far, same PL) 25+m
|
|
RET (PM, far, different PL) 55+m
|
|
RET imm16 (near) 11+m
|
|
RET imm16 (far) 15+m
|
|
RET imm16 (PM, far, same PL) 25+m
|
|
RET imm16 (PM, far, different PL) 55+m
|
|
SAHF 2
|
|
SAL r/m8,1 2/7
|
|
SAL r/m16,1 2/7
|
|
SAL r/m8,CL 5/8+n
|
|
SAL r/m16,CL 5/8+n
|
|
SAL r/m8,imm8 5/8+n
|
|
SAL r/m16,imm8 5/8+n
|
|
SAR r/m8,1 2/7
|
|
SAR r/m16,1 2/7
|
|
SAR r/m8,CL 5/8+n
|
|
SAR r/m16,CL 5/8+n
|
|
SAR r/m8,imm8 5/8+n
|
|
SAR r/m16,imm8 5/8+n
|
|
SHL r/m8,1 2/7
|
|
SHL r/m16,1 2/7
|
|
SHL r/m8,CL 5/8+n
|
|
SHL r/m16,CL 5/8+n
|
|
SHL r/m8,imm8 5/8+n
|
|
SHL r/m16,imm8 5/8+n
|
|
SHR r/m8,1 2/7
|
|
SHR r/m16,1 2/7
|
|
SHR r/m8,CL 5/8+n
|
|
SHR r/m16,CL 5/8+n
|
|
SHR r/m8,imm8 5/8+n
|
|
SHR r/m16,imm8 5/8+n
|
|
SBB AL,imm8 3
|
|
SBB AX,imm16 3
|
|
SBB r/m8,imm8 3/7
|
|
SBB r/m16,imm16 3/7
|
|
SBB r/m8,r8 2/7
|
|
SBB r/m16,r16 2/7
|
|
SBB r8,r/m8 2/7
|
|
SBB r16,r/m16 2/7
|
|
SCASB 5+8*n
|
|
SCASW 5+8*n
|
|
SETALC f
|
|
SGDT m16&32 11+
|
|
SIDT m16&32 12+
|
|
SLDT r/m16 2/3+
|
|
SMINT f
|
|
SMSW r/m16 2/3+
|
|
STC 2
|
|
STD 2
|
|
STI 2
|
|
STOSB 4+3*n
|
|
STOSW 4+3*n
|
|
STR r/m16 2/3
|
|
SUB AL,imm8 3
|
|
SUB AX,imm16 3
|
|
SUB r/m8,imm8 2/7
|
|
SUB r/m16,imm16 2/7
|
|
SUB r/m8,r8 2/6
|
|
SUB r/m16,r16 2/6
|
|
SUB r8,r/m8 2/6
|
|
SUB r16,r/m16 2/6
|
|
TEST AL,imm8 3
|
|
TEST AX,imm16 3
|
|
TEST r/m8,imm8 3/6
|
|
TEST r/m16,imm16 3/6
|
|
TEST r/m8,r8 2/6
|
|
TEST r/m16,r16 2/6
|
|
VERR r/m16 14/16+
|
|
VERW r/m16 14/16+
|
|
WAIT 3
|
|
XCHG AX,r16 3
|
|
XCHG r/m8,r8 3/5+
|
|
XCHG r/m16,r16 3/5+
|
|
XLAT 5
|
|
XOR AL,imm8 3
|
|
XOR AX,imm16 3
|
|
XOR r/m8,imm8 2/7+
|
|
XOR r/m16,imm16 2/7+
|
|
XOR r/m8,r8 2/6
|
|
XOR r/m16,r16 2/6
|
|
XOR r8,r/m8 2/6
|
|
XOR r16,r/m16 2/6
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y4 - Vendor Instruction Time for Intel i386DX CPU
|
|
|
|
AAA 4
|
|
AAD 19
|
|
AAD imm8 n/a
|
|
AAM 17
|
|
AAM imm8 m/a
|
|
AAS 4
|
|
ADC AL,imm8 2
|
|
ADC AX,imm16 2
|
|
ADC EAX,imm32 2
|
|
ADC r/m8,imm8 2/7
|
|
ADC r/m16,imm8 2/7
|
|
ADC r/m32,imm8 2/7
|
|
ADC r/m16,imm16 2/7
|
|
ADC r/m32,imm32 2/7
|
|
ADC r/m8,r8 2/7
|
|
ADC r/m16,r16 2/7
|
|
ADC r/m32,r32 2/7
|
|
ADC r8,r/m8 2/6
|
|
ADC r16,r/m16 2/6
|
|
ADC r32,r/m32 2/6
|
|
ADD AL,imm8 2
|
|
ADD AX,imm16 2
|
|
ADD EAX,imm32 2
|
|
ADD r/m8,imm8 2/7
|
|
ADD r/m16,imm8 2/7
|
|
ADD r/m32,imm8 2/7
|
|
ADD r/m16,imm16 2/7
|
|
ADD r/m32,imm32 2/7
|
|
ADD r/m8,r8 2/7
|
|
ADD r/m16,r16 2/7
|
|
ADD r/m32,r32 2/7
|
|
ADD r8,r/m8 2/6
|
|
ADD r16,r/m16 2/6
|
|
ADD r32,r/m32 2/6
|
|
AND AL,imm8 2
|
|
AND AX,imm16 2
|
|
AND EAX,imm32 2
|
|
AND r/m8,imm8 2/7
|
|
AND r/m16,imm8 2/7
|
|
AND r/m32,imm8 2/7
|
|
AND r/m16,imm16 2/7
|
|
AND r/m32,imm32 2/7
|
|
AND r/m8,r8 2/7
|
|
AND r/m16,r16 2/7
|
|
AND r/m32,r32 2/7
|
|
AND r8,r/m8 2/6
|
|
AND r16,r/m16 2/6
|
|
AND r32,r/m32 2/6
|
|
ARPL r/m16,r16 20/21
|
|
BOUND r16,m16&16 10 or 44
|
|
BOUND r32,m32&32 10 or 44
|
|
BSF r16,r/m16 11+3*n
|
|
BSF r32,r/m32 11+3*n
|
|
BSR r16,r/m16 9+3*n
|
|
BSR r32,r/m32 9+3*n
|
|
BT r/m16,r16 3/12
|
|
BT r/m32,r32 3/12
|
|
BT r/m16,imm8 3/6
|
|
BT r/m16,imm8 3/6
|
|
BTC r/m16,r16 6/13
|
|
BTC r/m32,r32 6/13
|
|
BTC r/m16,imm8 6/8
|
|
BTC r/m16,imm8 6/8
|
|
BTR r/m16,r16 6/13
|
|
BTR r/m32,r32 6/13
|
|
BTR r/m16,imm8 6/8
|
|
BTR r/m16,imm8 6/8
|
|
BTS r/m16,r16 6/13
|
|
BTS r/m32,r32 6/13
|
|
BTS r/m16,imm8 6/8
|
|
BTS r/m16,imm8 6/8
|
|
CALL rel16 7+m
|
|
CALL r/m16 7+m/10+m
|
|
CALL ptr16:16 17+m
|
|
CALL ptr16:16 (PM, direct segment) 34+m
|
|
CALL ptr16:16 (PM, via call gate, same p52+m
|
|
CALL ptr16:16 (PM, via call gate, more p86+m
|
|
CALL ptr16:16 (PM, via call gate, more p94+m+4*x
|
|
CALL m16:16 22+m
|
|
CALL m16:16 (PM, direct segment) 38+m
|
|
CALL m16:16 (PM, via gate, same priveleg56+m
|
|
CALL m16:16 (PM, via gate, more priveleg90+m
|
|
CALL m16:16 (PM, via gate, more priveleg98+m+4*x
|
|
CALL rel32 7+m
|
|
CALL r/m32 7+m/10+m
|
|
CALL ptr16:32 17+m
|
|
CALL ptr16:32 (PM, direct segment) 34+m
|
|
CALL ptr16:32 (PM, via gate, same privel52+m
|
|
CALL ptr16:32 (PM, via gate, more privel86+m
|
|
CALL ptr16:32 (PM, via gate, more privel94+m+4*x
|
|
CALL m16:32 22+m
|
|
CALL m16:32 (PM, direct segment) 38+m
|
|
CALL m16:32 (PM, via gate, same priveleg56+m
|
|
CALL m16:32 (PM, via gate, more priveleg90+m
|
|
CALL m16:32 (PM, via gate, more priveleg98+m+4*x
|
|
CBW 3
|
|
CWDE 2
|
|
CLC 2
|
|
CLD 2
|
|
CLI 3
|
|
CLTS 5
|
|
CMC 2
|
|
CMP AL,imm8 2
|
|
CMP AX,imm16 2
|
|
CMP EAX,imm32 2
|
|
CMP r/m8,imm8 2/5
|
|
CMP r/m16,imm8 2/5
|
|
CMP r/m32,imm8 2/5
|
|
CMP r/m16,imm16 2/5
|
|
CMP r/m32,imm32 2/5
|
|
CMP r/m8,r8 2/5
|
|
CMP r/m16,r16 2/5
|
|
CMP r/m32,r32 2/5
|
|
CMP r8,r/m8 2/6
|
|
CMP r16,r/m16 2/6
|
|
CMP r32,r/m32 2/6
|
|
CMPSB 10
|
|
CMPSW 10
|
|
CMPSD 10
|
|
CWD 2
|
|
CDQ 2
|
|
DAA 4
|
|
DAS 4
|
|
DEC r/m8 2/6
|
|
DEC r/m16 2/6
|
|
DEC r/m32 2/6
|
|
DEC r16 2
|
|
DEC r32 2
|
|
DIV r/m8 14/17
|
|
DIV r/m16 22/25
|
|
DIV r/m32 38/41
|
|
ESC imm4,r/m f
|
|
ENTER imm16,0 10
|
|
ENTER imm16,1 12
|
|
ENTER imm16,imm8 15+4*(n-1)
|
|
HLT 5
|
|
IBTS r/m16,AX,CL,r16 12/19
|
|
IBTS r/m32,EAX,CL,r32 12/19
|
|
IDIV r/m8 19/22
|
|
IDIV r/m16 27/30
|
|
IDIV r/m32 43/46
|
|
IMUL r/m8 12-17/15-20
|
|
IMUL r/m16 12-25/15-28
|
|
IMUL r/m32 12-41/15-44
|
|
IMUL r16,r/m16 12-17/15-20
|
|
IMUL r32,r/m32 12-41/15-44
|
|
IMUL r16,imm8 12-26/14-27
|
|
IMUL r32,imm8 13-42/14-43
|
|
IMUL r16,imm16 9/22-12/25
|
|
IMUL r32,imm32 9/38-12/41
|
|
IMUL r16,r/m16,imm8 9-14/12-17
|
|
IMUL r32,r/m32,imm8 9-14/12-17
|
|
IMUL r16,r/m16,imm16 9-22/12-25
|
|
IMUL r32,r/m32,imm32 9-38/12-41
|
|
IN AL,imm8 12
|
|
IN AL,imm8 (PM, CPL <= IOPL) 6/26
|
|
IN AL,imm8 (VM) 26
|
|
IN AX,imm8 12
|
|
IN AX,imm8 (PM, CPL <= IOPL) 6/26
|
|
IN AX,imm8 (VM) 26
|
|
IN EAX,imm8 12
|
|
IN EAX,imm8 (PM, CPL <= IOPL) 6/26
|
|
IN EAX,imm8 (VM) 26
|
|
IN AL,DX 13
|
|
IN AL,DX (PM, CPL <= IOPL) 7/27
|
|
IN AL,DX (VM) 27
|
|
IN AX,DX 13
|
|
IN AX,DX (PM, CPL <= IOPL) 7/27
|
|
IN AX,DX (VM) 27
|
|
IN EAX,DX 13
|
|
IN EAX,DX (PM, CPL <= IOPL) 7/27
|
|
IN EAX,DX (VM) 27
|
|
INC r/m8 2/6
|
|
INC r/m16 2/6
|
|
INC r/m32 2/6
|
|
INC r16 2
|
|
INC r32 2
|
|
INSB 15
|
|
INSW 15
|
|
INSD 15
|
|
INT 3 33
|
|
INT 3 (PM, same privilege) 59
|
|
INT 3 (PM, more privelege) 99
|
|
INT imm8 37
|
|
INT imm8 (PM, same privilege) 59
|
|
INT imm8 (PM, more privelege) 99
|
|
INTO 3/35
|
|
INTO (PM, same privilege) 3/59
|
|
INTO (PM, more privelege) 3/99
|
|
IRET 22/38
|
|
IRET (PM, to same privilege) 22/38
|
|
IRET (PM, to lesser privilege) 82
|
|
IRETD 22/38
|
|
IRETD (PM, to same privilege) 22/38
|
|
IRETD (PM, to lesser privilege) 82
|
|
Jcc rel8 7+m/3
|
|
Jcc rel16 7+m/3
|
|
Jcc rel32 7+m/3
|
|
JCXZ rel8 9+m/5
|
|
JECXZ rel8 9+m/5
|
|
JMP rel8 7+m
|
|
JMP rel16 7+m
|
|
JMP r/m16 7+m/10+m
|
|
JMP ptr16:16 12/27+m
|
|
JMP ptr16:16 (PM, direct segment) 12/27+m
|
|
JMP ptr16:16 (PM, via call gate, same pr45+m
|
|
JMP m16:16 43/31+m
|
|
JMP m16:16 (PM, direct segment) 43/31+m
|
|
JMP m16:16 (PM, via call gate, same priv49+m
|
|
JMP rel32 7+m
|
|
JMP r/m32 (7/10)+m
|
|
JMP ptr16:32 12/27+m
|
|
JMP ptr16:32 (PM, direct segment) 12/27+m
|
|
JMP ptr16:32 (PM, via call gate, same pr45+m
|
|
JMP m16:32 43/31+m
|
|
JMP m16:32 (PM, direct segment) 43/31+m
|
|
JMP m16:32 (PM, via call gate, same priv49+m
|
|
LAHF 2
|
|
LAR r16,r/m16 15/16
|
|
LAR r32,r/m32 15/16
|
|
LDS r16,m16:16 7/22
|
|
LDS r32,m16:32 7/22
|
|
LDS r16,m16:16 (PM) 7/22
|
|
LDS r32,m16:32 (PM) f
|
|
LSS r16,m16:16 7/22
|
|
LSS r32,m16:32 7/22
|
|
LSS r16,m16:16 (PM) 7/22
|
|
LSS r32,m16:32 (PM) f
|
|
LES r16,m16:16 7/22
|
|
LES r32,m16:32 7/22
|
|
LES r16,m16:16 (PM) 7/22
|
|
LES r32,m16:32 (PM) f
|
|
LFS r16,m16:16 7/25
|
|
LFS r32,m16:32 7/25
|
|
LFS r16,m16:16 (PM) 7/22
|
|
LFS r32,m16:32 (PM) f
|
|
LGS r16,m16:16 7/25
|
|
LGS r32,m16:32 7/25
|
|
LGS r16,m16:16 (PM) 7/22
|
|
LGS r32,m16:32 (PM) f
|
|
LEA r16,m 2
|
|
LEA r32,m 2
|
|
LEAVE 4
|
|
LGDT m16&32 11
|
|
LIDT m16&32 11
|
|
LLDT r/m16 20
|
|
LMSW r/m16 10/13
|
|
LOADALL f
|
|
LODSB 5
|
|
LODSW 5
|
|
LODSD 5
|
|
LOOP rel8 11+m
|
|
LOOPE rel8 11+m
|
|
LOOPNE rel8 11+m
|
|
LSL r16,r/m16 20/21
|
|
LSL r32,r/m32 20/21
|
|
LTR r/m16 23/27
|
|
MOV r/m8,r8 2/2
|
|
MOV r/m16,r16 2/2
|
|
MOV r/m32,r32 2/2
|
|
MOV r8,r/m8 2/4
|
|
MOV r16,r/m16 2/4
|
|
MOV r32,r/m32 2/4
|
|
MOV r/m16,sreg 2/2
|
|
MOV sreg,r/m16 2/5 18/19
|
|
MOV sreg,r/m16 (PM) f
|
|
MOV AL,moffs8 4
|
|
MOV AX,moffs16 4
|
|
MOV EAX,moffs32 4
|
|
MOV moffs8,AL 2
|
|
MOV moffs16,AX 2
|
|
MOV moffs32,EAX 2
|
|
MOV r8,imm8 2
|
|
MOV r16,imm16 2
|
|
MOV r32,imm32 2
|
|
MOV r/m8,imm8 2/2
|
|
MOV r/m16,imm16 2/2
|
|
MOV r/m32,imm32 2/2
|
|
MOV CR0,r32 10
|
|
MOV CR2,r32 4/5
|
|
MOV CR3,r32 4/5
|
|
MOV CR4,r32 f
|
|
MOV r32,CRi 6
|
|
MOV r32,DR0-DR3 22
|
|
MOV r32,DR4-DR5 f
|
|
MOV r32,DR6-DR7 14
|
|
MOV DR0-DR3,r32 22
|
|
MOV DR4-DR5,r32 f
|
|
MOV DR6-DR7,r32 16
|
|
MOV r32,TR4-TR7 12
|
|
MOV TR4-TR7,r32 12
|
|
MOVSB 7
|
|
MOVSW 7
|
|
MOVSD 7
|
|
MOVSX r16,r/m8 3/6
|
|
MOVSX r32,r/m8 3/6
|
|
MOVSX r32,r/m16 3/6
|
|
MOVZX r16,r/m8 3/6
|
|
MOVZX r32,r/m8 3/6
|
|
MOVZX r32,r/m16 3/6
|
|
MUL r/m8 9/14-12/17
|
|
MUL r/m16 9/22-12/25
|
|
MUL r/m32 9/38-12/41
|
|
NEG r/m8 2/6
|
|
NEG r/m16 2/6
|
|
NEG r/m32 2/6
|
|
NOP 3
|
|
NOT r/m8 2/6
|
|
NOT r/m16 2/6
|
|
NOT r/m32 2/6
|
|
OR AL,imm8 2
|
|
OR AX,imm16 2
|
|
OR EAX,imm32 2
|
|
OR r/m8,imm8 2/7
|
|
OR r/m16,imm8 2/7
|
|
OR r/m32,imm8 2/7
|
|
OR r/m16,imm16 2/7
|
|
OR r/m32,imm32 2/7
|
|
OR r/m8,r8 2/7
|
|
OR r/m16,r16 2/7
|
|
OR r/m32,r32 2/7
|
|
OR r8,r/m8 2/6
|
|
OR r16,r/m16 2/6
|
|
OR r32,r/m32 2/6
|
|
OUT imm8,AL 10
|
|
OUT imm8,AL (PM, CPL <= IOPL) 4/24
|
|
OUT imm8,AL (VM) 4/24
|
|
OUT imm8,AX 10
|
|
OUT imm8,AX (PM, CPL <= IOPL) 4/24
|
|
OUT imm8,AX (VM) 4/24
|
|
OUT imm8,EAX 10
|
|
OUT imm8,EAX (PM, CPL <= IOPL) 4/24
|
|
OUT imm8,EAX (VM) 4/24
|
|
OUT DX,AL 11
|
|
OUT DX,AL (PM, CPL <= IOPL) 5/25
|
|
OUT DX,AL (VM) 5/25
|
|
OUT DX,AX 11
|
|
OUT DX,AX (PM, CPL <= IOPL) 5/25
|
|
OUT DX,AX (VM) 5/25
|
|
OUT DX,EAX 11
|
|
OUT DX,EAX (PM, CPL <= IOPL) 5/25
|
|
OUT DX,EAX (VM) 5/25
|
|
OUTSB 14
|
|
OUTSW 14
|
|
OUTSD 14
|
|
POP m16 5
|
|
POP m32 5
|
|
POP r16 4
|
|
POP r32 4
|
|
POP sreg 7/21
|
|
POP sreg (PM) 7/21
|
|
POPA 24
|
|
POPAD 24
|
|
POPF 5
|
|
POPF (PM) 5
|
|
POPF (VM) ??
|
|
POPFD 5
|
|
POPFD (PM) 5
|
|
POPFD (VM) ??
|
|
PUSH r/m16 5
|
|
PUSH r/m32 5
|
|
PUSH r16 2
|
|
PUSH r32 2
|
|
PUSH imm8 2
|
|
PUSH imm16 2
|
|
PUSH imm32 2
|
|
PUSH sreg 2
|
|
PUSHA 18
|
|
PUSHAD 18
|
|
PUSHF 4
|
|
PUSHF (PM) 4
|
|
PUSHF (VM) 4 ??
|
|
PUSHFD 4
|
|
PUSHFD (PM) 4
|
|
PUSHFD (VM) 4 ??
|
|
RCL r/m8,1 9/10
|
|
RCL r/m16,1 9/10
|
|
RCL r/m32,1 9/10
|
|
RCL r/m8,CL 9/10
|
|
RCL r/m16,CL 9/10
|
|
RCL r/m32,CL 9/10
|
|
RCL r/m8,imm8 9/10
|
|
RCL r/m16,imm8 9/10
|
|
RCL r/m32,imm8 9/10
|
|
RCR r/m8,1 9/10
|
|
RCR r/m16,1 9/10
|
|
RCR r/m32,1 9/10
|
|
RCR r/m8,CL 9/10
|
|
RCR r/m16,CL 9/10
|
|
RCR r/m32,CL 9/10
|
|
RCR r/m8,imm8 9/10
|
|
RCR r/m16,imm8 9/10
|
|
RCR r/m32,imm8 9/10
|
|
ROL r/m8,1 3/7
|
|
ROL r/m16,1 3/7
|
|
ROL r/m32,1 3/7
|
|
ROL r/m8,CL 3/7
|
|
ROL r/m16,CL 3/7
|
|
ROL r/m32,CL 3/7
|
|
ROL r/m8,imm8 3/7
|
|
ROL r/m16,imm8 3/7
|
|
ROL r/m32,imm8 3/7
|
|
ROR r/m8,1 3/7
|
|
ROR r/m16,1 3/7
|
|
ROR r/m32,1 3/7
|
|
ROR r/m8,CL 3/7
|
|
ROR r/m16,CL 3/7
|
|
ROR r/m32,CL 3/7
|
|
ROR r/m8,imm8 3/7
|
|
ROR r/m16,imm8 3/7
|
|
ROR r/m32,imm8 3/7
|
|
RDTSC f
|
|
RET (near) 10+m
|
|
RET (far) 18+m
|
|
RET (PM, far, same PL) 32+m
|
|
RET (PM, far, different PL) 68
|
|
RET imm16 (near) 10+m
|
|
RET imm16 (far) 18+m
|
|
RET imm16 (PM, far, same PL) 32+m
|
|
RET imm16 (PM, far, different PL) 68
|
|
SAHF 3
|
|
SAL r/m8,1 3/7
|
|
SAL r/m16,1 3/7
|
|
SAL r/m32,1 3/7
|
|
SAL r/m8,CL 3/7
|
|
SAL r/m16,CL 3/7
|
|
SAL r/m32,CL 3/7
|
|
SAL r/m8,imm8 3/7
|
|
SAL r/m16,imm8 3/7
|
|
SAL r/m32,imm8 3/7
|
|
SAR r/m8,1 3/7
|
|
SAR r/m16,1 3/7
|
|
SAR r/m32,1 3/7
|
|
SAR r/m8,CL 3/7
|
|
SAR r/m16,CL 3/7
|
|
SAR r/m32,CL 3/7
|
|
SAR r/m8,imm8 3/7
|
|
SAR r/m16,imm8 3/7
|
|
SAR r/m32,imm8 3/7
|
|
SHL r/m8,1 3/7
|
|
SHL r/m16,1 3/7
|
|
SHL r/m32,1 3/7
|
|
SHL r/m8,CL 3/7
|
|
SHL r/m16,CL 3/7
|
|
SHL r/m32,CL 3/7
|
|
SHL r/m8,imm8 3/7
|
|
SHL r/m16,imm8 3/7
|
|
SHL r/m32,imm8 3/7
|
|
SHR r/m8,1 3/7
|
|
SHR r/m16,1 3/7
|
|
SHR r/m32,1 3/7
|
|
SHR r/m8,CL 3/7
|
|
SHR r/m16,CL 3/7
|
|
SHR r/m32,CL 3/7
|
|
SHR r/m8,imm8 3/7
|
|
SHR r/m16,imm8 37/
|
|
SHR r/m32,imm8 3/7
|
|
SBB AL,imm8 2
|
|
SBB AX,imm16 2
|
|
SBB EAX,imm32 2
|
|
SBB r/m8,imm8 2/7
|
|
SBB r/m16,imm8 2/7
|
|
SBB r/m32,imm8 2/7
|
|
SBB r/m16,imm16 2/7
|
|
SBB r/m32,imm32 2/7
|
|
SBB r/m8,r8 2/7
|
|
SBB r/m16,r16 2/7
|
|
SBB r/m32,r32 2/7
|
|
SBB r8,r/m8 2/6
|
|
SBB r16,r/m16 2/6
|
|
SBB r32,r/m32 2/6
|
|
SCASB 7
|
|
SCASW 7
|
|
SCASD 7
|
|
SETALC f
|
|
SETcc r/m8 4/5
|
|
SGDT m16&32 9
|
|
SIDT m16&32 9
|
|
SHLD r/m16,r16,imm8 3/7
|
|
SHLD r/m32,r32,imm8 3/7
|
|
SHLD r/m16,r16,CL 3/7
|
|
SHLD r/m32,r32,CL 3/7
|
|
SHRD r/m16,r16,imm8 3/7
|
|
SHRD r/m32,r32,imm8 3/7
|
|
SHRD r/m16,r16,CL 3/7
|
|
SHRD r/m32,r32,CL 3/7
|
|
SLDT r/m16 2/2
|
|
SLDT r/m32 f
|
|
SMINT f
|
|
SMSW r/m16 2/3 2/2
|
|
STC 2
|
|
STD 2
|
|
STI 2
|
|
STOSB 4
|
|
STOSW 4
|
|
STOSD 4
|
|
STR r/m16 23/27
|
|
SUB AL,imm8 2/8
|
|
SUB AX,imm16 2/7
|
|
SUB EAX,imm32 2/7
|
|
SUB r/m8,imm8 2/7
|
|
SUB r/m16,imm8 2/7
|
|
SUB r/m32,imm8 2/7
|
|
SUB r/m16,imm16 2/7
|
|
SUB r/m32,imm32 2/7
|
|
SUB r/m8,r8 2/7
|
|
SUB r/m16,r16 2/7
|
|
SUB r/m32,r32 2/7
|
|
SUB r8,r/m8 2/6
|
|
SUB r16,r/m16 2/6
|
|
SUB r32,r/m32 2/6
|
|
TEST AL,imm8 2
|
|
TEST AX,imm16 2
|
|
TEST EAX,imm32 2
|
|
TEST r/m8,imm8 2/5
|
|
TEST r/m16,imm16 2/5
|
|
TEST r/m32,imm32 2/5
|
|
TEST r/m8,r8 2/5
|
|
TEST r/m16,r16 2/5
|
|
TEST r/m32,r32 2/5
|
|
UMOV r8,r/m8 f
|
|
UMOV r16,r/m16 f
|
|
UMOV r32,r/m32 f
|
|
UMOV r/m8,r8 f
|
|
UMOV r/m16,r16 f
|
|
UMOV r/m32,r32 f
|
|
VERR r/m16 10/11
|
|
VERW r/m16 15/16
|
|
WAIT 6min
|
|
XBTS r16,r/m16,AX,CL 6/13
|
|
XBTS r32,r/m32,EAX,CL 6/13
|
|
XCHG AX,r16 3
|
|
XCHG EAX,r32 3
|
|
XCHG r/m8,r8 3/5
|
|
XCHG r/m16,r16 3/5
|
|
XCHG r/m32,r32 3/5
|
|
XLAT 5
|
|
XOR AL,imm8 2
|
|
XOR AX,imm16 2
|
|
XOR EAX,imm32 2
|
|
XOR r/m8,imm8 2
|
|
XOR r/m16,imm8 2/7
|
|
XOR r/m32,imm8 2/7
|
|
XOR r/m16,imm16 2/7
|
|
XOR r/m32,imm32 2/7
|
|
XOR r/m8,r8 2/7
|
|
XOR r/m16,r16 2/7
|
|
XOR r/m32,r32 2/7
|
|
XOR r8,r/m8 2/6
|
|
XOR r16,r/m16 2/6
|
|
XOR r32,r/m32 2/6
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y5 - Vendor Instruction Time for Intel i486DX CPU
|
|
|
|
AAA 3
|
|
AAD 14
|
|
AAD imm8 n/a
|
|
AAM 15
|
|
AAM imm8 n/a
|
|
AAS 3
|
|
ADC AL,imm8 1
|
|
ADC AX,imm16 1
|
|
ADC EAX,imm32 1
|
|
ADC r/m8,imm8 1/3
|
|
ADC r/m16,imm8 1/3
|
|
ADC r/m32,imm8 1/3
|
|
ADC r/m16,imm16 1/3
|
|
ADC r/m32,imm32 f
|
|
ADC r/m8,r8 1/3
|
|
ADC r/m16,r16 1/3
|
|
ADC r/m32,r32 f
|
|
ADC r8,r/m8 1/2
|
|
ADC r16,r/m16 1/2
|
|
ADC r32,r/m32 1/2
|
|
ADD AL,imm8 1
|
|
ADD AX,imm16 1
|
|
ADD EAX,imm32 1
|
|
ADD r/m8,imm8 1/3
|
|
ADD r/m16,imm8 1/3
|
|
ADD r/m32,imm8 1/3
|
|
ADD r/m16,imm16 1/3
|
|
ADD r/m32,imm32 1/3
|
|
ADD r/m8,r8 1/3
|
|
ADD r/m16,r16 1/3
|
|
ADD r/m32,r32 1/3
|
|
ADD r8,r/m8 1/2
|
|
ADD r16,r/m16 1/2
|
|
ADD r32,r/m32 1/2
|
|
AND AL,imm8 1
|
|
AND AX,imm16 1
|
|
AND EAX,imm32 1
|
|
AND r/m8,imm8 1/3
|
|
AND r/m16,imm8 1/3
|
|
AND r/m32,imm8 1/3
|
|
AND r/m16,imm16 1/3
|
|
AND r/m32,imm32 1/3
|
|
AND r/m8,r8 1/3
|
|
AND r/m16,r16 1/3
|
|
AND r/m32,r32 1/3
|
|
AND r8,r/m8 1/2
|
|
AND r16,r/m16 1/2
|
|
AND r32,r/m32 1/2
|
|
ARPL r/m16,r16 9/9
|
|
BOUND r16,m16&16 7
|
|
BOUND r32,m32&32 7
|
|
BSF r16,r/m16 6-42/7-43
|
|
BSF r32,r/m32 6-42/7-43
|
|
BSR r16,r/m16 6-103/7-104
|
|
BSR r32,r/m32 6-103/7-104
|
|
BSWAP r32 1
|
|
BT r/m16,r16 3/8
|
|
BT r/m32,r32 3/8
|
|
BT r/m16,imm8 3/3
|
|
BT r/m16,imm8 3/3
|
|
BTC r/m16,r16 6/13
|
|
BTC r/m32,r32 6/13
|
|
BTC r/m16,imm8 6/8
|
|
BTC r/m16,imm8 6/8
|
|
BTR r/m16,r16 6/13
|
|
BTR r/m32,r32 6/13
|
|
BTR r/m16,imm8 6/8
|
|
BTR r/m16,imm8 6/8
|
|
BTS r/m16,r16 6/13
|
|
BTS r/m32,r32 6/13
|
|
BTS r/m16,imm8 6/8
|
|
BTS r/m16,imm8 6/8
|
|
CALL rel16 3
|
|
CALL r/m16 5/5
|
|
CALL ptr16:16 18
|
|
CALL ptr16:16 (PM, direct segment) 20
|
|
CALL ptr16:16 (PM, via call gate, same p35
|
|
CALL ptr16:16 (PM, via call gate, more p69
|
|
CALL ptr16:16 (PM, via call gate, more p77+4*p
|
|
CALL m16:16 17
|
|
CALL m16:16 (PM, direct segment) 20
|
|
CALL m16:16 (PM, via gate, same priveleg35
|
|
CALL m16:16 (PM, via gate, more priveleg69
|
|
CALL m16:16 (PM, via gate, more priveleg77+4*p
|
|
CALL rel32 3
|
|
CALL r/m32 5/5
|
|
CALL ptr16:32 18
|
|
CALL ptr16:32 (PM, direct segment) 20
|
|
CALL ptr16:32 (PM, via gate, same privel35
|
|
CALL ptr16:32 (PM, via gate, more privel69
|
|
CALL ptr16:32 (PM, via gate, more privel77+4*p
|
|
CALL m16:32 17
|
|
CALL m16:32 (PM, direct segment) 20
|
|
CALL m16:32 (PM, via gate, same priveleg35
|
|
CALL m16:32 (PM, via gate, more priveleg69
|
|
CALL m16:32 (PM, via gate, more priveleg77+4*p
|
|
CBW 3
|
|
CWDE 3
|
|
CLC 2
|
|
CLD 2
|
|
CLI 5
|
|
CLTS 7
|
|
CMC 2
|
|
CMOVcc r16,r/m16 f
|
|
CMOVcc r32,r/m32 f
|
|
CMP AL,imm8 1
|
|
CMP AX,imm16 1
|
|
CMP EAX,imm32 1
|
|
CMP r/m8,imm8 1/2
|
|
CMP r/m16,imm8 1/2
|
|
CMP r/m32,imm8 1/2
|
|
CMP r/m16,imm16 1/2
|
|
CMP r/m32,imm32 1/2
|
|
CMP r/m8,r8 1/2
|
|
CMP r/m16,r16 1/2
|
|
CMP r/m32,r32 1/2
|
|
CMP r8,r/m8 1/3
|
|
CMP r16,r/m16 1/3
|
|
CMP r32,r/m32 1/3
|
|
CMPSB 8
|
|
CMPSW 8
|
|
CMPSD 8
|
|
CMPXCHG r/m8,r8 6/7 6/10
|
|
CMPXCHG r/m16,r16 6/7 6/10
|
|
CMPXCHG r/m32,r32 6/7 6/10
|
|
CPUID (SL Enhanced only)
|
|
CWD 3
|
|
CDQ 3
|
|
DAA 2
|
|
DAS 2
|
|
DEC r/m8 1/3
|
|
DEC r/m16 1/3
|
|
DEC r/m32 1/3
|
|
DEC r16 1
|
|
DEC r32 1
|
|
DIV r/m8 16/16
|
|
DIV r/m16 24/24
|
|
DIV r/m32 40/40
|
|
ESC imm4,r/m f
|
|
ENTER imm16,0 14
|
|
ENTER imm16,1 17
|
|
ENTER imm16,imm8 17+3*n
|
|
HLT 4
|
|
IDIV r/m8 19/20
|
|
IDIV r/m16 27/28
|
|
IDIV r/m32 43/44
|
|
IMUL r/m8 13-18/13-18
|
|
IMUL r/m16 13-26/13-26
|
|
IMUL r/m32 12-42/13-42
|
|
IMUL r16,r/m16 13-26/13-26
|
|
IMUL r32,r/m32 13-42/13-42
|
|
IMUL r16,imm8 13-26
|
|
IMUL r32,imm8 13-26
|
|
IMUL r16,imm16 13-26/13-26
|
|
IMUL r32,imm32 13-42/13-42
|
|
IMUL r16,r/m16,imm8 13-26/13-26
|
|
IMUL r32,r/m32,imm8 13-42/13-42
|
|
IMUL r16,r/m16,imm16 13-26/13-26
|
|
IMUL r32,r/m32,imm32 13-42/13-42
|
|
IN AL,imm8 14
|
|
IN AL,imm8 (PM, CPL <= IOPL) 8/28
|
|
IN AL,imm8 (VM) 27
|
|
IN AX,imm8 14
|
|
IN AX,imm8 (PM, CPL <= IOPL) 8/28
|
|
IN AX,imm8 (VM) 27
|
|
IN EAX,imm8 14
|
|
IN EAX,imm8 (PM, CPL <= IOPL) 8/28
|
|
IN EAX,imm8 (VM) 27
|
|
IN AL,DX 14
|
|
IN AL,DX (PM, CPL <= IOPL) 8/28
|
|
IN AL,DX (VM) 27
|
|
IN AX,DX 14
|
|
IN AX,DX (PM, CPL <= IOPL) 8/28
|
|
IN AX,DX (VM) 2
|
|
IN EAX,DX 14
|
|
IN EAX,DX (PM, CPL <= IOPL) 8/28
|
|
IN EAX,DX (VM) 27
|
|
INC r/m8 1/3
|
|
INC r/m16 1/3
|
|
INC r/m32 1/3
|
|
INC r16 1
|
|
INC r32 1
|
|
INSB 17
|
|
INSW 17
|
|
INSD 17
|
|
INT 3 26
|
|
INT 3 (PM, same privilege) 44
|
|
INT 3 (PM, more privelege) 71
|
|
INT imm8 30
|
|
INT imm8 (PM, same privilege) 44
|
|
INT imm8 (PM, more privelege) 71
|
|
INTO 3/28
|
|
INTO (PM, same privilege) 3/46
|
|
INTO (PM, more privelege) 3/73
|
|
INVD 4
|
|
INVLPG m 12
|
|
IRET 15
|
|
IRET (PM, to same privilege) 15
|
|
IRET (PM, to lesser privilege) 36
|
|
IRETD 15
|
|
IRETD (PM, to same privilege) 15
|
|
IRETD (PM, to lesser privilege) 36
|
|
Jcc rel8 3/1
|
|
Jcc rel16 3/1
|
|
Jcc rel32 3/1
|
|
JCXZ rel8 8/5
|
|
JECXZ rel8 8/5
|
|
JMP rel8 3
|
|
JMP rel16 3
|
|
JMP r/m16 5/5
|
|
JMP ptr16:16 17/19
|
|
JMP ptr16:16 (PM, direct segment) 17/19
|
|
JMP ptr16:16 (PM, via call gate, same pr32
|
|
JMP m16:16 13/18
|
|
JMP m16:16 (PM, direct segment) 13/18
|
|
JMP m16:16 (PM, via call gate, same priv31
|
|
JMP rel32 3
|
|
JMP r/m32 5/5
|
|
JMP ptr16:32 13/18
|
|
JMP ptr16:32 (PM, direct segment) 13/18
|
|
JMP ptr16:32 (PM, via call gate, same pr31
|
|
JMP m16:32 13/18
|
|
JMP m16:32 (PM, direct segment) 13/18
|
|
JMP m16:32 (PM, via call gate, same priv31
|
|
LAHF 3
|
|
LAR r16,r/m16 11/11
|
|
LAR r32,r/m32 11/11
|
|
LDS r16,m16:16 6/12p
|
|
LDS r32,m16:32 6/12p
|
|
LDS r16,m16:16 (PM) f
|
|
LDS r32,m16:32 (PM) f
|
|
LSS r16,m16:16 7/22p
|
|
LSS r32,m16:32 7/22p
|
|
LSS r16,m16:16 (PM) f
|
|
LSS r32,m16:32 (PM) f
|
|
LES r16,m16:16 7/22p
|
|
LES r32,m16:32 7/22p
|
|
LES r16,m16:16 (PM) f
|
|
LES r32,m16:32 (PM) f
|
|
LFS r16,m16:16 6/12p
|
|
LFS r32,m16:32 6/12p
|
|
LFS r16,m16:16 (PM) f
|
|
LFS r32,m16:32 (PM) f
|
|
LGS r16,m16:16 6/12p
|
|
LGS r32,m16:32 6/12p
|
|
LGS r16,m16:16 (PM) f
|
|
LGS r32,m16:32 (PM) f
|
|
LEA r16,m 1
|
|
LEA r32,m 1
|
|
LEAVE 5
|
|
LGDT m16&32 11
|
|
LIDT m16&32 11
|
|
LLDT r/m16 11/11
|
|
LMSW r/m16 13/13
|
|
LOADALL f
|
|
LODSB 5
|
|
LODSW 5
|
|
LODSD 5
|
|
LOOP rel8 2,6
|
|
LOOPE rel8 9,6
|
|
LOOPNE rel8 9,6
|
|
LSL r16,r/m16 10/10
|
|
LSL r32,r/m32 10/10
|
|
LTR r/m16 20/20
|
|
MOV r/m8,r8 1
|
|
MOV r/m16,r16 1
|
|
MOV r/m32,r32 1
|
|
MOV r8,r/m8 1
|
|
MOV r16,r/m16 1
|
|
MOV r32,r/m32 1
|
|
MOV r/m16,sreg 3/3
|
|
MOV sreg,r/m16 3/9
|
|
MOV sreg,r/m16 (PM) f
|
|
MOV AL,moffs8 1
|
|
MOV AX,moffs16 1
|
|
MOV EAX,moffs32 1
|
|
MOV moffs8,AL 1
|
|
MOV moffs16,AX 1
|
|
MOV moffs32,EAX 1
|
|
MOV r8,imm8 1
|
|
MOV r16,imm16 1
|
|
MOV r32,imm32 1
|
|
MOV r/m8,imm8 1
|
|
MOV r/m16,imm16 1
|
|
MOV r/m32,imm32 1
|
|
MOV CR0,r32 16
|
|
MOV CR2,r32 4
|
|
MOV CR3,r32 4
|
|
MOV CR4,r32 (SL Enhanced only)
|
|
MOV r32,CRi 4
|
|
MOV r32,DR0-DR3 10
|
|
MOV r32,DR4-DR5 9 (alias to DR6-DR7)
|
|
MOV r32,DR6-DR7 10
|
|
MOV DR0-DR3,r32 11
|
|
MOV DR4-DR5,r32 10 (alias to DR6-DR7)
|
|
MOV DR6-DR7,r32 11
|
|
MOV r32,TR4-TR7 4
|
|
MOV r32,TR3 4
|
|
MOV TR3,r32 6
|
|
MOV TR4-TR7,r32 f
|
|
MOVSB 7
|
|
MOVSW 7
|
|
MOVSD 7
|
|
MOVSX r16,r/m8 3/3
|
|
MOVSX r32,r/m8 3/3
|
|
MOVSX r32,r/m16 3/3
|
|
MOVZX r16,r/m8 3/3
|
|
MOVZX r32,r/m8 3/3
|
|
MOVZX r32,r/m16 3/3
|
|
MUL r/m8 13-18/
|
|
MUL r/m16 13-26/
|
|
MUL r/m32 13-42/
|
|
NEG r/m8 1/3
|
|
NEG r/m16 1/3
|
|
NEG r/m32 1/3
|
|
NOP 1
|
|
NOT r/m8 1/3
|
|
NOT r/m16 1/3
|
|
NOT r/m32 1/3
|
|
OR AL,imm8 1
|
|
OR AX,imm16 1
|
|
OR EAX,imm32 1
|
|
OR r/m8,imm8 1/3
|
|
OR r/m16,imm8 1/3
|
|
OR r/m32,imm8 1/3
|
|
OR r/m16,imm16 1/3
|
|
OR r/m32,imm32 1/3
|
|
OR r/m8,r8 1/3
|
|
OR r/m16,r16 1/3
|
|
OR r/m32,r32 1/3
|
|
OR r8,r/m8 1/2
|
|
OR r16,r/m16 1/2
|
|
OR r32,r/m32 1/2
|
|
OUT imm8,AL 16
|
|
OUT imm8,AL (PM, CPL <= IOPL) 11/31
|
|
OUT imm8,AL (VM) 25
|
|
OUT imm8,AX 16
|
|
OUT imm8,AX (PM, CPL <= IOPL) 11/31
|
|
OUT imm8,AX (VM) 25
|
|
OUT imm8,EAX 16
|
|
OUT imm8,EAX (PM, CPL <= IOPL) 11/31
|
|
OUT imm8,EAX (VM) 25
|
|
OUT DX,AL 16
|
|
OUT DX,AL (PM, CPL <= IOPL) 11/31
|
|
OUT DX,AL (VM) 25
|
|
OUT DX,AX 16
|
|
OUT DX,AX (PM, CPL <= IOPL) 11/31
|
|
OUT DX,AX (VM) 25
|
|
OUT DX,EAX 16
|
|
OUT DX,EAX (PM, CPL <= IOPL) 11/31
|
|
OUT DX,EAX (VM) 25
|
|
OUTSB 17
|
|
OUTSW 10/32
|
|
OUTSD 30
|
|
POP m16 6
|
|
POP m32 6
|
|
POP r16 4
|
|
POP r32 4
|
|
POP sreg 3
|
|
POP sreg (PM) f
|
|
POPA 9
|
|
POPAD 9
|
|
POPF 9/6p
|
|
POPF (PM) 6
|
|
POPF (VM) 9
|
|
POPFD 9/6p
|
|
POPFD (PM) 6
|
|
POPFD (VM) 9
|
|
PUSH r/m16 4
|
|
PUSH r/m32 4
|
|
PUSH r16 1
|
|
PUSH r32 1
|
|
PUSH imm8 1
|
|
PUSH imm16 1
|
|
PUSH imm32 1
|
|
PUSH sreg 3
|
|
PUSHA 11
|
|
PUSHAD 11
|
|
PUSHF 4/3p
|
|
PUSHF (PM) 3
|
|
PUSHF (VM) 4
|
|
PUSHFD 4/3p
|
|
PUSHFD (PM) 3
|
|
PUSHFD (VM) 4
|
|
RCL r/m8,1 3/4
|
|
RCL r/m16,1 3/4
|
|
RCL r/m32,1 3/4
|
|
RCL r/m8,CL 8-30/9-31
|
|
RCL r/m16,CL 8-30/9-31
|
|
RCL r/m32,CL 8-30/9-31
|
|
RCL r/m8,imm8 8-30/9-31
|
|
RCL r/m16,imm8 8-30/9-31
|
|
RCL r/m32,imm8 8-30/9-31
|
|
RCR r/m8,1 3/4
|
|
RCR r/m16,1 3/4
|
|
RCR r/m32,1 3/4
|
|
RCR r/m8,CL 8-30/9-31
|
|
RCR r/m16,CL 8-30/9-31
|
|
RCR r/m32,CL 8-30/9-31
|
|
RCR r/m8,imm8 8-30/9-31
|
|
RCR r/m16,imm8 8-30/9-31
|
|
RCR r/m32,imm8 8-30/9-31
|
|
ROL r/m8,1 3/4
|
|
ROL r/m16,1 3/4
|
|
ROL r/m32,1 3/4
|
|
ROL r/m8,CL 3/4
|
|
ROL r/m16,CL 3/4
|
|
ROL r/m32,CL 3/4
|
|
ROL r/m8,imm8 2/4
|
|
ROL r/m16,imm8 2/4
|
|
ROL r/m32,imm8 2/4
|
|
ROR r/m8,1 3/4
|
|
ROR r/m16,1 3/4
|
|
ROR r/m32,1 3/4
|
|
ROR r/m8,CL 3/4
|
|
ROR r/m16,CL 3/4
|
|
ROR r/m32,CL 3/4
|
|
ROR r/m8,imm8 2/4
|
|
ROR r/m16,imm8 2/4
|
|
ROR r/m32,imm8 2/4
|
|
RET (near) 5
|
|
RET (far) 13
|
|
RET (PM, far, same PL) 18
|
|
RET (PM, far, different PL) 33
|
|
RET imm16 (near) 5
|
|
RET imm16 (far) 14
|
|
RET imm16 (PM, far, same PL) f
|
|
RET imm16 (PM, far, different PL) f
|
|
SAHF 2
|
|
SAL r/m8,1 3/4
|
|
SAL r/m16,1 3/4
|
|
SAL r/m32,1 3/4
|
|
SAL r/m8,CL 3/4
|
|
SAL r/m16,CL 3/4
|
|
SAL r/m32,CL 3/4
|
|
SAL r/m8,imm8 2/4
|
|
SAL r/m16,imm8 2/4
|
|
SAL r/m32,imm8 2/4
|
|
SAR r/m8,1 3/4
|
|
SAR r/m16,1 3/4
|
|
SAR r/m32,1 3/4
|
|
SAR r/m8,CL 3/4
|
|
SAR r/m16,CL 3/4
|
|
SAR r/m32,CL 3/4
|
|
SAR r/m8,imm8 2/4
|
|
SAR r/m16,imm8 2/4
|
|
SAR r/m32,imm8 2/4
|
|
SHL r/m8,1 3/4
|
|
SHL r/m16,1 3/4
|
|
SHL r/m32,1 3/4
|
|
SHL r/m8,CL 3/4
|
|
SHL r/m16,CL 3/4
|
|
SHL r/m32,CL 3/4
|
|
SHL r/m8,imm8 2/4
|
|
SHL r/m16,imm8 2/4
|
|
SHL r/m32,imm8 2/4
|
|
SHR r/m8,1 3/4
|
|
SHR r/m16,1 3/4
|
|
SHR r/m32,1 3/4
|
|
SHR r/m8,CL 3/4
|
|
SHR r/m16,CL 3/4
|
|
SHR r/m32,CL 3/4
|
|
SHR r/m8,imm8 2/4
|
|
SHR r/m16,imm8 2/4
|
|
SHR r/m32,imm8 2/4
|
|
SBB AL,imm8 1
|
|
SBB AX,imm16 1
|
|
SBB EAX,imm32 1
|
|
SBB r/m8,imm8 1/3
|
|
SBB r/m16,imm8 1/3
|
|
SBB r/m32,imm8 1/3
|
|
SBB r/m16,imm16 1/3
|
|
SBB r/m32,imm32 1/3
|
|
SBB r/m8,r8 1/3
|
|
SBB r/m16,r16 1/3
|
|
SBB r/m32,r32 1/3
|
|
SBB r8,r/m8 1/2
|
|
SBB r16,r/m16 1/2
|
|
SBB r32,r/m32 1/2
|
|
SCASB 6
|
|
SCASW 6
|
|
SCASD 6
|
|
SETALC f
|
|
SETcc r/m8 4/3
|
|
SGDT m16&32 10
|
|
SIDT m16&32 10
|
|
SHLD r/m16,r16,imm8 2/3
|
|
SHLD r/m32,r32,imm8 2/3
|
|
SHLD r/m16,r16,CL 3/4
|
|
SHLD r/m32,r32,CL 3/4
|
|
SHRD r/m16,r16,imm8 2/3
|
|
SHRD r/m32,r32,imm8 2/3
|
|
SHRD r/m16,r16,CL 3/4
|
|
SHRD r/m32,r32,CL 3/4
|
|
SLDT r/m16 2/3
|
|
SLDT r/m32 2/3
|
|
SMINT f
|
|
SMSW r/m16 2/3
|
|
STC 2
|
|
STD 2
|
|
STI 5
|
|
STOSB 5
|
|
STOSW 5
|
|
STOSD 5
|
|
STR r/m16 2/3
|
|
SUB AL,imm8 1
|
|
SUB AX,imm16 1
|
|
SUB EAX,imm32 1
|
|
SUB r/m8,imm8 1/3
|
|
SUB r/m16,imm8 1/3
|
|
SUB r/m32,imm8 1/3
|
|
SUB r/m16,imm16 1/3
|
|
SUB r/m32,imm32 1/3
|
|
SUB r/m8,r8 1/3
|
|
SUB r/m16,r16 1/3
|
|
SUB r/m32,r32 1/3
|
|
SUB r8,r/m8 1/2
|
|
SUB r16,r/m16 1/2
|
|
SUB r32,r/m32 1/2
|
|
TEST AL,imm8 1
|
|
TEST AX,imm16 1
|
|
TEST EAX,imm32 1
|
|
TEST r/m8,imm8 1/2
|
|
TEST r/m16,imm16 1/2
|
|
TEST r/m32,imm32 1/2
|
|
TEST r/m8,r8 1/2
|
|
TEST r/m16,r16 1/2
|
|
TEST r/m32,r32 1/2
|
|
UMOV r8,r/m8 ??
|
|
UMOV r16,r/m16 ??
|
|
UMOV r32,r/m32 ??
|
|
UMOV r/m8,r8 ??
|
|
UMOV r/m16,r16 ??
|
|
UMOV r/m32,r32 ??
|
|
VERR r/m16 11/11
|
|
VERW r/m16 11/11
|
|
WAIT 1-3
|
|
WBINVD 5
|
|
XADD r/m8,r8 3/4
|
|
XADD r/m16,r16 3/4
|
|
XADD r/m32,r32 3/4
|
|
XCHG AX,r16 3
|
|
XCHG EAX,r32 3
|
|
XCHG r/m8,r8 3/5
|
|
XCHG r/m16,r16 3/5
|
|
XCHG r/m32,r32 3/5
|
|
XLAT 4
|
|
XOR AL,imm8 1
|
|
XOR AX,imm16 1
|
|
XOR EAX,imm32 1
|
|
XOR r/m8,imm8 1/3
|
|
XOR r/m16,imm8 1/3
|
|
XOR r/m32,imm8 1/3
|
|
XOR r/m16,imm16 1/3
|
|
XOR r/m32,imm32 1/3
|
|
XOR r/m8,r8 1/3
|
|
XOR r/m16,r16 1/3
|
|
XOR r/m32,r32 1/3
|
|
XOR r8,r/m8 1/2
|
|
XOR r16,r/m16 1/2
|
|
XOR r32,r/m32 1/2
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y6 - Vendor Instruction Time for Cyrix Cx486DX CPU
|
|
|
|
AAA 4
|
|
AAD 4
|
|
AAD imm8 4
|
|
AAM 16
|
|
AAM imm8 16
|
|
AAS 4
|
|
ADC AL,imm8 1
|
|
ADC AX,imm16 1
|
|
ADC EAX,imm32 1
|
|
ADC r/m8,imm8 1/3
|
|
ADC r/m16,imm8 1/3
|
|
ADC r/m32,imm8 1/3
|
|
ADC r/m16,imm16 1/3
|
|
ADC r/m32,imm32 1/3
|
|
ADC r/m8,r8 1/3
|
|
ADC r/m16,r16 1/3
|
|
ADC r/m32,r32 1/3
|
|
ADC r8,r/m8 1/3
|
|
ADC r16,r/m16 1/3
|
|
ADC r32,r/m32 1/3
|
|
ADD AL,imm8 1
|
|
ADD AX,imm16 1
|
|
ADD EAX,imm32 1
|
|
ADD r/m8,imm8 1/3
|
|
ADD r/m16,imm8 1/3
|
|
ADD r/m32,imm8 1/3
|
|
ADD r/m16,imm16 1/3
|
|
ADD r/m32,imm32 1/3
|
|
ADD r/m8,r8 1/3
|
|
ADD r/m16,r16 1/3
|
|
ADD r/m32,r32 1/3
|
|
ADD r8,r/m8 1/3
|
|
ADD r16,r/m16 1/3
|
|
ADD r32,r/m32 1/3
|
|
AND AL,imm8 1
|
|
AND AX,imm16 1
|
|
AND EAX,imm32 1
|
|
AND r/m8,imm8 1/3
|
|
AND r/m16,imm8 1/3
|
|
AND r/m32,imm8 1/3
|
|
AND r/m16,imm16 1/3
|
|
AND r/m32,imm32 1/3
|
|
AND r/m8,r8 1/3
|
|
AND r/m16,r16 1/3
|
|
AND r/m32,r32 1/3
|
|
AND r8,r/m8 1/3
|
|
AND r16,r/m16 1/3
|
|
AND r32,r/m32 1/3
|
|
ARPL r/m16,r16 6/10
|
|
BOUND r16,m16&16 11 or 11+int
|
|
BOUND r32,m32&32 11 or 11+int
|
|
BSF r16,r/m16 5+n/7+n
|
|
BSF r32,r/m32 5+n/7+n
|
|
BSR r16,r/m16 5+n/7+n
|
|
BSR r32,r/m32 5+n/7+n
|
|
BSWAP r32 4
|
|
BT r/m16,r16 3/6
|
|
BT r/m32,r32 3/6
|
|
BT r/m16,imm8 3/4
|
|
BT r/m16,imm8 3/4
|
|
BTC r/m16,r16 5/8
|
|
BTC r/m32,r32 5/8
|
|
BTC r/m16,imm8 4/5
|
|
BTC r/m16,imm8 4/5
|
|
BTR r/m16,r16 5/8
|
|
BTR r/m32,r32 5/8
|
|
BTR r/m16,imm8 4/5
|
|
BTR r/m16,imm8 4/5
|
|
BTS r/m16,r16 4/7
|
|
BTS r/m32,r32 4/7
|
|
BTS r/m16,imm8 3/5
|
|
BTS r/m16,imm8 3/5
|
|
CALL rel16 7
|
|
CALL r/m16 8/9
|
|
CALL ptr16:16 12
|
|
CALL ptr16:16 (PM, direct segment) 30
|
|
CALL ptr16:16 (PM, via call gate, same p41
|
|
CALL ptr16:16 (PM, via call gate, more p83
|
|
CALL ptr16:16 (PM, via call gate, more p81+4*param
|
|
CALL m16:16 14
|
|
CALL m16:16 (PM, direct segment) 14
|
|
CALL m16:16 (PM, via gate, same priveleg43
|
|
CALL m16:16 (PM, via gate, more priveleg85
|
|
CALL m16:16 (PM, via gate, more priveleg86+4*param
|
|
CALL rel32 7
|
|
CALL r/m32 8/9
|
|
CALL ptr16:32 12
|
|
CALL ptr16:32 (PM, direct segment) 30
|
|
CALL ptr16:32 (PM, via gate, same privel41
|
|
CALL ptr16:32 (PM, via gate, more privel83
|
|
CALL ptr16:32 (PM, via gate, more privel81+4*param
|
|
CALL m16:32 14
|
|
CALL m16:32 (PM, direct segment) 14
|
|
CALL m16:32 (PM, via gate, same priveleg43
|
|
CALL m16:32 (PM, via gate, more priveleg85
|
|
CALL m16:32 (PM, via gate, more priveleg86+4*param
|
|
CBW 3
|
|
CWDE 3
|
|
CLC 1
|
|
CLD 1
|
|
CLI 7
|
|
CLTS 5
|
|
CMC 1
|
|
CMP AL,imm8 1
|
|
CMP AX,imm16 1
|
|
CMP EAX,imm32 1
|
|
CMP r/m8,imm8 1/3
|
|
CMP r/m16,imm8 1/3
|
|
CMP r/m32,imm8 1/3
|
|
CMP r/m16,imm16 1/3
|
|
CMP r/m32,imm32 1/3
|
|
CMP r/m8,r8 1/3
|
|
CMP r/m16,r16 1/3
|
|
CMP r/m32,r32 1/3
|
|
CMP r8,r/m8 1/3
|
|
CMP r16,r/m16 1/3
|
|
CMP r32,r/m32 1/3
|
|
CMPSB 7
|
|
CMPSW 7
|
|
CMPSD 7
|
|
CMPXCHG r/m8,r8 5/7
|
|
CMPXCHG r/m16,r16 5/7
|
|
CMPXCHG r/m32,r32 5/7
|
|
CWD 1
|
|
CDQ 1
|
|
DAA 4
|
|
DAS 4
|
|
DEC r/m8 1/3
|
|
DEC r/m16 1/3
|
|
DEC r/m32 1/3
|
|
DEC r16 1
|
|
DEC r32 1
|
|
DIV r/m8 14/15
|
|
DIV r/m16 22/23
|
|
DIV r/m32 38/39
|
|
ESC imm4,r/m n/a
|
|
ENTER imm16,0 7
|
|
ENTER imm16,1 10
|
|
ENTER imm16,imm8 6+4*level
|
|
HLT 3
|
|
IDIV r/m8 19/20
|
|
IDIV r/m16 27/28
|
|
IDIV r/m32 43/44
|
|
IMUL r/m8 3/5
|
|
IMUL r/m16 3/5
|
|
IMUL r/m32 7/9
|
|
IMUL r16,r/m16 3/5
|
|
IMUL r32,r/m32 7/9
|
|
IMUL r16,imm8 3/5
|
|
IMUL r32,imm8 7/9
|
|
IMUL r16,imm16 3/5
|
|
IMUL r32,imm32 7/9
|
|
IMUL r16,r/m16,imm8 3/5
|
|
IMUL r32,r/m32,imm8 7/9
|
|
IMUL r16,r/m16,imm16 3/5
|
|
IMUL r32,r/m32,imm32 7/9
|
|
IN AL,imm8 16
|
|
IN AL,imm8 (PM, CPL <= IOPL) 6
|
|
IN AL,imm8 (VM) 19
|
|
IN AX,imm8 16
|
|
IN AX,imm8 (PM, CPL <= IOPL) 6
|
|
IN AX,imm8 (VM) 19
|
|
IN EAX,imm8 16
|
|
IN EAX,imm8 (PM, CPL <= IOPL) 6
|
|
IN EAX,imm8 (VM) 19
|
|
IN AL,DX 16
|
|
IN AL,DX (PM, CPL <= IOPL) 6
|
|
IN AL,DX (VM) 19
|
|
IN AX,DX 16
|
|
IN AX,DX (PM, CPL <= IOPL) 6
|
|
IN AX,DX (VM) 19
|
|
IN EAX,DX 16
|
|
IN EAX,DX (PM, CPL <= IOPL) 6
|
|
IN EAX,DX (VM) 19
|
|
INC r/m8 1/3
|
|
INC r/m16 1/3
|
|
INC r/m32 1/3
|
|
INC r16 1
|
|
INC r32 1
|
|
INSB 20
|
|
INSW 20
|
|
INSD 20
|
|
INT 3 14
|
|
INT 3 (PM, same privilege) 49
|
|
INT 3 (PM, more privelege) 77
|
|
INT imm8 14
|
|
INT imm8 (PM, same privilege) 49
|
|
INT imm8 (PM, more privelege) 77
|
|
INTO 1 or 15
|
|
INTO (PM, same privilege) 1 or 49
|
|
INTO (PM, more privelege) 1 or 77
|
|
INVD 4
|
|
INVLPG m 4
|
|
IRET 14
|
|
IRET (PM, to same privilege) 31
|
|
IRET (PM, to lesser privilege) 66
|
|
IRETD 14
|
|
IRETD (PM, to same privilege) 31
|
|
IRETD (PM, to lesser privilege) 66
|
|
Jcc rel8 1 or 4
|
|
Jcc rel16 1 or 4
|
|
Jcc rel32 1 or 4
|
|
JCXZ rel8 3 or 7
|
|
JECXZ rel8 3 or 7
|
|
JMP rel8 4
|
|
JMP rel16 4
|
|
JMP r/m16 6/8
|
|
JMP ptr16:16 9
|
|
JMP ptr16:16 (PM, direct segment) 26
|
|
JMP ptr16:16 (PM, via call gate, same pr37
|
|
JMP m16:16 11
|
|
JMP m16:16 (PM, direct segment) 30
|
|
JMP m16:16 (PM, via call gate, same priv39
|
|
JMP rel32 4
|
|
JMP r/m32 6/8
|
|
JMP ptr16:32 9
|
|
JMP ptr16:32 (PM, direct segment) 26
|
|
JMP ptr16:32 (PM, via call gate, same pr37
|
|
JMP m16:32 11
|
|
JMP m16:32 (PM, direct segment) 30
|
|
JMP m16:32 (PM, via call gate, same priv39
|
|
LAHF 2
|
|
LAR r16,r/m16 11/12
|
|
LAR r32,r/m32 11/12
|
|
LDS r16,m16:16 6
|
|
LDS r32,m16:32 6
|
|
LDS r16,m16:16 (PM) 19
|
|
LDS r32,m16:32 (PM) 19
|
|
LSS r16,m16:16 6
|
|
LSS r32,m16:32 6
|
|
LSS r16,m16:16 (PM) 19
|
|
LSS r32,m16:32 (PM) 19
|
|
LES r16,m16:16 6
|
|
LES r32,m16:32 6
|
|
LES r16,m16:16 (PM) 19
|
|
LES r32,m16:32 (PM) 19
|
|
LFS r16,m16:16 6
|
|
LFS r32,m16:32 6
|
|
LFS r16,m16:16 (PM) 19
|
|
LFS r32,m16:32 (PM) 19
|
|
LGS r16,m16:16 6
|
|
LGS r32,m16:32 6
|
|
LGS r16,m16:16 (PM) 19
|
|
LGS r32,m16:32 (PM) 19
|
|
LEA r16,m 2 (w/o index)/3(with index)
|
|
LEA r32,m 2 (w/o index)/3(with index)
|
|
LEAVE 3
|
|
LGDT m16&32 9
|
|
LIDT m16&32 9
|
|
LLDT r/m16 16/17
|
|
LMSW r/m16 5
|
|
LODSB 4
|
|
LODSW 4
|
|
LODSD 4
|
|
LOOP rel8 3 or 7
|
|
LOOPE rel8 3 or 7
|
|
LOOPNE rel8 3 or 7
|
|
LSL r16,r/m16 14/15
|
|
LSL r32,r/m32 14/15
|
|
LTR r/m16 16/17
|
|
MOV r/m8,r8 1/2
|
|
MOV r/m16,r16 1/2
|
|
MOV r/m32,r32 1/2
|
|
MOV r8,r/m8 1/2
|
|
MOV r16,r/m16 1/2
|
|
MOV r32,r/m32 1/2
|
|
MOV r/m16,sreg 1/2
|
|
MOV sreg,r/m16 2/3
|
|
MOV sreg,r/m16 (PM) 15/16
|
|
MOV AL,moffs8 2
|
|
MOV AX,moffs16 2
|
|
MOV EAX,moffs32 2
|
|
MOV moffs8,AL 1/2
|
|
MOV moffs16,AX 1/2
|
|
MOV moffs32,EAX 1/2
|
|
MOV r8,imm8 1
|
|
MOV r16,imm16 1
|
|
MOV r32,imm32 1
|
|
MOV r/m8,imm8 1/2
|
|
MOV r/m16,imm16 1/2
|
|
MOV r/m32,imm32 1/2
|
|
MOV CR0,r32 11
|
|
MOV CR2,r32 3
|
|
MOV CR3,r32 3
|
|
MOV r32,CRi 1 (if CR0)/3 (if CR2,CR3)
|
|
MOV r32,DR0-DR3 3
|
|
MOV r32,DR4-DR5 3
|
|
MOV r32,DR6-DR7 3
|
|
MOV DR0-DR3,r32 1
|
|
MOV DR4-DR5,r32 1
|
|
MOV DR6-DR7,r32 1
|
|
MOV r32,TR4-TR7 3
|
|
MOV r32,TR3 5
|
|
MOV TR3,r32 5
|
|
MOV TR4-TR7,r32 1
|
|
MOVSB 5
|
|
MOVSW 5
|
|
MOVSD 5
|
|
MOVSX r16,r/m8 1/3
|
|
MOVSX r32,r/m8 1/3
|
|
MOVSX r32,r/m16 1/3
|
|
MOVZX r16,r/m8 2/3
|
|
MOVZX r32,r/m8 2/3
|
|
MOVZX r32,r/m16 2/3
|
|
MUL r/m8 3/5
|
|
MUL r/m16 3/5
|
|
MUL r/m32 7/9
|
|
NEG r/m8 1/3
|
|
NEG r/m16 1/3
|
|
NEG r/m32 1/3
|
|
NOP 1
|
|
NOT r/m8 1/3
|
|
NOT r/m16 1/3
|
|
NOT r/m32 1/3
|
|
OR AL,imm8 1
|
|
OR AX,imm16 1
|
|
OR EAX,imm32 1
|
|
OR r/m8,imm8 1/3
|
|
OR r/m16,imm8 1/3
|
|
OR r/m32,imm8 1/3
|
|
OR r/m16,imm16 1/3
|
|
OR r/m32,imm32 1/3
|
|
OR r/m8,r8 1/3
|
|
OR r/m16,r16 1/3
|
|
OR r/m32,r32 1/3
|
|
OR r8,r/m8 1/3
|
|
OR r16,r/m16 1/3
|
|
OR r32,r/m32 1/3
|
|
OUT imm8,AL 18
|
|
OUT imm8,AL (PM, CPL <= IOPL) 4
|
|
OUT imm8,AL (VM) 17
|
|
OUT imm8,AX 18
|
|
OUT imm8,AX (PM, CPL <= IOPL) 4
|
|
OUT imm8,AX (VM) 17
|
|
OUT imm8,EAX 18
|
|
OUT imm8,EAX (PM, CPL <= IOPL) 4
|
|
OUT imm8,EAX (VM) 17
|
|
OUT DX,AL 18
|
|
OUT DX,AL (PM, CPL <= IOPL) 4
|
|
OUT DX,AL (VM) 17
|
|
OUT DX,AX 18
|
|
OUT DX,AX (PM, CPL <= IOPL) 4
|
|
OUT DX,AX (VM) 17
|
|
OUT DX,EAX 18
|
|
OUT DX,EAX (PM, CPL <= IOPL) 4
|
|
OUT DX,EAX (VM) 17
|
|
OUTSB 20
|
|
OUTSW 20
|
|
OUTSD 20
|
|
POP m16 5
|
|
POP m32 5
|
|
POP r16 3
|
|
POP r32 3
|
|
POP sreg 4
|
|
POP sreg (PM) 18
|
|
POPA 18
|
|
POPAD 18
|
|
POPF 4
|
|
POPF (PM) 4
|
|
POPF (VM) 4
|
|
POPFD 4
|
|
POPFD (PM) 4
|
|
POPFD (VM) 4
|
|
PUSH r/m16 2/4
|
|
PUSH r/m32 2/4
|
|
PUSH r16 2
|
|
PUSH r32 2
|
|
PUSH imm8 2
|
|
PUSH imm16 2
|
|
PUSH imm32 2
|
|
PUSH sreg 2
|
|
PUSHA 17
|
|
PUSHAD 17
|
|
PUSHF 2
|
|
PUSHF (PM) 2
|
|
PUSHF (VM) 2
|
|
PUSHFD 2
|
|
PUSHFD (PM) 2
|
|
PUSHFD (VM) 2
|
|
RCL r/m8,1 9/9
|
|
RCL r/m16,1 9/9
|
|
RCL r/m32,1 9/9
|
|
RCL r/m8,CL 9/9
|
|
RCL r/m16,CL 9/9
|
|
RCL r/m32,CL 9/9
|
|
RCL r/m8,imm8 9/9
|
|
RCL r/m16,imm8 9/9
|
|
RCL r/m32,imm8 9/9
|
|
RCR r/m8,1 9/9
|
|
RCR r/m16,1 9/9
|
|
RCR r/m32,1 9/9
|
|
RCR r/m8,CL 9/9
|
|
RCR r/m16,CL 9/9
|
|
RCR r/m32,CL 9/9
|
|
RCR r/m8,imm8 9/9
|
|
RCR r/m16,imm8 9/9
|
|
RCR r/m32,imm8 9/9
|
|
ROL r/m8,1 2/4
|
|
ROL r/m16,1 2/4
|
|
ROL r/m32,1 2/4
|
|
ROL r/m8,CL 3/5
|
|
ROL r/m16,CL 3/5
|
|
ROL r/m32,CL 3/5
|
|
ROL r/m8,imm8 2/4
|
|
ROL r/m16,imm8 2/4
|
|
ROL r/m32,imm8 2/4
|
|
ROR r/m8,1 2/4
|
|
ROR r/m16,1 2/4
|
|
ROR r/m32,1 2/4
|
|
ROR r/m8,CL 3/5
|
|
ROR r/m16,CL 3/5
|
|
ROR r/m32,CL 3/5
|
|
ROR r/m8,imm8 2/4
|
|
ROR r/m16,imm8 2/4
|
|
ROR r/m32,imm8 2/4
|
|
RET (near) 10
|
|
RET (far) 13
|
|
RET (PM, far, same PL) 26
|
|
RET (PM, far, different PL) 61
|
|
RET imm16 (near) 10
|
|
RET imm16 (far) 13
|
|
RET imm16 (PM, far, same PL) 26
|
|
RET imm16 (PM, far, different PL) 61
|
|
RSDC m80,sreg 10
|
|
RSLDT m80 10
|
|
RSM 76
|
|
RSTS m80 10
|
|
SAHF 2
|
|
SAL r/m8,1 2/4
|
|
SAL r/m16,1 2/4
|
|
SAL r/m32,1 2/4
|
|
SAL r/m8,CL 3/5
|
|
SAL r/m16,CL 3/5
|
|
SAL r/m32,CL 3/5
|
|
SAL r/m8,imm8 2/4
|
|
SAL r/m16,imm8 2/4
|
|
SAL r/m32,imm8 2/4
|
|
SAR r/m8,1 2/4
|
|
SAR r/m16,1 2/4
|
|
SAR r/m32,1 2/4
|
|
SAR r/m8,CL 3/5
|
|
SAR r/m16,CL 3/5
|
|
SAR r/m32,CL 3/5
|
|
SAR r/m8,imm8 2/4
|
|
SAR r/m16,imm8 2/4
|
|
SAR r/m32,imm8 2/4
|
|
SHL r/m8,1 1/3
|
|
SHL r/m16,1 1/3
|
|
SHL r/m32,1 1/3
|
|
SHL r/m8,CL 2/4
|
|
SHL r/m16,CL 2/4
|
|
SHL r/m32,CL 2/4
|
|
SHL r/m8,imm8 1/3
|
|
SHL r/m16,imm8 1/3
|
|
SHL r/m32,imm8 1/3
|
|
SHR r/m8,1 1/3
|
|
SHR r/m16,1 1/3
|
|
SHR r/m32,1 1/3
|
|
SHR r/m8,CL 2/4
|
|
SHR r/m16,CL 2/4
|
|
SHR r/m32,CL 2/4
|
|
SHR r/m8,imm8 1/3
|
|
SHR r/m16,imm8 1/3
|
|
SHR r/m32,imm8 1/3
|
|
SBB AL,imm8 1
|
|
SBB AX,imm16 1
|
|
SBB EAX,imm32 1
|
|
SBB r/m8,imm8 1/3
|
|
SBB r/m16,imm8 1/3
|
|
SBB r/m32,imm8 1/3
|
|
SBB r/m16,imm16 1/3
|
|
SBB r/m32,imm32 1/3
|
|
SBB r/m8,r8 1/3
|
|
SBB r/m16,r16 1/3
|
|
SBB r/m32,r32 1/3
|
|
SBB r8,r/m8 1/3
|
|
SBB r16,r/m16 1/3
|
|
SBB r32,r/m32 1/3
|
|
SCASB 5
|
|
SCASW 5
|
|
SCASD 5
|
|
SETALC n/a
|
|
SETcc r/m8 2/2
|
|
SGDT m16&32 6
|
|
SIDT m16&32 6
|
|
SHLD r/m16,r16,imm8 1/3
|
|
SHLD r/m32,r32,imm8 1/3
|
|
SHLD r/m16,r16,CL 3/5
|
|
SHLD r/m32,r32,CL 3/5
|
|
SHRD r/m16,r16,imm8 1/3
|
|
SHRD r/m32,r32,imm8 1/3
|
|
SHRD r/m16,r16,CL 3/5
|
|
SHRD r/m32,r32,CL 3/5
|
|
SLDT r/m16 1/2
|
|
SLDT r/m32 1/2
|
|
SMINT 24
|
|
SMSW r/m16 1/2
|
|
STC 1
|
|
STD 1
|
|
STI 7
|
|
STOSB 3
|
|
STOSW 3
|
|
STOSD 3
|
|
STR r/m16 1/2
|
|
SUB AL,imm8 1
|
|
SUB AX,imm16 1
|
|
SUB EAX,imm32 1
|
|
SUB r/m8,imm8 1/3
|
|
SUB r/m16,imm8 1/3
|
|
SUB r/m32,imm8 1/3
|
|
SUB r/m16,imm16 1/3
|
|
SUB r/m32,imm32 1/3
|
|
SUB r/m8,r8 1/3
|
|
SUB r/m16,r16 1/3
|
|
SUB r/m32,r32 1/3
|
|
SUB r8,r/m8 1/3
|
|
SUB r16,r/m16 1/3
|
|
SUB r32,r/m32 1/3
|
|
SVDC sreg,m80 18
|
|
SVLDT m80 18
|
|
SVTS m80 18
|
|
TEST AL,imm8 1
|
|
TEST AX,imm16 1
|
|
TEST EAX,imm32 1
|
|
TEST r/m8,imm8 1/3
|
|
TEST r/m16,imm16 1/3
|
|
TEST r/m32,imm32 1/3
|
|
TEST r/m8,r8 1/3
|
|
TEST r/m16,r16 1/3
|
|
TEST r/m32,r32 1/3
|
|
UMOV r8,r/m8 n/a
|
|
UMOV r16,r/m16 n/a
|
|
UMOV r32,r/m32 n/a
|
|
UMOV r/m8,r8 n/a
|
|
UMOV r/m16,r16 n/a
|
|
UMOV r/m32,r32 n/a
|
|
VERR r/m16 9/10
|
|
VERW r/m16 9/10
|
|
WAIT 5
|
|
WBINVD 4
|
|
XADD r/m8,r8 3/6
|
|
XADD r/m16,r16 3/6
|
|
XADD r/m32,r32 3/6
|
|
XCHG AX,r16 3
|
|
XCHG EAX,r32 3
|
|
XCHG r/m8,r8 3/4
|
|
XCHG r/m16,r16 3/4
|
|
XCHG r/m32,r32 3/4
|
|
XLAT 3
|
|
XOR AL,imm8 1
|
|
XOR AX,imm16 1
|
|
XOR EAX,imm32 1
|
|
XOR r/m8,imm8 1/3
|
|
XOR r/m16,imm8 1/3
|
|
XOR r/m32,imm8 1/3
|
|
XOR r/m16,imm16 1/3
|
|
XOR r/m32,imm32 1/3
|
|
XOR r/m8,r8 1/3
|
|
XOR r/m16,r16 1/3
|
|
XOR r/m32,r32 1/3
|
|
XOR r8,r/m8 1/3
|
|
XOR r16,r/m16 1/3
|
|
XOR r32,r/m32 1/3
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y7 - Vendor Instruction Time for Intel Pentium Processor
|
|
|
|
AAA 3
|
|
AAD 10
|
|
AAD imm8 n/a
|
|
AAM 18
|
|
AAM imm8 n/a
|
|
AAS 3
|
|
ADC AL,imm8 1
|
|
ADC AX,imm16 1
|
|
ADC EAX,imm32 1
|
|
ADC r/m8,imm8 1/3
|
|
ADC r/m16,imm8 1/3
|
|
ADC r/m32,imm8 1/3
|
|
ADC r/m16,imm16 1/3
|
|
ADC r/m32,imm32 1/3
|
|
ADC r/m8,r8 1/3
|
|
ADC r/m16,r16 1/3
|
|
ADC r/m32,r32 1/3
|
|
ADC r8,r/m8 1/2
|
|
ADC r16,r/m16 1/2
|
|
ADC r32,r/m32 1/2
|
|
ADD AL,imm8 1
|
|
ADD AX,imm16 1
|
|
ADD EAX,imm32 1
|
|
ADD r/m8,imm8 1/3
|
|
ADD r/m16,imm8 1/3
|
|
ADD r/m32,imm8 1/3
|
|
ADD r/m16,imm16 1/3
|
|
ADD r/m32,imm32 1/3
|
|
ADD r/m8,r8 1/3
|
|
ADD r/m16,r16 1/3
|
|
ADD r/m32,r32 1/3
|
|
ADD r8,r/m8 1/2
|
|
ADD r16,r/m16 1/2
|
|
ADD r32,r/m32 1/2
|
|
AND AL,imm8 1
|
|
AND AX,imm16 1
|
|
AND EAX,imm32 1
|
|
AND r/m8,imm8 1/3
|
|
AND r/m16,imm8 1/3
|
|
AND r/m32,imm8 1/3
|
|
AND r/m16,imm16 1/3
|
|
AND r/m32,imm32 1/3
|
|
AND r/m8,r8 1/3
|
|
AND r/m16,r16 1/3
|
|
AND r/m32,r32 1/3
|
|
AND r8,r/m8 1/2
|
|
AND r16,r/m16 1/2
|
|
AND r32,r/m32 1/2
|
|
ARPL r/m16,r16 f
|
|
BOUND r16,m16&16 8/int+32
|
|
BOUND r32,m32&32 f
|
|
BSF r16,r/m16 6-34/6-35
|
|
BSF r32,r/m32 6-42/6-43
|
|
BSR r16,r/m16 7-39/7-40
|
|
BSR r32,r/m32 7-71/7-72
|
|
BSWAP r32 1
|
|
BT r/m16,r16 4/9
|
|
BT r/m32,r32 4/9
|
|
BT r/m16,imm8 4
|
|
BT r/m16,imm8 4
|
|
BTC r/m16,r16 7/13
|
|
BTC r/m32,r32 7/13
|
|
BTC r/m16,imm8 7/8
|
|
BTC r/m16,imm8 7/8
|
|
BTR r/m16,r16 7/13
|
|
BTR r/m32,r32 7/13
|
|
BTR r/m16,imm8 7/8
|
|
BTR r/m16,imm8 7/8
|
|
BTS r/m16,r16 7/13
|
|
BTS r/m32,r32 7/13
|
|
BTS r/m16,imm8 7/8
|
|
BTS r/m16,imm8 7/8
|
|
CALL rel16 1
|
|
CALL r/m16 2
|
|
CALL ptr16:16 4
|
|
CALL ptr16:16 (PM, direct segment) f
|
|
CALL ptr16:16 (PM, via call gate, same p22
|
|
CALL ptr16:16 (PM, via call gate, more p44
|
|
CALL ptr16:16 (PM, via call gate, more p45+2*x
|
|
CALL m16:16 5
|
|
CALL m16:16 (PM, direct segment) f
|
|
CALL m16:16 (PM, via gate, same priveleg22
|
|
CALL m16:16 (PM, via gate, more priveleg44
|
|
CALL m16:16 (PM, via gate, more priveleg45+2*x
|
|
CALL rel32 1
|
|
CALL r/m32 2
|
|
CALL ptr16:32 4
|
|
CALL ptr16:32 (PM, direct segment) f
|
|
CALL ptr16:32 (PM, via gate, same privel22
|
|
CALL ptr16:32 (PM, via gate, more privel44
|
|
CALL ptr16:32 (PM, via gate, more privel45+2*x
|
|
CALL m16:32 5
|
|
CALL m16:32 (PM, direct segment) f
|
|
CALL m16:32 (PM, via gate, same priveleg22
|
|
CALL m16:32 (PM, via gate, more priveleg44
|
|
CALL m16:32 (PM, via gate, more priveleg45+2*x
|
|
CBW 3
|
|
CWDE 3
|
|
CLC 2
|
|
CLD 2
|
|
CLI 7
|
|
CLTS 10
|
|
CMC 2
|
|
CMOVcc r16,r/m16 f
|
|
CMOVcc r32,r/m32 f
|
|
CMP AL,imm8 1
|
|
CMP AX,imm16 1
|
|
CMP EAX,imm32 1
|
|
CMP r/m8,imm8 1/2
|
|
CMP r/m16,imm8 1/2
|
|
CMP r/m32,imm8 1/2
|
|
CMP r/m16,imm16 1/2
|
|
CMP r/m32,imm32 1/2
|
|
CMP r/m8,r8 1/2
|
|
CMP r/m16,r16 1/2
|
|
CMP r/m32,r32 1/2
|
|
CMP r8,r/m8 1/2
|
|
CMP r16,r/m16 1/2
|
|
CMP r32,r/m32 1/2
|
|
CMPSB 5
|
|
CMPSW 5
|
|
CMPSD 5
|
|
CMPXCHG r/m8,r8 6
|
|
CMPXCHG r/m16,r16 6
|
|
CMPXCHG r/m32,r32 6
|
|
CMPXCHG8B r/m32 10
|
|
CPUID 14
|
|
CWD 2
|
|
CDQ 2
|
|
DAA 3
|
|
DAS 3
|
|
DEC r/m8 1/3
|
|
DEC r/m16 1/3
|
|
DEC r/m32 1/3
|
|
DEC r16 1
|
|
DEC r32 1
|
|
DIV r/m8 17
|
|
DIV r/m16 25
|
|
DIV r/m32 41
|
|
ESC imm4,r/m f
|
|
ENTER imm16,0 11
|
|
ENTER imm16,1 15
|
|
ENTER imm16,imm8 15+2*n
|
|
HLT imfinity
|
|
IBTS r/m16,AX,CL,r16 None
|
|
IBTS r/m32,EAX,CL,r32 f
|
|
IDIV r/m8 22
|
|
IDIV r/m16 30
|
|
IDIV r/m32 46
|
|
IMUL r/m8 11
|
|
IMUL r/m16 11
|
|
IMUL r/m32 10
|
|
IMUL r16,r/m16 10
|
|
IMUL r32,r/m32 10
|
|
IMUL r16,imm8 10
|
|
IMUL r32,imm8 10
|
|
IMUL r16,imm16 10
|
|
IMUL r32,imm32 10
|
|
IMUL r16,r/m16,imm8 10
|
|
IMUL r32,r/m32,imm8 10
|
|
IMUL r16,r/m16,imm16 10
|
|
IMUL r32,r/m32,imm32 10
|
|
IN AL,imm8 7
|
|
IN AL,imm8 (PM, CPL <= IOPL) 4/21
|
|
IN AL,imm8 (VM) 19
|
|
IN AX,imm8 7
|
|
IN AX,imm8 (PM, CPL <= IOPL) 4/21
|
|
IN AX,imm8 (VM) 19
|
|
IN EAX,imm8 7
|
|
IN EAX,imm8 (PM, CPL <= IOPL) 4/21
|
|
IN EAX,imm8 (VM) 19
|
|
IN AL,DX 7
|
|
IN AL,DX (PM, CPL <= IOPL) 4/21
|
|
IN AL,DX (VM) 19
|
|
IN AX,DX 7
|
|
IN AX,DX (PM, CPL <= IOPL) 4/21
|
|
IN AX,DX (VM) 19
|
|
IN EAX,DX 7
|
|
IN EAX,DX (PM, CPL <= IOPL) 4/21
|
|
IN EAX,DX (VM) 19
|
|
INC r/m8 1/3
|
|
INC r/m16 1/3
|
|
INC r/m32 1/3
|
|
INC r16 1
|
|
INC r32 1
|
|
INSB 9
|
|
INSW 9
|
|
INSD 9
|
|
INT 3 13
|
|
INT 3 (PM, same privilege) 27
|
|
INT 3 (PM, more privelege) 44
|
|
INT imm8 16
|
|
INT imm8 (PM, same privilege) 31
|
|
INT imm8 (PM, more privelege) 48
|
|
INTO 4/13
|
|
INTO (PM, same privilege) 4/27
|
|
INTO (PM, more privelege) 4/44
|
|
INVD 15
|
|
INVLPG m 25
|
|
IRET 10
|
|
IRET (PM, to same privilege) 10
|
|
IRET (PM, to lesser privilege) 27
|
|
IRETD 10
|
|
IRETD (PM, to same privilege) 10
|
|
IRETD (PM, to lesser privilege) 27
|
|
Jcc rel8 1
|
|
Jcc rel16 1
|
|
Jcc rel32 1
|
|
JCXZ rel8 6,5
|
|
JECXZ rel8 6,5
|
|
JMP rel8 1
|
|
JMP rel16 1
|
|
JMP r/m16 2
|
|
JMP ptr16:16 3
|
|
JMP ptr16:16 (PM, direct segment) 3
|
|
JMP ptr16:16 (PM, via call gate, same pr18
|
|
JMP m16:16 4
|
|
JMP m16:16 (PM, direct segment) 4
|
|
JMP m16:16 (PM, via call gate, same priv18
|
|
JMP rel32 1
|
|
JMP r/m32 2
|
|
JMP ptr16:32 3
|
|
JMP ptr16:32 (PM, direct segment) 3
|
|
JMP ptr16:32 (PM, via call gate, same pr18
|
|
JMP m16:32 4
|
|
JMP m16:32 (PM, direct segment) 4
|
|
JMP m16:32 (PM, via call gate, same priv18
|
|
LAHF 2
|
|
LAR r16,r/m16 8
|
|
LAR r32,r/m32 8
|
|
LDS r16,m16:16 4
|
|
LDS r32,m16:32 4
|
|
LDS r16,m16:16 (PM) f
|
|
LDS r32,m16:32 (PM) f
|
|
LSS r16,m16:16 4
|
|
LSS r32,m16:32 4
|
|
LSS r16,m16:16 (PM) 8
|
|
LSS r32,m16:32 (PM) 8
|
|
LES r16,m16:16 4
|
|
LES r32,m16:32 4
|
|
LES r16,m16:16 (PM) f
|
|
LES r32,m16:32 (PM) f
|
|
LFS r16,m16:16 4
|
|
LFS r32,m16:32 4
|
|
LFS r16,m16:16 (PM) f
|
|
LFS r32,m16:32 (PM) f
|
|
LGS r16,m16:16 4
|
|
LGS r32,m16:32 4
|
|
LGS r16,m16:16 (PM) f
|
|
LGS r32,m16:32 (PM) f
|
|
LEA r16,m 1
|
|
LEA r32,m 1
|
|
LEAVE 3
|
|
LGDT m16&32 6
|
|
LIDT m16&32 6
|
|
LLDT r/m16 9
|
|
LMSW r/m16 8
|
|
LOADALL f
|
|
LODSB 2
|
|
LODSW 2
|
|
LODSD 2
|
|
LOOP rel8 5/6
|
|
LOOPE rel8 7/8
|
|
LOOPNE rel8 7/8
|
|
LSL r16,r/m16 8
|
|
LSL r32,r/m32 8
|
|
LTR r/m16 10
|
|
MOV r/m8,r8 1
|
|
MOV r/m16,r16 1
|
|
MOV r/m32,r32 1
|
|
MOV r8,r/m8 1
|
|
MOV r16,r/m16 1
|
|
MOV r32,r/m32 1
|
|
MOV r/m16,sreg 1
|
|
MOV sreg,r/m16 2/3
|
|
MOV sreg,r/m16 (PM) f
|
|
MOV AL,moffs8 1
|
|
MOV AX,moffs16 1
|
|
MOV EAX,moffs32 1
|
|
MOV moffs8,AL 1
|
|
MOV moffs16,AX 1
|
|
MOV moffs32,EAX 1
|
|
MOV r8,imm8 1
|
|
MOV r16,imm16 1
|
|
MOV r32,imm32 1
|
|
MOV r/m8,imm8 1
|
|
MOV r/m16,imm16 1
|
|
MOV r/m32,imm32 1
|
|
MOV CR0,r32 22
|
|
MOV CR2,r32 12/21,46
|
|
MOV CR3,r32 12/21,46
|
|
MOV CR4,r32 14
|
|
MOV r32,CRi 4
|
|
MOV r32,DR0-DR3 11
|
|
MOV r32,DR4-DR5 11
|
|
MOV r32,DR6-DR7 11
|
|
MOV DR0-DR3,r32 11
|
|
MOV DR4-DR5,r32 12
|
|
MOV DR6-DR7,r32 11
|
|
MOV r32,TR4-TR7 None
|
|
MOV r32,TR3 None
|
|
MOV TR3,r32 None
|
|
MOV TR4-TR7,r32 None
|
|
MOVSB 4
|
|
MOVSW 4
|
|
MOVSD 4
|
|
MOVSX r16,r/m8 3
|
|
MOVSX r32,r/m8 3
|
|
MOVSX r32,r/m16 3
|
|
MOVZX r16,r/m8 3
|
|
MOVZX r32,r/m8 3
|
|
MOVZX r32,r/m16 3
|
|
MUL r/m8 11
|
|
MUL r/m16 11
|
|
MUL r/m32 10
|
|
NEG r/m8 1/3
|
|
NEG r/m16 1/3
|
|
NEG r/m32 1/3
|
|
NOP 1
|
|
NOT r/m8 1/3
|
|
NOT r/m16 1/3
|
|
NOT r/m32 1/3
|
|
OR AL,imm8 1
|
|
OR AX,imm16 1
|
|
OR EAX,imm32 1
|
|
OR r/m8,imm8 1/3
|
|
OR r/m16,imm8 1/3
|
|
OR r/m32,imm8 1/3
|
|
OR r/m16,imm16 1/3
|
|
OR r/m32,imm32 1/3
|
|
OR r/m8,r8 1/3
|
|
OR r/m16,r16 1/3
|
|
OR r/m32,r32 1/3
|
|
OR r8,r/m8 1/2
|
|
OR r16,r/m16 1/2
|
|
OR r32,r/m32 1/2
|
|
OUT imm8,AL 12
|
|
OUT imm8,AL (PM, CPL <= IOPL) 9/25
|
|
OUT imm8,AL (VM) 24
|
|
OUT imm8,AX 12
|
|
OUT imm8,AX (PM, CPL <= IOPL) 9/25
|
|
OUT imm8,AX (VM) 24
|
|
OUT imm8,EAX 12
|
|
OUT imm8,EAX (PM, CPL <= IOPL) 9/25
|
|
OUT imm8,EAX (VM) 24
|
|
OUT DX,AL 12
|
|
OUT DX,AL (PM, CPL <= IOPL) 9/25
|
|
OUT DX,AL (VM) 24
|
|
OUT DX,AX 12
|
|
OUT DX,AX (PM, CPL <= IOPL) 9/25
|
|
OUT DX,AX (VM) 24
|
|
OUT DX,EAX 12
|
|
OUT DX,EAX (PM, CPL <= IOPL) 9/25
|
|
OUT DX,EAX (VM) 24
|
|
OUTSB 13
|
|
OUTSW 13
|
|
OUTSD 13
|
|
POP m16 3
|
|
POP m32 3
|
|
POP r16 1
|
|
POP r32 1
|
|
POP sreg 3
|
|
POP sreg (PM) f
|
|
POPA 5
|
|
POPAD 5
|
|
POPF f
|
|
POPF (PM) 4
|
|
POPF (VM) 6
|
|
POPFD f
|
|
POPFD (PM) 4
|
|
POPFD (VM) 6
|
|
PUSH r/m16 2
|
|
PUSH r/m32 2
|
|
PUSH r16 1
|
|
PUSH r32 1
|
|
PUSH imm8 1
|
|
PUSH imm16 1
|
|
PUSH imm32 1
|
|
PUSH sreg 1
|
|
PUSHA 5
|
|
PUSHAD 5
|
|
PUSHF f
|
|
PUSHF (PM) 3
|
|
PUSHF (VM) 4
|
|
PUSHFD f
|
|
PUSHFD (PM) 3
|
|
PUSHFD (VM) 4
|
|
RCL r/m8,1 1/3
|
|
RCL r/m16,1 1/3
|
|
RCL r/m32,1 1/3
|
|
RCL r/m8,CL 7-24/9-26
|
|
RCL r/m16,CL 7-24/9-26
|
|
RCL r/m32,CL 7-24/9-26
|
|
RCL r/m8,imm8 8-25/10-27
|
|
RCL r/m16,imm8 8-25/10-27
|
|
RCL r/m32,imm8 8-25/10-27
|
|
RCR r/m8,1 1/3
|
|
RCR r/m16,1 1/3
|
|
RCR r/m32,1 1/3
|
|
RCR r/m8,CL 7-24/9-26
|
|
RCR r/m16,CL 7-24/9-26
|
|
RCR r/m32,CL 7-24/9-26
|
|
RCR r/m8,imm8 8-25/10-27
|
|
RCR r/m16,imm8 8-25/10-27
|
|
RCR r/m32,imm8 8-25/10-27
|
|
ROL r/m8,1 1/3
|
|
ROL r/m16,1 1/3
|
|
ROL r/m32,1 1/3
|
|
ROL r/m8,CL 4
|
|
ROL r/m16,CL 4
|
|
ROL r/m32,CL 4
|
|
ROL r/m8,imm8 1/3
|
|
ROL r/m16,imm8 1/3
|
|
ROL r/m32,imm8 1/3
|
|
ROR r/m8,1 1/3
|
|
ROR r/m16,1 1/3
|
|
ROR r/m32,1 1/3
|
|
ROR r/m8,CL 4
|
|
ROR r/m16,CL 4
|
|
ROR r/m32,CL 4
|
|
ROR r/m8,imm8 1/3
|
|
ROR r/m16,imm8 1/3
|
|
ROR r/m32,imm8 1/3
|
|
RDMSR 20-24
|
|
RDTSC f
|
|
RET (near) 3
|
|
RET (far) 4
|
|
RET (PM, far, same PL) 4
|
|
RET (PM, far, different PL) 23
|
|
RET imm16 (near) 4
|
|
RET imm16 (far) 4
|
|
RET imm16 (PM, far, same PL) 4
|
|
RET imm16 (PM, far, different PL) 23
|
|
RSDC m80,sreg f
|
|
RSLDT m80 f
|
|
RSM 83
|
|
RSTS m80 f
|
|
SAHF 2
|
|
SAL r/m8,1 1/3
|
|
SAL r/m16,1 1/3
|
|
SAL r/m32,1 1/3
|
|
SAL r/m8,CL 4
|
|
SAL r/m16,CL 4
|
|
SAL r/m32,CL 4
|
|
SAL r/m8,imm8 1/3
|
|
SAL r/m16,imm8 1/3
|
|
SAL r/m32,imm8 1/3
|
|
SAR r/m8,1 1/3
|
|
SAR r/m16,1 1/3
|
|
SAR r/m32,1 1/3
|
|
SAR r/m8,CL 4
|
|
SAR r/m16,CL 4
|
|
SAR r/m32,CL 4
|
|
SAR r/m8,imm8 1/3
|
|
SAR r/m16,imm8 1/3
|
|
SAR r/m32,imm8 1/3
|
|
SHL r/m8,1 1/3
|
|
SHL r/m16,1 1/3
|
|
SHL r/m32,1 1/3
|
|
SHL r/m8,CL 4
|
|
SHL r/m16,CL 4
|
|
SHL r/m32,CL 4
|
|
SHL r/m8,imm8 1/3
|
|
SHL r/m16,imm8 1/3
|
|
SHL r/m32,imm8 1/3
|
|
SHR r/m8,1 1/3
|
|
SHR r/m16,1 1/3
|
|
SHR r/m32,1 1/3
|
|
SHR r/m8,CL 4
|
|
SHR r/m16,CL 4
|
|
SHR r/m32,CL 4
|
|
SHR r/m8,imm8 1/3
|
|
SHR r/m16,imm8 1/3
|
|
SHR r/m32,imm8 1/3
|
|
SBB AL,imm8 1
|
|
SBB AX,imm16 1
|
|
SBB EAX,imm32 1
|
|
SBB r/m8,imm8 1/3
|
|
SBB r/m16,imm8 1/3
|
|
SBB r/m32,imm8 1/3
|
|
SBB r/m16,imm16 1/3
|
|
SBB r/m32,imm32 1/3
|
|
SBB r/m8,r8 1/3
|
|
SBB r/m16,r16 1/3
|
|
SBB r/m32,r32 1/3
|
|
SBB r8,r/m8 1/2
|
|
SBB r16,r/m16 1/2
|
|
SBB r32,r/m32 1/2
|
|
SCASB 4
|
|
SCASW 4
|
|
SCASD 4
|
|
SETALC f
|
|
SETcc r/m8 1/2
|
|
SGDT m16&32 4
|
|
SIDT m16&32 4
|
|
SHLD r/m16,r16,imm8 4
|
|
SHLD r/m32,r32,imm8 4
|
|
SHLD r/m16,r16,CL 4/5
|
|
SHLD r/m32,r32,CL 4/5
|
|
SHRD r/m16,r16,imm8 4
|
|
SHRD r/m32,r32,imm8 4
|
|
SHRD r/m16,r16,CL 4/5
|
|
SHRD r/m32,r32,CL 4/5
|
|
SLDT r/m16 2
|
|
SLDT r/m32 f
|
|
SMINT f
|
|
SMSW r/m16 4
|
|
STC 2
|
|
STD 2
|
|
STI 7
|
|
STOSB 3
|
|
STOSW 3
|
|
STOSD 3
|
|
STR r/m16 2
|
|
SUB AL,imm8 1
|
|
SUB AX,imm16 1
|
|
SUB EAX,imm32 1
|
|
SUB r/m8,imm8 1/3
|
|
SUB r/m16,imm8 1/3
|
|
SUB r/m32,imm8 1/3
|
|
SUB r/m16,imm16 1/3
|
|
SUB r/m32,imm32 1/3
|
|
SUB r/m8,r8 1/3
|
|
SUB r/m16,r16 1/3
|
|
SUB r/m32,r32 1/3
|
|
SUB r8,r/m8 1/2
|
|
SUB r16,r/m16 1/2
|
|
SUB r32,r/m32 1/2
|
|
SVDC sreg,m80 f
|
|
SVLDT m80 f
|
|
SVTS m80 f
|
|
TEST AL,imm8 1
|
|
TEST AX,imm16 1
|
|
TEST EAX,imm32 1
|
|
TEST r/m8,imm8 1/2
|
|
TEST r/m16,imm16 1/2
|
|
TEST r/m32,imm32 1/2
|
|
TEST r/m8,r8 1/2
|
|
TEST r/m16,r16 1/2
|
|
TEST r/m32,r32 1/2
|
|
UMOV r8,r/m8 f
|
|
UMOV r16,r/m16 f
|
|
UMOV r32,r/m32 f
|
|
UMOV r/m8,r8 f
|
|
UMOV r/m16,r16 f
|
|
UMOV r/m32,r32 f
|
|
VERR r/m16 7
|
|
VERW r/m16 7
|
|
WAIT 1
|
|
WBINVD 2000+
|
|
WRMSR 30-45
|
|
XADD r/m8,r8 3/4
|
|
XADD r/m16,r16 3/4
|
|
XADD r/m32,r32 3/4
|
|
XCHG AX,r16 2
|
|
XCHG EAX,r32 2
|
|
XCHG r/m8,r8 3
|
|
XCHG r/m16,r16 3
|
|
XCHG r/m32,r32 3
|
|
XLAT 4
|
|
XOR AL,imm8 1
|
|
XOR AX,imm16 1
|
|
XOR EAX,imm32 1
|
|
XOR r/m8,imm8 1/3
|
|
XOR r/m16,imm8 1/3
|
|
XOR r/m32,imm8 1/3
|
|
XOR r/m16,imm16 1/3
|
|
XOR r/m32,imm32 1/3
|
|
XOR r/m8,r8 1/3
|
|
XOR r/m16,r16 1/3
|
|
XOR r/m32,r32 1/3
|
|
XOR r8,r/m8 1/2
|
|
XOR r16,r/m16 1/2
|
|
XOR r32,r/m32 1/2
|
|
(END)
|
|
|
|
----------------------------------------------------------
|
|
APPENDIX Y8 - Vendor Instruction Time for Cyrix Cx6x86 (M1) CPU
|
|
|
|
AAA 7
|
|
AAD 7
|
|
AAD imm8 7
|
|
AAM 13-21
|
|
AAM imm8 13-21??
|
|
AAS 7
|
|
ADC AL,imm8 1
|
|
ADC AX,imm16 1
|
|
ADC EAX,imm32 1
|
|
ADC r/m8,imm8 1
|
|
ADC r/m16,imm8 1
|
|
ADC r/m32,imm8 1
|
|
ADC r/m16,imm16 1
|
|
ADC r/m32,imm32 1
|
|
ADC r/m8,r8 1
|
|
ADC r/m16,r16 1
|
|
ADC r/m32,r32 1
|
|
ADC r8,r/m8 1
|
|
ADC r16,r/m16 1
|
|
ADC r32,r/m32 1
|
|
ADD AL,imm8 1
|
|
ADD AX,imm16 1
|
|
ADD EAX,imm32 1
|
|
ADD r/m8,imm8 1
|
|
ADD r/m16,imm8 1
|
|
ADD r/m32,imm8 1
|
|
ADD r/m16,imm16 1
|
|
ADD r/m32,imm32 1
|
|
ADD r/m8,r8 1
|
|
ADD r/m16,r16 1
|
|
ADD r/m32,r32 1
|
|
ADD r8,r/m8 1
|
|
ADD r16,r/m16 1
|
|
ADD r32,r/m32 1
|
|
AND AL,imm8 1
|
|
AND AX,imm16 1
|
|
AND EAX,imm32 1
|
|
AND r/m8,imm8 1
|
|
AND r/m16,imm8 1
|
|
AND r/m32,imm8 1
|
|
AND r/m16,imm16 1
|
|
AND r/m32,imm32 1
|
|
AND r/m8,r8 1
|
|
AND r/m16,r16 1
|
|
AND r/m32,r32 1
|
|
AND r8,r/m8 1
|
|
AND r16,r/m16 1
|
|
AND r32,r/m32 1
|
|
ARPL r/m16,r16 9
|
|
BOUND r16,m16&16 11 or 20
|
|
BOUND r32,m32&32 11 or 20
|
|
BSF r16,r/m16 3
|
|
BSF r32,r/m32 3
|
|
BSR r16,r/m16 3
|
|
BSR r32,r/m32 3
|
|
BSWAP r32 4
|
|
BT r/m16,r16 5/6
|
|
BT r/m32,r32 5/6
|
|
BT r/m16,imm8 2
|
|
BT r/m16,imm8 2
|
|
BTC r/m16,r16 5/6
|
|
BTC r/m32,r32 5/6
|
|
BTC r/m16,imm8 3
|
|
BTC r/m16,imm8 3
|
|
BTR r/m16,r16 5/6
|
|
BTR r/m32,r32 5/6
|
|
BTR r/m16,imm8 3
|
|
BTR r/m16,imm8 3
|
|
BTS r/m16,r16 5/6
|
|
BTS r/m32,r32 5/6
|
|
BTS r/m16,imm8 3
|
|
BTS r/m16,imm8 3
|
|
CALL rel16 1
|
|
CALL r/m16 1/3
|
|
CALL ptr16:16 3
|
|
CALL ptr16:16 (PM, direct segment) 4
|
|
CALL ptr16:16 (PM, via call gate, same p15
|
|
CALL ptr16:16 (PM, via call gate, more p26
|
|
CALL ptr16:16 (PM, via call gate, more p35+2*param
|
|
CALL m16:16 5
|
|
CALL m16:16 (PM, direct segment) 8
|
|
CALL m16:16 (PM, via gate, same priveleg20
|
|
CALL m16:16 (PM, via gate, more priveleg31
|
|
CALL m16:16 (PM, via gate, more priveleg40+2*param
|
|
CALL rel32 1
|
|
CALL r/m32 1/3
|
|
CALL ptr16:32 3
|
|
CALL ptr16:32 (PM, direct segment) 4
|
|
CALL ptr16:32 (PM, via gate, same privel15
|
|
CALL ptr16:32 (PM, via gate, more privel26
|
|
CALL ptr16:32 (PM, via gate, more privel35+2*param
|
|
CALL m16:32 5
|
|
CALL m16:32 (PM, direct segment) 8
|
|
CALL m16:32 (PM, via gate, same priveleg20
|
|
CALL m16:32 (PM, via gate, more priveleg31
|
|
CALL m16:32 (PM, via gate, more priveleg40+2*param
|
|
CBW 3
|
|
CWDE 2
|
|
CLC 1
|
|
CLD 7
|
|
CLI 7
|
|
CLTS 10
|
|
CMC 2
|
|
CMP AL,imm8 1
|
|
CMP AX,imm16 1
|
|
CMP EAX,imm32 1
|
|
CMP r/m8,imm8 1
|
|
CMP r/m16,imm8 1
|
|
CMP r/m32,imm8 1
|
|
CMP r/m16,imm16 1
|
|
CMP r/m32,imm32 1
|
|
CMP r/m8,r8 1
|
|
CMP r/m16,r16 1
|
|
CMP r/m32,r32 1
|
|
CMP r8,r/m8 1
|
|
CMP r16,r/m16 1
|
|
CMP r32,r/m32 1
|
|
CMPSB 5
|
|
CMPSW 5
|
|
CMPSD 5
|
|
CMPXCHG r/m8,r8 11
|
|
CMPXCHG r/m16,r16 11
|
|
CMPXCHG r/m32,r32 11
|
|
CPUID 12
|
|
CWD 2
|
|
CDQ 2
|
|
DAA 9
|
|
DAS 9
|
|
DEC r/m8 1
|
|
DEC r/m16 1
|
|
DEC r/m32 1
|
|
DEC r16 1
|
|
DEC r32 1
|
|
DIV r/m8 13-17
|
|
DIV r/m16 13-25
|
|
DIV r/m32 13-41
|
|
ENTER imm16,0 10
|
|
ENTER imm16,1 13
|
|
ENTER imm16,imm8 10+level*3
|
|
HLT 5
|
|
IDIV r/m8 16-20
|
|
IDIV r/m16 16-28
|
|
IDIV r/m32 17-45
|
|
IMUL r/m8 4
|
|
IMUL r/m16 4
|
|
IMUL r/m32 10
|
|
IMUL r16,r/m16 4
|
|
IMUL r32,r/m32 10
|
|
IMUL r16,imm8 ??
|
|
IMUL r32,imm8 ??
|
|
IMUL r16,imm16 ??
|
|
IMUL r32,imm32 ??
|
|
IMUL r16,r/m16,imm8 5
|
|
IMUL r32,r/m32,imm8 11
|
|
IMUL r16,r/m16,imm16 5
|
|
IMUL r32,r/m32,imm32 11
|
|
IN AL,imm8 14
|
|
IN AL,imm8 (PM, CPL <= IOPL) 14
|
|
IN AL,imm8 (VM) 28
|
|
IN AX,imm8 14
|
|
IN AX,imm8 (PM, CPL <= IOPL) 14
|
|
IN AX,imm8 (VM) 28
|
|
IN EAX,imm8 14
|
|
IN EAX,imm8 (PM, CPL <= IOPL) 14
|
|
IN EAX,imm8 (VM) 28
|
|
IN AL,DX 14
|
|
IN AL,DX (PM, CPL <= IOPL) 14
|
|
IN AL,DX (VM) 28
|
|
IN AX,DX 14
|
|
IN AX,DX (PM, CPL <= IOPL) 14
|
|
IN AX,DX (VM) 28
|
|
IN EAX,DX 14
|
|
IN EAX,DX (PM, CPL <= IOPL) 14
|
|
IN EAX,DX (VM) 28
|
|
INC r/m8 1
|
|
INC r/m16 1
|
|
INC r/m32 1
|
|
INC r16 1
|
|
INC r32 1
|
|
INSB 14
|
|
INSW 14
|
|
INSD 14
|
|
INT 3 9
|
|
INT 3 (PM, same privilege) 21
|
|
INT 3 (PM, more privelege) 32
|
|
INT imm8 9
|
|
INT imm8 (PM, same privilege) 21
|
|
INT imm8 (PM, more privelege) 32
|
|
INTO 6 or ??
|
|
INTO (PM, same privilege) 6 or 15+21
|
|
INTO (PM, more privelege) 6 or 15+32
|
|
INVD 12
|
|
INVLPG m 13
|
|
IRET 7
|
|
IRET (PM, to same privilege) 10
|
|
IRET (PM, to lesser privilege) 26
|
|
IRETD 7
|
|
IRETD (PM, to same privilege) 10
|
|
IRETD (PM, to lesser privilege) 26
|
|
Jcc rel8 1 or 1
|
|
Jcc rel16 1 or 1
|
|
Jcc rel32 1 or 1
|
|
JCXZ rel8 1 or 1
|
|
JECXZ rel8 1 or 1
|
|
JMP rel8 1
|
|
JMP rel16 1
|
|
JMP r/m16 1/3
|
|
JMP ptr16:16 1
|
|
JMP ptr16:16 (PM, direct segment) 4
|
|
JMP ptr16:16 (PM, via call gate, same pr14
|
|
JMP m16:16 5
|
|
JMP m16:16 (PM, direct segment) 7
|
|
JMP m16:16 (PM, via call gate, same priv17
|
|
JMP rel32 1
|
|
JMP r/m32 1/3
|
|
JMP ptr16:32 1
|
|
JMP ptr16:32 (PM, direct segment) 4
|
|
JMP ptr16:32 (PM, via call gate, same pr14
|
|
JMP m16:32 5
|
|
JMP m16:32 (PM, direct segment) 7
|
|
JMP m16:32 (PM, via call gate, same priv17
|
|
LAHF 2
|
|
LAR r16,r/m16 8
|
|
LAR r32,r/m32 8
|
|
LDS r16,m16:16 2
|
|
LDS r32,m16:32 2
|
|
LDS r16,m16:16 (PM) 4
|
|
LDS r32,m16:32 (PM) 4
|
|
LSS r16,m16:16 2
|
|
LSS r32,m16:32 2
|
|
LSS r16,m16:16 (PM) 4
|
|
LSS r32,m16:32 (PM) 4
|
|
LES r16,m16:16 2
|
|
LES r32,m16:32 2
|
|
LES r16,m16:16 (PM) 4
|
|
LES r32,m16:32 (PM) 4
|
|
LFS r16,m16:16 2
|
|
LFS r32,m16:32 2
|
|
LFS r16,m16:16 (PM) 4
|
|
LFS r32,m16:32 (PM) 4
|
|
LGS r16,m16:16 2
|
|
LGS r32,m16:32 2
|
|
LGS r16,m16:16 (PM) 4
|
|
LGS r32,m16:32 (PM) 4
|
|
LEA r16,m 1
|
|
LEA r32,m 1
|
|
LEAVE 4
|
|
LGDT m16&32 8
|
|
LIDT m16&32 8
|
|
LLDT r/m16 5
|
|
LMSW r/m16 13
|
|
LOADALL None
|
|
LODSB 3
|
|
LODSW 3
|
|
LODSD 3
|
|
LOOP rel8 1
|
|
LOOPE rel8 1
|
|
LOOPNE rel8 1
|
|
LSL r16,r/m16 8
|
|
LSL r32,r/m32 8
|
|
LTR r/m16 7
|
|
MOV r/m8,r8 1
|
|
MOV r/m16,r16 1
|
|
MOV r/m32,r32 1
|
|
MOV r8,r/m8 1
|
|
MOV r16,r/m16 1
|
|
MOV r32,r/m32 1
|
|
MOV r/m16,sreg 1
|
|
MOV sreg,r/m16 1
|
|
MOV sreg,r/m16 (PM) 1/3
|
|
MOV AL,moffs8 1
|
|
MOV AX,moffs16 1
|
|
MOV EAX,moffs32 1
|
|
MOV moffs8,AL 1
|
|
MOV moffs16,AX 1
|
|
MOV moffs32,EAX 1
|
|
MOV r8,imm8 1
|
|
MOV r16,imm16 1
|
|
MOV r32,imm32 1
|
|
MOV r/m8,imm8 1
|
|
MOV r/m16,imm16 1
|
|
MOV r/m32,imm32 1
|
|
MOV CR0,r32 20
|
|
MOV CR2,r32 5
|
|
MOV CR3,r32 5
|
|
MOV r32,CRi 6
|
|
MOV r32,DR0-DR3 14
|
|
MOV r32,DR4-DR5 14
|
|
MOV r32,DR6-DR7 14
|
|
MOV DR0-DR3,r32 16
|
|
MOV DR4-DR5,r32 16
|
|
MOV DR6-DR7,r32 16
|
|
MOV r32,TR4-TR7 6
|
|
MOV r32,TR3 5
|
|
MOV TR3,r32 10
|
|
MOV TR4-TR7,r32 10
|
|
MOVSB 4
|
|
MOVSW 4
|
|
MOVSD 4
|
|
MOVSX r16,r/m8 1
|
|
MOVSX r32,r/m8 1
|
|
MOVSX r32,r/m16 1
|
|
MOVZX r16,r/m8 1
|
|
MOVZX r32,r/m8 1
|
|
MOVZX r32,r/m16 1
|
|
MUL r/m8 4
|
|
MUL r/m16 4
|
|
MUL r/m32 10
|
|
NEG r/m8 1
|
|
NEG r/m16 1
|
|
NEG r/m32 1
|
|
NOP 1
|
|
NOT r/m8 1
|
|
NOT r/m16 1
|
|
NOT r/m32 1
|
|
OR AL,imm8 1
|
|
OR AX,imm16 1
|
|
OR EAX,imm32 1
|
|
OR r/m8,imm8 1
|
|
OR r/m16,imm8 1
|
|
OR r/m32,imm8 1
|
|
OR r/m16,imm16 1
|
|
OR r/m32,imm32 1
|
|
OR r/m8,r8 1
|
|
OR r/m16,r16 1
|
|
OR r/m32,r32 1
|
|
OR r8,r/m8 1
|
|
OR r16,r/m16 1
|
|
OR r32,r/m32 1
|
|
OUT imm8,AL 14
|
|
OUT imm8,AL (PM, CPL <= IOPL) 14
|
|
OUT imm8,AL (VM) 28
|
|
OUT imm8,AX 14
|
|
OUT imm8,AX (PM, CPL <= IOPL) 14
|
|
OUT imm8,AX (VM) 28
|
|
OUT imm8,EAX 14
|
|
OUT imm8,EAX (PM, CPL <= IOPL) 14
|
|
OUT imm8,EAX (VM) 28
|
|
OUT DX,AL 14
|
|
OUT DX,AL (PM, CPL <= IOPL) 14
|
|
OUT DX,AL (VM) 28
|
|
OUT DX,AX 14
|
|
OUT DX,AX (PM, CPL <= IOPL) 14
|
|
OUT DX,AX (VM) 28
|
|
OUT DX,EAX 14
|
|
OUT DX,EAX (PM, CPL <= IOPL) 14
|
|
OUT DX,EAX (VM) 28
|
|
OUTSB 14
|
|
OUTSW 14
|
|
OUTSD 14
|
|
POP m16 1
|
|
POP m32 1
|
|
POP r16 1
|
|
POP r32 1
|
|
POP sreg 1
|
|
POP sreg (PM) 3
|
|
POPA 6
|
|
POPAD 6
|
|
POPF 9
|
|
POPF (PM) 9
|
|
POPF (VM) 9
|
|
POPFD 9
|
|
POPFD (PM) 9
|
|
POPFD (VM) 9
|
|
PUSH r/m16 1
|
|
PUSH r/m32 1
|
|
PUSH r16 1
|
|
PUSH r32 1
|
|
PUSH imm8 1
|
|
PUSH imm16 1
|
|
PUSH imm32 1
|
|
PUSH sreg 1
|
|
PUSHA 6
|
|
PUSHAD 6
|
|
PUSHF 2
|
|
PUSHF (PM) 2
|
|
PUSHF (VM) 2
|
|
PUSHFD 2
|
|
PUSHFD (PM) 2
|
|
PUSHFD (VM) 2
|
|
RCL r/m8,1 3
|
|
RCL r/m16,1 3
|
|
RCL r/m32,1 3
|
|
RCL r/m8,CL 8
|
|
RCL r/m16,CL 8
|
|
RCL r/m32,CL 8
|
|
RCL r/m8,imm8 8
|
|
RCL r/m16,imm8 8
|
|
RCL r/m32,imm8 8
|
|
RCR r/m8,1 4
|
|
RCR r/m16,1 4
|
|
RCR r/m32,1 4
|
|
RCR r/m8,CL 9
|
|
RCR r/m16,CL 9
|
|
RCR r/m32,CL 9
|
|
RCR r/m8,imm8 9
|
|
RCR r/m16,imm8 9
|
|
RCR r/m32,imm8 9
|
|
ROL r/m8,1 1
|
|
ROL r/m16,1 1
|
|
ROL r/m32,1 1
|
|
ROL r/m8,CL 2
|
|
ROL r/m16,CL 2
|
|
ROL r/m32,CL 2
|
|
ROL r/m8,imm8 1
|
|
ROL r/m16,imm8 1
|
|
ROL r/m32,imm8 1
|
|
ROR r/m8,1 1
|
|
ROR r/m16,1 1
|
|
ROR r/m32,1 1
|
|
ROR r/m8,CL 2
|
|
ROR r/m16,CL 2
|
|
ROR r/m32,CL 2
|
|
ROR r/m8,imm8 1
|
|
ROR r/m16,imm8 1
|
|
ROR r/m32,imm8 1
|
|
RET (near) 3
|
|
RET (far) 4
|
|
RET (PM, far, same PL) 7
|
|
RET (PM, far, different PL) 23
|
|
RET imm16 (near) 4
|
|
RET imm16 (far) 4
|
|
RET imm16 (PM, far, same PL) 7
|
|
RET imm16 (PM, far, different PL) 23
|
|
RSDC m80,sreg 6
|
|
RSLDT m80 6
|
|
RSM 40
|
|
RSTS m80 6
|
|
SAHF 1
|
|
SAL r/m8,1 1
|
|
SAL r/m16,1 1
|
|
SAL r/m32,1 1
|
|
SAL r/m8,CL 2
|
|
SAL r/m16,CL 2
|
|
SAL r/m32,CL 2
|
|
SAL r/m8,imm8 1
|
|
SAL r/m16,imm8 1
|
|
SAL r/m32,imm8 1
|
|
SAR r/m8,1 1
|
|
SAR r/m16,1 1
|
|
SAR r/m32,1 1
|
|
SAR r/m8,CL 2
|
|
SAR r/m16,CL 2
|
|
SAR r/m32,CL 2
|
|
SAR r/m8,imm8 1
|
|
SAR r/m16,imm8 1
|
|
SAR r/m32,imm8 1
|
|
SHL r/m8,1 1
|
|
SHL r/m16,1 1
|
|
SHL r/m32,1 1
|
|
SHL r/m8,CL 2
|
|
SHL r/m16,CL 2
|
|
SHL r/m32,CL 2
|
|
SHL r/m8,imm8 1
|
|
SHL r/m16,imm8 1
|
|
SHL r/m32,imm8 1
|
|
SHR r/m8,1 1
|
|
SHR r/m16,1 1
|
|
SHR r/m32,1 1
|
|
SHR r/m8,CL 2
|
|
SHR r/m16,CL 2
|
|
SHR r/m32,CL 2
|
|
SHR r/m8,imm8 1
|
|
SHR r/m16,imm8 1
|
|
SHR r/m32,imm8 1
|
|
SBB AL,imm8 1
|
|
SBB AX,imm16 1
|
|
SBB EAX,imm32 1
|
|
SBB r/m8,imm8 1
|
|
SBB r/m16,imm8 1
|
|
SBB r/m32,imm8 1
|
|
SBB r/m16,imm16 1
|
|
SBB r/m32,imm32 1
|
|
SBB r/m8,r8 1
|
|
SBB r/m16,r16 1
|
|
SBB r/m32,r32 1
|
|
SBB r8,r/m8 1
|
|
SBB r16,r/m16 1
|
|
SBB r32,r/m32 1
|
|
SCASB 2
|
|
SCASW 2
|
|
SCASD 2
|
|
SETALC n/a
|
|
SETcc r/m8 1
|
|
SGDT m16&32 4
|
|
SIDT m16&32 4
|
|
SHLD r/m16,r16,imm8 4
|
|
SHLD r/m32,r32,imm8 4
|
|
SHLD r/m16,r16,CL 5
|
|
SHLD r/m32,r32,CL 5
|
|
SHRD r/m16,r16,imm8 4
|
|
SHRD r/m32,r32,imm8 4
|
|
SHRD r/m16,r16,CL 5
|
|
SHRD r/m32,r32,CL 5
|
|
SLDT r/m16 1
|
|
SLDT r/m32 1
|
|
SMINT 55
|
|
SMSW r/m16 6
|
|
STC 1
|
|
STD 7
|
|
STI 7
|
|
STOSB 2
|
|
STOSW 2
|
|
STOSD 2
|
|
STR r/m16 4
|
|
SUB AL,imm8 1
|
|
SUB AX,imm16 1
|
|
SUB EAX,imm32 1
|
|
SUB r/m8,imm8 1
|
|
SUB r/m16,imm8 1
|
|
SUB r/m32,imm8 1
|
|
SUB r/m16,imm16 1
|
|
SUB r/m32,imm32 1
|
|
SUB r/m8,r8 1
|
|
SUB r/m16,r16 1
|
|
SUB r/m32,r32 1
|
|
SUB r8,r/m8 1
|
|
SUB r16,r/m16 1
|
|
SUB r32,r/m32 1
|
|
SVDC sreg,m80 12
|
|
SVLDT m80 12
|
|
SVTS m80 14
|
|
TEST AL,imm8 1
|
|
TEST AX,imm16 1
|
|
TEST EAX,imm32 1
|
|
TEST r/m8,imm8 1
|
|
TEST r/m16,imm16 1
|
|
TEST r/m32,imm32 1
|
|
TEST r/m8,r8 1
|
|
TEST r/m16,r16 1
|
|
TEST r/m32,r32 1
|
|
VERR r/m16 7
|
|
VERW r/m16 7
|
|
WAIT 5
|
|
WBINVD 15
|
|
XADD r/m8,r8 2
|
|
XADD r/m16,r16 2
|
|
XADD r/m32,r32 2
|
|
XCHG AX,r16 2
|
|
XCHG EAX,r32 2
|
|
XCHG r/m8,r8 2
|
|
XCHG r/m16,r16 2
|
|
XCHG r/m32,r32 2
|
|
XLAT 4
|
|
XOR AL,imm8 1
|
|
XOR AX,imm16 1
|
|
XOR EAX,imm32 1
|
|
XOR r/m8,imm8 1
|
|
XOR r/m16,imm8 1
|
|
XOR r/m32,imm8 1
|
|
XOR r/m16,imm16 1
|
|
XOR r/m32,imm32 1
|
|
XOR r/m8,r8 1
|
|
XOR r/m16,r16 1
|
|
XOR r/m32,r32 1
|
|
XOR r8,r/m8 1
|
|
XOR r16,r/m16 1
|
|
XOR r32,r/m32 1
|
|
(END)
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z0 - Execution time for Intel 8087 FPU
|
|
|
|
FLD1 26
|
|
FLDZ 21
|
|
FLDPI 26
|
|
FLDLG2 26
|
|
FLDL2T 26
|
|
FLDL2E 26
|
|
FLDLN2 26
|
|
FLD ST(0) 31
|
|
FST ST(1) 26
|
|
FSTP ST(0) 26
|
|
FSTP ST(1) 21
|
|
FLD ST(1) 26
|
|
FXCH ST(1) 21
|
|
FILD m16 58
|
|
FILD m32 64
|
|
FILD m64 74
|
|
FLD m32 49
|
|
FLD m64 54
|
|
FLD m80 59
|
|
FBLD m80 309
|
|
FIST m16 79
|
|
FIST m32 84
|
|
FST m32 89
|
|
FST m64 99
|
|
FISTP m16 79
|
|
FISTP m32 79
|
|
FISTP m64 88
|
|
FSTP m32 89
|
|
FSTP m64 93
|
|
FSTP m80 49
|
|
FBSTP m80 528
|
|
FINIT 11
|
|
FCLEX 11
|
|
FCHS 21
|
|
FABS 21
|
|
FXAM 21
|
|
FTST 51
|
|
FSTENV 54
|
|
FLDENV 48
|
|
FSAVE 214
|
|
FRSTOR 209
|
|
FSTSW [mem] 28
|
|
FSTSW AX
|
|
FSTCW [mem] 28
|
|
FLDCW [mem] 19
|
|
FADD ST,ST(0) 86
|
|
FADD ST,ST(1) 85
|
|
FADD ST(1),ST 92
|
|
FADDP ST(1),ST 92
|
|
FADD m32 105
|
|
FADD m64 115
|
|
FIADD m16 115
|
|
FIADD m32 125
|
|
FSUB ST(1),ST 88
|
|
FSUBR ST(1),ST 96
|
|
FSUBRP ST(1),ST 99
|
|
FSUB m32 119
|
|
FSUB m64 129
|
|
FISUB m16 115
|
|
FISUB m32 125
|
|
FMUL ST,ST(1) 145
|
|
FMUL ST(1),ST 145
|
|
FMULP ST(1),ST 148
|
|
FIMUL m16 132
|
|
FIMUL m32 141
|
|
FMUL m32 125
|
|
FMUL m64 175
|
|
FDIV ST,ST(0) 201
|
|
FDIV ST,ST(1) 203
|
|
FDIV ST(1),ST 207
|
|
FDIVR ST(1),ST 201
|
|
FDIVRP ST(1),ST 201
|
|
FIDIV m16 237
|
|
FIDIV m32 246
|
|
FDIV m32 229
|
|
FDIV m64 236
|
|
FSQRT (0 0) 21
|
|
FSQRT (1 0) 186
|
|
FSQRT (L2T) 186
|
|
FXTRACT (L2T) 51
|
|
FSCALE (PI,5) 41
|
|
FRNDINT (PI) 51
|
|
FPREM (99,PI) 81
|
|
FPREM1(99,PI) N/A
|
|
FCOM 56
|
|
FCOMP 61
|
|
FCOMPP 61
|
|
FICOM m16 79
|
|
FICOM m32 89
|
|
FCOM m32 74
|
|
FCOM m64 74
|
|
FSIN (0 0) N/A
|
|
FSIN (1 0) N/A
|
|
FSIN (PI) N/A
|
|
FSIN (LG2) N/A
|
|
FSIN (L2T) N/A
|
|
FCOS (0 0) N/A
|
|
FCOS (1 0) N/A
|
|
FCOS (PI) N/A
|
|
FCOS (LG2) N/A
|
|
FCOS (L2T) N/A
|
|
FSINCOS (0 0) N/A
|
|
FSINCOS (1 0) N/A
|
|
FSINCOS (PI) N/A
|
|
FSINCOS (LG2) N/A
|
|
FSINCOS (L2T) N/A
|
|
FPTAN (0 0) 41
|
|
FPTAN (1 0) 581
|
|
FPTAN (PI) 606
|
|
FPTAN (LG2) 516
|
|
FPTAN (L2T) 576
|
|
FPATAN (0 0) 41
|
|
FPATAN (1 0) 736
|
|
FPATAN (PI) 206
|
|
FPATAN (LG2) 756
|
|
FPATAN (L2T) 206
|
|
F2XM1 (0 0) 16
|
|
F2XM1 (LN2) 631
|
|
F2XM1 (LG2) 611
|
|
FYL2X (1 0) 56
|
|
FYL2X (PI) 946
|
|
FYL2X (LG2) 1081
|
|
FYL2X (L2T) 926
|
|
FYL2XP1 (LG2) 1026
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z1 - Execution time for Intel 80287 FPU
|
|
|
|
FLD1 26
|
|
FLDZ 21
|
|
FLDPI 26
|
|
FLDLG2 26
|
|
FLDL2T 26
|
|
FLDL2E 26
|
|
FLDLN2 26
|
|
FLD ST(0) 31
|
|
FST ST(1) 26
|
|
FSTP ST(0) 26
|
|
FSTP ST(1) 21
|
|
FLD ST(1) 26
|
|
FXCH ST(1) 21
|
|
FILD m16 58
|
|
FILD m32 64
|
|
FILD m64 74
|
|
FLD m32 49
|
|
FLD m64 54
|
|
FLD m80 59
|
|
FBLD m80 309
|
|
FIST m16 79
|
|
FIST m32 84
|
|
FST m32 89
|
|
FST m64 99
|
|
FISTP m16 79
|
|
FISTP m32 79
|
|
FISTP m64 88
|
|
FSTP m32 89
|
|
FSTP m64 93
|
|
FSTP m80 49
|
|
FBSTP m80 528
|
|
FINIT 11
|
|
FCLEX 11
|
|
FCHS 21
|
|
FABS 21
|
|
FXAM 21
|
|
FTST 51
|
|
FSTENV 54
|
|
FLDENV 48
|
|
FSAVE 214
|
|
FRSTOR 209
|
|
FSTSW [mem] 28
|
|
FSTSW AX
|
|
FSTCW [mem] 28
|
|
FLDCW [mem] 19
|
|
FADD ST,ST(0) 86
|
|
FADD ST,ST(1) 85
|
|
FADD ST(1),ST 92
|
|
FADDP ST(1),ST 92
|
|
FADD m32 105
|
|
FADD m64 115
|
|
FIADD m16 115
|
|
FIADD m32 125
|
|
FSUB ST(1),ST 88
|
|
FSUBR ST(1),ST 96
|
|
FSUBRP ST(1),ST 99
|
|
FSUB m32 119
|
|
FSUB m64 129
|
|
FISUB m16 115
|
|
FISUB m32 125
|
|
FMUL ST,ST(1) 145
|
|
FMUL ST(1),ST 145
|
|
FMULP ST(1),ST 148
|
|
FIMUL m16 132
|
|
FIMUL m32 141
|
|
FMUL m32 125
|
|
FMUL m64 175
|
|
FDIV ST,ST(0) 201
|
|
FDIV ST,ST(1) 203
|
|
FDIV ST(1),ST 207
|
|
FDIVR ST(1),ST 201
|
|
FDIVRP ST(1),ST 201
|
|
FIDIV m16 237
|
|
FIDIV m32 246
|
|
FDIV m32 229
|
|
FDIV m64 236
|
|
FSQRT (0 0) 21
|
|
FSQRT (1 0) 186
|
|
FSQRT (L2T) 186
|
|
FXTRACT (L2T) 51
|
|
FSCALE (PI,5) 41
|
|
FRNDINT (PI) 51
|
|
FPREM (99,PI) 81
|
|
FPREM1(99,PI) N/A
|
|
FCOM 56
|
|
FCOMP 61
|
|
FCOMPP 61
|
|
FICOM m16 79
|
|
FICOM m32 89
|
|
FCOM m32 74
|
|
FCOM m64 74
|
|
FSIN (0 0) N/A
|
|
FSIN (1 0) N/A
|
|
FSIN (PI) N/A
|
|
FSIN (LG2) N/A
|
|
FSIN (L2T) N/A
|
|
FCOS (0 0) N/A
|
|
FCOS (1 0) N/A
|
|
FCOS (PI) N/A
|
|
FCOS (LG2) N/A
|
|
FCOS (L2T) N/A
|
|
FSINCOS (0 0) N/A
|
|
FSINCOS (1 0) N/A
|
|
FSINCOS (PI) N/A
|
|
FSINCOS (LG2) N/A
|
|
FSINCOS (L2T) N/A
|
|
FPTAN (0 0) 41
|
|
FPTAN (1 0) 581
|
|
FPTAN (PI) 606
|
|
FPTAN (LG2) 516
|
|
FPTAN (L2T) 576
|
|
FPATAN (0 0) 41
|
|
FPATAN (1 0) 736
|
|
FPATAN (PI) 206
|
|
FPATAN (LG2) 756
|
|
FPATAN (L2T) 206
|
|
F2XM1 (0 0) 16
|
|
F2XM1 (LN2) 631
|
|
F2XM1 (LG2) 611
|
|
FYL2X (1 0) 56
|
|
FYL2X (PI) 946
|
|
FYL2X (LG2) 1081
|
|
FYL2X (L2T) 926
|
|
FYL2XP1 (LG2) 1026
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z2 - Execution time for Intel 80387 FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z3 - Execution time for Intel 387DX FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z4 - Execution time for IIT 3C87 FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z5 - Execution time for ULSI 83C87 FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z6 - Execution time for ULSI DX/DLC FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z7 - Execution time for C&T 38700 FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z8 - Execution time for Cyrix 387+ FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z9 - Execution time for Cyrix 83D87 FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z10 - Execution time for Intel RapidCAD FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z11 - Execution time for Intel i486 FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------------
|
|
APPENDIX Z12 - Execution time for Intel Pentium FPU
|
|
|
|
FLD1 1
|
|
FLDZ 1
|
|
FLDPI 3
|
|
FLDLG2 3
|
|
FLDL2T 3
|
|
FLDL2E 3
|
|
FLDLN2 3
|
|
FLD ST(0) 1
|
|
FST ST(1) 2
|
|
FSTP ST(0) 2
|
|
FSTP ST(1) 3
|
|
FLD ST(1) 1
|
|
FXCH ST(1) 1
|
|
FILD m16 1
|
|
FILD m32 1
|
|
FILD m64 1
|
|
FLD m32 1
|
|
FLD m64 1
|
|
FLD m80 3
|
|
FBLD m80 46
|
|
FIST m16 5
|
|
FIST m32 5
|
|
FST m32 1
|
|
FST m64 1
|
|
FISTP m16 8
|
|
FISTP m32 9
|
|
FISTP m64 8
|
|
FSTP m32 5
|
|
FSTP m64 5
|
|
FSTP m80 6
|
|
FBSTP m80 155
|
|
FINIT 21
|
|
FCLEX 8
|
|
FCHS 1
|
|
FABS 1
|
|
FXAM 16
|
|
FTST 1
|
|
FSTENV 60
|
|
FLDENV 37
|
|
FSAVE 154
|
|
FRSTOR 74
|
|
FSTSW [mem] 4
|
|
FSTSW AX 4
|
|
FSTCW [mem] 2
|
|
FLDCW [mem] 7
|
|
FADD ST,ST(0) 2
|
|
FADD ST,ST(1) 3
|
|
FADD ST(1),ST 3
|
|
FADDP ST(1),ST 3
|
|
FADD m32 1
|
|
FADD m64 1
|
|
FIADD m16 3
|
|
FIADD m32 3
|
|
FSUB ST(1),ST 3
|
|
FSUBR ST(1),ST 2
|
|
FSUBRP ST(1),ST 2
|
|
FSUB m32 2
|
|
FSUB m64 2
|
|
FISUB m16 3
|
|
FISUB m32 3
|
|
FMUL ST,ST(1) 2
|
|
FMUL ST(1),ST 3
|
|
FMULP ST(1),ST 2
|
|
FIMUL m16 3
|
|
FIMUL m32 3
|
|
FMUL m32 2
|
|
FMUL m64 2
|
|
FDIV ST,ST(0) 38
|
|
FDIV ST,ST(1) 38
|
|
FDIV ST(1),ST 38
|
|
FDIVR ST(1),ST 38
|
|
FDIVRP ST(1),ST 38
|
|
FIDIV m16 39
|
|
FIDIV m32 39
|
|
FDIV m32 38
|
|
FDIV m64 38
|
|
FSQRT (0 0) 4
|
|
FSQRT (1 0) 70
|
|
FSQRT (L2T) 70
|
|
FXTRACT (L2T) 12
|
|
FSCALE (PI,5) 31
|
|
FRNDINT (PI) 19
|
|
FPREM (99,PI) 27
|
|
FPREM1(99,PI) 41
|
|
FCOM 1
|
|
FCOMP 2
|
|
FCOMPP 2
|
|
FICOM m16
|
|
FICOM m32
|
|
FCOM m32
|
|
FCOM m64
|
|
FSIN (0 0) 17
|
|
FSIN (1 0) 98
|
|
FSIN (PI) 73
|
|
FSIN (LG2) 82
|
|
FSIN (L2T) 72
|
|
FCOS (0 0) 18
|
|
FCOS (1 0) 96
|
|
FCOS (PI) 72
|
|
FCOS (LG2) 83
|
|
FCOS (L2T) 72
|
|
FSINCOS (0 0) 15
|
|
FSINCOS (1 0) 107
|
|
FSINCOS (PI) 93
|
|
FSINCOS (LG2) 91
|
|
FSINCOS (L2T) 93
|
|
FPTAN (0 0) 15
|
|
FPTAN (1 0) 142
|
|
FPTAN (PI) 125
|
|
FPTAN (LG2) 126
|
|
FPTAN (L2T) 125
|
|
FPATAN (0 0) 25
|
|
FPATAN (1 0) 93
|
|
FPATAN (PI) 132
|
|
FPATAN (LG2) 129
|
|
FPATAN (L2T) 135
|
|
F2XM1 (0 0) 14
|
|
F2XM1 (LN2) 52
|
|
F2XM1 (LG2) 52
|
|
FYL2X (1 0) 39
|
|
FYL2X (PI) 104
|
|
FYL2X (LG2) 104
|
|
FYL2X (L2T) 104
|
|
FYL2XP1 (LG2) 103
|
|
|
|
---------------------------------------------------------
|
|
APPENDIX _A PENTIUM PRO/PENTIUM II RISC-CORE INSTRUCTIONS INFO & TIMES
|
|
|
|
Format of Data Below:
|
|
|
|
---------------------------------
|
|
H: Name of x86 Instruction
|
|
N: Number of RISC operation per this x86 instruction
|
|
(in case of comlex microcode = 0)
|
|
{
|
|
D:destination regs | retry this data for each
|
|
P:port | RISC core instruction
|
|
O:operation |
|
|
L:latency |
|
|
A:arguments |
|
|
}
|
|
\n
|
|
---------------------------------
|
|
Example:
|
|
H:ADD r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
----------------------------------
|
|
Means: ADD r8,r/m8 Latency
|
|
ROP1: REG_ddd = ALU.port(1 or 0)(REG_ddd,REG_sss) 1
|
|
----------------------------------
|
|
|
|
H:ADD r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:ADD r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:ADD r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:SUB r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:SUB r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:SUB r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:AND r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:AND r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:AND r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:OR r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:OR r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:OR r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:XOR r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:XOR r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:XOR r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:ADD r8,m8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:ADD r16,m16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:ADD r32,m32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:SUB r8,m8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:SUB r16,m16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:SUB r32,m32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:AND r8,m8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:AND r16,m16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:AND r32,m32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:OR r8,m8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:OR r16,m16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:OR r32,m32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:XOR r8,m8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:XOR r16,m16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:XOR r32,m32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:ADC r8,r/m8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_sss
|
|
|
|
H:ADC r16,r/m16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_sss
|
|
|
|
H:ADC r32,r/m32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_sss
|
|
|
|
H:SBB r8,r/m8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_sss
|
|
|
|
H:SBB r16,r/m16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_sss
|
|
|
|
H:SBB r32,r/m32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_sss
|
|
|
|
H:ADC r8,m8
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:ADC r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:ADC r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:SBB r8,m8
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:SBB r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:SBB r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:ADD r/m8,r8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:ADD r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:ADD r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:SUB r/m8,r8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:SUB r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:SUB r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:AND r/m8,r8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:AND r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:AND r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:OR r/m8,r8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:OR r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:OR r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:XOR r/m8,r8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:XOR r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:XOR r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:ADD m8,r8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ADD m16,r16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ADD m32,r32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SUB m8,r8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SUB m16,r16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SUB m32,r32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:AND m8,r8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:AND m16,r16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:AND m32,r32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:OR m8,r8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:OR m16,r16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:OR m32,r32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:XOR m8,r8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:XOR m16,r16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:XOR m32,r32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:LOCK ADD m8,r8
|
|
N:0
|
|
|
|
H:LOCK ADD m16,r16
|
|
N:0
|
|
|
|
H:LOCK ADD m32,r32
|
|
N:0
|
|
|
|
H:LOCK SUB m8,r8
|
|
N:0
|
|
|
|
H:LOCK SUB m16,r16
|
|
N:0
|
|
|
|
H:LOCK SUB m32,r32
|
|
N:0
|
|
|
|
H:LOCK AND m8,r8
|
|
N:0
|
|
|
|
H:LOCK AND m16,r16
|
|
N:0
|
|
|
|
H:LOCK AND m32,r32
|
|
N:0
|
|
|
|
H:LOCK OR m8,r8
|
|
N:0
|
|
|
|
H:LOCK OR m16,r16
|
|
N:0
|
|
|
|
H:LOCK OR m32,r32
|
|
N:0
|
|
|
|
H:LOCK XOR m8,r8
|
|
N:0
|
|
|
|
H:LOCK XOR m16,r16
|
|
N:0
|
|
|
|
H:LOCK XOR m32,r32
|
|
N:0
|
|
|
|
H:ADC r/m8,r8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:ADC r/m16,r16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:ADC r/m32,r32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:SBB r/m8,r8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:SBB r/m16,r16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:SBB r/m32,r32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:ADC m8,r8
|
|
N:0
|
|
|
|
H:ADC m16,r16
|
|
N:0
|
|
|
|
H:ADC m32,r32
|
|
N:0
|
|
|
|
H:SBB m8,r8
|
|
N:0
|
|
|
|
H:SBB m16,r16
|
|
N:0
|
|
|
|
H:SBB m32,r32
|
|
N:0
|
|
|
|
H:LOCK ADC m8,r8
|
|
N:0
|
|
|
|
H:LOCK ADC m16,r16
|
|
N:0
|
|
|
|
H:LOCK ADC m32,r32
|
|
N:0
|
|
|
|
H:LOCK SBB m8,r8
|
|
N:0
|
|
|
|
H:LOCK SBB m16,r16
|
|
N:0
|
|
|
|
H:LOCK SBB m32,r32
|
|
N:0
|
|
|
|
H:ADD r8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ADD r16,imm16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ADD r32,imm32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ADD r16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ADD r32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SUB r8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SUB r16,imm16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SUB r32,imm32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SUB r16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SUB r32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:AND r8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:AND r16,imm16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:AND r32,imm32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:AND r16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:AND r32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:OR r8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:OR r16,imm16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:OR r32,imm32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:OR r16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:OR r32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:XOR r8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:XOR r16,imm16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:XOR r32,imm32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:XOR r16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:XOR r32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ADD m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ADD m16,imm16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ADD m32,imm32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SUB m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SUB m16,imm16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SUB m32,imm32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:AND m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:AND m16,imm16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:AND m32,imm32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:OR m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:OR m16,imm16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:OR m32,imm32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:XOR m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:XOR m16,imm16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:XOR m32,imm32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:LOCK ADD m8,imm8
|
|
N:0
|
|
|
|
H:LOCK ADD m16,imm16
|
|
N:0
|
|
|
|
H:LOCK ADD m32,imm32
|
|
N:0
|
|
|
|
H:LOCK SUB m8,imm8
|
|
N:0
|
|
|
|
H:LOCK SUB m16,imm16
|
|
N:0
|
|
|
|
H:LOCK SUB m32,imm32
|
|
N:0
|
|
|
|
H:LOCK AND m8,imm8
|
|
N:0
|
|
|
|
H:LOCK AND m16,imm16
|
|
N:0
|
|
|
|
H:LOCK AND m32,imm32
|
|
N:0
|
|
|
|
H:LOCK OR m8,imm8
|
|
N:0
|
|
|
|
H:LOCK OR m16,imm16
|
|
N:0
|
|
|
|
H:LOCK OR m32,imm32
|
|
N:0
|
|
|
|
H:LOCK XOR m8,imm8
|
|
N:0
|
|
|
|
H:LOCK XOR m16,imm16
|
|
N:0
|
|
|
|
H:LOCK XOR m32,imm32
|
|
N:0
|
|
|
|
H:ADC r8,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:ADC r16,imm16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:ADC r32,imm32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SBB r8,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SBB r16,imm16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SBB r32,imm32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:ADC m8,imm8
|
|
N:0
|
|
|
|
H:ADC m16,imm16
|
|
N:0
|
|
|
|
H:ADC m32,imm32
|
|
N:0
|
|
|
|
H:SBB m8,imm8
|
|
N:0
|
|
|
|
H:SBB m16,imm16
|
|
N:0
|
|
|
|
H:SBB m32,imm32
|
|
N:0
|
|
|
|
H:LOCK ADC m8,imm8
|
|
N:0
|
|
|
|
H:LOCK ADC m16,imm16
|
|
N:0
|
|
|
|
H:LOCK ADC m32,imm32
|
|
N:0
|
|
|
|
H:LOCK SBB m8,imm8
|
|
N:0
|
|
|
|
H:LOCK SBB m16,imm16
|
|
N:0
|
|
|
|
H:LOCK SBB m32,imm32
|
|
N:0
|
|
|
|
H:ADD AL,imm8
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:SUB AL,imm8
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:AND AL,imm8
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:OR AL,imm8
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:XOR AL,imm8
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:ADD eAX,imm16
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:ADD eAX,imm32
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:SUB eAX,imm16
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:SUB eAX,imm32
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:AND eAX,imm16
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:AND eAX,imm32
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:OR eAX,imm16
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:OR eAX,imm32
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:XOR eAX,imm16
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:XOR eAX,imm32
|
|
N:1
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:ADC AL,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, EAX
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SBB AL,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, EAX
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:ADC eAX,imm16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, EAX
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:ADC eAX,imm32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, EAX
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SBB eAX,imm16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, EAX
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SBB eAX,imm32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, EAX
|
|
D: EAX
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:INC r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:INC r/m16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:INC r/m32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:DEC r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:DEC r/m16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:DEC r/m32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:INC m8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:INC m16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:INC m32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:DEC m8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:DEC m16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:DEC m32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:LOCK INC m8
|
|
N:0
|
|
|
|
H:LOCK INC m16
|
|
N:0
|
|
|
|
H:LOCK INC m32
|
|
N:0
|
|
|
|
H:LOCK DEC m8
|
|
N:0
|
|
|
|
H:LOCK DEC m16
|
|
N:0
|
|
|
|
H:LOCK DEC m32
|
|
N:0
|
|
|
|
H:INC r16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, CONST
|
|
|
|
H:INC r32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, CONST
|
|
|
|
H:DEC r16
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, CONST
|
|
|
|
H:DEC r32
|
|
N:1
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, CONST
|
|
|
|
H:NOT r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O: xor
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:NOT r/m16
|
|
N:1
|
|
D: REG_sss
|
|
O: xor
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:NOT r/m32
|
|
N:1
|
|
D: REG_sss
|
|
O: xor
|
|
P:01
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:NOT m8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: xor
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:NOT m16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: xor
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:NOT m32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: xor
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:LOCK NOT m8
|
|
N:0
|
|
|
|
H:LOCK NOT m16
|
|
N:0
|
|
|
|
H:LOCK NOT m32
|
|
N:0
|
|
|
|
H:NEG r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: CONST, REG_sss
|
|
|
|
H:NEG r/m16
|
|
N:1
|
|
D: REG_sss
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: CONST, REG_sss
|
|
|
|
H:NEG r/m32
|
|
N:1
|
|
D: REG_sss
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: CONST, REG_sss
|
|
|
|
H:NEG m8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: CONST, TMP0
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:NEG m16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: CONST, TMP0
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:NEG m32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: CONST, TMP0
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:LOCK NEG m8
|
|
N:0
|
|
|
|
H:LOCK NEG m16
|
|
N:0
|
|
|
|
H:LOCK NEG m32
|
|
N:0
|
|
|
|
H:AAS
|
|
N:1
|
|
D: AX
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, AX
|
|
|
|
H:DAA
|
|
N:1
|
|
D: AL
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, AL
|
|
|
|
H:DAS
|
|
N:1
|
|
D: AL
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, AL
|
|
|
|
H:AAD
|
|
N:3
|
|
D: TMP0
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: AH, IMM
|
|
D: AH
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
D: AL
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: AL, TMP0
|
|
|
|
H:AAM
|
|
N:4
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: AL, IMM
|
|
D: AH
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: AL
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:INVD
|
|
N:0
|
|
|
|
H:WBINVD
|
|
N:0
|
|
|
|
H:INVLPG m
|
|
N:0
|
|
|
|
H:CMP AL,imm8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:CMP eAX,imm16
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:CMP eAX,imm32
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:CMP r/m8,imm8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:CMP r/m8,imm8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:CMP r/m16,imm16
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:CMP r/m32,imm32
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:CMP r/m16,imm8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:CMP r/m32,imm8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:CMP m8,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM)
|
|
|
|
H:CMP m8,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM)
|
|
|
|
H:CMP m16,imm16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM)
|
|
|
|
H:CMP m32,imm32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM)
|
|
|
|
H:CMP m16,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM)
|
|
|
|
H:CMP m32,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM)
|
|
|
|
H:CMP r/m8,r8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:CMP r/m16,r16
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:CMP r/m32,r32
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:CMP m8,r8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:CMP m16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:CMP m32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:CMP r8,r/m8
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:CMP r16,r/m16
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:CMP r32,r/m32
|
|
N:1
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:CMP r8,m8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:CMP r16,m16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:CMP r32,m32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:TEST r/m8,r8
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:TEST r/m16,r16
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:TEST r/m32,r32
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:TEST m8,r8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:TEST m16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:TEST m32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_ddd, TMP0
|
|
|
|
H:TEST AL,imm8
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:TEST eAX,imm16
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:TEST eAX,imm32
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: EAX, IMM
|
|
|
|
H:TEST r/m8,imm8
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:TEST r/m16,imm16
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:TEST r/m32,imm32
|
|
N:1
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:TEST m8,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:TEST m8,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:TEST m16,imm16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:TEST m32,imm32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:TEST m16,imm16
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:TEST m32,imm32
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:SETO r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNO r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETB r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNAE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETC r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNB r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETAE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNC r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETZ r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNZ r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETBE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNA r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNBE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNA r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETS r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNS r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETP r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETPE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNP r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETPO r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETL r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNGE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNL r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETGE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETLE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNG r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETNLE r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETG r/m8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:SETO m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNO m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETB m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNAE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETC m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNB m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETAE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNC m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETZ m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNZ m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETBE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNA m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNBE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNA m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETS m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNS m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETP m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETPE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNP m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETPO m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETL m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNGE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNL m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETGE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETLE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNG m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETNLE m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SETG m8
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:BT r/m16,r16
|
|
N:1
|
|
D: sink
|
|
O: test_bit
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BT r/m32,r32
|
|
N:1
|
|
D: sink
|
|
O: test_bit
|
|
P:01
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BT m16,r16
|
|
N:0
|
|
|
|
H:BT m32,r32
|
|
N:0
|
|
|
|
H:BT r/m16,imm8
|
|
N:1
|
|
D: sink
|
|
O: test_bit
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BT r/m32,imm8
|
|
N:1
|
|
D: sink
|
|
O: test_bit
|
|
P:01
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BT m16,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: test_bit
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:BT m32,imm8
|
|
N:2
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: test_bit
|
|
P:01
|
|
L:1
|
|
A: TMP0, IMM
|
|
|
|
H:BTC r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BTC r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BTR r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BTR r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BTS r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BTS r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, REG_ddd
|
|
|
|
H:BTC m16,r16
|
|
N:0
|
|
|
|
H:BTC m32,r32
|
|
N:0
|
|
|
|
H:BTR m16,r16
|
|
N:0
|
|
|
|
H:BTR m32,r32
|
|
N:0
|
|
|
|
H:BTS m16,r16
|
|
N:0
|
|
|
|
H:BTS m32,r32
|
|
N:0
|
|
|
|
H:LOCK BTC m16,r16
|
|
N:0
|
|
|
|
H:LOCK BTC m32,r32
|
|
N:0
|
|
|
|
H:LOCK BTR m16,r16
|
|
N:0
|
|
|
|
H:LOCK BTR m32,r32
|
|
N:0
|
|
|
|
H:LOCK BTS m16,r16
|
|
N:0
|
|
|
|
H:LOCK BTS m32,r32
|
|
N:0
|
|
|
|
H:BTC r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BTC r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BTR r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BTR r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BTS r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BTS r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:BTC m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM)
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:BTC m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM)
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:BTR m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM)
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:BTR m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM)
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:BTS m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM)
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:BTS m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM)
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:LOCK BTC m16,imm8
|
|
N:0
|
|
|
|
H:LOCK BTC m32,imm8
|
|
N:0
|
|
|
|
H:LOCK BTR m16,imm8
|
|
N:0
|
|
|
|
H:LOCK BTR m32,imm8
|
|
N:0
|
|
|
|
H:LOCK BTS m16,imm8
|
|
N:0
|
|
|
|
H:LOCK BTS m32,imm8
|
|
N:0
|
|
|
|
H:BSF r16,r/m16
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:BSF r32,r/m32
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd
|
|
|
|
H:BSF r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: TMP0
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, REG_ddd
|
|
|
|
H:BSF r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: TMP0
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, REG_ddd
|
|
|
|
H:BSR r16,r/m16
|
|
N:2
|
|
D: TMP1
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, REG_ddd
|
|
|
|
H:BSR r32,r/m32
|
|
N:2
|
|
D: TMP1
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, REG_ddd
|
|
|
|
H:BSR r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: TMP0
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, REG_ddd
|
|
|
|
H:BSR r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP1
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: TMP0
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP1, REG_ddd
|
|
|
|
H:PUSHF
|
|
N:0
|
|
|
|
H:PUSHFD
|
|
N:0
|
|
|
|
H:POPFD
|
|
N:0
|
|
|
|
H:POPF
|
|
N:0
|
|
|
|
H:CLC
|
|
N:1
|
|
D: sink
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: CONST, CONST_0
|
|
|
|
H:CMC
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:STC
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:01
|
|
L:1
|
|
A:CONST, CONST
|
|
|
|
H:SAHF
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: AH
|
|
|
|
H:LAHF
|
|
N:1
|
|
D: AH
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
|
|
H:CLI
|
|
N:0
|
|
|
|
H:STI
|
|
N:0
|
|
|
|
H:CLD
|
|
N:4
|
|
D: TMP5
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, SystemFlags
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
D: SystemFlags
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: TMP5, CONST
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:STD
|
|
N:4
|
|
D: TMP5
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, SystemFlags
|
|
D: TMP5
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP5, 000010000
|
|
D: SystemFlags
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP5, 000001010
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:SALC
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, CONST
|
|
D: AL
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:Call rel16 near
|
|
N:3
|
|
D: sink
|
|
O: M_call
|
|
P:1
|
|
L:1
|
|
A: virt_ip
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: next_virt_ip
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Call rel32 near
|
|
N:3
|
|
D: sink
|
|
O: M_call
|
|
P:1
|
|
L:1
|
|
A: virt_ip
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: next_virt_ip
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Call r16 near
|
|
N:0
|
|
|
|
H:Call r32 near
|
|
N:0
|
|
|
|
H:Call m16 near
|
|
N:0
|
|
|
|
H:Call m32 near
|
|
N:0
|
|
|
|
H:Ret near
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (ESP
|
|
D: sink
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: ESP,
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: virt_ip, TMP0
|
|
|
|
H:RET near iw
|
|
N:0
|
|
|
|
H:JO rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNO rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JB rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNAE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JC rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNB rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JAE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNC rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JZ rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNZ rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JBE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNA rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNBE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNA rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JS rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNS rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JP rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JPE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNP rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JPO rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JL rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNGE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNL rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JGE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JLE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNG rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNLE rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JG rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JO rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JO rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNO rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNO rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JB rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNAE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JC rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JB rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNAE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JC rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNB rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JAE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNC rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNB rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JAE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNC rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JZ rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JZ rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNZ rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNZ rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JBE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNA rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JBE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNA rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNBE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNA rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNBE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNA rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JS rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JS rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNS rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNS rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JP rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JPE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JP rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JPE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNP rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JPO rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNP rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JPO rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JL rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNGE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JL rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNGE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNL rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JGE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNL rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JGE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JLE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNG rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JLE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNG rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNLE rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JG rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JNLE rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JG rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: ArithFLAGS, virt_ip
|
|
|
|
H:JCXZ rel8
|
|
N:2
|
|
D: TMP0
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ECX, CONST
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: TMP0, virt_ip)
|
|
|
|
H:JECXZ rel8
|
|
N:2
|
|
D: TMP0
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ECX, CONST
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: TMP0, virt_ip)
|
|
|
|
H:JMP rel8
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: virt_ip
|
|
|
|
H:JMP rel16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: virt_ip
|
|
|
|
H:JMP rel32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: virt_ip
|
|
|
|
H:JMP near reg16
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: virt_ip, REG_sss
|
|
|
|
H:JMP near reg32
|
|
N:1
|
|
D: sink
|
|
O:
|
|
P:1
|
|
L:1
|
|
A: virt_ip, REG_sss
|
|
|
|
H:JMP near m16
|
|
N:0
|
|
|
|
H:JMP near m32
|
|
N:0
|
|
|
|
H:LOOP rel8
|
|
N:0
|
|
|
|
H:LOOPE rel8
|
|
N:0
|
|
|
|
H:LOOPNE rel8
|
|
N:0
|
|
|
|
H:Halt
|
|
N:0
|
|
|
|
H:BOUND r16,m16& 16
|
|
N:0
|
|
|
|
H:BOUND r16,m32& 32
|
|
N:0
|
|
|
|
H:INTn
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
D: TMP1
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: 000110101
|
|
D: sink
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, TMP1) 1
|
|
|
|
H:INTO
|
|
N:0
|
|
|
|
H:INT3
|
|
N:0
|
|
|
|
H:INT1
|
|
N:0
|
|
|
|
H:IN eAX,imm8
|
|
N:0
|
|
|
|
H:IN eAX,DX
|
|
N:0
|
|
|
|
H:OUT imm8,eAX
|
|
N:0
|
|
|
|
H:OUT DX,eAX
|
|
N:0
|
|
|
|
H:INSB m8,DX
|
|
N:0
|
|
|
|
H:INSB m16,DX
|
|
N:0
|
|
|
|
H:INSB m32,DX
|
|
N:0
|
|
|
|
H:INSW m8,DX
|
|
N:0
|
|
|
|
H:INSW m16,DX
|
|
N:0
|
|
|
|
H:INSW m32,DX
|
|
N:0
|
|
|
|
H:INSD m8,DX
|
|
N:0
|
|
|
|
H:INSD m16,DX
|
|
N:0
|
|
|
|
H:INSD m32,DX
|
|
N:0
|
|
|
|
H:OUTSB DX,m8
|
|
N:0
|
|
|
|
H:OUTSB DX,m16
|
|
N:0
|
|
|
|
H:OUTSB DX,m32
|
|
N:0
|
|
|
|
H:OUTSW DX,m8
|
|
N:0
|
|
|
|
H:OUTSW DX,m16
|
|
N:0
|
|
|
|
H:OUTSW DX,m32
|
|
N:0
|
|
|
|
H:OUTSD DX,m8
|
|
N:0
|
|
|
|
H:OUTSD DX,m16
|
|
N:0
|
|
|
|
H:OUTSD DX,m32
|
|
N:0
|
|
|
|
H:REP INSB m8,DX
|
|
N:0
|
|
|
|
H:REP INSB m16,DX
|
|
N:0
|
|
|
|
H:REP INSB m32,DX
|
|
N:0
|
|
|
|
H:REP INSW m8,DX
|
|
N:0
|
|
|
|
H:REP INSW m16,DX
|
|
N:0
|
|
|
|
H:REP INSW m32,DX
|
|
N:0
|
|
|
|
H:REP INSD m8,DX
|
|
N:0
|
|
|
|
H:REP INSD m16,DX
|
|
N:0
|
|
|
|
H:REP INSD m32,DX
|
|
N:0
|
|
|
|
H:REP OUTSB DX,m8
|
|
N:0
|
|
|
|
H:REP OUTSB DX,m16
|
|
N:0
|
|
|
|
H:REP OUTSB DX,m32
|
|
N:0
|
|
|
|
H:REP OUTSW DX,m8
|
|
N:0
|
|
|
|
H:REP OUTSW DX,m16
|
|
N:0
|
|
|
|
H:REP OUTSW DX,m32
|
|
N:0
|
|
|
|
H:REP OUTSD DX,m8
|
|
N:0
|
|
|
|
H:REP OUTSD DX,m16
|
|
N:0
|
|
|
|
H:REP OUTSD DX,m32
|
|
N:0
|
|
|
|
H:LEA r16,m
|
|
N:1
|
|
D: REG_ddd
|
|
O: load_ea
|
|
P:0
|
|
L:1
|
|
A:base_BBB
|
|
|
|
H:LEA r32,m
|
|
N:1
|
|
D: REG_ddd
|
|
O: load_ea
|
|
P:0
|
|
L:1
|
|
A:base_BBB
|
|
|
|
H:NOP
|
|
N:1
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:BSWAP r32
|
|
N:2
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:XADD r/m8,r8
|
|
N:4
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
D: TMP1
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
D: REG_sss
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: TMP0, TMP1) 1
|
|
|
|
H:XADD r/m16,r16
|
|
N:4
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
D: TMP1
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
D: REG_sss
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: TMP0, TMP1) 1
|
|
|
|
H:XADD r/m32,r32
|
|
N:4
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
D: TMP1
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
D: REG_sss
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: TMP0, TMP1) 1
|
|
|
|
H:XADD m8,r8
|
|
N:0
|
|
|
|
H:XADD m16,r16
|
|
N:0
|
|
|
|
H:XADD m32,r32
|
|
N:0
|
|
|
|
H:LOCK XADD m8,r8
|
|
N:0
|
|
|
|
H:LOCK XADD m16,r16
|
|
N:0
|
|
|
|
H:LOCK XADD m32,r32
|
|
N:0
|
|
|
|
H:CMPXCHG r/m8,r8
|
|
N:0
|
|
|
|
H:CMPXCHG r/m16,r16
|
|
N:0
|
|
|
|
H:CMPXCHG r/m32,r32
|
|
N:0
|
|
|
|
H:CMPXCHG m8,r8
|
|
N:0
|
|
|
|
H:CMPXCHG m16,r16
|
|
N:0
|
|
|
|
H:CMPXCHG m32,r32
|
|
N:0
|
|
|
|
H:LOCK CMPXCHG m8,r8
|
|
N:0
|
|
|
|
H:LOCK CMPXCHG m16,r16
|
|
N:0
|
|
|
|
H:LOCK CMPXCHG m32,r32
|
|
N:0
|
|
|
|
H:CMPXCHG8B r/m64
|
|
N:0
|
|
|
|
H:LOCK CMPXCHG8B r/m64
|
|
N:0
|
|
|
|
H:XLAT
|
|
N:2
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: AL
|
|
D: AL
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: EBX
|
|
|
|
H:XLATB
|
|
N:2
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: AL
|
|
D: AL
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: EBX
|
|
|
|
H:CMOVO r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVO r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNO r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNO r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVB r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNAE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVC r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVB r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNAE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVC r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNB r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVAE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNC r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNB r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVAE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNC r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVZ r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVZ r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNZ r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNZ r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVBE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNA r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVBE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNA r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNBE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNA r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNBE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNA r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVS r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVS r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNS r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNS r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVP r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVPE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVP r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVPE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNP r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVPO r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNP r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVPO r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVL r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNGE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVL r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNGE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNL r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVGE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNL r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVGE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVLE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNG r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVLE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNG r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNLE r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVG r16,r16
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVNLE r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVG r32,r32
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:CMOVO r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVO r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNO r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNO r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVB r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNAE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVC r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVB r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNAE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVC r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNB r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVAE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNC r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNB r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVAE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNC r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVZ r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVZ r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNZ r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNZ r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVBE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNA r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVBE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNA r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNBE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNA r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNBE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNA r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVS r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVS r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNS r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNS r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVP r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVPE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVP r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVPE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNP r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVPO r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNP r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVPO r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVL r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNGE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVL r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNGE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNL r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVGE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNL r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVGE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVLE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNG r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVLE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNG r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNLE r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVG r16,m16
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVNLE r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CMOVG r32,m32
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, TMP0)
|
|
D: REG_ddd
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_ddd) 1
|
|
|
|
H:CPUID
|
|
N:0
|
|
|
|
H:MOV r/m8,r8
|
|
N:1
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
|
|
H:MOV r/m16,r16
|
|
N:1
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
|
|
H:MOV r/m32,r32
|
|
N:1
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
|
|
H:MOV m8,r8
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_ddd
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV m16,r16
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_ddd
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV m32,r32
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_ddd
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV r8,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOV r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOV r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOV r8,m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV r16,m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV r32,m32
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
|
|
H:MOV r/m16,imm16
|
|
N:1
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
|
|
H:MOV r/m32,imm32
|
|
N:1
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
|
|
H:MOV m8,imm8
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: IMM
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV m16,imm16
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: IMM
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV m32,imm32
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: IMM
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOV r8,imm8
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
|
|
H:MOV r16,imm16
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
|
|
H:MOV r32,imm32
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: IMM
|
|
|
|
H:MOV AL,moffs8
|
|
N:1
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: SEG+ DISP
|
|
|
|
H:MOV EAX,moffs16
|
|
N:1
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: SEG+ DISP
|
|
|
|
H:MOV EAX,moffs32
|
|
N:1
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: SEG+ DISP
|
|
|
|
H:MOV moffs8,AL
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: SEG+ DISP
|
|
|
|
H:MOV moffs16,EAX
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: SEG+ DISP
|
|
|
|
H:MOV moffs32,EAX
|
|
N:2
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: SEG+ DISP
|
|
|
|
H:XCHG r/m8,r8
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:XCHG r/m16,r16
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:XCHG r/m32,r32
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
D: REG_sss
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:XCHG eAX,r16
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: EAX
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:XCHG eAX,r32
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_ddd
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: EAX
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:XCHG m8,r8
|
|
N:0
|
|
|
|
H:XCHG m16,r16
|
|
N:0
|
|
|
|
H:XCHG m32,r32
|
|
N:0
|
|
|
|
H:LOCK XCHG m8,r8
|
|
N:0
|
|
|
|
H:LOCK XCHG m16,r16
|
|
N:0
|
|
|
|
H:LOCK XCHG m32,r32
|
|
N:0
|
|
|
|
H:MOV CR0,r32
|
|
N:0
|
|
|
|
H:MOV CR2,r32
|
|
N:0
|
|
|
|
H:MOV CR3,r32
|
|
N:0
|
|
|
|
H:MOV CR4,r32
|
|
N:0
|
|
|
|
H:LMSW r16
|
|
N:0
|
|
|
|
H:LMSW m16
|
|
N:0
|
|
|
|
H:SMSW m16
|
|
N:0
|
|
|
|
H:MOV DRx,r32
|
|
N:0
|
|
|
|
H:MOV r32,CR0
|
|
N:0
|
|
|
|
H:MOV r32,CR2
|
|
N:0
|
|
|
|
H:MOV r32,CR3
|
|
N:0
|
|
|
|
H:MOV r32,CR4
|
|
N:0
|
|
|
|
H:MOV r32,DRx
|
|
N:0
|
|
|
|
H:WRMSR
|
|
N:0
|
|
|
|
H:RDTSC
|
|
N:0
|
|
|
|
H:RDPMC
|
|
N:0
|
|
|
|
H:RDMSR
|
|
N:0
|
|
|
|
H:CLTS
|
|
N:0
|
|
|
|
H:IMUL r16,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:IMUL r32,r/m32
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_ddd, REG_sss
|
|
|
|
H:IMUL r16,m16
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_ddd, TMP1
|
|
|
|
H:IMUL r32,m32
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_ddd, TMP1
|
|
|
|
H:IMUL r16,r/m16,imm8
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_sss, IMM
|
|
|
|
H:IMUL r32,r/m32,imm8
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_sss, IMM
|
|
|
|
H:IMUL r16,r/m16,imm16
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_sss, IMM
|
|
|
|
H:IMUL r32,r/m32,imm16
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_sss, IMM
|
|
|
|
H:IMUL r16,r/m16,imm32
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_sss, IMM
|
|
|
|
H:IMUL r32,r/m32,imm32
|
|
N:1
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: REG_sss, IMM
|
|
|
|
H:IMUL r16,r/m16,imm8
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: TMP1, IMM
|
|
|
|
H:IMUL r32,r/m32,imm8
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: TMP1, IMM
|
|
|
|
H:IMUL r16,r/m16,imm16
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: TMP1, IMM
|
|
|
|
H:IMUL r32,r/m32,imm16
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: TMP1, IMM
|
|
|
|
H:IMUL r16,r/m16,imm32
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: TMP1, IMM
|
|
|
|
H:IMUL r32,r/m32,imm32
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: REG_ddd
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: TMP1, IMM
|
|
|
|
H:IMUL r/m8
|
|
N:1
|
|
D: AX
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: AL, REG_sss
|
|
|
|
H:IMUL m8
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: AX
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: AL, TMP1
|
|
|
|
H:IMUL r/m16
|
|
N:3
|
|
D: TMP0
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: EAX, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:IMUL m16
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: EAX, TMP1
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:IMUL r/m32
|
|
N:3
|
|
D: TMP0
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: EAX, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:IMUL m32
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: int_mul
|
|
P:0
|
|
L:4
|
|
A: EAX, TMP1
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:MUL AL,r/m8
|
|
N:1
|
|
D: AX
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: AL, REG_sss
|
|
|
|
H:MUL AL,m8
|
|
N:2
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: AX
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: AL, TMP1
|
|
|
|
H:MUL AX,r/m16
|
|
N:3
|
|
D: TMP0
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: EAX, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:MUL AX,m16
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: EAX, TMP1
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:MUL EAX,r/m32
|
|
N:3
|
|
D: TMP0
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: EAX, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:MUL EAX,m32
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: mul
|
|
P:0
|
|
L:4
|
|
A: EAX, TMP1
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:IDIV AL,r/m8
|
|
N:3
|
|
D: TMP0
|
|
O: int_div
|
|
P:0
|
|
L:99
|
|
A: AX, REG_sss
|
|
D: AL
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: AH
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:IDIV AX,m8
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: int_div
|
|
P:0
|
|
L:99
|
|
A: AX, TMP1
|
|
D: AL
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: AH
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:IDIV eAX,r/m16
|
|
N:4
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: int_div
|
|
P:0
|
|
L:99
|
|
A: TMP2, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:IDIV eAX,r/m32
|
|
N:4
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: int_div
|
|
P:0
|
|
L:99
|
|
A: TMP2, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:IDIV AX,m16
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: int_div
|
|
P:0
|
|
L:99
|
|
A: TMP2, TMP1
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:IDIV AX,m32
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: int_div
|
|
P:0
|
|
L:99
|
|
A: TMP2, TMP1
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:DIV AL,r/m8
|
|
N:3
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: AX, REG_sss
|
|
D: AL
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: AH
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:DIV AX,m8
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: AX, TMP1
|
|
D: AL
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: AH
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:DIV AX,r/m16
|
|
N:4
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: TMP2, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:DIV AX,r/m32
|
|
N:4
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: TMP2, REG_sss
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
D: EDX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:DIV AX,m16
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: TMP2, TMP1
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:DIV AX,m32
|
|
N:4
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: EDX, EAX
|
|
D: TMP0
|
|
O: div
|
|
P:0
|
|
L:99
|
|
A: TMP2, TMP1
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:SHL r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAL r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHL r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAL r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHL r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAL r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAR r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAR r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAR r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHR r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHR r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHR r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHL r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAL r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHL r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAL r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHL r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SAL r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:SHL m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAL r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHL r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAL r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHL r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAL r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAR r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAR r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAR r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHR r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHR r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHR r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHL r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAL r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHL r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAL r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHL r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SAL r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:SHL m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAL r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHL r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAL r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHL r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAL r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAR r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAR r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAR r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHR r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHR r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHR r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHL r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAL r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHL r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAL r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHL r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SAL r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:SHL m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAR m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHR m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m8,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m16,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SHL m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:SAL m32,imm8
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, IMM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:ROL r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:ROL r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:ROR r/m8,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:ROR r/m16,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:ROR r/m32,1
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CONST
|
|
|
|
H:ROL m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROR m8,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROR m16,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROR m32,1
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:ROL r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:ROL r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:ROR r/m8,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:ROR r/m16,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:ROR r/m32,CL
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
|
|
H:ROL m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROR m8,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROR m16,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROR m32,CL
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CL
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:ROL r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ROL r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ROL r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ROR r/m8,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ROR r/m16,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ROR r/m32,imm8
|
|
N:1
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
|
|
H:ROL m8,imm8
|
|
N:0
|
|
|
|
H:ROL m16,imm8
|
|
N:0
|
|
|
|
H:ROL m32,imm8
|
|
N:0
|
|
|
|
H:ROR m8,imm8
|
|
N:0
|
|
|
|
H:ROR m16,imm8
|
|
N:0
|
|
|
|
H:ROR m32,imm8
|
|
N:0
|
|
|
|
H:RCL r/m8,1
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:RCL r/m16,1
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:RCL r/m32,1
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:RCR r/m8,1
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:RCR r/m16,1
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:RCR r/m32,1
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:01
|
|
L:1
|
|
A: ArithFLAGS, REG_sss
|
|
D: REG_sss
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP0, CONST
|
|
|
|
H:RCL m8,1
|
|
N:0
|
|
|
|
H:RCL m16,1
|
|
N:0
|
|
|
|
H:RCL m32,1
|
|
N:0
|
|
|
|
H:RCR m8,1
|
|
N:0
|
|
|
|
H:RCR m16,1
|
|
N:0
|
|
|
|
H:RCR m32,1
|
|
N:0
|
|
|
|
H:RCL r/m8,CL
|
|
N:0
|
|
|
|
H:RCL r/m16,CL
|
|
N:0
|
|
|
|
H:RCL r/m32,CL
|
|
N:0
|
|
|
|
H:RCR r/m8,CL
|
|
N:0
|
|
|
|
H:RCR r/m16,CL
|
|
N:0
|
|
|
|
H:RCR r/m32,CL
|
|
N:0
|
|
|
|
H:RCL m8,CL
|
|
N:0
|
|
|
|
H:RCL m16,CL
|
|
N:0
|
|
|
|
H:RCL m32,CL
|
|
N:0
|
|
|
|
H:RCR m8,CL
|
|
N:0
|
|
|
|
H:RCR m16,CL
|
|
N:0
|
|
|
|
H:RCR m32,CL
|
|
N:0
|
|
|
|
H:RCL r/m8,imm8
|
|
N:0
|
|
|
|
H:RCL r/m16,imm8
|
|
N:0
|
|
|
|
H:RCL r/m32,imm8
|
|
N:0
|
|
|
|
H:RCR r/m8,imm8
|
|
N:0
|
|
|
|
H:RCR r/m16,imm8
|
|
N:0
|
|
|
|
H:RCR r/m32,imm8
|
|
N:0
|
|
|
|
H:RCL m8,imm8
|
|
N:0
|
|
|
|
H:RCL m16,imm8
|
|
N:0
|
|
|
|
H:RCL m32,imm8
|
|
N:0
|
|
|
|
H:RCR m8,imm8
|
|
N:0
|
|
|
|
H:RCR m16,imm8
|
|
N:0
|
|
|
|
H:RCR m32,imm8
|
|
N:0
|
|
|
|
H:SHLD r/m16,r16,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
D: REG_sss
|
|
O: shl_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHLD r/m32,r32,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
D: REG_sss
|
|
O: shl_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHLD r/m16,r16,CL
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
D: REG_sss
|
|
O: shl_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHLD r/m32,r32,CL
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
D: REG_sss
|
|
O: shl_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHLD m16,r16,imm8
|
|
N:0
|
|
|
|
H:SHLD m32,r32,imm8
|
|
N:0
|
|
|
|
H:SHLD m16,r16,CL
|
|
N:0
|
|
|
|
H:SHLD m32,r32,CL
|
|
N:0
|
|
|
|
H:SHRD r/m16,r16,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
D: REG_sss
|
|
O: shr_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHRD r/m32,r32,imm8
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, IMM
|
|
D: REG_sss
|
|
O: shr_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHRD r/m16,r16,CL
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
D: REG_sss
|
|
O: shr_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHRD r/m32,r32,CL
|
|
N:2
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: REG_sss, CL
|
|
D: REG_sss
|
|
O: shr_double
|
|
P:0
|
|
L:1
|
|
A: TMP0, REG_ddd)
|
|
|
|
H:SHRD m16,r16,imm8
|
|
N:0
|
|
|
|
H:SHRD m32,r32,imm8
|
|
N:0
|
|
|
|
H:SHRD m16,r16,CL
|
|
N:0
|
|
|
|
H:SHRD m32,r32,CL
|
|
N:0
|
|
|
|
H:Push r16
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_ddd
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push r32
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_ddd
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push r16
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_sss
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push r32
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: REG_sss
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push m16
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push m32
|
|
N:4
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push imm8
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: IMM
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push imm16
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: IMM
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Push imm32
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: IMM
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Pop r16
|
|
N:2
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Pop r32
|
|
N:2
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Pop eSP
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
D: ESP
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: TMP0
|
|
|
|
H:Pop r16
|
|
N:2
|
|
D: REG_sss
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Pop r32
|
|
N:2
|
|
D: REG_sss
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (ESP
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: ESP, REG_OP_Size
|
|
|
|
H:Pop m16
|
|
N:0
|
|
|
|
H:Pop m32
|
|
N:0
|
|
|
|
H:PUSHA
|
|
N:0
|
|
|
|
H:PUSHAD
|
|
N:0
|
|
|
|
H:POPA
|
|
N:0
|
|
|
|
H:POPAD
|
|
N:0
|
|
|
|
H:ENTER
|
|
N:0
|
|
|
|
H:leave
|
|
N:3
|
|
D: TMP0
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: EBP
|
|
D: EBP
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: (TMP0
|
|
D: ESP
|
|
O: add
|
|
P:01
|
|
L:1
|
|
A: TMP0, REG_OP_Size
|
|
|
|
H:MOVSB m8,m8
|
|
N:0
|
|
|
|
H:MOVSB m16,m16
|
|
N:0
|
|
|
|
H:MOVSB m32,m32
|
|
N:0
|
|
|
|
H:MOVSW m8,m8
|
|
N:0
|
|
|
|
H:MOVSW m16,m16
|
|
N:0
|
|
|
|
H:MOVSW m32,m32
|
|
N:0
|
|
|
|
H:MOVSD m8,m8
|
|
N:0
|
|
|
|
H:MOVSD m16,m16
|
|
N:0
|
|
|
|
H:MOVSD m32,m32
|
|
N:0
|
|
|
|
H:CMPSB m8,m8
|
|
N:0
|
|
|
|
H:CMPSB m16,m16
|
|
N:0
|
|
|
|
H:CMPSB m32,m32
|
|
N:0
|
|
|
|
H:CMPSW m8,m8
|
|
N:0
|
|
|
|
H:CMPSW m16,m16
|
|
N:0
|
|
|
|
H:CMPSW m32,m32
|
|
N:0
|
|
|
|
H:CMPSD m8,m8
|
|
N:0
|
|
|
|
H:CMPSD m16,m16
|
|
N:0
|
|
|
|
H:CMPSD m32,m32
|
|
N:0
|
|
|
|
H:SCASB m8,m8
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASB m16,m16
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASB m32,m32
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASW m8,m8
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASW m16,m16
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASW m32,m32
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASD m8,m8
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASD m16,m16
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:SCASD m32,m32
|
|
N:3
|
|
D: TMP1
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A:EDI
|
|
D: TMP2
|
|
O: sub
|
|
P:01
|
|
L:1
|
|
A: EAX, TMP1
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A: LINSEG_SUPOVR: (EDI
|
|
|
|
H:LODSB m8,m8
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSB m16,m16
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSB m32,m32
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSW m8,m8
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSW m16,m16
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSW m32,m32
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSD m8,m8
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSD m16,m16
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:LODSD m32,m32
|
|
N:2
|
|
D: EAX
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: ESI
|
|
D: ESI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (ESI
|
|
|
|
H:STOSB m8,m8
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSB m16,m16
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSB m32,m32
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSW m8,m8
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSW m16,m16
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSW m32,m32
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSD m8,m8
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSD m16,m16
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:STOSD m32,m32
|
|
N:3
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: EAX
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: EDI
|
|
D: EDI
|
|
O:
|
|
P:2
|
|
L:1
|
|
A:* LINSEG_SUPOVR: (EDI
|
|
|
|
H:REP MOVSB m8,m8
|
|
N:0
|
|
|
|
H:REP MOVSB m16,m16
|
|
N:0
|
|
|
|
H:REP MOVSB m32,m32
|
|
N:0
|
|
|
|
H:REP MOVSW m8,m8
|
|
N:0
|
|
|
|
H:REP MOVSW m16,m16
|
|
N:0
|
|
|
|
H:REP MOVSW m32,m32
|
|
N:0
|
|
|
|
H:REP MOVSD m8,m8
|
|
N:0
|
|
|
|
H:REP MOVSD m16,m16
|
|
N:0
|
|
|
|
H:REP MOVSD m32,m32
|
|
N:0
|
|
|
|
H:REP CMPSB m8,m8
|
|
N:0
|
|
|
|
H:REP CMPSB m16,m16
|
|
N:0
|
|
|
|
H:REP CMPSB m32,m32
|
|
N:0
|
|
|
|
H:REP CMPSW m8,m8
|
|
N:0
|
|
|
|
H:REP CMPSW m16,m16
|
|
N:0
|
|
|
|
H:REP CMPSW m32,m32
|
|
N:0
|
|
|
|
H:REP CMPSD m8,m8
|
|
N:0
|
|
|
|
H:REP CMPSD m16,m16
|
|
N:0
|
|
|
|
H:REP CMPSD m32,m32
|
|
N:0
|
|
|
|
H:REP SCASB m8,m8
|
|
N:0
|
|
|
|
H:REP SCASB m16,m16
|
|
N:0
|
|
|
|
H:REP SCASB m32,m32
|
|
N:0
|
|
|
|
H:REP SCASW m8,m8
|
|
N:0
|
|
|
|
H:REP SCASW m16,m16
|
|
N:0
|
|
|
|
H:REP SCASW m32,m32
|
|
N:0
|
|
|
|
H:REP SCASD m8,m8
|
|
N:0
|
|
|
|
H:REP SCASD m16,m16
|
|
N:0
|
|
|
|
H:REP SCASD m32,m32
|
|
N:0
|
|
|
|
H:REP LODSB m8,m8
|
|
N:0
|
|
|
|
H:REP LODSB m16,m16
|
|
N:0
|
|
|
|
H:REP LODSB m32,m32
|
|
N:0
|
|
|
|
H:REP LODSW m8,m8
|
|
N:0
|
|
|
|
H:REP LODSW m16,m16
|
|
N:0
|
|
|
|
H:REP LODSW m32,m32
|
|
N:0
|
|
|
|
H:REP LODSD m8,m8
|
|
N:0
|
|
|
|
H:REP LODSD m16,m16
|
|
N:0
|
|
|
|
H:REP LODSD m32,m32
|
|
N:0
|
|
|
|
H:REP STOSB m8,m8
|
|
N:0
|
|
|
|
H:REP STOSB m16,m16
|
|
N:0
|
|
|
|
H:REP STOSB m32,m32
|
|
N:0
|
|
|
|
H:REP STOSW m8,m8
|
|
N:0
|
|
|
|
H:REP STOSW m16,m16
|
|
N:0
|
|
|
|
H:REP STOSW m32,m32
|
|
N:0
|
|
|
|
H:REP STOSD m8,m8
|
|
N:0
|
|
|
|
H:REP STOSD m16,m16
|
|
N:0
|
|
|
|
H:REP STOSD m32,m32
|
|
N:0
|
|
|
|
H:MOVSX r16,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOVSX r32,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOVSX r32,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOVSX r16,m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOVSX r32,m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOVSX r16,m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOVSX r32,m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOVZX r16,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOVZX r32,r/m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOVZX r32,r/m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: REG_sss
|
|
|
|
H:MOVZX r16,m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOVZX r32,m8
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:MOVZX r32,m16
|
|
N:1
|
|
D: REG_ddd
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:CWD
|
|
N:1
|
|
D: EDX
|
|
O: sar
|
|
P:0
|
|
L:1
|
|
A: EAX, CONST
|
|
|
|
H:CDQ
|
|
N:1
|
|
D: EDX
|
|
O: sar
|
|
P:0
|
|
L:1
|
|
A: EAX, CONST
|
|
|
|
H:CBW
|
|
N:1
|
|
D: AX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: AL
|
|
|
|
H:CWDE
|
|
N:1
|
|
D: EAX
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: AX
|
|
|
|
H:FADD ST,ST( i)
|
|
N:1
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FMUL ST,ST( i)
|
|
N:1
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FSUB ST,ST( i)
|
|
N:1
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FDIV ST,ST( i)
|
|
N:1
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FADD ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FMUL ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FSUBR ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FDIVR ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FADDP ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FSUBP ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FMULP ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FDIVP ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FSUB ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FDIV ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FSUBR ST,ST( i)
|
|
N:1
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FDIVR ST,ST( i)
|
|
N:1
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST( i), ST0
|
|
|
|
H:FSUBRP ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FDIVRP ST( i),ST
|
|
N:1
|
|
D: ST( i)
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, ST( i)
|
|
|
|
H:FADD m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FADD m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FSUB m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FSUB m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FMUL m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FMUL m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FDIV m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FDIV m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: ST0, TMP0)
|
|
|
|
H:FSUBR m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: TMP0, ST0)
|
|
|
|
H:FSUBR m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: TMP0, ST0)
|
|
|
|
H:FDIVR m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: TMP0, ST0)
|
|
|
|
H:FDIVR m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: ST0
|
|
O:
|
|
P:0
|
|
L:4_or_5_or_99
|
|
A: TMP0, ST0)
|
|
|
|
H:FIADD m32int
|
|
N:0
|
|
|
|
H:FIADD m16int
|
|
N:0
|
|
|
|
H:FISUB m32int
|
|
N:0
|
|
|
|
H:FISUB m16int
|
|
N:0
|
|
|
|
H:FIMUL m32int
|
|
N:0
|
|
|
|
H:FIMUL m16int
|
|
N:0
|
|
|
|
H:FIDIV m32int
|
|
N:0
|
|
|
|
H:FIDIV m16int
|
|
N:0
|
|
|
|
H:FISUBR m32int
|
|
N:0
|
|
|
|
H:FISUBR m16int
|
|
N:0
|
|
|
|
H:FIDIVR m32int
|
|
N:0
|
|
|
|
H:FIDIVR m16int
|
|
N:0
|
|
|
|
H:FSQRT
|
|
N:1
|
|
D: ST0
|
|
O: fp_sqrt
|
|
P:0
|
|
L:66
|
|
A: ST0, CONST
|
|
|
|
H:FCOM m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, TMP0
|
|
|
|
H:FCOM m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, TMP0
|
|
|
|
H:FCOM STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCOM2 STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCOMP m32real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, TMP0
|
|
|
|
H:FCOMP m64real
|
|
N:2
|
|
D: TMP0
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, TMP0
|
|
|
|
H:FCOMP STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCOMP3 STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCOMP5 STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCOMPP
|
|
N:2
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST1
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FICOM m32int
|
|
N:0
|
|
|
|
H:FICOM m16int
|
|
N:0
|
|
|
|
H:FICOMP m32int
|
|
N:0
|
|
|
|
H:FICOMP m16int
|
|
N:0
|
|
|
|
H:FTST
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, CONST
|
|
|
|
H:FUCOM STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FUCOMP STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FUCOMPP
|
|
N:2
|
|
D: sink
|
|
O: fp_compare
|
|
P:0
|
|
L:1
|
|
A: ST0, ST1
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FXAM
|
|
N:1
|
|
D: sink
|
|
O: fp_examine
|
|
P:0
|
|
L:3
|
|
A: ST0
|
|
|
|
H:FCOMI STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:( not found)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCOMIP STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:( not found)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FUCOMI STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:( not found)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FUCOMIP STi
|
|
N:1
|
|
D: sink
|
|
O: fp_compare
|
|
P:( not found)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FLDZ
|
|
N:1
|
|
D: ST7
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FLD1
|
|
N:2
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST7
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: TMP0)
|
|
|
|
H:FLDPI
|
|
N:2
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST7
|
|
O: fp_normalize
|
|
P:0
|
|
L:3
|
|
A: TMP0
|
|
|
|
H:FLDL2T
|
|
N:2
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST7
|
|
O: fp_normalize
|
|
P:0
|
|
L:3
|
|
A: TMP0
|
|
|
|
H:FLDL2E
|
|
N:2
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST7
|
|
O: fp_normalize
|
|
P:0
|
|
L:3
|
|
A: TMP0
|
|
|
|
H:FLDLG2
|
|
N:2
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST7
|
|
O: fp_normalize
|
|
P:0
|
|
L:3
|
|
A: TMP0
|
|
|
|
H:FLDLN2
|
|
N:2
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST7
|
|
O: fp_normalize
|
|
P:0
|
|
L:3
|
|
A: TMP0
|
|
|
|
H:FNINIT
|
|
N:0
|
|
|
|
H:FNSTCW m2byte
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:( not found)
|
|
L:1
|
|
A: CONST, CONST
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0)
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FNSTENV m14byte
|
|
N:0
|
|
|
|
H:FNSTENV m28byte
|
|
N:0
|
|
|
|
H:FNSAVE m94byte
|
|
N:0
|
|
|
|
H:FNSAVE m108byte
|
|
N:0
|
|
|
|
H:FLDCW m2byte
|
|
N:3
|
|
D: TMP0
|
|
O: load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: sink
|
|
O:
|
|
P:( not found)
|
|
L:1
|
|
A: CONST, TMP0
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FRSTOR m14byte
|
|
N:0
|
|
|
|
H:FRSTOR m28byte
|
|
N:0
|
|
|
|
H:FRSTOR m94byte
|
|
N:0
|
|
|
|
H:FRSTOR m108byte
|
|
N:0
|
|
|
|
H:FNCLEX
|
|
N:3
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
D: FSW
|
|
O: and
|
|
P:01
|
|
L:1
|
|
A: FSW, CONST
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FNSTSW m2byte
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: FCC, FSW
|
|
D: sink
|
|
O: store_data
|
|
P:4
|
|
L:1
|
|
A: TMP0
|
|
D: sink
|
|
O: store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FNSTSW AX
|
|
N:3
|
|
D: TMP0
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: FCC, FSW
|
|
D: TMP1
|
|
O: shr
|
|
P:0
|
|
L:1
|
|
A: EAX, CONST
|
|
D: EAX
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP1, TMP0
|
|
|
|
H:FDISI
|
|
N:1
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FENI
|
|
N:1
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FSETPM
|
|
N:1
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FINCSTP
|
|
N:1
|
|
D: sink
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FDECSTP
|
|
N:1
|
|
D: sink
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FFREE ST( i)
|
|
N:1
|
|
D: sink
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST( i)
|
|
|
|
H:FFREEP ST( i)
|
|
N:2
|
|
D: sink
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST( i)
|
|
D: sink
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FNOP
|
|
N:1
|
|
D: sink
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FWAIT
|
|
N:2
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
D: sink
|
|
O: move
|
|
P:01
|
|
L:1
|
|
A: CONST
|
|
|
|
H:FILD m16int
|
|
N:4
|
|
D: TMP1
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP1
|
|
D: ST7
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, TMP2
|
|
|
|
H:FILD m32int
|
|
N:4
|
|
D: TMP1
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP1
|
|
D: ST7
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, TMP2
|
|
|
|
H:FILD m64int
|
|
N:4
|
|
D: TMP1
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP2
|
|
O:
|
|
P:0
|
|
L:1
|
|
A: TMP1
|
|
D: ST7
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, TMP2
|
|
|
|
H:FLD m32real
|
|
N:1
|
|
D: ST7
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FLD m64real
|
|
N:1
|
|
D: ST7
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FLD m80real
|
|
N:4
|
|
D: TMP2
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: MEM
|
|
D: TMP0
|
|
O: load_ea
|
|
P:0
|
|
L:1
|
|
A: base_BBB
|
|
D: TMP3
|
|
O: fp_load
|
|
P:2
|
|
L:1
|
|
A: TMP0
|
|
D: ST7
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: TMP3, TMP2
|
|
|
|
H:FLD STi
|
|
N:1
|
|
D: ST7
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST( i)
|
|
|
|
H:FIST m16int
|
|
N:4
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP1
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, ST0
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FIST m32int
|
|
N:4
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP1
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, ST0
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: TMP1
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FISTP m16int
|
|
N:4
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP1
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, ST0
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0, TMP1
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FISTP m32int
|
|
N:4
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP1
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, ST0
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0, TMP1
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FISTP m64int
|
|
N:4
|
|
D: TMP0
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: TMP1
|
|
O: fp_convert
|
|
P:0
|
|
L:3
|
|
A: TMP0, ST0
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0, TMP1
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FST m32real
|
|
N:2
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FST m64real
|
|
N:2
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FST STi
|
|
N:1
|
|
D: ST( i)
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FSTP m32real
|
|
N:2
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FSTP m64real
|
|
N:2
|
|
D: sink
|
|
O: fp_store_data
|
|
P:4
|
|
L:1
|
|
A: ST0
|
|
D: sink
|
|
O: fp_store_address
|
|
P:3
|
|
L:1
|
|
A: MEM
|
|
|
|
H:FSTP m80real
|
|
N:0
|
|
|
|
H:FSTP STi
|
|
N:1
|
|
D: ST( i)
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FSTP8 STi
|
|
N:1
|
|
D: ST( i)
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FSTP9 STi
|
|
N:1
|
|
D: ST( i)
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FSTP1 STi
|
|
N:1
|
|
D: ST( i)
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
|
|
H:FXCH STi
|
|
N:1
|
|
D: sink
|
|
O: fp_exchange
|
|
P:( none*)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FXCH4 STi
|
|
N:1
|
|
D: sink
|
|
O: fp_exchange
|
|
P:( none*)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FXCH7 STi
|
|
N:1
|
|
D: sink
|
|
O: fp_exchange
|
|
P:( none*)
|
|
L:1
|
|
A: ST0, ST( i)
|
|
|
|
H:FCMOVB STi
|
|
N:2
|
|
D: MP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVE STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVBE STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVU STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVNB STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVNE STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVNBE STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FCMOVNU STi
|
|
N:2
|
|
D: TMP0
|
|
O: merge
|
|
P:0
|
|
L:1
|
|
A: ArithFLAGS, ST( i)
|
|
D: ST0
|
|
O: fp_select
|
|
P:0
|
|
L:1
|
|
A: TMP0, ST0
|
|
|
|
H:FABS
|
|
N:1
|
|
D: ST0
|
|
O: fp_xor_sign
|
|
P:0
|
|
L:1
|
|
A: ST0, ST0
|
|
|
|
H:FCHS
|
|
N:3
|
|
D: TMP0
|
|
O: fp_move
|
|
P:0
|
|
L:1
|
|
A: ST0
|
|
D: TMP1
|
|
O: freadrom
|
|
P:( not found)
|
|
L:1
|
|
A: CONST
|
|
D: ST0
|
|
O: fp_xor
|
|
P:0
|
|
L:1
|
|
A: TMP0, TMP1
|
|
|
|
H:FPREM
|
|
N:0
|
|
|
|
H:FPREM1
|
|
N:0
|
|
|
|
H:FBLD m80dec
|
|
N:0
|
|
|
|
H:FBSTP m80dec
|
|
N:0
|
|
|
|
H:FRNDINT
|
|
N:0
|
|
|
|
H:FSCALE
|
|
N:0
|
|
|
|
H:FXTRACT
|
|
N:0
|
|
|
|
H:F2XM1
|
|
N:0
|
|
|
|
H:FCOS
|
|
N:0
|
|
|
|
H:FPATAN
|
|
N:0
|
|
|
|
H:FPTAN
|
|
N:0
|
|
|
|
H:FSIN
|
|
N:0
|
|
|
|
H:FSINCOS
|
|
N:0
|
|
|
|
H:FYL2X
|
|
N:0
|
|
|
|
H:FYL2XP1
|
|
N:0
|
|
|
|
---------------------------------------------------------
|
|
---------------------------------------------------------
|
|
[Credits & Info]:
|
|
So Long and Thaks for All the Fish, guys ;)
|
|
----------------------------------------------------------
|
|
Q&A:
|
|
|
|
Q. - How to find latest version of OPCODE.LST ?
|
|
A. - You may find it within Ralf's INTERxx.ZIP.
|
|
|
|
Q. - Did PHG have WWW page, where placed OPCODE.LST ?
|
|
A. - http://www.chat.ru/~phg
|
|
-----------------------------------------------------------
|
|
[2 All]
|
|
If You found some errors or incorrections in this text
|
|
please send info 'bout it.
|
|
-----------------------------------------------------------
|
|
Sorry, But EOF
|