Assembly 什么';asm指令之间的区别是什么;ldr";及;ldr_post;?

Assembly 什么';asm指令之间的区别是什么;ldr";及;ldr_post;?,assembly,ffmpeg,arm,gnu-assembler,Assembly,Ffmpeg,Arm,Gnu Assembler,我在尝试将最新的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\u post”更改为几个简单指

我在尝试将最新的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\u post”更改为几个简单指令的组合,以避免这些编译错误吗?

ldr\u post不是ARM有效指令

我想这是一个宏。。。 因此,请尝试查找宏定义。

来自:

“A”标记在ARM模式下发出的指令,“T”标记在Thumb模式下发出的指令。因此,它基本上相当于ldr r4、[r1],r2,但在ARM和Thumb模式下工作(Thumb-1不支持增量后版本,因此必须用两条指令模拟)

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