2

我在尝试将最新的 ffmpeg 迁移到 iOS 平台时遇到了一些编译错误。这些错误来自 GNU 汇编器(gas),它似乎无法处理最新 ffmpeg 中的一些 asm 指令。

例如:

libavcodec/arm/dsputil_armv6.S:109:bad instruction 'ldr_post r4,r1,r2'

但是,在 ffmpeg 的先前版本(更具体地说,0.7 版)中找不到指令“ldr_post”。

我的问题是,“ldr_post”和“ldr”有什么区别?我可以将“ldr_post”更改为一些更简单的指令的组合,以避免这些编译错误吗?

4

2 回答 2

2

来自asm.S

.macro  ldr_post        rt,  rn,  rm:vararg
A       ldr             \rt, [\rn], \rm
T       ldr             \rt, [\rn]
T       add             \rn, \rn, \rm
.endm

“A”表示在 ARM 模式下发出的指令,“T”表示在 Thumb 模式下发出的指令。所以基本上它等效于ldr r4, [r1], r2但在 ARM 和 Thumb 模式下都可以工作(Thumb-1 不支持后增量版本,因此必须使用两条指令进行模拟)。

于 2012-01-30T11:28:01.467 回答
1

ldr_post 不是 ARM 有效指令

我假设这是一个宏......所以试着找到宏定义。

于 2012-01-30T08:12:44.903 回答