您的位置:首页 > 其它

快速识别系统是否支持sysenter/sysexit

2012-11-07 15:54 218 查看
地球人都知道较新的处理器支持sysenter/sysexit指令以代替老的Int 2e/iretd指令。

新指令避免的2次查表,速度得到提升。那么如何知道自己的cpu是否支持新指令呢?

答案是使用cpuid指令,该指令返回值放在ecx和edx中,其中edx包含了SEP位(SysEnter/SysExit Present,

第11位),该位表示了是否支持sysenter/sysexit指令,快速写出识别代码:

DWORD medx,mecx;
medx=mecx=0;
__asm__ __volatile__("cpuid;mov %%edx,%0;mov %%ecx,%1"::"m"(medx),"m"(mecx));
printf("%08x %08x\n",medx,mecx);
if(medx&(1<<11)) puts("fast int---sysenter!");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: