⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcodes.lst

📁 A Programmer s Reference to BIOS, DOS, and Third-Party Calls
💻 LST
📖 第 1 页 / 共 5 页
字号:
		 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 ----	 ??

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -