gpt4 book ai didi

assembly - asm 指令 "ldr"和 "ldr_post"有什么区别?

转载 作者:行者123 更新时间:2023-12-04 05:59:47 58 4
gpt4 key购买 nike

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

最佳答案

来自 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 不支持后增量版本,因此必须使用两条指令进行模拟)。

关于assembly - asm 指令 "ldr"和 "ldr_post"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059152/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com