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

地球人都知道较新的处理器支持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!");


上一篇:React Native之(var和let区别 )(简单解构)(map对象遍历)(可变顺序参数和不可以变顺序参数函数)


下一篇:[Domino]Java访问Domino邮件代码片断[3]