以编程方式检测处理器类型(Linux)
我正在用gcc编写一个程序,该程序在性能关键部分使用asm语言,我希望在运行时确保程序在正确的体系结构上运行。特别是,我需要在Linux上区分ia64(安腾)和x86_64以编程方式检测处理器类型(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是完全不同的体
我只是读/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相关。请参阅以获取示例代码。请参阅以获取示例代码。