私はiOSでffmpegを使用しようとしていて、最適化されたアームコードのクラッシュをデバッグしていました。いくつかの符号なし(.u16、.u32)命令が符号付き命令(.i16、.i32)に置き換えられていることを発見しました。 GDBの逆アセンブルされた命令がソースコードと完全に一致しないので、見やすくなります。例えば Apple ASアセンブラは、特定のNEON命令をiOS上の同等の命令に置き換えますか?
、vrshrn.u32 -> vrshrn.i32
vrshrn.u16 -> vrshrn.i16
vadd.u16 -> vadd.i16
私の質問:
- は、この動作は正しいと期待されていますか?そうでない場合は、どうやって修正するのですか?
- これらが同等であれば、なぜ署名されていないものが必要なのでしょうか?それはコードがより明示的であるからですか?
- この動作は他のプラットフォームのツールキットでも期待されますか?たとえば、Androidのツールキットですか? (私はAppleのASは、古代の一つです聞いたことがある)