将ARM汇编代码转换为GNU汇编代码

5

我有一组ARM的.s文件,可以在ARM工具链上运行,但是我们正在使用GNU工具链。

有没有转换脚本/工具/方法可以将汇编代码从一种格式转换为另一种格式?手动操作似乎...有风险。


如果您的工具链支持通用对象格式,您可以使用其中一个汇编文件,然后使用另一个反汇编。这样就可以完成大部分工作了。 - Carl Norum
很遗憾,我们没有内部的ARM工具链。太昂贵了,这就是为什么每个人都使用GNU的原因。如果我们有那个,那么你是正确的,进行转换和反汇编并比较将是正确的方法。 - SDGator
我曾经在一个可以完全访问ARM工具链的地方工作,但需要向使用GNU / GCC的客户交付二进制库。我们的解决方案涉及对arm构建的库进行反汇编,并通过大量的Perl将结果转换为GAS兼容汇编语言,然后将结果推入GNU工具链以构建最终库。执行转换的项目由团队共享,是一个相当大的努力,从我模糊的记忆中得知。 - ahcox
1个回答

1

我并不认为脚本/工具比手动操作更安全。

转换代码需要多少努力,很大程度上取决于代码中使用了多少非基本功能(宏、命名寄存器等)。

指令的语法通常不会有太大差异(尽管可能会在一种格式中允许某些立即修饰符,而在另一种格式中则不允许)。 注释语法不同,但是将“;”替换为“@”应该是相对安全的搜索和替换。

大多数代码不同之处在于标签(因为需要在标签名称后加上“:”,而armasm则不需要),但更重要的是汇编器指令。


是的,有许多宏和其他高级功能,当我开始深入挖掘时,谁知道我会发现什么。我是一位ASIC验证工程师,这些是来自ARM的一套预先设计好的测试,以确保我们的ARM集成在制作ASIC之前已完成正确。因此,还存在准确获得这个过程的问题,否则可能会非常昂贵。我希望这是一个已经解决的常见问题。如果没有一种能够让我们充满信心地进行转换的方法,那么我的下一步就是与管理层讨论获取ARM工具链许可证的事宜。 - SDGator
你正在制作ASIC,但编译器许可证太贵了?听起来很奇怪的情况。 - Carl Norum
是啊,跟我说说吧。其中一部分原因是软件团队已经在使用gnu工具(并且他们对此感到满意),所以我们也使用它,另一部分原因是需要向财务人员证明其必要性。如果没有优雅的方法来进行这些签署测试的转换,那么我认为这是至少需要一个许可证的很好理由。 - SDGator
1
那么我建议许可证成本将会比转换的工程成本低。特别是考虑到如果出现任何问题,ASIC 的验证就会悬而未决。 - unixsmurf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接