摘要:以前我写了一篇《[VC6] 检查MMX和SSE系列指令集的支持级别(最高SSE4.2)》(http://www.cnblogs.com/zyl910/archive/2012/03/01/checksimd.html)。现在发现该方法存在两点缺陷——1.不支持64位,因为VC的64位程序不支持内嵌汇编;2.没有区分硬件支持与操作系统支持。 怎么解决这两点缺陷呢? 对于第1点,可以利用Intrinsics函数来兼容32位和64位。为了更方便的使用CPUID指令,可以利用《如何在各个版本的VC及64位下使用CPUID指令》(http://www.cnblogs.com/zyl910/arc...
阅读全文
05 2012 档案
摘要:新版本——http://www.cnblogs.com/zyl910/archive/2012/11/14/pdf_remove_watermake_marco_v2.html[使用心得] 利用按键精灵批量删除pdf中的水印 V2:用于页面内对象数量不定时删除最后一个对象一、利用“内容”面板删除水印 启动Acrobat Prefessional,打开该pdf文档。 点击菜单栏中的“视图→导航面板→内容”,打开“内容”面板—— 观察内容面板,展开树列表,会发现每一页中的第3个对象是水印(容器<Artifact> www.ckook.com)—— 在水印对象上右击鼠标弹出快捷菜单,点击
阅读全文
摘要:前面我们探讨了在16位的DOS实模式下使用CPUID指令(http://www.cnblogs.com/zyl910/archive/2012/05/14/dos16_getcpuid.html)。而现在64位Windows系统已经很流行了,在32/64位模式下如何使用CPUID呢?于是本文介绍了如何在各个版本的VC及64位下使用CPUID指令。一、推荐使用__cpuid、__cpuidex等Intrinsics函数 在32位模式下,我们可以使用内嵌汇编来调用cpuid指令。但在64位模式下,VC编译器不支持内嵌汇编。 于是微软提供了Intrinsics函数——编译器会将Intrins...
阅读全文
摘要:一、分解x2APIC_ID摘自《Intel® 64 Architecture Processor Topology Enumeration》中的“Sub ID Extraction Parameters for x2APIC ID”——SMT_ID: CPUID.(EAX=11, ECX=0):EAX[4:0] provides the width parameter to derive a SMT select mask to extract the SMT_IDs of logical processors within the same processor core. The
阅读全文
摘要:有时我们需要编写DOS实模式下的CPU信息诊断程序,但是TurboC++等很多16位C++编译器不支持CPUID指令和32位汇编。于是本文介绍了一种办法,靠内嵌机器码实现了获取CPUID信息。一、CPUID指令简介 CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,厂商信息,商标信息,序列号,缓存等一系列CPU相关的东西。 CPUID指令一般使用使用eax作为输入参数(某些时候会用到ecx),eax、ebx、ecx、edx作为输出参数。例如这样的汇编代码——mov eax, 1cpuid... 以上代码以1为输入参数,执行cpuid后...
阅读全文
摘要:tiled_index类中有4个属性与线程编号有关——tiled_index.global:线程的全局编号。相当于DirectCompute中的SV_DispatchThreadID。tiled_index.local:线程的局部编号。相当于DirectCompute中的SV_GroupThreadID。tiled_index.tile:线程块的编号。相当于DirectCompute中的SV_GroupID。tiled_index.tile_origin:线程块中首个线程的全局编号。(tile_origin=global-local)。参考文献——http://msdn.microsoft.c
阅读全文
摘要:现在多核处理器已经很普及了,市场主流是双核处理器,还有4核、8核等高端产品。而且Intel推广了超线程技术(Hyper-Threading Technology, HTT),可以将一个物理核心模拟为两个逻辑处理器。这一切使得“CPU数量”这一概念变得复杂起来,对于软件开发人员来说,希望能获得物理CPU数、CPU核心数、逻辑CPU数等详细信息。 在Windows平台,可以调用GetLogicalProcessorInformation函数来获取它们的详细信息。一、背景知识 先来明确一下名词——physical processor packages:物理处理器封装个数,即俗称的“物理CPU...
阅读全文
摘要:假定——[numthreads(TX, TY, TZ)] // 线程组尺寸。既线程组内有多少个线程。Dispatch(GX, GY, GZ); // 线程组的数量。既有多少个线程组。那么——SV_GroupThreadID={iTX, iTY, iTZ} // 【线程组内的】线程3D编号SV_GroupID={iGX, iGY, iGZ} // 线程组的3D编号SV_DispatchThreadID={iGX*TX+iTX, iGY*TY+iTY, iGZ*TZ+iTZ} // 将线程组展开后,每个线程的全局3D编号。SV_GroupIndex=iTX + iTY*TX + iTZ*TX*TY
阅读全文
摘要:更新历史——[2012-5-4] V1.1.3& 兼容最新的 AHD 2.31beta(2012-04-27):http://bbs.52pcgame.com/thread-424493-1-1.html& 文本修订。下载地址——http://115.com/file/e73tbte8http://u.xunzai.com/fileview_1147668.htmlhttp://dl.dbank.com/c0xsvgps5w更多内容——http://www.cnblogs.com/zyl910/archive/2012/02/17/RecoverMingV_V1.html[维多
阅读全文