CPUID指令功能,附源码和程序。
程序源码和程序:CPUID.zip
[bits 32] ;Nasm win32 CPUID 功能演示 ; ;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 ; ; vL isqjIi rs rIXjsIk iigviiiiVdii SJJsZLJsV iijvr E U Yi i ; uBBs bQ B B XQ Bi viBqvrJiVqii BRi iBi iQg YUBSi ukiiB iSBB sSjBBkXr iBB BB vB ; KP B B Bid Vv BQv g Ii Qiiii BgiiiBiiiQM viBiu i B Bi Bv dq BBQBB ; sgBi iYiEBi XBr BB iQ B Pr iiiiv iUi iBi iI diZ B ii B Bv uDiurMB ii i i i ; is Bi Bi B ZI Bvg gi vidYiEdEgv vYvPSBuDjvv BiR B ii B JQD dv Qi ; kBiE B B Rrv vQ iBB B B Q B MB B UBv B B B sYvPBs B KBB ; BMBQiikBBQBq ivvsiB Vg vB JB iQ iB Br UQL B RD B B B iB iB uZk gM ; irriiiiii ii i virrrrrirrrr v r r i Ji r ii ; ;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 ; ; ; ;%include "E:\RadAsm\Nasm\inc\nasmx.inc" %include "d:\RadAsm\nasm\inc\masm32.inc" %include "CPUID.inc" ;%include "e:\radasm\nasm\inc\win32\msvcrt.inc" [extern StdOut] [extern StrLen] [extern printf] [extern ClearScreen] [extern getchar] [extern ExitProcess] %macro clre 0 mov ebx,0h mov ecx,0h mov edx,0h %endmacro [section .data] helpinfo db 0dh,0ah,0dh,0ah db "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓",0dh,0ah db "▓ ▓",0dh,0ah db "▓ 这个程序是演示CPUID这个指令的所有功能的一个小程序 ▓",0dh,0ah db "▓ 命令行 cpuid 1 2 (eax=1 ecx=2) ▓",0dh,0ah db "▓ 作者: Y.Pierre 邮箱:7535794@qq.com ▓",0dh,0ah db "▓ ▓",0dh,0ah db "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓",0dh,0ah,0 formeax db "EAX:%X ECX:%X",0dh,0ah,0 form db "EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form0 db "CPUID.EAX=00h [关于处理器的标识字符串]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1 db "CPUID.EAX=01h [决定缓存参数函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form2 db "CPUID.EAX=02h [缓存和TLB信息]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form3 db "CPUID.EAX=03h [处理器序列号]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form4 db "CPUID.EAX=04h [决定缓存参数函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form5 db "CPUID.EAX=05h [MONITOR/MWAIT函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form6 db "CPUID.EAX=06h [热功率和电源管理函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form7 db "CPUID.EAX=07h ECX=0 [扩展结构特性枚举函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form71 db "CPUID.EAX=07h ECX=1 [扩展结构特性枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form9 db "CPUID.EAX=09h [全局Cache访问信息函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 forma db "CPUID.EAX=0ah [架构性能监示函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 formb db "CPUID.EAX=0bh [扩展拓扑枚举函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 formd db "CPUID.EAX=0dh ECX=0 [处理器扩展状态枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 formd1 db "CPUID.EAX=0dh ECX=1 [处理器扩展状态枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 formd2 db "CPUID.EAX=0dh ECX=n,n>1 [处理器扩展状态枚举子级]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 formf db "CPUID.EAX=0fh ECX=0 [资源控制器技术RDT监控枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 formf1 db "CPUID.EAX=0fh ECX=1 [三级缓存资源控制器技术RDT监控功能枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form10 db "CPUID.EAX=10h ECX=0 [资源控制器技术RDT分配枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form101 db "CPUID.EAX=10h ECX=1=ResID [三级缓存分配技术枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form102 db "CPUID.EAX=10h ECX=2=ResID [二级缓存分配技术枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form103 db "CPUID.EAX=10h ECX=3=ResID [内存带宽分配枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form12 db "CPUID.EAX=12h ECX=0 [Intel软件保护扩展SGX功能枚举函数和子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form121 db "CPUID.EAX=12h ECX=1 [Intel软件保护扩展SGX属性枚举函数和子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form122 db "CPUID.EAX=12h ECX=2或更高 [Intel软件保护扩展SGX EPC枚举函数和子级]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form14 db "CPUID.EAX=14h ECX=0 [Intel 处理器跟踪枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form141 db "CPUID.EAX=14h ECX=1 [Intel 处理器跟踪枚举子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form15 db "CPUID.EAX=15h [时间戳计数器和核心芯片时钟信息函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form16 db "CPUID.EAX=16h [处理器频率信息函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form17 db "CPUID.EAX=17h ECX=0 [片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form171 db "CPUID.EAX=17h ECX=1 [片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form172 db "CPUID.EAX=17h ECX=2 [片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form173 db "CPUID.EAX=17h ECX=3 [片上系统供应商属性枚举主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form17n db "CPUID.EAX=17h ECX>MaxSOCID_Index [片上系统供应商属性枚举子级]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form18 db "CPUID.EAX=18h ECX=0 [确定地址转换参数主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form181 db "CPUID.EAX=18h ECX>=1 [确定地址转换参数子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form19 db "CPUID.EAX=19h [密钥锁函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1a db "CPUID.EAX=1ah ECX=0 [混杂信息子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1b db "CPUID.EAX=1bh ECX>=0 [PCONFIG信息子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1d db "CPUID.EAX=1dh ECX=0 [磁贴信息主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1d1 db "CPUID.EAX=1dh ECX=1 [磁贴调色板子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1e db "CPUID.EAX=1eh ECX=0 [TMUL信息主函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form1f db "CPUID.EAX=1fh [V2 扩展拓扑枚举函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form20 db "CPUID.EAX=20h ECX=0 [处理器历史重置子函数]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form800 db "[处理器扩展信息:80000000]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form801 db "[处理器扩展信息:80000001]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form802 db "[处理器扩展信息:80000002]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form803 db "[处理器扩展信息:80000003]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form804 db "[处理器扩展信息:80000004]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form805 db "[处理器扩展信息:80000005]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form806 db "[处理器扩展信息:80000006]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form807 db "[处理器扩展信息:80000007]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 form808 db "[处理器扩展信息:80000008]EAX:%X EBX:%X ECX:%X EDX:%X",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=00H CPUID CPU类型 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;cpu type 1 3 6 7 10 text1 db 32 dup 0 cpubaddr dd cpub00,cpub01,cpub02,cpub03,cpub04,0,cpub06,cpub07,cpub08,cpub09,cpub0a,cpub0b,cpub0c,0,cpub0e,cpub0f dd 0,cpub11,cpub12,cpub13,cpub14,cpub15,cpub16,cpub17 cpueax db "基本CPUID信息最大功能函数输入值为: %X",0dh,0ah,0 cpusrn db " CPU的序列号为: %X%X",0dh,0ah,0 cpu1 db "Intel Xeon Processors",0dh,0ah,0 ;02h eax 信息 cpu2 db "Pentium M Processor",0dh,0ah,0 ;02h cpu3 db "Pentium 4 Processor supporting Hyper-Threading Technology",0dh,0ah,0 ;05h cpu4 db "Pentium D Processor (8xx)",0dh,0ah,0 ;05h cpu5 db "Pentium D Processor (9xx)",0dh,0ah,0 ;06h cpu6 db "Intel Core Duo Processor",0dh,0ah,0 ;0ah cpu7 db "Intel Core 2 Duo Processor",0dh,0ah,0 ;0ah cpu8 db "Intel Xeon Processor 3000,5100,5300 Series",0dh,0ah,0 ;0ah cpu9 db "Intel Xeon Processor 3000,5100,5200,5300,5400 Series",0dh,0ah,0 ;0ah cpu10 db "Intel Core 2 Duo Processor 8000 Series",0dh,0ah,0 ;0dh cpu11 db "Intel Xeon Processor 5200,5400 Series",0dh,0ah,0 ;0ah cpub00 db " 此处理器不支持类型识别功能",0dh,0ah,0 cpub01 db " Intel(R) Celeron(R) processor",0dh,0ah,0 cpub02 db " Intel(R) Pentium(R) III processor",0dh,0ah,0 cpub03 db " Intel(R) Pentium(R) III Xeon(R) processor;If processor signature = 000006B1h, then Intel(R) Celeron(R) processor",0dh,0ah,0 cpub04 db " Intel(R) Pentium(R) III processor",0dh,0ah,0 cpub06 db " Mobile Intel(R) Pentium(R) III processor-M",0dh,0ah,0 cpub07 db " Mobile Intel(R) Celeron(R) processor",0dh,0ah,0 cpub08 db " Intel(R) Pentium(R) 4 processor",0dh,0ah,0 cpub09 db " Intel(R) Pentium(R) 4 processor",0dh,0ah,0 cpub0a db " Intel(R) Celeron(R) processor",0dh,0ah,0 cpub0b db " Intel(R) Xeon(R) processor;If processor signature = 00000F13h, then Intel(R) Xeon(R) processor MP",0dh,0ah,0 cpub0c db " Intel(R) Xeon(R) processor MP",0dh,0ah,0 cpub0e db " Mobile Intel(R) Pentium(R) 4 processor-M; If processor signature = 00000F13h, then Intel(R) Xeon(R) processor",0dh,0ah,0 cpub0f db " Mobile Intel(R) Celeron(R) processor",0dh,0ah,0 cpub11 db " Mobile Genuine Intel(R) processor",0dh,0ah,0 cpub12 db " Intel(R) Celeron(R) M processor",0dh,0ah,0 cpub13 db " Mobile Intel(R) Celeron(R) processor",0dh,0ah,0 cpub14 db " Intel(R) Celeron(R) processor",0dh,0ah,0 cpub15 db " Mobile Genuine Intel(R) processor",0dh,0ah,0 cpub16 db " Intel(R) Pentium(R) M processor",0dh,0ah,0 cpub17 db " Mobile Intel(R) Celeron(R) processor",0dh,0ah,0 cpubXX db " 【保留】",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=01H 处理器类型 ;<<<<<<<<<<<<<<<<<<<<<<<<<< Extended_Famlly_ID dw 0 Famlly_ID dw 0 Model_ID dw 0 Extended_Model_ID dw 0 Stepping_ID dw 0 a01text db " 处理器类型字段为:%s ",0dh,0ah,0 cput1 db "Original OEM Processor",0dh,0ah,0 ;00b eax.[12-13] CPU 家族类型 cput2 db "Intel OverDrive Processor",0dh,0ah,0 ;01b cput3 db "Dual processor (not applicable to Intel 486 Processors",0dh,0ah,0 ;10b cput4 db "Intel reserved",0dh,0ah,0 ;11b ;>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=01h EAX 功能特性 ;<<<<<<<<<<<<<<<<<<<<<<<<<< a01tex1 db " EAX CPU扩展家庭ID: %X CPU家庭ID: %X CPU扩展模式: %X CPU模式: %X 步进ID: %X",0dh,0ah,0dh,0ah,0 ;a01tex2 db " EAX CPU家庭ID: %X CPU扩展模式: %X CPU模式: %X 步进ID: %X",0dh,0ah,0 a01tex3 db " EAX CPU家庭ID: %X CPU模式: %X 步进ID: %X",0dh,0ah,0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=01h EBX 功能特性 ;<<<<<<<<<<<<<<<<<<<<<<<<<< a01b0_7 db " EBX 字节[00-07] 值: %X H 类型索引值",0dh,0ah,0 a01b8_15 db " EBX 字节[08-15] 值: %X H CLFLUSH行尺寸(值*8=高速缓存行尺寸/字节;也用于CLFLUSHOPT)",0dh,0ah,0 a01b16_23 db " EBX 字节[16-23] 值: %X H 在物理包中逻辑处理器地址ID的最大值",0dh,0ah,0 a01b24_31 db " EBX 字节[24-31] 值: %X H 初始化APIC标识",0dh,0ah,0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=01h ECX 功能特性 ;<<<<<<<<<<<<<<<<<<<<<<<<<< sse3 db " ECX 字节[00] SSE3 Intel单指令数据流扩展功能",0dh,0ah,0 pclm1 db " ECX 字节[01] PCLMULQDQ 不进位乘法",0dh,0ah,0 dtes64 db " ECX 字节[02] DTES64 64位DS区域",0dh,0ah,0 monit1 db " ECX 字节[03] MONITOR 支持MONITOR/MWAIT",0dh,0ah,0 ds_c db " ECX 字节[04] DS-CPL CPL有条件调试存储",0dh,0ah,0 vmx db " ECX 字节[05] VMX 虚拟机扩展",0dh,0ah,0 smx db " ECX 字节[06] SMX 保护模式扩展",0dh,0ah,0 est db " ECX 字节[07] EIST 加强型Intel SeedStep技术",0dh,0ah,0 tm2 db " ECX 字节[08] TM2 温度监控2",0dh,0ah,0 ssse3 db " ECX 字节[09] SSSE3 补充单指令数据流扩展功能",0dh,0ah,0 cnxt_id db " ECX 字节[10] CNXT-ID L1环境标识,IA32_MISC_ENABLE MSR 24比特位,L1数据缓存环境模式",0dh,0ah,0 sdbg db " ECX 字节[11] SDBG 调试,IA32_DEBUG_INTERFACE MSR 硅片调试",0dh,0ah,0 fma db " ECX 字节[12] FMA 混合乘加运算,用于YMM结构的FMA扩展",0dh,0ah,0 cmpx1 db " ECX 字节[13] CMPXCHG16B CMPXCHGBB/CMPXCHG16B 比较和改变交换字节",0dh,0ah,0 xtpr db " ECX 字节[14] xTPR 更新控制,可由IA32_MISC_ENABLE比特位23改变",0dh,0ah,0 pdcm db " ECX 字节[15] PDCM 性能/调试能力MSR,MSR IA32_PERF_CAPABILITIES,执行和调试线路",0dh,0ah,0 ;[第16位保留] pcid db " ECX 字节[17] PCID 进程环境标识,可使用软件设置 CR4.PCIDE",0dh,0ah,0 dca db " ECX 字节[18] DCA 直接缓存访问,从内存图表设备访问缓存数据",0dh,0ah,0 sse4_1 db " ECX 字节[19] SSE4_1 支持SSE4.1指令集",0dh,0ah,0 sse4_2 db " ECX 字节[20] SSE4_2 支持SSE4.2指令集",0dh,0ah,0 x2apic db " ECX 字节[21] x2APIC 支持x2APIC特性",0dh,0ah,0 movb1 db " ECX 字节[22] MOVBE 支持MOVBE指令",0dh,0ah,0 popc1 db " ECX 字节[23] POPCNT 支持POPCNT指令",0dh,0ah,0 tsc_d db " ECX 字节[24] TSC-Deadline 支持APIC计时器在TSC deadline值上的 one-shot 操作",0dh,0ah,0 aes db " ECX 字节[25] AESNI AESNI扩展指令支持",0dh,0ah,0 xsav1 db " ECX 字节[26] XSAVE 支持XSAVE/XRSTOR外部处理扩展特性,XSETBV/XGETBV指令,在XCR0上使用",0dh,0ah,0 osxsave db " ECX 字节[27] OSXSAVE 支持操作系统设置CR4.0SXSAVE[bit18],用XSETBV/XGETBV指令访问XCR0,支持扩展",0dh,0ah db " 管理结构XSAVE/XRSTOR",0dh,0ah,0 avx db " ECX 字节[28] AVX 支持AVX扩展指令集",0dh,0ah,0 f16c db " ECX 字节[29] F16C 支持16位浮点运算指令集",0dh,0ah,0 rdran1 db " ECX 字节[30] RDRAND 支持随机数指令",0dh,0ah,0 noused db " ECX 字节[31] Not Used 一直返回值是0",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=01h EDX 功能特性 ;<<<<<<<<<<<<<<<<<<<<<<<<<< fpu db " EDX 字节[00] FPU-x87 芯片上的FPU浮点运算单元",0dh,0ah,0 vme db " EDX 字节[01] VME 加强虚8086模式,含CR4.VME控制,CR4.PVI为TSS保护模式虚拟中断,软中断异常,软件镜像",0dh,0ah db " 和EFLAGS.VIF,EFLAGS.VIP标志",0dh,0ah,0 de db " EDX 字节[02] DE 调试扩展 CR4.DE 控制I/O断点,选择访问DR4和DR5",0dh,0ah,0 pse db " EDX 字节[03] PSE 页面扩展 大页面4M支持,包含CR4.PSE控制特性 选择保留CR3,PDEs,PTEs",0dh,0ah,0 tsc db " EDX 字节[04] TSC 时间计数 RDTSC 指令支持 包含CR4.TSD私有控制",0dh,0ah,0 msr db " EDX 字节[05] MS RDMSR 和 WRMSR支持",0dh,0ah,0 pae db " EDX 字节[06] PAE 物理地址扩展 32位 2M扩展4M",0dh,0ah,0 mce db " EDX 字节[07] MCE 机器检查异常",0dh,0ah,0 cx8 db " EDX 字节[08] CX8 CMPXCHG8B",0dh,0ah,0 apic db " EDX 字节[09] APIC APIC芯片支持 处理器的高级中断控制,物理地址环FFFE0000h到FFFE0FFFh",0dh,0ah,0 ;[第10位保留] sep db " EDX 字节[11] SEP 支持SYSENTER/SYSEXIT指令,访问MSRs支持",0dh,0ah,0 mtrr db " EDX 字节[12] MTRR 内存类型范围寄存器,MTRRs支持,MSR特性,支持在内存中修补MTRRs",0dh,0ah,0 pge db " EDX 字节[13] PGE PTE全局位和TLB有关,全局TLB入口,公共到不同的处理器需要CR4.PGE控制特性",0dh,0ah,0 mca db " EDX 字节[14] MCA 机器结构检查 MCG_CAP特性,MCG_CAP MSR 检查机器报错误",0dh,0ah,0 cmov1 db " EDX 字节[15] CMOV 条件移动/比较指令CPUID.FPU特性 支持FCOMI/FCMOV指令",0dh,0ah,0 pat db " EDX 字节[16] PAT 页面属性表和MTRRs有关,被操作系统指定内存属性有寄存器有4K的内存范围",0dh,0ah,0 pse_36 db " EDX 字节[17] PSE-36 页面尺寸扩展 4M页面地址,物理内存4G以上 13-20位页面目录进入,可以升到 40位",0dh,0ah,0 psn db " EDX 字节[18] PSN 处理器序列号",0dh,0ah,0 clfsh db " EDX 字节[19] CLFSH 支持CLFLUSH指令",0dh,0ah,0 ;[第20位保留] ds1 db " EDX 字节[21] DS 调试存储和 BTS PEBS有关",0dh,0ah,0 acpi db " EDX 字节[22] ACPI 温度监视和时钟控制",0dh,0ah,0 mmx db " EDX 字节[23] MMX 支持MMX技术",0dh,0ah,0 fxsr db " EDX 字节[24] FXSR 支持FXSAVE/FXRSTOR指令,在操作系统上支持CR4.OSFXSR,可用于恢复浮点,",0dh,0ah,0 sse db " EDX 字节[25] SSE S支持SE扩展",0dh,0ah,0 sse2 db " EDX 字节[26] SSE2 支持SSE2扩展",0dh,0ah,0 ss1 db " EDX 字节[27] SS 自我窥探",0dh,0ah,0 htt db " EDX 字节[28] HTT 最大APIC ID保留段可用,CPUID.1.EBX[bit16:23](逻辑处理器的最大数),多线程",0dh,0ah,0 tm db " EDX 字节[29] TM 处理器的自动控制的热监测器",0dh,0ah,0 ;[第30位保留] pbe db " EDX 字节[31] PBE Pend.Brk.EN支持使用FERR#/PBE#脚,当STPCLK#(停止时钟结构)使能,发送一个中断信号",0dh,0ah db " 到常规操作的handle",0dh,0ah,0 ;++++++++++++++ ;TLB值判断信息 ;++++++++++++++ note1 db " 返回TLB值成功:",0 c2_note1 db "【TLB或CACHE描述无效】",0dh,0ah,0 c2_note2 db "【TLB或CACHE描述可用】",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=02H CPUID 信息(缓存或TLB描述) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< tlbdsr00 db " General 空描述",0dh,0ah,0 tlbdsr01 db " TLB 指令TLB:4K字节页面,4路组相联,32个条目",0dh,0ah,0 tlbdsr02 db " TLB 指令TLB:4M字节页面,4路组相联,2个条目",0dh,0ah,0 tlbdsr03 db " TLB 数据TLB:4K字节页面,4路组相联,64个条目",0dh,0ah,0 tlbdsr04 db " TLB 数据TLB:4M字节页面,4路组相联,8个条目",0dh,0ah,0 tlbdsr05 db " TLB 数据TLB:4M字节页面,4路组相联,32个条目",0dh,0ah,0 tlbdsr06 db " Cache 1级指令高速缓存:8K字节页面,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr08 db " Cache 1级指令高速缓存:16K字节页面,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr09 db " Cache 1级指令高速缓存:32K字节页面, 4路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsr0A db " Cache 1级数据高速缓存:8K字节页面,2路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr0B db " TLB 指令TLB:4M字节页面,4路组相联,4个条目",0dh,0ah,0 tlbdsr0C db " Cache 1级数据高速缓存:16K字节页面,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr0D db " Cache 1级数据高速缓存:16K字节页面, 4路组相联, 64字节管道尺寸, ECC",0dh,0ah,0 tlbdsr0E db " Cache 1级高速缓存:24K字节,6路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr1D db " Cache 2级高速缓存:128K字节,2路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr21 db " Cache 256-KB L2 (MLC), 8路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsr22 db " Cache 3级数据高速缓存:512K字节页面,4路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr23 db " Cache 3级数据高速缓存:1M字节页面,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr24 db " Cache 2级高速缓存:1M字节,16路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr25 db " Cache 3级数据高速缓存:2M字节页面,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr29 db " Cache 3级数据高速缓存:4M字节页面,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr2C db " Cache 1级数据高速缓存:32K字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr30 db " Cache 1级指令高速缓存:32K字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr3A db " Cache 2级高速缓存: 192K字节页面,6路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0 tlbdsr3B db " Cache 2级高速缓存: 128K字节页面,2路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0 tlbdsr3C db " Cache 2级高速缓存: 256K字节页面,4路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0 tlbdsr3D db " Cache 2级高速缓存: 384K字节页面,6路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0 tlbdsr3E db " Cache 2级高速缓存: 512K字节页面,4路组相联, sectored cache, 64字节管道尺寸",0dh,0ah,0 tlbdsr40 db " Cache 没有2级高速缓存或2级高速缓存可用时,没有3级高速缓存",0dh,0ah,0 tlbdsr41 db " Cache 2级高速缓存:128K字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr42 db " Cache 2级高速缓存:256K字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr43 db " Cache 2级高速缓存:512K字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr44 db " Cache 2级高速缓存:1M字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr45 db " Cache 2级高速缓存:2M字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr46 db " Cache 3级高速缓存:4M字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr47 db " Cache 3级高速缓存:8M字节,4路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr48 db " Cache 2级高速缓存:3M字节,12路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr49 db " Cache 3级高速缓存:4M字节,16路组相联,64字节管道尺寸(Intel Xeon processor MP, Family 0FH, Model 06H);",0dh,0ah db " Cache 2级高速缓存:4M字节,16路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr4A db " Cache 3级高速缓存:6M字节,12路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr4B db " Cache 3级高速缓存:8M字节,16路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr4C db " Cache 3级高速缓存:12M字节,12路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr4D db " Cache 3级高速缓存:16M字节,16路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr4E db " Cache 2级高速缓存:6M字节,24路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr4F db " TLB 指令TLB:4K字节和2M字节或4M字节页面,32个条目",0dh,0ah,0 tlbdsr50 db " TLB 指令TLB:4K字节和2M字节或4M字节页面,64个条目",0dh,0ah,0 tlbdsr51 db " TLB 指令TLB:4K字节和2M字节或4M字节页面,128个条目",0dh,0ah,0 tlbdsr52 db " TLB 指令TLB:4K字节和2M字节或4M字节页面,256个条目",0dh,0ah,0 tlbdsr55 db " TLB 指令TLB:2M字节或4M字节页面,全路组相联,16个条目",0dh,0ah,0 tlbdsr56 db " TLB 数据TLB0:4M字节页面,4路组相联,16个条目",0dh,0ah,0 tlbdsr57 db " TLB 数据TLB0:4K字节页面,4路相联,16个条目",0dh,0ah,0 tlbdsr59 db " TLB 数据TLB0:4K字节页面,全路相联,16个条目",0dh,0ah,0 tlbdsr5A db " TLB 数据TLB0:2M字节或4M字节页面,4路组相联,32个条目",0dh,0ah,0 tlbdsr5B db " TLB 数据TLB:4K字节和4M字节页面,64个条目",0dh,0ah,0 tlbdsr5C db " TLB 数据TLB:4K字节和4M字节页面,128个条目",0dh,0ah,0 tlbdsr5D db " TLB 数据TLB:4K字节和4M字节页面,256个条目",0dh,0ah,0 tlbdsr60 db " Cache 1级数据高速缓存:16K字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr61 db " TLB 指令TLB:4K字节页面,全路相联,48个条目",0dh,0ah,0 tlbdsr63 db " TLB 数据TLB:2M字节或4M字节页面,4路组相联,32条目和一个指定数组跟1G字节页面,",0dh,0ah db " 4路组相联,4个条目",0dh,0ah,0 tlbdsr64 db " TLB 数据TLB:4k字节页面,4路组相联,512字节管道尺寸",0dh,0ah,0 tlbdsr66 db " Cache 1级数据高速缓存:8K字节,4路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr67 db " Cache 1级数据高速缓存:16K字节,4路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr68 db " Cache 1级数据高速缓存:32K字节,4路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr6A db " Cache uTLB:4k字节页面,8路组相联,64个条目",0dh,0ah,0 tlbdsr6B db " Cache DTLB:2M/4M字节页面,8路组相联,64个条目",0dh,0ah,0 tlbdsr6C db " Cache DTLB:4k字节页面,8路组相联",0dh,0ah,0 tlbdsr6D db " Cache DTLB:4k字节页面,8路组相联",0dh,0ah,0 tlbdsr70 db " Cache 跟踪高速缓存:12K管理层,8路组相联",0dh,0ah,0 tlbdsr71 db " Cache 跟踪高速缓存:16K管理层,8路组相联",0dh,0ah,0 tlbdsr72 db " Cache 跟踪高速缓存:32K管理层,8路组相联",0dh,0ah,0 tlbdsr76 db " TLB 指令TLB:2M/4M字节页面,全路相联,8个条目",0dh,0ah,0 tlbdsr78 db " Cache 2级高速缓存:1M字节,4路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr79 db " Cache 2级高速缓存:128K字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr7A db " Cache 2级高速缓存:256K字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr7B db " Cache 2级高速缓存:512K字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr7C db " Cache 2级高速缓存:1M字节,8路组相联,64字节管道尺寸,每区域2管道",0dh,0ah,0 tlbdsr7D db " Cache 2级高速缓存:2M字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr7F db " Cache 2级高速缓存:512K字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr80 db " Cache 2级高速缓存:512K字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr82 db " Cache 2级高速缓存:256K字节,8路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr83 db " Cache 2级高速缓存:512K字节,8路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr84 db " Cache 2级高速缓存:1M字节,8路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr85 db " Cache 2级高速缓存:2M字节,8路组相联,32字节管道尺寸",0dh,0ah,0 tlbdsr86 db " Cache 2级高速缓存:512K字节,4路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsr87 db " Cache 2级高速缓存:1M字节,8路组相联,64字节管道尺寸",0dh,0ah,0 tlbdsrA0 db " DTLB DTLB:4K字节页面,全路相联,32个条目",0dh,0ah,0 tlbdsrB0 db " TLB 指令TLB:4K字节页面,4路组相联,128个条目",0dh,0ah,0 tlbdsrB1 db " TLB 指令TLB:2M页面,4路相联,8条目或4M页,4路组相联,4条目",0dh,0ah,0 tlbdsrB2 db " TLB 指令TLB:4K字节页面,4路组相联,64个条目",0dh,0ah,0 tlbdsrB3 db " TLB 数据TLB:4K字节页面,4路组相联,128个条目",0dh,0ah,0 tlbdsrB4 db " TLB 数据TLB1:4K字节页面,4路组相联,256个条目",0dh,0ah,0 tlbdsrB5 db " TLB 指令TLB1:4K字节页面,8路组相联,64个条目",0dh,0ah,0 tlbdsrB6 db " TLB 指令TLB1:4K字节页面,8路相联,128个条目",0dh,0ah,0 tlbdsrBA db " TLB 数据TLB1:4K字节页面,4路相联,64个条目",0dh,0ah,0 tlbdsrC0 db " TLB 数据TLB:4K字节和4M字节页面,4路相联,8个条目",0dh,0ah,0 tlbdsrC1 db " STLB 共享2级TLB: 4K字节页面, 4路组相联, 512个条目",0dh,0ah,0 tlbdsrC2 db " DTLB DTLB:4K字节/2M字节页面, 4路相联,16个条目",0dh,0ah,0 tlbdsrC3 db " STLB 共享2级TLB:4K字节/2M字节页面,6路相联,1536条目,也有1GB字节页面,4路,16个条目",0dh,0ah,0 tlbdsrC4 db " DTLB DTLB:2M/4M字节页面,4路相联,32个条目",0dh,0ah,0 tlbdsrCA db " STLB 共享2级TLB:4KB页面,4路组相联,512个条目",0dh,0ah,0 tlbdsrD0 db " Cache 3级缓存:512K字节,4路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrD1 db " Cache 3级缓存:1M字节,4路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrD2 db " Cache 3级缓存:2M字节,4路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrD6 db " Cache 3级缓存:1M字节,8路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrD7 db " Cache 3级缓存:2M字节,8路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrD8 db " Cache 3级缓存:4M字节,8路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrDC db " Cache 3级缓存:2M字节,12路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrDD db " Cache 3级缓存:4M字节,12路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrDE db " Cache 3级缓存:8M字节,12路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrE2 db " Cache 3级缓存:2M字节,16路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrE3 db " Cache 3级缓存:4M字节,16路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrE4 db " Cache 3级缓存:8M字节,16路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrEA db " Cache 3级缓存:12M字节,24路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrEB db " Cache 3级缓存:18M字节,24路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrEC db " Cache 3级缓存:24M字节,24路组相联, 64字节管道尺寸",0dh,0ah,0 tlbdsrF0 db " Prefetch 64字节预读",0dh,0ah,0 tlbdsrF1 db " Prefetch 128字节预读",0dh,0ah,0 tlbdsrFE db " General CPUID 功能函数 2 不能报告TLB描述信息, 使用CPUID 功能函数 18H 请求TLB和另外地址转换参数",0dh,0ah,0 tlbdsrFF db " General CPUID 功能函数 2 不能报告缓存描述信息,使用CPUID 功能函数 4 请求缓存参数",0dh,0ah,0 tlbdsrXA db " 指令TLB:【信息未公开】",0dh,0ah,0 tlbdsrXB db " 数据TLB:【信息未公开】",0dh,0ah,0 tlbdsrXC db " Cache缓存:【信息未公开】",0dh,0ah,0 afg db "---------------------------------------------------------------------------",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=04H CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;EAX cachet0 db " EAX 字节[00] 空-没有任何缓存",0dh,0ah,0 cachet1 db " EAX 字节[01] 数据缓存",0dh,0ah,0 cachet2 db " EAX 字节[02] 指令缓存",0dh,0ah,0 cachet3 db " EAX 字节[03] 统一缓存",0dh,0ah,0 cachet4 db " EAX 字节[04-31] CPUID 04函数 EAX 4-31字节保留",0dh,0ah,0 cachelevel db " EAX 字节[05-07] 高速缓存级别是: %X",0dh,0ah,0 ;bit 5-7 cachesleve db " EAX 字节[08] 自初始缓存级别(不须要初始化开关)",0dh,0ah,0 ;bit 8 cachefa db " EAX 字节[09] 全相联缓存",0dh,0ah,0 ;bit 9 cachere db " EAX 字节[10-13] CPUID 04函数 EAX 13-26字节保留",0dh,0ah,0 ;bit 10-13 cachemaxl db " EAX 字节[14-25] 逻辑处理器共享缓存ID地址的最大数",0dh,0ah,0 ;bit 14-25 cachemaxp db " EAX 字节[26-31] 物理处理器缓存ID地址的最大数",0dh,0ah,0 ;bit 26-31 cacebx1 db " EBX 字节[00-11] 系统相干线尺寸:L=%X",0dh,0ah,0 cacebx2 db " EBX 字节[12-21] 物理线路分区:P=%X",0dh,0ah,0 cacebx3 db " EBX 字节[22-31] 联想方式:W=%X",0dh,0ah,0 cacecx db " ECX 字节[00-31] 设置参数:S=%X",0dh,0ah,0 ;共享此缓存的逻辑处理器的最大可寻址ID数 ;物理内存中处理器内核的最大可寻址ID数 ;EDX cac0 db " EDX 字节[00] 低级别缓存下使用WBINVD/INVD",0dh,0ah,0 cac10 db " EDX 字节[00] 回写失效设置",0dh,0ah,0 cac10_0 db " EDX 字节 0 WBINVD/INVD作用于线程的低级别缓存的共享缓存线程",0dh,0ah,0 cac10_1 db " EDX 字节 1 WBINVD/INVD无保护作用于非原始线程的低级别共享缓存",0dh,0ah,0 ;0=WBINVD/INVD作用于线程的低级别缓存的共享缓存线程 ;1=WBINVD/INVD无保护作用于非原始线程的低级别共享缓存 cac1 db " EDX 字节[01] 缓存包容性设置",0dh,0ah,0 cac1_0 db " EDX 字节 0 不包含较低的缓存级别的缓存",0dh,0ah,0 cac1_1 db " EDX 字节 1 包含较低的缓存级别的缓存",0dh,0ah,0 ;0=不包含较低的缓存级别的缓存 ;1=包含较低的缓存级别的缓存 cac2 db " EDX 字节[02] 复杂缓存索引",0dh,0ah,0 cac2_0 db " EDX 字节 0 直接映射缓存",0dh,0ah,0 cac2_1 db " EDX 字节 1 一个复杂函数用于索引缓存,可能使用所有地址位",0dh,0ah,0 ;0=直接映射缓存 ;1=一个复杂函数用于索引缓存,可能使用所有地址位 cac3_31 db " EDX 字节[03-31] CPUID 04函数 EDX 3-31字节保留为0",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=05H CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< a05mixmon db " EAX 字节[0-15] 最小监控尺寸(默认处理器监控):%d ",0dh,0ah,0 a05maxmon db " EBX 字节[0-15] 最大监控尺寸(默认处理器监控):%d ",0dh,0ah,0 a05c0 db " ECX 字节[0] 监控-等待指令扩展支持.(在EAX和EBX寄存器之前)",0dh,0ah,0 a05c1 db " ECX 字节[1] 支持MWAIT的中断事件的中断支持,事件中断时关闭功能",0dh,0ah,0 a05cx db " ECX 字节[2-31] CPUID 子功能 05 保留功能开关",0dh,0ah,0 a05d0 db " EDX 字节[0-3] C0 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d4 db " EDX 字节[4-7] C1 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d8 db " EDX 字节[8-11] C2 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d12 db " EDX 字节[12-15] C3 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d16 db " EDX 字节[16-19] C4 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d20 db " EDX 字节[20-23] C5 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d24 db " EDX 字节[24-27] C6 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0 a05d28 db " EDX 字节[28-31] C7 用于MWAIT 子C结构支持 值= %X",0dh,0ah,0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=06H CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< a06a00 db " EAX 字节[0] 数字温度传感器",0dh,0ah,0 a06a01 db " EAX 字节[1] Intel 快速Boost技术可用(看IA32_MISC_ENABLE字节[38]位)",0dh,0ah,0 a06a02 db " EAX 字节[2] ARAT.APIC时间器在线运行特性支持",0dh,0ah,0 a06a03 db " EAX 字节[3] 保留",0dh,0ah,0 a06a04 db " EAX 字节[4] PLN.电源最小注意控制支持",0dh,0ah,0 a06a05 db " EAX 字节[5] ECMD.时钟模块循环扩展支持",0dh,0ah,0 a06a06 db " EAX 字节[6] PTM.包中断管理支持",0dh,0ah,0 a06a07 db " EAX 字节[7] HWP.HWP基本注册(IA32_PM_ENABLE字节[0]位,IA32_HWP_CAPABILITIES,",0dh,0ah db " IA32_HWP_REQUEST,IA32_HWP_STATUS)支持",0dh,0ah,0 a06a08 db " EAX 字节[8] HWP_注意.IA32_HWP_INTERRUPT MSR支持",0dh,0ah,0 a06a09 db " EAX 字节[9] HWP_激活_窗口.IA32_HWP_REQUEST字节[32:41]支持",0dh,0ah,0 a06a10 db " EAX 字节[10] HWP_传统_专业_参考.IA32_HWP_REQUEST字节[24:31]支持",0dh,0ah,0 a06a11 db " EAX 字节[11] HWP_包_级别_请求.IA32_HWP_REQUEST_PKG MSR 支持",0dh,0ah,0 a06a12 db " EAX 字节[12] 保留",0dh,0ah,0 a06a13 db " EAX 字节[13] HDC.HDC基本注册IA32_PKG_HDC_CTL,IA32_PM_CTL1,IA32_THREAD_STALL MSR 支持",0dh,0ah,0 a06a14 db " EAX 字节[14] Intel 快速Boost技术 3.0版可用",0dh,0ah,0 a06a15 db " EAX 字节[15] HWP线路.高分改变支持",0dh,0ah,0 a06a16 db " EAX 字节[16] HWP PECI 溢出支持",0dh,0ah,0 a06a17 db " EAX 字节[17] Flexible HWP支持",0dh,0ah,0 a06a18 db " EAX 字节[18] 快速访问模块 IA32_HWP_REQUEST MSR 支持",0dh,0ah,0 a06a19 db " EAX 字节[19] HW_FEEDBACK.IA32_HW_FEEDBACK_PTR MSR,IA32_HW_FEEDBACK_CONFIG MSR,",0dh,0ah db " IA32_PACKAGE_THERM_STATUS MSR字节[26]位,和IA32_PACKAGE_THERM_INTERRUPT MSR字节[25]位支持",0dh,0ah,0 a06a20 db " EAX 字节[20] 中止idle逻辑处理器HWP请求支持",0dh,0ah,0 a06a21_31 db " EAX 字节[21-31] 值: %X 保留",0dh,0ah,0 a06b0_3 db " EBX 字节[0-3] 值: %X 中断号的数码中止场",0dh,0ah,0 a06b4_31 db " EBX 字节[4-31] 值: %X 保留",0dh,0ah,0 a06c0 db " ECX 字节[0] 硬件协调反馈能力 IA32_MPERF和IA32_APERF,提供处理器性能指标的能力(自从上次计数器重置以来),",0dh,0ah db " 以TSC频率运行时预期处理器性能的百分比。",0dh,0ah,0 a06c1_2 db " ECX 字节[1-2] 值: %X 保留",0dh,0ah,0 a06c3 db " ECX 字节[3] 处理器支持性能能量偏差偏好CPUID.06H:ECX.SETBH[3]设1,这也意味着新建筑的出现",0dh,0ah db " MSR IA32_ENERGY_PERF_BIAS(1B0H)",0dh,0ah,0 a06c4_31 db " ECX 字节[4-31] 值: %X 保留",0dh,0ah,0 a06d0_7 db " EDX 字节[0-7] 值: %X 支持的硬件反馈接口功能的位图",0dh,0ah,0 a06d7_0 db " EDX 字节[0] 像征性支持性能报告",0dh,0ah,0 a06d7_1 db " EDX 字节[1] 像征性支持能源效率能力报告",0dh,0ah,0 a06d7_2_7 db " EDX 字节[2-7] 值: %X 保留",0dh,0ah,0 a06d8_11 db " EDX 字节[8-11] 值: %X 枚举硬件反馈接口结构的大小(以4KB页为单位),加返回值到结果",0dh,0ah,0 a06d16_31 db " EDX 字节[16-31] 值: %X 保留",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=07H CPUID ECX=0 EBX 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< fsgsb1 db " EBX 字节[00] FSGSBASE 支持RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE",0dh,0ah,0 itam db " EBX 字节[01] IA32_TSC_ADJUST MSR支持",0dh,0ah,0 sgx db " EBX 字节[02] SGX ",0dh,0ah,0 bmi1 db " EBX 字节[03] BMI1 ",0dh,0ah,0 hle db " EBX 字节[04] HLE ",0dh,0ah,0 avx2 db " EBX 字节[05] AVX2 ",0dh,0ah,0 feof db " EBX 字节[06] FDP_EXCPTN_ONLY.x87 FPU升级,仅仅用在x87异常",0dh,0ah,0 smep db " EBX 字节[07] SMEP 支持超级管理保护执行模式",0dh,0ah,0 bmi2 db " EBX 字节[08] BMI2",0dh,0ah,0 rms db " EBX 字节[09] 支持加强 REP MOVSB/STOSB",0dh,0ah,0 invp1 db " EBX 字节[10] INVPCID",0dh,0ah,0 rtm db " EBX 字节[11] RTM ",0dh,0ah,0 rdt_m db " EBX 字节[12] RDT-M 支持Intel 资源索引技术(RDT)",0dh,0ah,0 dfpu db " EBX 字节[13] FPU CS 和 FPU DS 值",0dh,0ah,0 impe db " EBX 字节[14] Intel 内存保扩展",0dh,0ah,0 rdt_a db " EBX 字节[15] RDT-A 技持Intel 资源索引技术(RDT)",0dh,0ah,0 avx512f db " EBX 字节[16] AVX512F",0dh,0ah,0 avx512dq db " EBX 字节[17] AVX512DQ",0dh,0ah,0 rdseed1 db " EBX 字节[18] RDSEED",0dh,0ah,0 adx db " EBX 字节[19] ADX ",0dh,0ah,0 smap db " EBX 字节[20] SMAP ",0dh,0ah,0 avx512_i db " EBX 字节[21] AVX512_IFMA",0dh,0ah,0 resebx22 db " EBX 字节[22] 【保留】",0dh,0ah,0 clflu1 db " EBX 字节[23] CLFLUSHOPT",0dh,0ah,0 clwb1 db " EBX 字节[24] CLWB ",0dh,0ah,0 ipt db " EBX 字节[25] Intel 处理器跟踪",0dh,0ah,0 avx512pf db " EBX 字节[26] AVX512PF(仅Intel Xeon Phi)",0dh,0ah,0 avx512er db " EBX 字节[27] AVX512ER(仅Intel Xeon Phi)",0dh,0ah,0 avx512cd db " EBX 字节[28] AVX512CD",0dh,0ah,0 sha db " EBX 字节[29] SHA ",0dh,0ah,0 avx512bw db " EBX 字节[30] AVX512BW",0dh,0ah,0 avx512vl db " EBX 字节[31] AVX512VL",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=07H CPUID ECX=0 ECX 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< pref1 db " ECX 字节[00] PREFETCHWT1",0dh,0ah,0 avx512_v db " ECX 字节[01] AVX512_VBMI",0dh,0ah,0 umip db " ECX 字节[02] UMIP 支持用户模式指令",0dh,0ah,0 pku db " ECX 字节[03] PKU 支持用户模式页面保护键",0dh,0ah,0 ospke db " ECX 字节[04] OSPKE 系统设置CR4.PKE打开保护键(配合RDPKRU/WRPKRU指令)",0dh,0ah,0 waitpkg db " ECX 字节[05] WAITPKG ",0dh,0ah,0 avx512_vb db " ECX 字节[06] AVX512_VBMI2 ",0dh,0ah,0 cet_ss db " ECX 字节[07] CET_SS 支持 CET 影子栈特性,用IA32_U_CET 和 IA32_S_CET MSR设置",0dh,0ah db " 加强支持MSR设置:IA32_INTERRUPT_SPP_TABLE_ADDR,",0dh,0ah db " IA32_PL3_SSP,IA32_PL2_SSP,IA32_PL1_SSP,和IA32_PL0_SSP",0dh,0ah,0 gfni db " ECX 字节[08] GFNI ",0dh,0ah,0 vaes db " ECX 字节[09] VAES ",0dh,0ah,0 vpclmu1 db " ECX 字节[10] VPCLMULQDQ ",0dh,0ah,0 avx512_vn db " ECX 字节[11] AVX512_VNNI ",0dh,0ah,0 avx512_bi db " ECX 字节[12] AVX512_BITALG ",0dh,0ah,0 tme_en db " ECX 字节[13] TME_EN MSR支持:IA32_TME_CAPABILITY,IA32_TME_ACTIVATE,",0dh,0ah db " IA32_TME_EXCLUDE_MASK 和 IA32_TME_EXCLUDE_BASE",0dh,0ah,0 avx512_vp1 db " ECX 字节[14] AVX512_VPOPCNTDQ",0dh,0ah,0 resecx15 db " ECX 字节[15] 【保留】",0dh,0ah,0 la57 db " ECX 字节[16] LA57 支持57位地址和5级页面",0dh,0ah,0 gmbb db " ECX 字节[17-21] 支持64位指令BNDLDX和BNDSTX指令使用 MAWAU 值",0dh,0ah,0 rdpid1 db " ECX 字节[22] RDPID 和 IA32_TSC_AUX 可用",0dh,0ah,0 kl db " ECX 字节[23] KL 支持锁键",0dh,0ah,0 resecx24 db " ECX 字节[24] 【保留】",0dh,0ah,0 cldem db " ECX 字节[25] CLDEMOTE 支持缓冲访问",0dh,0ah,0 resecx26 db " ECX 字节[26] 【保留】",0dh,0ah,0 movdi db " ECX 字节[27] MOVDIRI ",0dh,0ah,0 movd64 db " ECX 字节[28] MOVDIR64B ",0dh,0ah,0 enqcmd db " ECX 字节[29] ENQCMD ",0dh,0ah,0 sgx_lc db " ECX 字节[30] SGX_LC 支持SGX语言配置",0dh,0ah,0 pks db " ECX 字节[31] PKS 支持超级管理模式页面的保护键",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=07H CPUID ECX=0 EDX 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< resedx00 db " EDX 字节[00] 【保留】",0dh,0ah,0 resedx01 db " EDX 字节[01] 【保留】",0dh,0ah,0 avx512_4v db " EDX 字节[02] AVX512_4VNNIW(仅Intel Xeon Phi)",0dh,0ah,0 avx512_4f db " EDX 字节[03] AVX512_4FMAPS(仅Intel Xeon Phi)",0dh,0ah,0 fsrm db " EDX 字节[04] 快速近 REP MOV",0dh,0ah,0 uintr db " EDX 字节[05] UINTR 处理器支持用户中断",0dh,0ah,0 resedx06 db " EDX 字节[06] 【保留】",0dh,0ah,0 resedx07 db " EDX 字节[07] 【保留】",0dh,0ah,0 avx512_vp db " EDX 字节[08] AVX512_VP2INTERSECT ",0dh,0ah,0 resedx09 db " EDX 字节[09] 【保留】",0dh,0ah,0 md_cl db " EDX 字节[10] MD_CLEAR 支持",0dh,0ah,0 resedx11_14 db " EDX 字节[11-14] 【保留】",0dh,0ah,0 resedx12 db " EDX 字节[12] 【保留】",0dh,0ah,0 resedx13 db " EDX 字节[13] 【保留】",0dh,0ah,0 seri db " EDX 字节[14] SERIALIZE ",0dh,0ah,0 hybrid db " EDX 字节[15] Hybrid 处理器定义一个hybrid部分",0dh,0ah,0 tsxld db " EDX 字节[16-17] TSXLDTRK 处理器支持Intel TSX 挂起读地址跟踪",0dh,0ah,0 resedx17 db " EDX 字节[17] 【保留】",0dh,0ah,0 pconf1 db " EDX 字节[18] PCONFIG",0dh,0ah,0 resedx19 db " EDX 字节[19] 【保留】",0dh,0ah,0 cet_ibt db " EDX 字节[20] CET_IBT 支持CET跟踪特性,处理器定义IA32U_CET和IA32_S_CET 2:5和10:63位",0dh,0ah,0 resedx21_25 db " EDX 字节[21-25] 【保留】",0dh,0ah,0 amx_bf16 db " EDX 字节[22] AMX-BF16 处理器支持计算16位浮点数",0dh,0ah,0 avx512_fp db " EDX 字节[23] AVX512_FP16 ",0dh,0ah,0 amx_tile db " EDX 字节[24] AMX-TILE 处理器支持tile包",0dh,0ah,0 amx_int8 db " EDX 字节[25] AMX-INT8 处理器支持计算8位整数",0dh,0ah,0 ibib db " EDX 字节[26] IBPB 加强支持IBRS和IBPB,处理器设置位支持IA32_SPEC_CTRL MSR和IA32_PRED_CMD MSR,",0dh,0ah db " 随软件设置 IA32_SPEC_CTRL[0](IBSR)和IA32_PRED_CMD[0](IBPB)",0dh,0ah,0 stibp db " EDX 字节[27] STIBP 加强支持单线程(STIBP),设置后支持 IA32_SPEC_CTRL MSR和",0dh,0ah db " 随软件设置 IA32_SPEC_CTRL[1](STIBP)",0dh,0ah,0 l1d_flush db " EDX 字节[28] D_FLUSH 加强支持 L1D_FLUSH,处理器设置位支持 IA32_FLUSH_CMD MSR",0dh,0ah db " 随软件设置 IA32_FLUSH_CMD[0](L1D_FLUSH)",0dh,0ah,0 siac db " EDX 字节[29] SIAC 加强支持 IA32_ARCH_CAPABILITIES MSR",0dh,0ah,0 sicc db " EDX 字节[30] SICC 加强支持 IA32_CORE_CAPABILITIES MSR",0dh,0ah,0 sisc db " EDX 字节[31] SISC IA32_SPEC_CTRL MSR,随软件设置 IA32_SPEC_CTRL[2](SSBD)",0dh,0ah,0 reserved db "保留",0dh,0ah,0 intelatom db "Intel Atom",0dh,0ah,0 intelcore db "Intel Core",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=07H CPUID ECX=1 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< c07error db "CPUID 07函数 EAX EBX ECX EDX 索引值错误",0dh,0ah,0 a07a0_4 db "保留",0dh,0ah,0 a07a5 db "AVX512_BF16 主向量网络指令,IEEE方案支持BFLOAT16输入和覆盖指令",0dh,0ah,0 a07a6_31 db "保留",0dh,0ah,0 a07b db "如果子功能函数索引,这段为0,1是错误的,其它值保留",0dh,0ah,0 a07c db "如果子功能函数索引,这段为0,1是错误的,其它值保留",0dh,0ah,0 a07d db "如果子功能函数索引,这段为0,1是错误的,其它值保留",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 主要高冲缓存访问信息函数 ; EAX=09H CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ipdc db " EDX 字节[00] IPDC IA32_PLATFORM_DCA_CAP MSR 地址1f8h值为%X",0dh,0ah,0 a09a db "字节[0:31]的值为IA32_PLATFORM_DCA_CAP MSR(地址 1F8H)",0dh,0ah,0 a09b db "保留",0dh,0ah,0 a09c db "保留",0dh,0ah,0 a09d db "保留",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 主要高冲缓存访问信息函数 ; EAX=0AH CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< a0aa0_7 db "包显示版本ID",0dh,0ah,0 a0aa8_15 db "通常显示计数逻辑处理的数",0dh,0ah,0 a0aa16_23 db "通常显示计数的宽字位",0dh,0ah,0 a0aa24_31 db "EBX 向量包显示事件的长度,如果EBX[x]=0&&EAX[24:31]>x 包事件x支持",0dh,0ah,0 a0ab0 db "内核循环事件不可用 当值为1或 EAX[24:31]<1",0dh,0ah,0 a0ab1 db "指令执行事件不可用 当值为1或 EAX[24:31]<2",0dh,0ah,0 a0ab2 db "参考循环事件不可用 当值为1或 EAX[24:31]<3",0dh,0ah,0 a0ab3 db "过去级别高速缓存参考事件不可用 当值为1或 EAX[24:31]<4",0dh,0ah,0 a0ab4 db "过去级别高速缓存错误事件不可用 当值为1或 EAX[24:31]<5",0dh,0ah,0 a0ab5 db "加强指令执行事件不可用 当值为1或 EAX[24:31]<6",0dh,0ah,0 a0ab6 db "加强媒体指令执行事件不可用 当值为1或 EAX[24:31]<7",0dh,0ah,0 a0ab7 db "顶层下端插入事件不可用 当值为1或 EAX[24:31]<8",0dh,0ah,0 a0ab8_31 db "保留 值=0",0dh,0ah,0 a0ac0_31 db "支持修正计数屏敝,修正函数计数“i”就是1,(首个计数索引开始为0)逻辑加计数",0dh,0ah db "修正计数支持FxCtr[i]_is_supported:=ECX[i]||(EDX[4:0]>i)",0dh,0ah,0 a0ad0_4 db "从0配置修正函数加强计数开始数(如有版本ID)",0dh,0ah,0 a0ad5_12 db "修正函数的字节宽加强计数",0dh,0ah,0 a0ad13_14 db "保留 值=0",0dh,0ah,0 a0ad15 db "任意线程描述",0dh,0ah,0 a0ad16_31 db "保留 值=0",0dh,0ah,0 ; 注意: ; CPUID 功能函数 1fh 支持 0bh 功能函数,Intel 在使用0bh功能函数前首先检查存在的1fh功能函数 ; 功能函数 0bh 输出一些初始值在ECX ; 输入ECX值 EDX 输出 ; 输入ECX[0:7]等于输出ECX[0:7]的值 ; 子功能索引0是SMT级别 高级别进入点高于下级 ; 在子级别中返回级别类型不可用,ECX[8:15]为0时,EAX,EBX返回0 ; 如果输入值在ECX返回不可用级别类型,ECX[8:15]为0时,ECX>n 其它输入值也会在ECX[15:8]返回0 ; ;级别类型值 ;0:不可用 ;1:SMT ;2:Core ;3-255:保留 ;软件不用 EBX[0:15] 由系统的处理器支持,仅显示 ;逻辑处理器可用到 BIOS/OS/应用 EBX[0:15]可能在软件和硬件设置里有不同的值 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 扩展技术联合函数 ; EAX=0BH CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< a0ba0_4 db "在x2APIC ID右移的位数,所有的逻辑处理器共享当前级别和下一级别相同",0dh,0ah,0 a0ba5_31 db "保留",0dh,0ah,0 a0bb0_15 db "逻辑处理器在这级别类型上的数,这数由Intel系统处理",0dh,0ah,0 a0bb16_31 db "保留",0dh,0ah,0 a0bc0_7 db "级别数,输入值进ECX",0dh,0ah,0 a0bc8_15 db "级别类型(软件将用这段EAX[0:4]到系统处理",0dh,0ah,0 a0bc16_31 db "保留",0dh,0ah,0 a0bd0_31 db "x2APIC ID 的当前逻辑处理",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 处理器扩展结构子功能函数 ; EAX=0DH CPUID ECX=0 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< a0da0_31 db " ",0dh,0ah,0 a0da0 db "x87 状态",0dh,0ah,0 a0da1 db "SSE 状态",0dh,0ah,0 a0da2 db "AVX 状态",0dh,0ah,0 a0da3_4 db "MPX 状态",0dh,0ah,0 a0da5_7 db "AVX-512 状态",0dh,0ah,0 a0da8 db "使用 IA32_XSS",0dh,0ah,0 a0da9 db "PKRU 状态",0dh,0ah,0 a0da10_12 db "保留",0dh,0ah,0 a0da13 db "使用 IA32_XSS",0dh,0ah,0 a0da14_15 db "保留",0dh,0ah,0 a0da16 db "使用 IA32_XSS",0dh,0ah,0 a0da17_31 db "保留",0dh,0ah,0 a0db0_31 db "最大尺寸: %X H (字节,从XSAVE/XRSTOR 保存的区域开始",0dh,0ah db "正确打开XCR0特性,可能不同的一些ECX特性会结束,XCRO保存区不被开启",0dh,0ah,0 a0dc0_31 db "最大尺寸: %X H (字节,从XSAVE/XRSTOR 保存的区域开始",0dh,0ah db "正确打开XCR0特性,所有的处理器特性支持,所有段值在XCRO",0dh,0ah,0 a0dd0_31 db "报告这支持,在XCR0为32位,XCRO[n+32]能设为1,仅EDX[n]设1时.",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 处理器扩展结构子功能函数 ; EAX=0DH CPUID ECX=1 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;CPU 级别类型 letype db " 处理器级别类型私有信息:",0dh,0ah,0h letype1 db " 0:功能不可用",0dh,0ah,0h letype2 db " 1:表面贴",0dh,0ah,0h letype3 db " 2:核心",0dh,0ah,0h ;letype4_ db " 3-255:保留",0dh,0ah,0h ;新增类型 letype4 db " 3:模组",0dh,0ah,0h letype5 db " 4:并程",0dh,0ah,0h letype6 db " 5:死程",0dh,0ah,0h letype7 db " 6-255:保留",0dh,0ah,0h Bd00 db " 传统的x87",0dh,0ah,0h Bd01 db " 128比特位SSE",0dh,0ah,0h Bd02 db " 256比特位AVX",0dh,0ah,0h Bd04 db " MPX结构",0dh,0ah,0h Bd07 db " AVX-512结构",0dh,0ah,0h Bd08 db " 使用IA32_XSS",0dh,0ah,0h Bd09 db " PKRU结构",0dh,0ah,0h Bd12 db " 保留",0dh,0ah,0h Bd14 db " 使用IA32_XSS",0dh,0ah,0h Bd15 db " 保留",0dh,0ah,0h Bd16 db " 使用IA32_XSS",0dh,0ah,0h Bd17 db " XTILECFG",0dh,0ah,0 Bd18 db " XTILEDATA",0dh,0ah,0 Bd31 db " 保留",0dh,0ah,0h a0d1a00 db " XSAVEOPT可用",0dh,0ah,0 a0d1a01 db " 如果设置支持XRSTOR和XSAVEC的压缩形式",0dh,0ah,0 a0d1a02 db " 如果设置当ECX=1时支持XGETBV",0dh,0ah,0 a0d1a03 db " 如果设置支持XSAVES/SRSTORS和IA32_XSS",0dh,0ah,0 a0d1a04 db " 如果设置支持扩展特性关闭(XFD)",0dh,0ah,0 a0d1a4_31 db " 保留",0dh,0ah,0 a0d1b0_31 db " XSAVE 区域的尺寸,所有状态被XCR0|IA32_XSS开启",0dh,0ah,0 a0d1c0_7 db " 使用XCR0",0dh,0ah,0 a0d1c08 db " PT状态",0dh,0ah,0 a0d1c09 db " 使用XCR0",0dh,0ah,0 a0d1c10 db " 保留",0dh,0ah,0 a0d1c11 db " CET用户状态",0dh,0ah,0 a0d1c12 db " CET超级用户状态",0dh,0ah,0 a0d1c13 db " HDC状态",0dh,0ah,0 a0d1c14 db " UINTR状态",0dh,0ah,0 a0d1c15 db " 保留",0dh,0ah,0 a0d1c16 db " HWP状态",0dh,0ah,0 a0d1c17_31 db " 保留",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 处理器扩展结构子功能函数 ; EAX=0DH CPUID ECX=n n>1 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< a0dna0_31 db "指定的EBX字节尺寸,保存区为扩展状态特性区,可用的子功能函数索引n" a0dnb0_31 db "开始段字节扩展状态保存在开始的XSAVE/XRSTOR区,",0dh,0ah db "中断子功能函数索引没有图值到注册XCR0的值",0dh,0ah,0 a0dnc0 db "n位设置,在IA32_XSS MSR支持,如果n插入XCR0支持,它将清除",0dh,0ah,0 a0dnc1 db "设置后,XSAVE域使用压缩格式,扩展状态地址在下64字节",0dh,0ah,0 a0dnc2_31 db "保留",0dh,0ah,0 a0dnd db "如是子功能函数索引,返回0,n不可用,其它保留",0dh,0ah,0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; EAX=12H CPUID 信息 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< b12c0eax00 db " 如果设置,SGX1支持,表示Intel SGX支持SGX1函数的集合",0dh,0ah,0 b12c0eax01 db " 如果设置,SGX2支持,表示Intel SGX支持SGX2函数的集合",0dh,0ah,0 b12c0eax04 db " 保留",0dh,0ah,0 b12c0eax05 db " 如果设置,表示Intel SGX支持ENCLV指令级别 EINCVIRTCHILD,EDECVIRTCHILD和ESETCONTEXT",0dh,0ah,0 b12c0eax06 db " 如果设置,表示Intel SGX支持ENCLV指令级别 ETRACKC,ERDINFO,ELDBC和ELDUC",0dh,0ah,0 b12c0eax31 db " 保留",0dh,0ah,0 b12c0ebx db " MISCSELECT,支持的扩展Intel SGX功能的位向量",0dh,0ah,0 b12c1 db " 报告软件可以用ECREATE设置的SECS.ATTRIBUTES %b %b %b %b 的有效位",0dh,0ah,0 [section .text] start: clre mov eax,0h cpuid call c0proc c01: clre lea eax,afg push eax call printf pop eax clre mov eax,01h cpuid call c1proc c02: clre lea eax,afg push eax call printf pop eax clre mov eax,02h cpuid call c2proc c03: clre mov eax,03h cpuid call c3proc c04: clre lea eax,afg push eax call printf pop eax clre mov eax,04h cpuid call c4proc c05: clre lea eax,afg push eax call printf pop eax clre mov eax,05h cpuid call c5proc c06: clre lea eax,afg push eax call printf pop eax clre mov eax,06h cpuid call c6proc c07: clre lea eax,afg push eax call printf pop eax clre mov eax,07h mov ecx,00h cpuid call c7proc clre mov eax,07h mov ecx,01h cpuid call c7proc1 clre mov eax,07h mov ecx,01h cpuid call c7proc2 ;新的函数增加了ecx>=2模块 c09: clre lea eax,afg push eax call printf pop eax clre mov eax,09h cpuid call c9proc c0a: clre mov eax,0ah cpuid call c0aproc c0b: clre mov eax,0bh cpuid call c0bproc c0d: clre mov eax,0dh cpuid call c0dproc ;新子函数 clre mov eax,0bh mov ecx,01h cpuid call c0d1proc clre mov eax,0bh mov ecx,02h cpuid call c0d2proc ;新子函数增加 ecx>1 c0f: clre mov eax,0fh mov ecx,0h cpuid call c0fproc clre mov eax,0fh mov ecx,01h cpuid call c0f1proc c10: clre mov eax,10h mov ecx,0h cpuid call c10proc clre mov eax,10h mov ecx,1h cpuid call c101proc clre mov eax,10h mov ecx,2h cpuid call c102proc clre mov eax,10h mov ecx,3h cpuid call c103proc c12: clre mov eax,12h mov ecx,0h cpuid call c12proc clre mov eax,12h mov ecx,1h cpuid call c121proc clre mov eax,12h mov ecx,2h cpuid call c122proc c14: clre mov eax,14h mov ecx,0h cpuid call c14proc clre mov eax,14h mov ecx,1h cpuid call c141proc c15: clre mov eax,15h cpuid call c15proc c16: clre mov eax,16h mov ecx,0h cpuid call c16proc c17: clre mov eax,17h mov ecx,0h cpuid call c17proc ;新增 clre mov eax,17h mov ecx,1h cpuid call c171proc clre mov eax,17h mov ecx,2h cpuid call c172proc clre mov eax,17h mov ecx,3h cpuid call c173proc ;新增 ECX > MaxSOCID_Index c18: clre mov eax,18h mov ecx,0h cpuid call c18proc ;新增 ECX>=1 clre mov eax,18h mov ecx,1h cpuid call c181proc ;新增 ;..................... c19: clre mov eax,19h cpuid call c19proc c1a: clre mov eax,1ah mov ecx,0h cpuid call c1aproc ;..................... c1b: clre mov eax,1bh mov ecx,0h cpuid call c1bproc ; ECX >=0 c1d: clre mov eax,1dh mov ecx,0h cpuid call c1dproc ;新.................... clre mov eax,1dh mov ecx,1h cpuid call c1d1proc ;...................... c1e: clre mov eax,1eh mov ecx,0h cpuid call c1eproc c1f: clre mov eax,1fh cpuid call c1fproc c20: clre mov eax,20h mov ecx,0h cpuid call c20proc c8000: clre lea eax,afg push eax call printf pop eax clre mov eax,80000000h cpuid call c8000proc c8001: clre mov eax,80000001h cpuid call c8001proc c8002: clre mov eax,80000002h cpuid call c8002proc c8003: clre mov eax,80000003h cpuid call c8003proc c8004: clre mov eax,80000004h cpuid call c8004proc c8005: clre mov eax,80000005h cpuid call c8005proc c8006: clre mov eax,80000006h cpuid call c8006proc c8007: clre mov eax,80000007h cpuid call c8007proc c8008: clre mov eax,80000008h cpuid call c8008proc chelp: call chelpproc ccmd: ;>>>>>>>>>>>>>>>>>>> ;选择eax,ecx mov ecx,1 mov eax,1 ;<<<<<<<<<<<<<<<<<<< push ecx push eax lea eax,formeax push eax call printf pop eax pop eax pop ecx cpuid call ccmdproc exitP: push 0 call ExitProcess ret c0proc: push edx push ecx push ebx push eax lea eax,form0 push eax call printf pop eax pop eax pop ebx pop ecx pop edx push edx push ecx push ebx push eax lea eax,cpueax push eax call printf pop eax pop eax pop ebx pop ecx pop edx mov [text1],eax cmp eax,02h jz c0_1 cmp eax,05h jz c0_2 cmp eax,06h jz c0_3 cmp eax,0ah jz c0_4 cmp eax,0dh jz c0_5 c0_1: mov eax,cpu1 push eax jmp c0_6 c0_2: mov eax,cpu3 push eax jmp c0_6 c0_3: mov eax,cpu6 push eax jmp c0_6 c0_4: mov eax,cpu7 push eax jmp c0_6 c0_5: mov eax,cpu10 push eax jmp c0_6 c0_6: mov [text1+4],ebx mov [text1+8],edx mov [text1+12],ecx mov eax,0d0ah mov [text1+16],eax lea eax,ds:[text1+4] push eax ; call printf call StdOut ; 隐藏了一个参 eax的值 在跳 c0_6之前 call printf ; call StdOut pop eax ret ;笔记:此处花了不少时间 ; 首先是 masm32.lib 和 nasm 不兼容 ; masm32.lib 的库 链接时 在函数名前有一个"_" ; Stdout ("string...")这个函数 还调用了 StrLen ; Printf 函数来自 msvcrt.lib ; 第二是动了push 不动不行,因为c规则 ; 第三是Golink 链接器 静态链接库最好放在动态库前面 ; 第四是不会用 rep loopz ; 还有一些不用心的错误。手残党的"病"--打字调试有瘾 ; 一直纠结在加1减1,下划线,无下划线,大写,小写 ; 切记-------<九阴真经 上卷 第三篇 缩骨功> ; 因为是外练,可能<九阴真经> 完本是手抄本,有误 ; 轻度走火入魔带练<蛤蟆功>因为是从欧阳克那里偷师 ; 所以一直都有点偏,不敢见真正的西边武师太斗。 ; 还有一个技巧,后来发展成为<倚天屠龙记>中的最高功夫 ; 卷名 <乾坤大挪移> 共有十二级 进阶 第四级 ; EAX=01H 返回 ; EAX CPU 版本类型,家族,模式,单步ID ; EBX 0-7 字节,索引 ; 8-15 字节,CLFUSH 行尺寸(值 8 = 1字节缓存行尺寸) ; 16-23 字节,物理包内的逻辑处理地址ID的最大数 ; 24-31 字节,初始化APIC ID ; ECX SSE3 SSE3扩展功能 ; PCLMULQDQ 多比较 ; DTES64 64位DS区域 ; MONITOR 支持MONITOR/MWAIT ; DS-CPL CPL 调试记录 ; VMX 虚拟机扩展 ; SMX 保护模式扩展 ; EST 加强型Intel SeedStep 技术 ; TM2 终端监控2 ; SSSE3 SSSE3扩展 ; CNXT-ID L1目录ID ; SDBG 调试 ; FMA 多存地址 ; CMPXCHG16B ; xTPR 升级控制 ; [第16位保留] ; PDCM Perf/调试MSR ; PCID 处理器定义 ; DCA 高速缓存 目录访问 ; SSE4_1 ; SSE4_2 ; x2APIC ; MOVBE ; POPCNT ; TSC-Deadline 支持 APIC计时器在TSC deadline值上的 one-shot 操作 ; AES AESIN 扩展指令 ; XSAVE 支持 XSAVE/XRSTOR 外部处理指令 XSETBV/XGETBV和XCR0指令 ; OSXSAVE 支持CR4.0SXSAVE[bit 8]开启 用XSETBV/XGETBV访问XCR0管理XSAVE/XRSTOR ; AVX ; F16C ; RDRAND ; val = 0 ; EDX FPU-x87 FPU浮点运算器 ; VME 加强虚8086模式 包含CR4.VME控制特性,CR4.PVI为TSS保护模式虚拟中断,软中断除外,软件图片和EFLAGS.VIF,EFLAGS.VIP标志 ; DE 调试扩展 CR4.DE 控制I/O断点,选择访问DR4和DR5 ; PSE 页面扩展 大页面4M支持,包含CR4.PSE控制特性 选择保留CR3,PDEs,PTEs ; TSC 时间计数 RDTSC 指令支持 包含CR4.TSD私有控制 ; MSR RDMSR 和 WRMSR支持 ; PAE 物理地址扩展 32位 2M扩展4M ; MCE 机器异常检查 ; CX8 CMPXCHG8B ; APIC APIC芯片 处理器的高级中断控制,物理地址环FFFE0000h到FFFE0FFFh ; [第10位保留] ; SEP SYSENTER/SYSEXIT ; MTRR 内存环寄存器组 ; PGE PTE全局位 和 TLB有关 ; MCA 机器ARC检查 MCG_CAP特性 ; CMOV 移动比较指令 CPUID.FPU支持 FCOMI/FCMOV支持 ; PAT 页面属性表 和 MTRRs有关 ; PSE-36 页面尺寸扩展 4M页面地址,物理内存4G以上 13-20位页面目录进入,可以升到 40位 ; PSN 处理器序列数 ; CLFSH CLFSH指令 CLFLUSH指令 ; [第20位保留] ; DS 调试记录 和 BTS PEBS有关 ; ACPI 终端监示和时钟控制 ; MMX MMX技术 ; FXSR FXSAVE/FXRSTOR ; SSE SSE扩展 ; SSE2 ; SS Self Snoop ; HTT 多线程 ; TM 终端监示 ; [第30位保留] ; PBE Pend. Brk.EN 使用FERR#/PBE#在STPCLK#内 IA32_MISC_ENABLE MSR开启 c1proc: push edx push ecx push ebx push eax lea eax,form1 push eax call printf pop eax pop eax pop ebx pop ecx pop edx push edx ;DX的值,外层 push eax and eax,11000000000000b shl eax,18 shr eax,12 cmp al,00b jz c1_0 cmp al,01b jz c1_1 cmp al,10b jz c1_2 cmp al,11b jz c1_3 jmp c1_4 c1_0: lea eax,cput1 push eax jmp c1_4 c1_1: lea eax,cput2 push eax jmp c1_4 c1_2: mov eax,cput3 push eax jmp c1_4 c1_3: lea eax,cput4 push eax jmp c1_4 c1_4: lea eax,a01text push eax call printf pop eax pop eax clc pop eax push eax shl eax,28 shr eax,28 mov [Stepping_ID],ax pop eax push eax shl eax,24 shr eax,28 mov [Model_ID],ax pop eax push eax shl eax,20 shr eax,28 mov [Famlly_ID],ax pop eax push eax shl eax,16 shr eax,28 mov [Extended_Model_ID],ax pop eax push eax shl eax,12 shr eax,24 mov [Extended_Famlly_ID],ax pop eax and eax,0f00h cmp eax,0f00h jz c1_sub and eax,0600h cmp eax,0600h jz c1_sub jmp c1_bid c1_sub: xor eax,eax mov ax,[Stepping_ID] push eax mov ax,[Model_ID] push eax mov ax,[Famlly_ID] push eax mov ax,[Extended_Model_ID] push eax mov ax,[Extended_Famlly_ID] push eax lea eax,a01tex1 push eax call printf pop eax pop eax pop eax pop eax pop eax pop eax clc jmp c1bx c1_bid: xor eax,eax mov ax,[Stepping_ID] push eax mov ax,[Model_ID] push eax mov ax,[Famlly_ID] push eax lea eax,a01tex3 push eax call printf pop eax pop eax pop eax pop eax clc jmp c1bx ;--------------------------------------- ; 多余代码段,索引查找 CPU 类型 ; 代码有效,没使用 ;--------------------------------------- c1bx1: pusha xor eax,eax mov al,bl xor ebx,ebx mov bl,4 mul bl mov ebx,eax mov eax,[ebx+cpubaddr] push eax call printf pop eax popa ; 代码结束 ;---------------------------------------- c1bx: push ebx and ebx,0ffh push ebx lea eax,a01b0_7 push eax call printf pop eax pop ebx pop ebx push ebx and ebx,0ff00h shr ebx,8 push ebx lea eax,a01b8_15 push eax call printf pop eax pop ebx pop ebx push ebx and ebx,0ff0000h shr ebx,16 push ebx lea eax,a01b16_23 push eax call printf pop eax pop ebx pop ebx push ebx and ebx,0ff000000h shr ebx,24 push ebx lea eax,a01b24_31 push eax call printf pop eax pop ebx pop ebx c1p_1: shr ecx,1 jc c1_5 c1p_2: shr ecx,1 jc c1_6 c1p_3: shr ecx,1 jc c1_7 c1p_4: shr ecx,1 jc c1_8 c1p_5: shr ecx,1 jc c1_9 c1p_6: shr ecx,1 jc c1_10 c1p_7: shr ecx,1 jc c1_11 c1p_8: shr ecx,1 jc c1_12 c1p_9: shr ecx,1 jc c1_13 c1p_10: shr ecx,1 jc c1_14 c1p_11: shr ecx,1 jc c1_15 c1p_12: shr ecx,1 jc c1_16 c1p_13: shr ecx,1 jc c1_17 c1p_14: shr ecx,1 jc c1_18 c1p_15: shr ecx,1 jc c1_19 c1p_16: shr ecx,1 jc c1_20 c1p_17: shr ecx,1 jc c1_21 c1p_18: shr ecx,1 jc c1_22 c1p_19: shr ecx,1 jc c1_23 c1p_20: shr ecx,1 jc c1_24 c1p_21: shr ecx,1 jc c1_25 c1p_22: shr ecx,1 jc c1_26 c1p_23: shr ecx,1 jc c1_27 c1p_24: shr ecx,1 jc c1_28 c1p_25: shr ecx,1 jc c1_29 c1p_26: shr ecx,1 jc c1_30 c1p_27: shr ecx,1 jc c1_31 c1p_28: shr ecx,1 jc c1_32 c1p_29: shr ecx,1 jc c1_33 c1p_30: shr ecx,1 jc c1_34 c1p_31: shr ecx,1 jc c1_35 c1p_32: ; 最后一位值是0 clc jmp c1d_1 c1_5: ;1 push ecx mov eax,sse3 push eax call printf pop eax clc pop ecx jmp c1p_2 c1_6: ;2 push ecx mov eax,pclm1 push eax call printf pop eax clc pop ecx jmp c1p_3 c1_7: ;3 push ecx mov eax,dtes64 push eax call printf pop eax clc pop ecx jmp c1p_4 c1_8: ;4 push ecx mov eax,monit1 call c7_p pop ecx jmp c1p_5 c1_9: ;5 push ecx mov eax,ds_c call c7_p pop ecx jmp c1p_6 c1_10: ;6 push ecx mov eax,vmx call c7_p pop ecx jmp c1p_7 c1_11: ;7 push ecx mov eax,smx call c7_p pop ecx jmp c1p_8 c1_12: ;8 push ecx mov eax,est call c7_p pop ecx jmp c1p_9 c1_13: ;9 push ecx mov eax,tm2 call c7_p pop ecx jmp c1p_10 c1_14: ;10 push ecx mov eax,ssse3 call c7_p pop ecx jmp c1p_11 c1_15: ;11 push ecx mov eax,cnxt_id call c7_p pop ecx jmp c1p_12 c1_16: ;12 push ecx mov eax,sdbg call c7_p pop ecx jmp c1p_13 c1_17: ;13 push ecx mov eax,fma call c7_p pop ecx jmp c1p_14 c1_18: ;14 push ecx mov eax,cmpx1 call c7_p pop ecx jmp c1p_15 c1_19: ;15 push ecx mov eax,xtpr call c7_p pop ecx jmp c1p_16 c1_20: ;16 ; [第16位保留] jmp c1p_17 c1_21: ;17 push ecx mov eax,pdcm call c7_p pop ecx jmp c1p_18 c1_22: ;18 push ecx mov eax,pcid call c7_p pop ecx jmp c1p_19 c1_23: ;19 push ecx mov eax,dca call c7_p pop ecx jmp c1p_20 c1_24: ;20 push ecx mov eax,sse4_1 call c7_p pop ecx jmp c1p_21 c1_25: ;21 push ecx mov eax,sse4_2 call c7_p pop ecx jmp c1p_22 c1_26: ;22 push ecx mov eax,x2apic call c7_p pop ecx jmp c1p_23 c1_27: ;23 push ecx mov eax,movb1 call c7_p pop ecx jmp c1p_24 c1_28: ;24 push ecx mov eax,popc1 call c7_p pop ecx jmp c1p_25 c1_29: ;25 push ecx mov eax,tsc_d call c7_p pop ecx jmp c1p_26 c1_30: ;26 push ecx mov eax,aes call c7_p pop ecx jmp c1p_27 c1_31: ;27 push ecx mov eax,xsav1 call c7_p pop ecx jmp c1p_28 c1_32: ;28 push ecx mov eax,osxsave call c7_p pop ecx jmp c1p_29 c1_33: ;29 push ecx mov eax,avx call c7_p pop ecx jmp c1p_30 c1_34: ;30 push ecx mov eax,f16c call c7_p pop ecx jmp c1p_31 c1_35: ;31 push ecx mov eax,rdran1 call c7_p pop ecx jmp c1d_1 ; END ECX ==== BEGIN EDX c1d_1: pop edx shr edx,1 jc c1_36 c1d_2: shr edx,1 jc c1_37 c1d_3: shr edx,1 jc c1_38 c1d_4: shr edx,1 jc c1_39 c1d_5: shr edx,1 jc c1_40 c1d_6: shr edx,1 jc c1_41 c1d_7: shr edx,1 jc c1_42 c1d_8: shr edx,1 jc c1_43 c1d_9: shr edx,1 jc c1_44 c1d_10: shr edx,1 jc c1_45 c1d_11: shr edx,1 jc c1_46 c1d_12: shr edx,1 jc c1_47 c1d_13: shr edx,1 jc c1_48 c1d_14: shr edx,1 jc c1_49 c1d_15: shr edx,1 jc c1_50 c1d_16: shr edx,1 jc c1_51 c1d_17: shr edx,1 jc c1_52 c1d_18: shr edx,1 jc c1_53 c1d_19: shr edx,1 jc c1_54 c1d_20: shr edx,1 jc c1_55 c1d_21: shr edx,1 jc c1_56 c1d_22: shr edx,1 jc c1_57 c1d_23: shr edx,1 jc c1_58 c1d_24: shr edx,1 jc c1_59 c1d_25: shr edx,1 jc c1_60 c1d_26: shr edx,1 jc c1_61 c1d_27: shr edx,1 jc c1_62 c1d_28: shr edx,1 jc c1_63 c1d_29: shr edx,1 jc c1_64 c1d_30: shr edx,1 jc c1_65 c1d_31: shr edx,1 jc c1_66 c1d_32: shr edx,1 jc c1_67 jmp c1_e ; EDX ======================= c1_36: push edx mov eax,fpu push eax call printf pop eax pop edx clc jmp c1d_2 c1_37: push edx mov eax,vme push eax call printf pop eax pop edx clc jmp c1d_3 c1_38: push edx mov eax,de push eax call printf pop eax pop edx clc jmp c1d_4 c1_39: push edx mov eax,pse push eax call printf pop eax pop edx clc jmp c1d_5 c1_40: push edx mov eax,tsc push eax call printf pop eax pop edx clc jmp c1d_6 c1_41: push edx mov eax,msr push eax call printf pop eax pop edx clc jmp c1d_7 c1_42: push edx mov eax,pae push eax call printf pop eax pop edx clc jmp c1d_8 c1_43: push edx mov eax,mce push eax call printf pop eax pop edx clc jmp c1d_9 c1_44: push edx mov eax,cx8 push eax call printf pop eax pop edx clc jmp c1d_10 c1_45: push edx mov eax,apic push eax call printf pop eax pop edx clc jmp c1d_11 c1_46: ;[第10位保留] jmp c1d_12 c1_47: push edx mov eax,sep push eax call printf pop eax pop edx clc jmp c1d_13 c1_48: push edx mov eax,mtrr push eax call printf pop eax pop edx clc jmp c1d_14 c1_49: push edx mov eax,pge push eax call printf pop eax pop edx clc jmp c1d_15 c1_50: push edx mov eax,mca push eax call printf pop eax pop edx clc jmp c1d_16 c1_51: push edx mov eax,cmov1 push eax call printf pop eax pop edx clc jmp c1d_17 c1_52: push edx mov eax,pat push eax call printf pop eax pop edx clc jmp c1d_18 c1_53: push edx mov eax,pse_36 push eax call printf pop eax pop edx clc jmp c1d_19 c1_54: push edx mov eax,psn push eax call printf pop eax pop edx clc jmp c1d_20 c1_55: push edx mov eax,clfsh push eax call printf pop eax pop edx clc jmp c1d_21 c1_56: ;[第20位保留] jmp c1d_22 c1_57: push edx mov eax,ds1 push eax call printf pop eax pop edx clc jmp c1d_23 c1_58: push edx mov eax,acpi push eax call printf pop eax pop edx clc jmp c1d_24 c1_59: push edx mov eax,mmx push eax call printf pop eax pop edx clc jmp c1d_25 c1_60: push edx mov eax,fxsr push eax call printf pop eax pop edx clc jmp c1d_26 c1_61: push edx mov eax,sse push eax call printf pop eax pop edx clc jmp c1d_27 c1_62: push edx mov eax,sse2 push eax call printf pop eax pop edx clc jmp c1d_28 c1_63: push edx mov eax,ss1 push eax call printf pop eax pop edx clc jmp c1d_29 c1_64: push edx mov eax,htt push eax call printf pop eax pop edx clc jmp c1d_30 c1_65: push edx mov eax,tm push eax call printf pop eax pop edx clc jmp c1d_31 c1_66: ;[第30位保留] jmp c1d_32 c1_67: push edx mov eax,pbe push eax call printf pop eax pop edx clc c1_e: ret ; EAX=02H 返回 ; Cache缓存和TLB信息 ; ; c2proc: push edx push ecx push ebx push eax lea eax,form2 push eax call printf pop eax pop eax pop ebx pop ecx pop edx cmp al,01h jz c2p_1 jmp c2p_e c2p_1: pusha test eax,eax jnz c2_2 c2_1: mov eax,c2_note1 jmp c2_3 c2_2: mov eax,c2_note2 c2_3: push eax call printf pop eax mov eax,note1 push eax call printf pop eax popa pusha push edx push ecx push ebx push eax lea eax,form push eax call printf pop eax pop eax pop ebx pop ecx pop edx popa push eax push edx push ecx push ebx xor ecx,ecx mov ecx,3 shr eax,8 call c2_4 pop ebx mov eax,ebx xor ecx,ecx mov ecx,4 call c2_4 pop ecx mov eax,ecx xor ecx,ecx mov ecx,4 call c2_4 pop edx mov eax,edx xor ecx,ecx mov ecx,4 call c2_4 pop eax ret c2_4: push eax push ecx cmp al,00h jz c2_00 cmp al,01h jz c2_01 cmp al,02h jz c2_02 cmp al,03h jz c2_03 cmp al,04h jz c2_04 cmp al,05h jz c2_05 cmp al,06h jz c2_06 cmp al,08h jz c2_08 cmp al,09h jz c2_09 cmp al,0ah jz c2_0a cmp al,0bh jz c2_0b cmp al,0ch jz c2_0c cmp al,0dh jz c2_0d cmp al,21h jz c2_21 cmp al,22h jz c2_22 cmp al,23h jz c2_23 cmp al,25h jz c2_25 cmp al,29h jz c2_29 cmp al,2ch jz c2_2c cmp al,30h jz c2_30 cmp al,3ah jz c2_3a cmp al,3bh jz c2_3b cmp al,3ch jz c2_3c cmp al,3dh jz c2_3d cmp al,3eh jz c2_3e cmp al,40h jz c2_40 cmp al,41h jz c2_41 cmp al,42h jz c2_42 cmp al,43h jz c2_43 cmp al,44h jz c2_44 cmp al,45h jz c2_45 cmp al,46h jz c2_46 cmp al,47h jz c2_47 cmp al,49h jz c2_49 cmp al,4ah jz c2_4a cmp al,4bh jz c2_4b cmp al,4ch jz c2_4c cmp al,4dh jz c2_4d cmp al,4eh jz c2_4e cmp al,50h jz c2_50 cmp al,51h jz c2_51 cmp al,52h jz c2_52 cmp al,56h jz c2_56 cmp al,57h jz c2_57 cmp al,5bh jz c2_5b cmp al,5ch jz c2_5c cmp al,5dh jz c2_5d cmp al,60h jz c2_60 cmp al,66h jz c2_66 cmp al,67h jz c2_67 cmp al,68h jz c2_68 cmp al,70h jz c2_70 cmp al,71h jz c2_71 cmp al,72h jz c2_72 cmp al,78h jz c2_78 cmp al,79h jz c2_79 cmp al,7ah jz c2_7a cmp al,7bh jz c2_7b cmp al,7ch jz c2_7c cmp al,7dh jz c2_7d cmp al,7fh jz c2_7f cmp al,82h jz c2_82 cmp al,83h jz c2_83 cmp al,84h jz c2_84 cmp al,85h jz c2_85 cmp al,87h jz c2_87 cmp al,0b0h jz c2_b0 cmp al,0b1h jz c2_b1 cmp al,0b2h jz c2_b2 cmp al,0b3h jz c2_b3 cmp al,0b4h jz c2_b4 cmp al,0cah jz c2_ca cmp al,0d0h jz c2_d0 cmp al,0d1h jz c2_d1 cmp al,0d2h jz c2_d2 cmp al,0d6h jz c2_d6 cmp al,0d7h jz c2_d7 cmp al,0d8h jz c2_d8 cmp al,0dch jz c2_dc cmp al,0ddh jz c2_dd cmp al,0deh jz c2_de cmp al,0e2h jz c2_e2 cmp al,0e3h jz c2_e3 cmp al,0e4h jz c2_e4 cmp al,0f0h jz c2_f0 cmp al,0f1h jz c2_f1 ;这里可以加上字符串“信息没公开” cmp cx,03h je c2_XA cmp cx,02h je c2_XB cmp cx,01h je c2_XC jmp c2_L c2_00: mov ebx,tlbdsr00 call c2p jmp c2_L c2_01: mov ebx,tlbdsr01 call c2p jmp c2_L c2_02: mov ebx,tlbdsr02 call c2p jmp c2_L c2_03: mov ebx,tlbdsr03 call c2p jmp c2_L c2_04: mov ebx,tlbdsr04 call c2p jmp c2_L c2_05: mov ebx,tlbdsr05 call c2p jmp c2_L c2_06: mov ebx,tlbdsr06 call c2p jmp c2_L c2_08: mov ebx,tlbdsr08 call c2p jmp c2_L c2_09: mov ebx,tlbdsr09 call c2p jmp c2_L c2_0a: mov ebx,tlbdsr0A call c2p jmp c2_L c2_0b: mov ebx,tlbdsr0B call c2p jmp c2_L c2_0c: mov ebx,tlbdsr0C call c2p jmp c2_L c2_0d: mov ebx,tlbdsr0D call c2p jmp c2_L c2_0e: mov ebx,tlbdsr0E call c2p jmp c2_L c2_1d: mov ebx,tlbdsr1D call c2p jmp c2_L c2_21: mov ebx,tlbdsr21 call c2p jmp c2_L c2_22: mov ebx,tlbdsr22 call c2p jmp c2_L c2_23: mov ebx,tlbdsr23 call c2p jmp c2_L c2_24: mov ebx,tlbdsr24 call c2p jmp c2_L c2_25: mov ebx,tlbdsr25 call c2p jmp c2_L c2_29: mov ebx,tlbdsr29 call c2p jmp c2_L c2_2c: mov ebx,tlbdsr2C call c2p jmp c2_L c2_30: mov ebx,tlbdsr30 call c2p jmp c2_L c2_3a: mov ebx,tlbdsr3A call c2p jmp c2_L c2_3b: mov ebx,tlbdsr3B call c2p jmp c2_L c2_3c: mov ebx,tlbdsr3C call c2p jmp c2_L c2_3d: mov ebx,tlbdsr3D call c2p jmp c2_L c2_3e: mov ebx,tlbdsr3E call c2p jmp c2_L c2_40: mov ebx,tlbdsr40 call c2p jmp c2_L c2_41: mov ebx,tlbdsr41 call c2p jmp c2_L c2_42: mov ebx,tlbdsr42 call c2p jmp c2_L c2_43: mov ebx,tlbdsr43 call c2p jmp c2_L c2_44: mov ebx,tlbdsr44 call c2p jmp c2_L c2_45: mov ebx,tlbdsr45 call c2p jmp c2_L c2_46: mov ebx,tlbdsr46 call c2p jmp c2_L c2_47: mov ebx,tlbdsr47 call c2p jmp c2_L c2_48: mov ebx,tlbdsr48 call c2p jmp c2_L c2_49: mov ebx,tlbdsr49 call c2p jmp c2_L c2_4a: mov ebx,tlbdsr4A call c2p jmp c2_L c2_4b: mov ebx,tlbdsr4B call c2p jmp c2_L c2_4c: mov ebx,tlbdsr4C call c2p jmp c2_L c2_4d: mov ebx,tlbdsr4D call c2p jmp c2_L c2_4e: mov ebx,tlbdsr4E call c2p jmp c2_L c2_4f: mov ebx,tlbdsr4F call c2p jmp c2_L c2_50: mov ebx,tlbdsr50 call c2p jmp c2_L c2_51: mov ebx,tlbdsr51 call c2p jmp c2_L c2_52: mov ebx,tlbdsr52 call c2p jmp c2_L c2_55: mov ebx,tlbdsr55 call c2p jmp c2_L c2_56: mov ebx,tlbdsr56 call c2p jmp c2_L c2_57: mov ebx,tlbdsr57 call c2p jmp c2_L c2_59: mov ebx,tlbdsr59 call c2p jmp c2_L c2_5a: mov ebx,tlbdsr5A call c2p jmp c2_L c2_5b: mov ebx,tlbdsr5B call c2p jmp c2_L c2_5c: mov ebx,tlbdsr5C call c2p jmp c2_L c2_5d: mov ebx,tlbdsr5D call c2p jmp c2_L c2_60: mov ebx,tlbdsr60 call c2p jmp c2_L c2_61: mov ebx,tlbdsr61 call c2p jmp c2_L c2_63: mov ebx,tlbdsr63 call c2p jmp c2_L c2_64: mov ebx,tlbdsr64 call c2p jmp c2_L c2_66: mov ebx,tlbdsr66 call c2p jmp c2_L c2_67: mov ebx,tlbdsr67 call c2p jmp c2_L c2_68: mov ebx,tlbdsr68 call c2p jmp c2_L c2_6a: mov ebx,tlbdsr6A call c2p jmp c2_L c2_6b: mov ebx,tlbdsr6B call c2p jmp c2_L c2_6c: mov ebx,tlbdsr6C call c2p jmp c2_L c2_6d: mov ebx,tlbdsr6D call c2p jmp c2_L c2_70: mov ebx,tlbdsr70 call c2p jmp c2_L c2_71: mov ebx,tlbdsr71 call c2p jmp c2_L c2_72: mov ebx,tlbdsr72 call c2p jmp c2_L c2_73: mov ebx,tlbdsr72 call c2p jmp c2_L c2_74: mov ebx,tlbdsr72 call c2p jmp c2_L c2_75: mov ebx,tlbdsr72 call c2p jmp c2_L c2_76: mov ebx,tlbdsr72 call c2p jmp c2_L c2_77: mov ebx,tlbdsr72 call c2p jmp c2_L c2_78: mov ebx,tlbdsr78 call c2p jmp c2_L c2_79: mov ebx,tlbdsr79 call c2p jmp c2_L c2_7a: mov ebx,tlbdsr7A call c2p jmp c2_L c2_7b: mov ebx,tlbdsr7B call c2p jmp c2_L c2_7c: mov ebx,tlbdsr7C call c2p jmp c2_L c2_7d: mov ebx,tlbdsr7D call c2p jmp c2_L c2_7f: mov ebx,tlbdsr7F call c2p jmp c2_L c2_80: mov ebx,tlbdsr80 call c2p jmp c2_L c2_82: mov ebx,tlbdsr82 call c2p jmp c2_L c2_83: mov ebx,tlbdsr83 call c2p jmp c2_L c2_84: mov ebx,tlbdsr84 call c2p jmp c2_L c2_85: mov ebx,tlbdsr85 call c2p jmp c2_L c2_86: mov ebx,tlbdsr86 call c2p jmp c2_L c2_87: mov ebx,tlbdsr87 call c2p jmp c2_L c2_a0: mov ebx,tlbdsrA0 call c2p jmp c2_L c2_b0: mov ebx,tlbdsrB0 call c2p jmp c2_L c2_b1: mov ebx,tlbdsrB1 call c2p jmp c2_L c2_b2: mov ebx,tlbdsrB2 call c2p jmp c2_L c2_b3: mov ebx,tlbdsrB3 call c2p jmp c2_L c2_b4: mov ebx,tlbdsrB4 call c2p jmp c2_L c2_b5: mov ebx,tlbdsrB5 call c2p jmp c2_L c2_b6: mov ebx,tlbdsrB6 call c2p jmp c2_L c2_ba: mov ebx,tlbdsrBA call c2p jmp c2_L c2_c0: mov ebx,tlbdsrC0 call c2p jmp c2_L c2_c1: mov ebx,tlbdsrC1 call c2p jmp c2_L c2_c2: mov ebx,tlbdsrC2 call c2p jmp c2_L c2_c3: mov ebx,tlbdsrC3 call c2p jmp c2_L c2_c4: mov ebx,tlbdsrC4 call c2p jmp c2_L c2_ca: mov ebx,tlbdsrCA call c2p jmp c2_L c2_d0: mov ebx,tlbdsrD0 call c2p jmp c2_L c2_d1: mov ebx,tlbdsrD1 call c2p jmp c2_L c2_d2: mov ebx,tlbdsrD2 call c2p jmp c2_L c2_d6: mov ebx,tlbdsrD6 call c2p jmp c2_L c2_d7: mov ebx,tlbdsrD7 call c2p jmp c2_L c2_d8: mov ebx,tlbdsrD8 call c2p jmp c2_L c2_dc: mov ebx,tlbdsrDC call c2p jmp c2_L c2_dd: mov ebx,tlbdsrDD call c2p jmp c2_L c2_de: mov ebx,tlbdsrDE call c2p jmp c2_L c2_e2: mov ebx,tlbdsrE2 call c2p jmp c2_L c2_e3: mov ebx,tlbdsrE3 call c2p jmp c2_L c2_e4: mov ebx,tlbdsrE4 call c2p jmp c2_L c2_ea: mov ebx,tlbdsrEA call c2p jmp c2_L c2_eb: mov ebx,tlbdsrEB call c2p jmp c2_L c2_ec: mov ebx,tlbdsrEC call c2p jmp c2_L c2_f0: mov ebx,tlbdsrF0 call c2p jmp c2_L c2_f1: mov ebx,tlbdsrF1 call c2p jmp c2_L c2_fe: mov ebx,tlbdsrFE call c2p jmp c2_L c2_ff: mov ebx,tlbdsrFF call c2p jmp c2_L c2_XA: mov ebx,tlbdsrXA call c2p jmp c2_L c2_XB: mov ebx,tlbdsrXB call c2p jmp c2_L c2_XC: mov ebx,tlbdsrXC call c2p jmp c2_L ;******* printf 函数 ****** c2p: push ebx call printf pop ebx ret c2_L: pop ecx pop eax shr eax,8 sub ecx,1 jnz c2_4 lea eax,afg push eax call printf pop eax c2p_e: ret ; EAX=03H 返回 ; EAX 保留 ; EBX 保留 ; ECX bit00-31: 96字节的序列数(可用在PIII处理器上,这值被寄存器保留) ; EDX bit32-63: 96字节的序列数(可用在PIII处理器上,这值被寄存器保留) c3proc: push edx push ecx push ebx push eax lea eax,form3 push eax call printf pop eax pop eax pop ebx pop ecx pop edx push edx push ecx lea eax,cpusrn push eax call printf pop eax pop ecx pop edx ret ; EAX=04h 返回 ; ; EAX bit 0-4 0=NULL缓存 1=数据缓存 2=指令缓存 3=段缓存 4-31:保留 ; c4proc: push edx push ecx push ebx push eax lea eax,form4 push eax call printf pop eax pop eax pop ebx pop ecx pop edx c4c1: clc shr eax,1 jc c4p1 c4c2: clc shr eax,1 jc c4p2 c4c3: clc shr eax,1 jc c4p3 c4c4: clc shr eax,1 jc c4p4 c4c5: clc push eax and eax,111b push eax lea eax,cachelevel push eax call printf pop eax pop eax pop eax clc shr eax,3 jc c4p5 ; push eax c4c8: clc shr eax,1 jc c4p6 c4c9: clc shr eax,1 jc c4p7 c4c10: clc shr eax,4 jc c4p8 c4c11: clc shr eax,12 jc c4p9 c4c12: clc shr eax,6 jc c4p10 c4b1: jmp c4pb1 c4b2: jmp c4pb2 c4b3: jmp c4pb3 c4n1: jmp c4pn1 c4d0: ; and edx,1b jmp c4pd0 c4d10: jmp c4pd10 c4d1: jmp c4pd1 c4d2: and edx,100b jmp c4pd2 c4d3_31: and edx,11111111111111111111111111b jmp c4pd3_31 c4n: jmp c4c7end c4p1: lea eax,cachet0 push eax call printf pop eax jmp c4c2 c4p2: lea eax,cachet1 push eax call printf pop eax jmp c4c3 c4p3: lea eax,cachet2 push eax call printf pop eax jmp c4c4 c4p4: lea eax,cachet3 push eax call printf pop eax jmp c4c5 c4p5: ;过程转移到c4c5 jmp c4c8 c4p6: push eax lea eax,cachesleve push eax call printf pop eax pop eax jmp c4c9 c4p7: push eax lea eax,cachefa push eax call printf pop eax pop eax jmp c4c10 c4p8: push eax lea eax,cachere push eax call printf pop eax pop eax jmp c4c11 c4p9: push eax lea eax,cachemaxl push eax call printf pop eax pop eax jmp c4c12 c4p10: push eax lea eax,cachemaxp push eax call printf pop eax pop eax jmp c4b1 c4pb1: push eax and ebx,111111111111b push eax lea eax,cacebx1 push eax call printf pop eax pop ebx pop eax jmp c4b2 c4pb2: push ebx push eax and ebx,1111111111000000000000b shr ebx,12 push ebx lea eax,cacebx2 push eax call printf pop eax pop ebx pop eax pop ebx jmp c4b3 c4pb3: push ebx push eax and ebx,11111111110000000000000000000000b shr ebx,22 push ebx lea eax,cacebx3 push eax call printf pop eax pop ebx pop eax pop ebx jmp c4n1 c4pn1: push eax push ecx lea eax,cacecx push eax call printf pop eax pop ecx pop eax jmp c4d0 c4pd0: push eax push ecx lea eax,cac0 push eax call printf pop eax pop ecx pop eax jmp c4d10 c4pd10: push eax push ecx lea eax,cac10 push eax call printf pop eax pop ecx pop eax and edx,10000000000b jne c4dl2 push eax push ecx lea eax,cac10_0 push eax call printf pop eax pop ecx pop eax jmp c4d1 c4dl10: push eax push ecx lea eax,cac10_1 push eax call printf pop eax pop ecx pop eax jmp c4d1 c4pd1: push eax push ecx lea eax,cac1 push eax call printf pop eax pop ecx pop eax and edx,10b jne c4dl1 push eax push ecx lea eax,cac1_0 push eax call printf pop eax pop ecx pop eax jmp c4d2 c4dl1: push eax push ecx lea eax,cac1_1 push eax call printf pop eax pop ecx pop eax jmp c4d2 c4pd2: push eax push ecx lea eax,cac2 push eax call printf pop eax pop ecx pop eax and edx,100b jne c4dl2 push eax push ecx lea eax,cac2_0 push eax call printf pop eax pop ecx pop eax jmp c4d3_31 c4dl2: push eax push ecx lea eax,cac2_1 push eax call printf pop eax pop ecx pop eax jmp c4d3_31 c4pd3_31: push eax push ecx lea eax,cac3_31 push eax call printf pop eax pop ecx pop eax jmp c4n c4c7end: ret ; EAX=05H ; 监控/等待 功能 ; EAX AX 小监控行尺寸(默认处理器监控) ; EBX BX 大监控行尺寸(默认处理器监控) ; ECX bit0:监控-等待指令扩展支持.(在EAX和EBX寄存器之前) ; bit1:支持MWAIT的中断事件的中断支持,事件中断时关闭功能 ; bit02-31:保留 ; EDX bit00-03:C0 用于MWAIT 子C结构支持 ; bit04-07:C1 用于MWAIT 子C结构支持 ; bit08-11:C2 用于MWAIT 子C结构支持 ; bit12-15:C3 用于MWAIT 子C结构支持 ; bit16-19:C4 用于MWAIT 子C结构支持 ; bit20-23:C5 用于MWAIT 子C结构支持 ; bit24-27:C6 用于MWAIT 子C结构支持 ; bit28-31:C7 用于MWAIT 子C结构支持 c5proc: push edx push ecx push ebx push eax lea eax,form5 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ;;;;;;;;;;;;;;;;;;; push edx push ecx push ebx push eax push eax lea eax,a05mixmon push eax call printf pop eax pop eax pop eax pop ebx pop ecx pop edx ;;;;;;;;;;;;;;;;;; push edx push ecx push ebx push eax push ebx lea eax,a05maxmon push eax call printf pop eax pop ebx pop eax pop ebx pop ecx pop edx ;;;;;;;;;;;;;;;;;; push ecx shr ecx,1 jnc c05pd push edx push ecx push ebx push eax push eax lea eax,a05c0 push eax call printf pop eax pop eax pop eax pop ebx pop ecx pop edx pop ecx ;;;;;;;;;;;;;;;;;; push ecx shr ecx,2 jnc c05pd push edx push ecx push ebx push eax push eax lea eax,a05c1 push eax call printf pop eax pop eax pop eax pop ebx pop ecx pop edx pop ecx ;;;;;;;;;;;;;;;;;; push ecx push edx push ecx push ebx push eax push eax lea eax,a05cx push eax call printf pop eax pop eax pop eax pop ebx pop ecx pop edx pop ecx ;;;;;;;;;;;;;;;;;;; c05pd: push edx shl edx,28 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d0 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,24 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d4 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,20 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d8 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,16 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d12 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,12 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d16 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,08 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d20 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,04 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d24 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ;------------------- push edx shl edx,00 shr edx,28 push edx push ecx push ebx push eax push edx lea eax,a05d28 push eax call printf pop eax pop edx pop eax pop ebx pop ecx pop edx pop edx ret c6proc: push edx push ecx push ebx push eax lea eax,form6 push eax call printf pop eax pop eax push eax c6_a0: clc shr eax,1 jc c6pa0 c6_a1: clc shr eax,1 jc c6pa1 c6_a2: clc shr eax,1 jc c6pa2 c6_a3: clc shr eax,1 jc c6pa3 c6_a4: clc shr eax,1 jc c6pa4 c6_a5: clc shr eax,1 jc c6pa5 c6_a6: clc shr eax,1 jc c6pa6 c6_a7: clc shr eax,1 jc c6pa7 c6_a8: clc shr eax,1 jc c6pa8 c6_a9: clc shr eax,1 jc c6pa9 c6_a10: clc shr eax,1 jc c6pa10 c6_a11: clc shr eax,1 jc c6pa11 c6_a12: clc shr eax,1 jc c6pa12 c6_a13: clc shr eax,1 jc c6pa13 c6_a14: clc shr eax,1 jc c6pa14 c6_a15: clc shr eax,1 jc c6pa15 c6_a16: clc shr eax,1 jc c6pa16 c6_a17: clc shr eax,1 jc c6pa17 c6_a18: clc shr eax,1 jc c6pa18 c6_a19: clc shr eax,1 jc c6pa19 c6_a20: clc shr eax,1 jc c6pa20 c6_a21_31: and eax,11111111111b jnz c6pa21_31 c6_b0_3: push ebx and ebx,1111b jnz c6pb0_3 c6_b4_31: pop ebx shr ebx,4 and ebx,1111111111111111111111111111b jnz c6pb4_31 c6_c0: push ecx clc shr ecx,1 jc c6pc0 c6_c1_2: and ecx,11b jnz c6pc1_2 c6_c3: pop ecx push ecx clc shr ecx,3 jc c6pc3 c6_c4_31: pop ecx clc shr ecx,4 jnz c6pc4_31 c6_d0_7: push edx and edx,11111111b jnz c6pd0_7 c6_d7_0: pop edx push edx clc shr edx,1 jc c6pd7_0 c6_d7_1: clc shr edx,1 jc c6pd7_1 c6_d7_2_7: pop edx push edx clc and edx,11111110b shr edx,1 jnz c6pd7_2_7 c6_d8_11: pop edx push edx clc and edx,111100000000b shr edx,8 jnz c6pd8_11 c6_d16_31: pop edx clc and edx,0ffff0000h shr edx,16 jnz c6pd16_31 jmp c6_end c6pa0: lea eax,a06a00 call c6subproc jmp c6_a1 c6pa1: lea eax,a06a01 call c6subproc jmp c6_a2 c6pa2: lea eax,a06a02 call c6subproc jmp c6_a3 c6pa3: lea eax,a06a03 call c6subproc jmp c6_a4 c6pa4: lea eax,a06a04 call c6subproc jmp c6_a5 c6pa5: lea eax,a06a05 call c6subproc jmp c6_a6 c6pa6: lea eax,a06a06 call c6subproc jmp c6_a7 c6pa7: lea eax,a06a07 call c6subproc jmp c6_a8 c6pa8: lea eax,a06a08 call c6subproc jmp c6_a9 c6pa9: lea eax,a06a09 call c6subproc jmp c6_a10 c6pa10: lea eax,a06a10 call c6subproc jmp c6_a11 c6pa11: lea eax,a06a11 call c6subproc jmp c6_a12 c6pa12: lea eax,a06a12 call c6subproc jmp c6_a13 c6pa13: lea eax,a06a13 call c6subproc jmp c6_a14 c6pa14: lea eax,a06a14 call c6subproc jmp c6_a15 c6pa15: lea eax,a06a15 call c6subproc jmp c6_a16 c6pa16: lea eax,a06a16 call c6subproc jmp c6_a17 c6pa17: lea eax,a06a17 call c6subproc jmp c6_a18 c6pa18: lea eax,a06a18 call c6subproc jmp c6_a19 c6pa19: lea eax,a06a19 call c6subproc jmp c6_a20 c6pa20: lea eax,a06a20 call c6subproc jmp c6_a21_31 c6pa21_31: push eax lea eax,a06a21_31 push eax call printf pop eax pop eax jmp c6_b0_3 c6pb0_3: push ebx lea eax,a06b0_3 push eax call printf pop eax pop ebx jmp c6_b4_31 c6pb4_31: push ebx lea eax,a06b4_31 push eax call printf pop eax pop ebx jmp c6_c0 c6pc0: lea eax,a06c0 call printf jmp c6_c1_2 c6pc1_2: push ecx lea eax,a06c1_2 push eax call printf pop eax pop ecx jmp c6_c3 c6pc3: lea eax,a06c3 call c6subproc jmp c6_c4_31 c6pc4_31: push ecx lea eax,a06c4_31 push eax call printf pop eax pop ecx jmp c6_d0_7 c6pd0_7: push edx lea eax,a06d0_7 push eax call printf pop eax pop edx jmp c6_d7_0 c6pd7_0: lea eax,a06d7_0 call c6subproc jmp c6_d7_1 c6pd7_1: lea eax,a06d7_1 call c6subproc jmp c6_d7_2_7 c6pd7_2_7: push edx lea eax,a06d7_2_7 push eax call printf pop eax pop edx jmp c6_d8_11 c6pd8_11: push edx lea eax,a06d8_11 push eax call printf pop eax pop edx jmp c6_d16_31 c6pd16_31: push edx lea eax,a06d16_31 push eax call printf pop eax pop edx jmp c6_end c6_end: pop eax pop ebx pop ecx pop edx ret c6subproc: push eax call printf pop eax ret ; EAX=07H ECX=0 返回 ; 07子功能识别是特别的CPU指令集,和常规的CPU命令集不同,属于扩展功能 ; 此功能进入时使用EAX和ECX寄存器 ; EBX=0 ;不支持指令 ;FSGSBASE RDFSBASE/RDFSBASE/WRFSBASE/WRGSBASE ;MSR 不支持 IA32_TSC_ADJUST ;SGX | BMI1 | HLE | AVX2 | FDP_EXCPTN_ONLY | SMEP ;BMI2 | 加强 REP MOVSB/STOSB | INVPCID | RTM | RDT-M ;FPU CS and FPU DS | MPX | RDT-A | AVX512F | AVX512DQ ;RDSEED | ADX | SMAP and CLAC/STAC | AVX51_IFMA | bit22 保留 ;CLFLUSHOPT | CLWB | cpu trace | AVX512PF | AVX512ER ;AVX512CD | SHA | AVX512BW | AVX512VL ; ECX=0 ;不支持指令 ; (例子) ;PREFETCHWT | AVX512_VBMI | UMIP | PKU ; OSPKE CR4.PKE=enable protection keys. and RDPKRU/WRPKRU ;WAITPKG | AVX512_VBMI2 | CET_SS shadow stack ; MSR IA32_U_CET and IA32_S_CET. Enumerates MSR: ; IA32_INTERRUPT_SPP_TABLE_ADDR, IA32_PL3_SSP, IA32_PL2_SSP ; IA32_PL1_SSP,IA32_PL0_SSP. ;GFNI | VAES | VPCLMULQDQ | AVX512_VNNI |AVX512_BITALG ;TME_EN : IA32_TME_CAPABILITY,IA32_TME_ACTIVATE, note:new ; IA32_TME_EXCLUDE_MASK,IA32_TME_EXCLUDE_BASE ;AVX512_VPOPCNTDQ | bit15 保留 | LA57 | bit 17-21: ; MAWAU value 使用于 BNDLDX 和 BNDSTX 在 64bit 模式 ;RDPID, IA32_TSC_AUX | KL 键锁 | bit24 保留 | CLDEMOTE ;bit26 保留 | MOVDIRI | MOVDIR64B | bit29 保留 | SGX_LC | PKS ; EDX=c9000400 ;支持指令 ; (例子) ;bit10 MD_CLEAR | bit26 IBPB set MSR:IA32_PRED_CMD[0], ; IBRS set MSR:IA32_SPEC_CTRL[0] ;bit27 STIBP set MSR: IA32_SPEC_CTRL[1] ;bit28 L1D_FLUSH set MSR:L1D_FLUSH IA32_FLUSH_CMD[0] ;bit31 SSBD MSR: set IA32_SPEC_CTRL[2] ;不支持指令 ;bit1 保留 | AVX512_4VNNIW | AVX512_4FMAPS note: Xeon Phi only ;快速短 REP MOV | bit5-7 保留 | AVX512_VP2INTERSECT | bit9 保留 ;bit11-14 保留 | Hybrid 技术 = 1 | bit16-17 保留 | PCONFIG note: new | bit19 保留 ;CET_IBT set define bit 5:2 和 bit 63:10 MSR:IA32_U_CET,IA32_S_CET ;bit21-25 保留 | bit29 MSR:IA32_ARCH_CAPABILITIES | MSR:IA32_CORE_CAPABILITIES c7proc: push edx push ecx push ebx push eax lea eax,form7 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c7proc1: push ebx push ecx push edx c7b_0: shr ebx,1 jc c7_b0 c7b_1: shr ebx,1 jc c7_b1 c7b_2: shr ebx,1 jc c7_b2 c7b_3: shr ebx,1 jc c7_b3 c7b_4: shr ebx,1 jc c7_b4 c7b_5: shr ebx,1 jc c7_b5 c7b_6: shr ebx,1 jc c7_b6 c7b_7: shr ebx,1 jc c7_b7 c7b_8: shr ebx,1 jc c7_b8 c7b_9: shr ebx,1 jc c7_b9 c7b_10: shr ebx,1 jc c7_b10 c7b_11: shr ebx,1 jc c7_b11 c7b_12: shr ebx,1 jc c7_b12 c7b_13: shr ebx,1 jc c7_b13 c7b_14: shr ebx,1 jc c7_b14 c7b_15: shr ebx,1 jc c7_b15 c7b_16: shr ebx,1 jc c7_b16 c7b_17: shr ebx,1 jc c7_b17 c7b_18: shr ebx,1 jc c7_b18 c7b_19: shr ebx,1 jc c7_b19 c7b_20: shr ebx,1 jc c7_b20 c7b_21: shr ebx,1 jc c7_b21 c7b_22: shr ebx,1 jc c7_b22 c7b_23: shr ebx,1 jc c7_b23 c7b_24: shr ebx,1 jc c7_b24 c7b_25: shr ebx,1 jc c7_b25 c7b_26: shr ebx,1 jc c7_b26 c7b_27: shr ebx,1 jc c7_b27 c7b_28: shr ebx,1 jc c7_b28 c7b_29: shr ebx,1 jc c7_b29 c7b_30: shr ebx,1 jc c7_b30 c7b_31: shr ebx,1 jc c7_b31 jmp c7_be c7_b0: ;1 push ebx mov eax,fsgsb1 call c7_p pop ebx jmp c7b_1 c7_b1: ;2 push ebx mov eax,itam call c7_p pop ebx jmp c7b_2 c7_b2: ;3 push ebx mov eax,sgx call c7_p pop ebx jmp c7b_3 c7_b3: ;4 push ebx mov eax,bmi1 call c7_p pop ebx jmp c7b_4 c7_b4: ;5 push ebx mov eax,hle call c7_p pop ebx jmp c7b_5 c7_b5: ;6 push ebx mov eax,avx2 call c7_p pop ebx jmp c7b_6 c7_b6: ;7 push ebx mov eax,feof call c7_p pop ebx jmp c7b_7 c7_b7: ;8 push ebx mov eax,smep call c7_p pop ebx jmp c7b_8 c7_b8: ;9 push ebx mov eax,bmi2 call c7_p pop ebx jmp c7b_9 c7_b9: ;10 push ebx mov eax,rms call c7_p pop ebx jmp c7b_10 c7_b10: ;11 push ebx mov eax,rms call c7_p pop ebx jmp c7b_11 c7_b11: ;12 push ebx mov eax,invp1 call c7_p pop ebx jmp c7b_12 c7_b12: ;13 push ebx mov eax,rtm call c7_p pop ebx jmp c7b_13 c7_b13: ;14 push ebx mov eax,rdt_m call c7_p pop ebx jmp c7b_14 c7_b14: ;15 push ebx mov eax,dfpu call c7_p pop ebx jmp c7b_15 c7_b15: ;16 push ebx mov eax,impe call c7_p pop ebx jmp c7b_16 c7_b16: ;17 push ebx mov eax,rdt_a call c7_p pop ebx jmp c7b_17 c7_b17: ;18 push ebx mov eax,avx512f call c7_p pop ebx jmp c7b_18 c7_b18: ;19 push ebx mov eax,avx512dq call c7_p pop ebx jmp c7b_19 c7_b19: ;20 push ebx mov eax,rdseed1 call c7_p pop ebx jmp c7b_20 c7_b20: ;21 push ebx mov eax,adx call c7_p pop ebx jmp c7b_21 c7_b21: ;22 push ebx mov eax,smap call c7_p pop ebx jmp c7b_22 c7_b22: ;23 push ebx mov eax,avx512_i call c7_p pop ebx jmp c7b_23 c7_b23: ;24 push ebx mov eax,resebx22 call c7_p pop ebx jmp c7b_24 c7_b24: ;25 push ebx mov eax,clflu1 call c7_p pop ebx jmp c7b_25 c7_b25: ;26 push ebx mov eax,clwb1 call c7_p pop ebx jmp c7b_26 c7_b26: ;27 push ebx mov eax,ipt call c7_p pop ebx jmp c7b_27 c7_b27: ;28 push ebx mov eax,avx512pf call c7_p pop ebx jmp c7b_28 c7_b28: ;29 push ebx mov eax,avx512er call c7_p pop ebx jmp c7b_29 c7_b29: ;30 push ebx mov eax,avx512cd call c7_p pop ebx jmp c7b_30 c7_b30: ;31 push ebx mov eax,sha call c7_p pop ebx jmp c7b_31 c7_b31: ;32 push ebx mov eax,avx512bw call c7_p pop ebx c7_be: pop edx pop ecx pop ebx c7c_0: push ebx push ecx push edx shr ecx,1 jc c7_c0 c7c_1: shr ecx,1 jc c7_c1 c7c_2: shr ecx,1 jc c7_c2 c7c_3: shr ecx,1 jc c7_c3 c7c_4: shr ecx,1 jc c7_c4 c7c_5: shr ecx,1 jc c7_c5 c7c_6: shr ecx,1 jc c7_c6 c7c_7: shr ecx,1 jc c7_c7 c7c_8: shr ecx,1 jc c7_c8 c7c_9: shr ecx,1 jc c7_c9 c7c_10: shr ecx,1 jc c7_c10 c7c_11: shr ecx,1 jc c7_c11 c7c_12: shr ecx,1 jc c7_c12 c7c_13: shr ecx,1 jc c7_c13 c7c_14: shr ecx,1 jc c7_c14 c7c_15: shr ecx,1 jc c7_c15 c7c_16: shr ecx,1 jc c7_c16 c7c_17: shr ecx,1 jc c7_c17 c7c_18: shr ecx,1 jc c7_c18 c7c_19: shr ecx,1 jc c7_c19 c7c_20: shr ecx,1 jc c7_c20 c7c_21: shr ecx,1 jc c7_c21 c7c_22: shr ecx,1 jc c7_c22 c7c_23: shr ecx,1 jc c7_c23 c7c_24: shr ecx,1 jc c7_c24 c7c_25: shr ecx,1 jc c7_c25 c7c_26: shr ecx,1 jc c7_c26 c7c_27: shr ecx,1 jc c7_c27 c7c_28: shr ecx,1 jc c7_c28 c7c_29: shr ecx,1 jc c7_c29 c7c_30: shr ecx,1 jc c7_c30 c7c_31: shr ecx,1 jc c7_c31 jmp c7_ce c7_c0: ;1 push ecx mov eax,pref1 call c7_p pop ecx jmp c7c_0 c7_c1: ;2 push ecx mov eax,avx512_v call c7_p pop ecx jmp c7c_2 c7_c2: ;3 push ecx mov eax,umip call c7_p pop ecx jmp c7c_3 c7_c3: ;4 push ecx mov eax,pku call c7_p pop ecx jmp c7c_4 c7_c4: ;5 push ecx mov eax,ospke call c7_p pop ecx jmp c7c_5 c7_c5: ;6 push ecx mov eax,waitpkg call c7_p pop ecx jmp c7c_6 c7_c6: ;7 push ecx mov eax,avx512_vb call c7_p pop ecx jmp c7c_7 c7_c7: ;8 push ecx mov eax,cet_ss call c7_p pop ecx jmp c7c_8 c7_c8: ;9 push ecx mov eax,gfni call c7_p pop ecx jmp c7c_9 c7_c9: ;10 push ecx mov eax,vaes call c7_p pop ecx jmp c7c_10 c7_c10: ;11 push ecx mov eax,vpclmu1 call c7_p pop ecx jmp c7c_11 c7_c11: ;12 push ecx mov eax,avx512_vn call c7_p pop ecx jmp c7c_12 c7_c12: ;13 push ecx mov eax,avx512_bi call c7_p pop ecx jmp c7c_13 c7_c13: ;14 push ecx mov eax,tme_en call c7_p pop ecx jmp c7c_14 c7_c14: ;15 push ecx mov eax,avx512_vp1 call c7_p pop ecx jmp c7c_15 c7_c15: ;16 push ecx mov eax,resecx15 call c7_p pop ecx jmp c7c_16 c7_c16: ;17 push ecx mov eax,la57 call c7_p pop ecx jmp c7c_17 c7_c17: ;18 push ecx mov eax,gmbb call c7_p pop ecx jmp c7c_18 c7_c18: ;19 push ecx mov eax,gmbb call c7_p pop ecx jmp c7c_19 c7_c19: ;20 push ecx mov eax,gmbb call c7_p pop ecx jmp c7c_20 c7_c20: ;21 push ecx mov eax,gmbb call c7_p pop ecx jmp c7c_21 c7_c21: ;22 push ecx mov eax,gmbb call c7_p pop ecx jmp c7c_22 c7_c22: ;23 push ecx mov eax,rdpid1 call c7_p pop ecx jmp c7c_23 c7_c23: ;24 push ecx mov eax,kl call c7_p pop ecx jmp c7c_24 c7_c24: ;25 push ecx mov eax,resecx24 call c7_p pop ecx jmp c7c_25 c7_c25: ;26 push ecx mov eax,cldem call c7_p pop ecx jmp c7c_26 c7_c26: ;27 push ecx mov eax,resecx26 call c7_p pop ecx jmp c7c_27 c7_c27: ;28 push ecx mov eax,movdi call c7_p pop ecx jmp c7c_28 c7_c28: ;29 push ecx mov eax,movd64 call c7_p pop ecx jmp c7c_29 c7_c29: ;30 push ecx mov eax,enqcmd call c7_p pop ecx jmp c7c_30 c7_c30: ;31 push ecx mov eax,sgx_lc call c7_p pop ecx jmp c7c_31 c7_c31: ;32 push ecx mov eax,pks call c7_p pop ecx c7_ce: pop edx pop ecx pop ebx c7d_0: push ebx push ecx push edx shr edx,1 jc c7_d0 c7d_1: shr edx,1 jc c7_d1 c7d_2: shr edx,1 jc c7_d2 c7d_3: shr edx,1 jc c7_d3 c7d_4: shr edx,1 jc c7_d4 c7d_5: shr edx,1 jc c7_d5 c7d_6: shr edx,1 jc c7_d6 c7d_7: shr edx,1 jc c7_d7 c7d_8: shr edx,1 jc c7_d8 c7d_9: shr edx,1 jc c7_d9 c7d_10: shr edx,1 jc c7_d10 c7d_11: shr edx,1 jc c7_d11 c7d_12: shr edx,1 jc c7_d12 c7d_13: shr edx,1 jc c7_d13 c7d_14: shr edx,1 jc c7_d14 c7d_15: shr edx,1 jc c7_d15 c7d_16: shr edx,1 jc c7_d16 c7d_17: shr edx,1 jc c7_d17 c7d_18: shr edx,1 jc c7_d18 c7d_19: shr edx,1 jc c7_d19 c7d_20: shr edx,1 jc c7_d20 c7d_21: shr edx,1 jc c7_d21 c7d_22: shr edx,1 jc c7_d22 c7d_23: shr edx,1 jc c7_d23 c7d_24: shr edx,1 jc c7_d24 c7d_25: shr edx,1 jc c7_d25 c7d_26: shr edx,1 jc c7_d26 c7d_27: shr edx,1 jc c7_d27 c7d_28: shr edx,1 jc c7_d28 c7d_29: shr edx,1 jc c7_d29 c7d_30: shr edx,1 jc c7_d30 c7d_31: shr edx,1 jc c7_d31 jmp c7_de c7_d0: ;1 push edx mov eax,resedx00 call c7_p pop edx jmp c7d_1 c7_d1: ;2 push edx mov eax,resedx01 call c7_p pop edx jmp c7d_2 c7_d2: ;3 push edx mov eax,avx512_4v call c7_p pop edx jmp c7d_3 c7_d3: ;4 push edx mov eax,avx512_4f call c7_p pop edx jmp c7d_4 c7_d4: ;5 push edx mov eax,fsrm call c7_p pop edx jmp c7d_5 c7_d5: ;6 push edx mov eax,uintr call c7_p pop edx jmp c7d_6 c7_d6: ;7 push edx mov eax,resedx06 call c7_p pop edx jmp c7d_7 c7_d7: ;8 push edx mov eax,resedx07 call c7_p pop edx jmp c7d_8 c7_d8: ;9 push edx mov eax,avx512_vp call c7_p pop edx jmp c7d_9 c7_d9: ;10 push edx mov eax,resedx09 call c7_p pop edx jmp c7d_10 c7_d10: ;11 push edx mov eax,md_cl call c7_p pop edx jmp c7d_11 c7_d11: ;12 push edx mov eax,resedx11_14 call c7_p pop edx jmp c7d_12 c7_d12: ;13 push edx mov eax,resedx12 call c7_p pop edx jmp c7d_13 c7_d13: ;14 push edx mov eax,resedx13 call c7_p pop edx jmp c7d_14 c7_d14: ;15 push edx mov eax,seri call c7_p pop edx jmp c7d_15 c7_d15: ;16 push edx mov eax,hybrid call c7_p pop edx jmp c7d_16 c7_d16: ;17 push edx mov eax,tsxld call c7_p pop edx jmp c7d_17 c7_d17: ;18 push edx mov eax,resedx17 call c7_p pop edx jmp c7d_18 c7_d18: ;19 push edx mov eax,pconf1 call c7_p pop edx jmp c7d_19 c7_d19: ;20 push edx mov eax,resedx19 call c7_p pop edx jmp c7d_20 c7_d20: ;21 push edx mov eax,cet_ibt call c7_p pop edx jmp c7d_21 c7_d21: ;22 push edx mov eax,resedx21_25 call c7_p pop edx jmp c7d_22 c7_d22: ;23 push edx mov eax,amx_bf16 call c7_p pop edx jmp c7d_23 c7_d23: ;24 push edx mov eax,avx512_fp call c7_p pop edx jmp c7d_24 c7_d24: ;25 push edx mov eax,amx_tile call c7_p pop edx jmp c7d_25 c7_d25: ;26 push edx mov eax,amx_int8 call c7_p pop edx jmp c7d_26 c7_d26: ;27 push edx mov eax,ibib call c7_p pop edx jmp c7d_27 c7_d27: ;28 push edx mov eax,stibp call c7_p pop edx jmp c7d_28 c7_d28: ;29 push edx mov eax,l1d_flush call c7_p pop edx jmp c7d_29 c7_d29: ;30 push edx mov eax,siac call c7_p pop edx jmp c7d_30 c7_d30: ;31 push edx mov eax,sicc call c7_p pop edx jmp c7d_31 c7_d31: ;32 push edx mov eax,sisc call c7_p pop edx c7_de: pop edx pop ecx pop ebx ret c7_p: push eax call printf pop eax clc ret ; EAX=07H ECX=0 返回 ;================================= ; 当CPUID 运行前 ECX=1时 ; EAX=0 子功能索引, EAX=1 错误 ; EBX=0 子功能索引, EBX=1 错误 ; ECX=0 子功能索引, EAX=1 错误 ; EDX=0 子功能索引, EAX=1 错误 ;================================= c7proc2: ;CPUID 运行前 ECX=1 ; 功能索引 返回EAX值 ; EAX 0-4位保留 ; 5位 AVX512_BF16 支持 BFLOAT16 从IEEE 信号端 输入和覆盖结构 ; 6-31位保留 push edx push ecx push ebx push eax cmp eax,1h je c7cx1 cmp ebx,1h je c7cx1 c7cx0: lea eax,form71 jmp c7cxd c7cx1: lea eax,c07error c7cxd: push eax call printf pop eax pop eax pop ebx pop ecx pop edx ; shr eax,6 ; jnc c7p_1 ; or eax,100000b ; test eax,eax ; jne c7p_1 ;c7p_1: ret c9proc: push edx push ecx push ebx push eax lea eax,form9 push eax call printf pop eax pop eax pop ebx pop ecx pop edx push eax lea eax,ipdc push eax call printf pop eax pop eax ret c0aproc: push edx push ecx push ebx push eax lea eax,forma push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c0bproc: push edx push ecx push ebx push eax lea eax,formb push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c0dproc: push edx push ecx push ebx push eax lea eax,formd push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c0d1proc: push edx push ecx push ebx push eax lea eax,formd1 push eax call printf pop eax pop eax pop ebx pop ecx pop edx shr edx,8 mov al,dl cmp al,0 jz c0d1t1 cmp al,1 jz c0d1t2 cmp al,2 jz c0d1t3 cmp al,3 jg c0d1t4 c0d1t1: mov eax,letype1 push eax jmp c0d1p c0d1t2: mov eax,letype2 push eax jmp c0d1p c0d1t3: mov eax,letype3 push eax jmp c0d1p c0d1t4: mov eax,letype4 push eax jmp c0d1p c0d1p: mov eax,letype push eax call printf pop eax pop eax push eax call printf pop eax ret c0d2proc: push edx push ecx push ebx push eax lea eax,formd2 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c0fproc: push edx push ecx push ebx push eax lea eax,formf push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c0f1proc: push edx push ecx push ebx push eax lea eax,formf1 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c10proc: push edx push ecx push ebx push eax lea eax,form10 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c101proc: push edx push ecx push ebx push eax lea eax,form101 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c102proc: push edx push ecx push ebx push eax lea eax,form102 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c103proc: push edx push ecx push ebx push eax lea eax,form103 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c12proc: push edx push ecx push ebx push eax lea eax,form12 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c121proc: push edx push ecx push ebx push eax lea eax,form121 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c122proc: push edx push ecx push ebx push eax lea eax,form122 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c14proc: push edx push ecx push ebx push eax lea eax,form14 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c141proc: push edx push ecx push ebx push eax lea eax,form141 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c15proc: push edx push ecx push ebx push eax lea eax,form15 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c16proc: push edx push ecx push ebx push eax lea eax,form16 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret ; EAX=17h,ECX 为 MaxSOCID索引 c17proc: push edx push ecx push ebx push eax lea eax,form17 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c171proc: push edx push ecx push ebx push eax lea eax,form171 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c172proc: push edx push ecx push ebx push eax lea eax,form172 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c173proc: push edx push ecx push ebx push eax lea eax,form173 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c18proc: push edx push ecx push ebx push eax lea eax,form18 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c181proc: push edx push ecx push ebx push eax lea eax,form181 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c19proc: push edx push ecx push ebx push eax lea eax,form19 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret ;增加的新功能 EAX=1ah,ECX=0 ;Hybrid处理器主模式类型识别 c1aproc: push edx push ecx push ebx push eax lea eax,form1a push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret push eax shr eax,24d cmp al,10h jnz c1a1p jmp c1a_1 c1a1p: cmp al,20h jnz c1a2p jmp c1a_2 c1a2p: cmp al,30h jnz c1a3p jmp c1a_3 c1a3p: cmp al,40h jne c1a_e jmp c1a_4 c1a_1: lea eax,reserved jmp c1a_p c1a_2: lea eax,intelatom jmp c1a_p c1a_3: lea eax,reserved jmp c1a_p c1a_4: lea eax,intelcore jmp c1a_p c1a_p: push eax call printf pop eax c1a_e: pop eax ret c1bproc: push edx push ecx push ebx push eax lea eax,form1b push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c1dproc: push edx push ecx push ebx push eax lea eax,form1d push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c1d1proc: push edx push ecx push ebx push eax lea eax,form1d1 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c1eproc: push edx push ecx push ebx push eax lea eax,form1e push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c1fproc: push edx push ecx push ebx push eax lea eax,form1f push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c20proc: push edx push ecx push ebx push eax lea eax,form20 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8000proc: push edx push ecx push ebx push eax lea eax,form800 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8001proc: push edx push ecx push ebx push eax lea eax,form801 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8002proc: push edx push ecx push ebx push eax lea eax,form802 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8003proc: push edx push ecx push ebx push eax lea eax,form803 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8004proc: push edx push ecx push ebx push eax lea eax,form804 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8005proc: push edx push ecx push ebx push eax lea eax,form805 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8006proc: push edx push ecx push ebx push eax lea eax,form806 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8007proc: push edx push ecx push ebx push eax lea eax,form807 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret c8008proc: push edx push ecx push ebx push eax lea eax,form808 push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret chelpproc: call getchar call ClearScreen lea eax,helpinfo push eax call printf pop eax ret ccmdproc: push edx push ecx push ebx push eax lea eax,form push eax call printf pop eax pop eax pop ebx pop ecx pop edx ret mov eax,0h call ExitProcess