c++ - gcc 中的 Intel 风格内联汇编

标签 c++ gcc assembly intel

我正在尝试使用 gcc 编译器在 Code::Blocks 中编译一个旧的 C++ 软件项目,在修复了一些其他问题后,我遇到了困难:该项目有一个文件,其中包含 Intel 风格的内联 ASM作为

_asm {
  code here
}

并且编译器拒绝编译它并显示“错误:‘_asm’未在此范围内声明”。

我花了一段时间在谷歌上搜索解决方案,但我唯一能找到的是将 -masm=intel 添加到构建选项(我已经尝试过但不能开始工作),或者将代码转换为 asm ("code here");(这是不可行的,因为 ASM 的数量巨大)。有谁知道如何让 gcc 按原样编译这段代码,还是我应该放弃并使用不同的编译器?

最佳答案

GCC 使用 very different syntax对于内联汇编程序,因此您将无法通过微不足道的更改来处理它。我看到以下选项:

  1. 用 GCC 语法或 C 代码重写所有内容
  2. 制作一些脚本来翻译成 GCC 语法(非平凡的任务)
  3. 使用为(MSVC?)编写的任何编译器编译代码

关于c++ - gcc 中的 Intel 风格内联汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11243340/

相关文章:

c++ - 隐藏的 g++ 引用错误

c++ - C++ (GCC) 中的 C99 严格别名规则

c - 如何告诉gcc不要在堆栈上对齐函数参数?

c - 为什么我得到的是 "popq %rbp"而不是 "leave"?

optimization - 无分支避免被零除

C++静态变量多实例

c++ - Boost Asio HTTPS 请求给出 'certificate verify failed' 错误

assembly - 在 x64 位处理器上编写 x86 程序集

c++ - 这是糟糕的代码吗?

c++ - 我正在努力理解着色器中的某些东西