将Codewarrior的内联汇编器翻译为GCC内联汇编器

我正在执行一项任务,将一个大型项目从旧的Codewarrior IDE迁移到使用GCC 4.9编译器的NXP中的S32DS。不幸的是,由于从代码战士到GCC,内联汇编的语法完全不同,因此我很难在S32DS中编译内联汇编代码。有没有解决此问题的想法,而无需逐句重写?任何快速翻译工具都可以作为快捷方式吗? 谢谢!

oyming86 回答:将Codewarrior的内联汇编器翻译为GCC内联汇编器

您的选择包括移植到纯C(通常最适合于内联汇编,这是对旧的错误编译器的性能优化,但现代编译器可以自行完成。或者与其他ISA无关)。

否则,您必须移植到独立的asm函数或GNU C内联asm语法。独立的asm函数避免了必须正确获取所有约束的情况,对于较大的块而言可能是个不错的选择。


Asm到asm的转换通常不存在,尤其是 to GNU C内联asm。 (或者至少我从未见过有人在堆栈溢出中提到一个)。

顺便说一句,GCC4.9已经很老了。 GCC7和8具有一些不错的新优化功能,例如加载/存储合并(使用一个全寄存器宽度的加载或存储来加载/存储多个窄结构或数组成员)。如果您没有可用的代码库,建议您从当前的GCC版本开始,这样就不会有编译器更改引入回归的风险。

GCC6还从内联asm引入了标志输出操作数:分支条件可以是asm的布尔输出。

本文链接:https://www.f2er.com/3144850.html

大家都在问