深入探索x86处理器指令集检测与非临时内存存储技术
1. CPUID指令获取处理器信息
CPUID指令是获取处理器信息的重要工具。例如,函数 GetProcessorVendorInfo_a() 就利用CPUID指令来获取处理器的厂商和品牌信息。
1.1 获取厂商信息
首先,相关数据存储在寄存器EBX、ECX和EDX中。通过一系列的 mov 指令,将厂商标识字符串保存到由R10指向的缓冲区( vendor )。最后,使用 mov [r10+12],byte ptr 0 指令对厂商标识字符串进行空终止。
1.2 获取品牌信息
获取品牌信息的步骤如下:
1. 执行 mov eax,80000000h 和 cpuid 指令对,以获取处理器扩展信息的最大叶值。
2. 执行 cmp eax,80000004h 和 jb NoInfo 指令对,如果该数据不可用,则跳过品牌信息查询代码。
3. 利用三个CPUID指令获取处理器的品牌信息字符串。在每个CPUID指令之前,使用 mov 指令将扩展叶值加载到寄存器EAX中,该扩展叶值指定了CPUID指令应返回的品牌信息字符串的字符。
4. 每次查询品牌信息字符串后,使用一系列的 mov 指令将结果保存到由寄存器R8指向的缓冲区( brand
超级会员免费看
订阅专栏 解锁全文
811

被折叠的 条评论
为什么被折叠?



