2

最新のffmpegをiOSプラットフォームに移行しようとすると、いくつかのコンパイルエラーが発生しました。これらのエラーは、最新のffmpegで一部のasm命令を処理できないように見えるGNUアセンブラ(gas)から発生しました。

例えば:

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

ただし、命令'ldr_post'は、以前のバージョンのffmpeg(より具体的にはバージョン0.7)にはありません。

私の質問は、「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」はサムモードで発行された命令を示します。したがって、基本的には同等ですldr r4, [r1], r2が、ARMモードとThumbモードの両方で機能します(Thumb-1はポストインクリメントバージョンをサポートしていないため、2つの命令でシミュレートする必要があります)。

于 2012-01-30T11:28:01.467 に答える
1

ldr_postはARMの有効な命令ではありません

これはマクロだと思います...マクロの定義を見つけてみてください。

于 2012-01-30T08:12:44.903 に答える