- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编译 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
使用的策略确定 powerpc
和 power
不同操作系统的处理器版本:
来自当前gcc-8.1.0
来源: driver-powerpcspe.c
, driver-rs6000.c
可能会提供一些您可以改编的代码。
另一个有趣的来源可能是 GMP library 的 autotools 基础设施。 ;具体来说,顶级 config.guess
和 configure.ac
文件。
还有:gcc -march=native -E -dM - < /dev/null
在 power[pc] 主机上可能允许您使用 grep 查找 CPU 和/或子类型字符串。
关于c++ - 如何在 powerpc 中使用内联汇编获取 cpuid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284588/
我需要在裸机 PowerPC 系统上编写程序。作为没有操作系统/ bootstrap 的裸机编程的新手,我决定编写一个 hello world 程序来开始。我在谷歌上搜索了一些关于这个的帖子,并发现了
我听说过很多有关 Altivec 寄存器的信息,但我什至在 POWER9 ISA 上都没有找到它。 。在该文档中,我只在第 6 章“矢量设施”和第 7 章“矢量标量浮点运算”下找到 VR 和 VSR
我无法在 PowerPC 440EP 上运行 node.js,我只收到错误“非法指令”。 硬件信息: cat /proc/cpuinfo processor : 0 cpu
如何从内存转储中反汇编一些指令?我只有原始转储,objdump 只理解对象格式。 我的处理器是 PowerPC 440(PowerPC Book E 架构)。 最佳答案 事实上,objdump 可以很
我有兴趣为我自己的学习目的开发一个 PowerPC 模拟器。我已经找到了大量有关 PowerPC 程序集编程的资源,但是经过一段时间的查找,我还没有在任何地方找到指令/操作码映射表。当然,我需要操作码
我有一个问题,我被要求声明一个结构数组,其中有一个结构,如下所示: typedef struct { int a; int b; int c; }blah; int main() { blah
我这里有一个 MPC5668G。我想从引导加载程序中的 asm 代码跳转到独立生成的主程序的主例程。因此,我使用一些编译指示和链接器将 main 方法(无论它链接到哪里)的地址放到内部闪存的末尾。那将
我正在为 C 程序编写一个汇编宏,并且对此很陌生,我陷入了一些困境。我正在尝试编写一个宏,用于将数据从通用寄存器移动到专用寄存器。 我的问题是,我发现将数据从 GPR 移动到 SPR 的语法采用恒定的
所以,我一直在为 Xbox 的简单逆向项目学习 PowerPC,但我总是在这样的事情上纠结。 lwz r11, 0(r29) # Loads 0x34 from 0x10710
交叉编译 Maliit 框架源代码时面临问题。 inputcontextdbusaddress.cpp: In member function 'virtual void Maliit::InputC
我有一个使用 Mysql 5.6 作为数据库的 Web 应用程序。该应用程序在 x64 系统中运行速度很快。但我们必须为客户端在 PowerPC 64 位机器上安装此应用程序。问题是应用程序在 x64
我有一个运行软处理器 (PowerPC) 的 Xilinx FPGA。我最近为 PowerPC 交叉编译了 Boost 库并想测试它。因此,我使用了其中一个示例程序并尝试针对我的目标对其进行交叉编译。
我对编码和构建应用程序还比较陌生,我想通过软件包为 PowerPC Linux 做出贡献。因此,我尝试将应用程序和工具移植到平台上,然后将它们打包到平台上,并尝试将它们打包到不同的发行版上,例如 ub
我们正在为 PowerPC 604 用嵌入式 C 编写实时软件. 接下来是我的两位同事之间的对话。我很难理解他们在说什么。 员工 1: In the PPC architecture, must in
我下载了MySQL-5.5.34的源码,按照说明编译。然后在/usr/local/mysql/bin 文件夹中我做了 ./mysqld_safe --user=root &mysql 服务器立即启动并
我还没有找到任何资源来准确回答我在我正在使用的软件中看到的问题,所以我会问这里的天才! 首先,我在 PowerPC 处理器上运行 VxWorks。 在尝试调试一个单独的问题时,我尝试在中断处理例程中抛
我有大量可在 PowerPC 上运行的源代码。我需要将它移植到 ARM。但是,ARM 在未对齐的内存访问上生成硬件异常。所以,我想找到所有可能发生未对齐内存访问异常的实例。我考虑了以下选项。 在 gc
我正在尝试打印 float 。尽管可变参数函数不适用于 float ,因此它们被提升为 double 。我可以通过将其转换为 double 来设法消除警告。在某些 powerpc 架构上打印结果时,如
我想在汇编代码中创建一个 ifdef 条件,类似于 C 中的预处理器。 例如: ifdef UNIT_TEST b somewhere else b somewhere else 我使用的是 e200
我有以下来自 PowerPc 内核源代码的代码片段 #define SPRN_IVOR32 0x210 /* Interrupt Vector Offset Register 32 */
我是一名优秀的程序员,十分优秀!