Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式检测处理器类型(Linux)_Linux_Processor - Fatal编程技术网

以编程方式检测处理器类型(Linux)

以编程方式检测处理器类型(Linux),linux,processor,Linux,Processor,我正在用gcc编写一个程序,该程序在性能关键部分使用asm语言,我希望在运行时确保程序在正确的体系结构上运行。特别是,我需要在Linux上区分ia64(安腾)和x86_64 我只是读/proc/cpuinfo吗?看起来很笨重,但我找不到合适的内核调用。/proc/cpuinfo是linux上CPU信息的标准接口 它是最好的选择,因为它是独立于体系结构的。/proc/cpuinfo是linux上CPU信息的标准接口 它是最好的选择,因为它是独立于体系结构的。IA64和x86\u 64是完全不同的体

我正在用gcc编写一个程序,该程序在性能关键部分使用asm语言,我希望在运行时确保程序在正确的体系结构上运行。特别是,我需要在Linux上区分ia64(安腾)和x86_64


我只是读/proc/cpuinfo吗?看起来很笨重,但我找不到合适的内核调用。

/proc/cpuinfo
是linux上CPU信息的标准接口


它是最好的选择,因为它是独立于体系结构的。

/proc/cpuinfo
是linux上CPU信息的标准接口


它是最好的选择,因为它是独立于体系结构的。

IA64和x86\u 64是完全不同的体系结构。为其中一个程序构建的程序将无法在另一个程序上运行,因此您的问题没有意义(事实上,与x86指令集的不兼容是IA64市场渗透率不高的原因之一,因为基于IA64的系统无法运行大量现有的、基于32位x86的遗留应用程序)


您最好编译两个不同版本的程序,然后在用户调用程序时使用包装器脚本选择适当的二进制文件。

IA64和x86\u 64是完全不同的体系结构。为其中一个程序构建的程序将无法在另一个程序上运行,因此您的问题没有意义(事实上,与x86指令集的不兼容是IA64市场渗透率不高的原因之一,因为基于IA64的系统无法运行大量现有的、基于32位x86的遗留应用程序)


您最好编译两个不同版本的程序,然后在用户调用该程序时使用包装器脚本选择适当的二进制文件。

答案已经公布,但我将添加以下内容:

如果机器是x86或x64,您可以通过
cpuid
指令获得更详细的信息


答案已经发布,但我要补充一点:

如果机器是x86或x64,您可以通过
cpuid
指令获得更详细的信息


谢谢。。。这正是我所需要的,因为我想检测SSE/MMX是否可用。看看其他的回答,看起来这只与x86_64和ia32有关。谢谢。。。这正是我所需要的,因为我想检测SSE/MMX是否可用。查看其他响应,似乎这仅与x86_64与ia32相关。请参阅以获取示例代码。请参阅以获取示例代码。