【问题标题】:Assembler messages: no such instruction xbegin汇编程序消息:没有这样的指令 xbegin
【发布时间】:2014-03-14 02:54:53
【问题描述】:

我正在使用 llvm-3.4、gcc-4.8 构建一组基于基于统一的别名分析的工具。 我收到一系列错误指示: “汇编程序消息:没有这样的指令:xbegin、xend、xabort 等。” 操作系统是ubuntu server 12.04。

知道发生了什么吗?谢谢。

【问题讨论】:

  • 这些是 TSX 指令,但我不确定发生了什么。

标签: assembly clang llvm


【解决方案1】:

这些指令是伪指令,并非所有汇编程序的标准。

我知道它们在 MacOS 下使用,但通常不在 Linux 下使用。

也许你无法在 Linux 下编译代码。

【讨论】:

  • 我切换到 ubuntu server 13.10 并没有出现类似的问题。还是不知道为什么...
【解决方案2】:

您需要使用 GCC 选项 -mrtm 编译您的代码。

【讨论】:

  • 这会影响 C/C++ 中是否允许内部函数。这个问题是关于汇编器甚至不识别 asm 指令,它不依赖于编译器选项。 (使用gcc -v 查看编译器/汇编器/链接器命令行,注意-march=skylake-mrtm 不要在汇编器命令行中添加额外的选项)。
  • 我遇到了同样的问题,我的 gcc 版本是 Redhat 7.1 上的 5.3.0。错误是“错误:没有这样的指令,'xbegin .L52'”。
  • TSX 仅适用于 Skylake 和一些较晚的 Broadwell CPU。发现错误后,英特尔不得不通过对 Haswell 的微码更新来禁用它:en.wikipedia.org/wiki/Transactional_Synchronization_Extensions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多