Assembly 什么';asm指令之间的区别是什么;ldr";及;ldr_post;?
我在尝试将最新的ffmpeg迁移到iOS平台时遇到一些编译错误。 这些错误来自GNU汇编程序(gas),它似乎无法处理最新ffmpeg中的一些asm指令 例如: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”更改为几个简单指
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