尝试将最新的ffmpeg迁移到iOS平台时遇到了一些编译错误。 这些错误来自GNU汇编程序(gas),它似乎无法在最新的ffmpeg中处理一些asm指令。
例如:
libavcodec/arm/dsputil_armv6.S:109:bad instruction 'ldr_post r4,r1,r2'
但是,在先前版本的ffmpeg中找不到指令'ldr_post'(更具体地说,版本0.7)。
我的问题是,'ldr_post'和'ldr'有什么区别?我可以将'ldr_post'更改为一些简单指令的组合,以避免这些编译错误吗?
答案 0 :(得分: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模式下发出的指令,在Thumb模式下'T'。所以基本上它等同于ldr r4, [r1], r2
,但在ARM和Thumb模式下都有效(Thumb-1不支持后增量版本,因此必须使用两条指令进行模拟)。
答案 1 :(得分:1)
ldr_post不是ARM有效指令
我认为这是一个宏...... 所以试着找到宏观定义。