gcc 中的英特尔式内联程序集
Intel-style inline assembly in gcc
我正在尝试使用 gcc 编译器在 Code::Blocks 中编译一个旧的C++软件项目,在修复了一些其他问题后,我遇到了障碍:该项目有一个带有英特尔风格内联 ASM 的文件,写为
_asm {
code here
}
并且编译器拒绝编译它,并显示"错误:'_asm'未在此范围内声明"。
我花了一段时间在谷歌上搜索寻找解决方案,但我能找到的唯一解决方案是将-masm=intel
添加到构建选项中(我已经尝试过但无法工作),或者将代码转换为asm ("code here");
(由于 ASM 的数量庞大,这是不可行的)。有谁知道如何让 gcc 按原样编译此代码,或者我应该放弃并使用不同的编译器?
GCC 对内联汇编程序使用非常不同的语法,因此您将无法通过琐碎的更改来处理它。我看到以下选项:
- 用 GCC 语法或 C 代码重写所有内容
- 制作一些脚本以转换为 GCC 语法(非平凡的任务) 使用编写代码
- 的任何编译器编译代码(MSVC?
你根本无法让 gcc "按原样"编译代码。如果你需要使用 gcc 编译这个东西,你必须用 C++ 或 gcc 兼容的 asm 重写代码。如果真的有很多汇编代码——比如 200 条指令或更多——那么学习 gcc 汇编程序语法可能是值得的;如果没有,请用C++编码。
相关文章:
- 编译要在英特尔Hyperscan中使用的.cc文件时出现问题
- 将gsl c++程序与"英特尔MKL"链接
- 使用英特尔 PIN 修改寄存器
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 将"-01"替换为"-02" 英特尔编译器选项会导致 FPE 在较小的 for 循环行程计数中抛出
- 编译 Fortran 和C++程序并从英特尔编译器链接
- 在 Python-C++-C-Fortran 2003 程序中链接英特尔的 MKL
- 英特尔Sandybridge系列CPU中管道程序的去优化
- 英特尔样式内联程序集和 AT&T 样式中的变量引用,C++
- gcc 中的英特尔式内联程序集
- OpenGL程序与英特尔高清和NVidia GPU的使用
- x86英特尔程序集和C++-数组周围的堆栈已损坏
- 英特尔至强Phi -运行多个单线程可执行程序
- 利用英特尔Vtune放大器XE2016对一个无法工作的VS2015控制台应用程序进行高级热点分析
- 英特尔指令集扩展和用户机(AVX, IMCI…)
- 英特尔芯片集编程
- 配置文件C++程序基于墙上的时钟时间与英特尔Vtune放大器
- 错误MSB6006当建立本机活动应用程序英特尔INDE