[File provided by Alex V. Potemkin avk@netserv2.free.net] Last Change 10/23/94
This is DOC about undocumented instructions and documented instructions of any last processors
(C) (P) Potemkin's Hackers Group 1994
Revision 1. 1 September 1994
BSWAP - Bytes Swap
CPU: I486 +
Type of Instruction: Operation
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 Clocks: Cyrix Cx486SLC : 4
i486 : 1 Pentium : 1
CMPXCHG8B - Compare and exchange 8 bytes
CPU: Pentium ™
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
CMPXCHG - Compare and exchange
CPU: i486+
Type of Instruction: Operation
Instruction: CMPXCHG dest, src
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
CPUID - CPU Identification
CPU: Intel 486DX/SX/DX2 SL Enhanced and all later Intel processors include (IntelDX4, IntelSX2, Pentium etc.)
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.
Type of Instruction: Operation
Instruction: CPUID
Description:
IF (EAX=0) THEN { EAX <- Maximum value of EAX to CALL CPUID instruction 1 for all processors (date 1 September 1994) may be >1 in future microprocessors EBX <- 756E6547H i.e. 'Genu' EDX <- 49656E69H i.e. 'ineI' ECX <- 6C65746EH i.e. 'ntel' ;; EBX, EDX and ECX contain a OEM name string ;; for Intel this string is 'GenuineIntel' } ELSEIF (EAX=1) THEN { EAX[3:0] <- Stepping ID EAX[7:4] <- Model EAX[11:8] <- Family ; 4 - i486 family ; 5 - Pentium family EAX[15:12] <- Reserved ; set to 0 now ; but I'm sure that for Pentium OverDrive for P54C ;this field will be set to 1 EAX[31:16] <- Reserved and set to 0s now
EDX <- Compability flags ;; below all info if bit flag =1 EDX[0] <- FPU on Chip EDX[1] <- Virtual Mode Extention present EDX[2] ?? EDX[3] ?? EDX[4] ?? somethere here TSC support EDX[5] ?? EDX[6] ?? EDX[7] <- Machine Check exception present EDX[8] <- CMPXCHG8B instruction present EDX[9] <- APIC on Chip EDX[31:10] <- Reserved and set to 0s now } ELSEIF (EAX > 1) THEN { EAX, EBX, ECX, EDX <- Undefined } END.
Global Note:
This file contain open i.e nonconfiderential information about CPUID information. If you want MORE try to contact Intel, may be (but I'm sure that not) Intelers give you "Yellow Pages" (i.e Supplement to Pentium (tm) Processor User's Manual) to read inside office if you not a designer of compiler or operation system.
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
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
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
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
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 :
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 :
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 :
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
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
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
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
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
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
LOADALL - Load All Registers
CPU: Intel 386+ +all clones
Type of Instruction: System Operation
(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
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
LOADALL - Load All Registers From Table
CPU: Intel 80286 and all its clones
Type of Instruction: System Operation
(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
Flags Affected: All (FLAGS Register Reload)
CPU mode: RM, PM0
Physical Form: LOADALL COP (Code of Operation): 0FH 05H Clocks: 80286 : 195
RDMSR - Read From Model Specified Register
CPU: Pentium ™
Type of Instruction: Operation
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
Flags Affected: None
CPU mode: RM, PM0, SMM
Physical Form: RDMSR COP (Code of Operation): 0FH 32H Clocks: Pentium : 20-24
RDTSC - Read From Time Stamp Counter
CPU: Pentium ™
Type of Instruction: Operation
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.
(But what about frequency ???)
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]
REPC - Repeat While Carry Flag
CPU: NEC V20, NEC V30, etc [ Vxx seria ]
Sony V20, Sony V30
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
REPNC - Repeat While Not Carry Flag
CPU: NEC V20, NEC V30, etc [ Vxx seria ]
Sony V20, Sony V30
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
RES3 - Restore All CPU Registers
CPU: AMD Am386SXLV, Am386DXLV
also all AMD's 486 which support SMM
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)
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
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)
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
SETALC - Set AL to Carry Flag
CPU: Intel 80286 and all its clones and upward
compatibility chips
Type of Instruction: Operation
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]
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?
UMOV - Mov Data to Main (User) Memory
CPU: AMD Am386SXLV, Am386DXLV
AMD 486s
Type of Instruction: Operation
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)
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
+++++++++++++++++++++ Physical Form: UMOV r/m16, r16
UMOV r/m32, r32
COP (Code of Operation) : 0FH 11H Postbyte
Clocks:
Am386SXLV or AM386DXLV: 2/2
+++++++++++++++++++++++ Physical Form: UMOV r8, r/m8 COP (Code of Operation) : 0FH 12H Postbyte
Clocks:
Am386SXLV or AM386DXLV: 2/4
+++++++++++++++++++++ Physical Form: UMOV r16, r/m16
UMOV r32, r/m32
COP (Code of Operation) : 0FH 13H Postbyte
Clocks:
Am386SXLV or AM386DXLV: 2/4
WBINVD - Write Back and Invalidate Cache
CPU: I486 +
Type of Instruction: System
Instruction: WBINVD
Description:
IF (internal cache is WB) 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+
WRMSR - Write to From Model Specified Register
CPU: Pentium ™
Type of Instruction: Operation
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
CPU mode: RM, PM0, SMM
Physical Form: WRMSR COP (Code of Operation): 0FH 30H Clocks: Pentium : 30-45
XADD - Exchange and addition
CPU: i486+
Type of Instruction: Operation
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
—end of file—end of file—