【问题标题】:Modifying binary ARMv7 library to work with ARMv6修改二进制 ARMv7 库以使用 ARMv6
【发布时间】:2012-06-14 14:23:09
【问题描述】:

是否可以通过编程方式更改 ARMv7 编译的二进制文件以将所有新的操作码和指令替换为与 ARMv6 兼容的操作码和指令?

此时我并不太关心性能,我只想在 ARMv6 上使用一些仅限 ARMv7 的二进制文件(如果重要的话,使用 vfp)。

【问题讨论】:

  • 如果您询问就地更换,那么答案是否定的。如果您有一些非常聪明的代码可以调整分支偏移量,那么它可能是可能的,但非常复杂。如果 ARMv7 代码中包含 NEON 指令,那就更难了。 ARMv7 与 ARMv6 带来了 Thumb2 和 NEON 指令集。倒退不容易。
  • 您也许可以做到这一点,方法是用分支指令替换 v7 指令,然后用 v6 代码模拟前一条指令并跳回原始代码。另一种解决方案可能是模拟无效指令的内核级代码。第二个可能是更容易实现,但它会很慢。但这两种解决方案都需要大量的工作。

标签: arm cpu-architecture


【解决方案1】:

如果使用 ARMv6 不支持的指令,vfp 将很重要,除非您正在替换这些指令。

如果我们只讨论 arm 指令而不是 armv6,那么它可能是一个简短的列表。它可能会减少指令的数量,因此您必须修改代码,以便 armv7 指令在某处引起分支,某处是使用 armv6 或更旧指令的替换代码,然后分支返回。不是分支和链接,无条件分支或 ldr pc,等等。如果您正在谈论可能仍然可能但的 thumb2 东西 可能还有更多的工作,有些事情你可能做不到。

简短回答:是的,一般来说这种事情是可以做到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多