采用英特尔风格的内联汇编

Din*_*000 5 c++ assembly gcc intel

我正在尝试使用gcc编译器在Code :: Blocks中编译一个旧的C++软件项目,在解决了一些其他问题之后,我遇到了问题:该项目有一个英特尔式内联ASM文件写成

_asm {
  code here
}
Run Code Online (Sandbox Code Playgroud)

并且编译器拒绝使用"error:'_asm'在此范围中声明"来编译它.

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

Igo*_*sky 2

GCC 对内联汇编器使用非常不同的语法,因此您将无法通过微小的更改来处理它。我看到以下选项:

  1. 用 GCC 语法或 C 代码重写所有内容
  2. 制作一些脚本来转换为 GCC 语法(不简单的任务)
  3. 使用为其编写的任何编译器来编译代码(MSVC?)