大佬教程收集整理的这篇文章主要介绍了c – 如何在Linux中调用“cpuid”?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试过以下方法:
#include <iostream> int main() { int a,b; for (a = 0; a < 5; a++) { __asm ( "mov %1,%%eax; " // a into eax "cpuid;" "mov %%eax,%0;" // eax into b :"=r"(b) // output :"r"(a) // input :"%eax","%ebx","%ecx","%edx" // clobbered register ); std::cout << "The code " << a << " gives " << b << std::endl; } return 0; }
这使用组件,但我不想重新发明轮子.有没有其他方法可以在没有汇编的情况下实现cpuInfo?
编译器错误:
lewis@lewis-desktop:~/Desktop/prog$g++ -Wall cpuInfo.cpp cpuInfo.cpp: In function ‘int main()’: cpuInfo.cpp:10:22: error: expected ‘)’ before ‘;’ token cpuInfo.cpp:10:23: error: expected priMary-expression before ‘)’ token cpuInfo.cpp:10:23: error: expected ‘;’ before ‘)’ token cpuInfo.cpp:8:8: warning: unused variable ‘b’ [-Wunused-variable] cpuInfo.cpp:12:8: error: expected ‘}’ at end of input
/* Return highest supported input value for cpuid instruction. ext can be either 0x0 or 0x8000000 to return highest supported value for basic or extended cpuid information. Function returns 0 if cpuid is not supported or whatever cpuid returns in eax register. If sig pointer is non-null,then first four bytes of the signature (as found in ebx register) are returned in LOCATIOn pointed by sig. */ unsigned int __get_cpuid_max (unsigned int __ext,unsigned int *__sig) /* Return cpuid data for requested cpuid level,as found in returned eax,ebx,ecx and edx registers. The function checks if cpuid is supported and returns 1 for valid cpuid information or 0 for unsupported cpuid level. All pointers are required to be non-null. */ int __get_cpuid (unsigned int __level,unsigned int *__eax,unsigned int *__ebx,unsigned int *__ecx,unsigned int *__edX)
您不需要也不应该重新实现此功能.
以上是大佬教程为你收集整理的c – 如何在Linux中调用“cpuid”?全部内容,希望文章能够帮你解决c – 如何在Linux中调用“cpuid”?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。