【问题标题】:Convert ARM assembly to gnu assembly将 ARM 程序集转换为 gnu 程序集
【发布时间】:2012-10-13 00:08:45
【问题描述】:

我有一组来自 ARM 的 .s 文件,它们在 ARM 工具链上运行,但我们使用的是 gnu 工具链。

是否有将程序集从一种格式转换为另一种格式的转换脚本/工具/方法?手动操作似乎...很危险。

【问题讨论】:

  • 如果您的工具链支持一种通用的对象格式,您可以用一种组合文件并用另一种反汇编。这样您就可以顺利到达目的地。
  • 很遗憾,我们内部没有 arm 工具链。太贵了,所以大家都用gnu。如果我们有这个,那么你是对的,进行转换和拆卸两者并进行比较将是可行的方法。
  • 我曾经在一个可以完全访问 ARM 工具链但需要向使用 GNU / GCC 的客户提供二进制库的地方工作。我们的解决方案涉及反汇编 arm 构建的库,并将结果通过大量 Perl 转换为 GAS 兼容程序集,并将结果推送到 GNU 工具链以构建最终的库。进行转换的项目是由团队共享的,并且是根据我对被告知内容的模糊记忆而做出的重大努力。

标签: assembly arm gnu


【解决方案1】:

我不相信脚本/工具会比手动操作更危险。

转换代码的工作量在很大程度上取决于代码中使用了多少非基本功能(宏、命名寄存器...)。

指令的语法通常没有区别(尽管在一种格式中可能允许某些立即修饰符,但在另一种格式中则不允许)。 注释语法不同,但 ';' -> '@' 应该是一个相当安全的搜索和替换。

大多数代码的不同之处在于标签(标签名称后需要':',armasm 不需要),但更重要的是汇编程序指令。

【讨论】:

  • 是的,有很多宏,谁知道当我开始深入研究时我会发现哪些其他高级功能。我是一名 ASIC 验证人员,这些是来自 ARM 的一组罐装测试,以确保我们的 ARM 集成在我们流片 ASIC 之前正确完成。因此,还有一个问题是要完全正确,否则可能会非常昂贵。我希望这是一个已经解决的常见问题。如果没有办法以我们可以确信的方式进行转换,我的下一步是与管理层讨论获得 ARM 工具链的许可证。
  • 您正在制作 ASIC 并且编译器许可证太贵?听起来很奇怪。
  • 是的,告诉我。部分原因是 SW 团队已经使用了 gnu 工具(他们对此很满意),所以这就是我们使用的,部分原因是需要向 bean 计数器证明它的合理性。如果没有一种优雅的方式来为这些签核测试进行转换,我会称其为至少一个许可证的很好的理由。
  • 那么我建议许可成本将低于转换的工程成本。尤其是考虑到如果出现任何问题,ASIC 的验证就会悬而未决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2022-01-12
  • 1970-01-01
  • 2021-09-13
  • 2013-07-14
  • 2014-01-24
相关资源
最近更新 更多