gpt4 book ai didi

c++ - 如何在 powerpc 中使用内联汇编获取 cpuid?

转载 作者:行者123 更新时间:2023-11-30 01:37:08 25 4
gpt4 key购买 nike

我正在尝试编译 C++ 代码。但我在 power8 架构上遇到错误。在 x86_64 架构中运行良好。以下是我遇到的错误。

  error: impossible register constraint in 'asm'
: "a"(func));
^

下面是我遇到该错误的代码块。

static INLINE void cpuid(int *dest, int func)
{
__asm__ volatile("cpuid"
: "=a"(dest[0]), "=b"(dest[1]), "=c"(dest[2]), "=d"(dest[3])
: "a"(func));
}

这段代码有什么问题还是我遗漏了什么?

或者有其他方法获取cpu id吗?

提前致谢!

最佳答案

如前所述,cpuid是 x86-64 (AMD64/EMT64) 和更高版本的 x86 (IA32) 处理器中的一条指令,与 powerpc 无关。据我所知,没有与 powerpc 规范强制要求的 powerpc 指令(至少不是非特权指令)的等效指令,因此操作系统有自己的方法。

在某些系统上,例如 BSD 变体,这可能很简单:sysctl <option>

您可以看看 gcc 使用的策略确定 powerpcpower不同操作系统的处理器版本:

来自当前gcc-8.1.0来源: driver-powerpcspe.c , driver-rs6000.c 可能会提供一些您可以改编的代码。

另一个有趣的来源可能是 GMP library 的 autotools 基础设施。 ;具体来说,顶级 config.guessconfigure.ac文件。


还有:gcc -march=native -E -dM - < /dev/null在 power[pc] 主机上可能允许您使用 grep 查找 CPU 和/或子类型字符串。

关于c++ - 如何在 powerpc 中使用内联汇编获取 cpuid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com