我正试图在iOS上使用ffmpeg,并正在调试优化后的ARM代码中的崩溃。我发现一些无符号(.u16,.u32)指令已被符号(.i16,.i32)取代。很容易看到,因为GDB上的反汇编指令与源代码不完全匹配。Apple AS汇编程序是否会用iOS上的某些NEON指令替换某些NEON指令?
例如,
vrshrn.u32 -> vrshrn.i32
vrshrn.u16 -> vrshrn.i16
vadd.u16 -> vadd.i16
我的问题:
- 这种行为是正确和期望?如果不是,我们如何纠正它?
- 如果它们相同,为什么我们需要未签名的呢?这是否因为代码更加明确?
- 这种行为是否与其他平台的工具包一样?例如,Android的工具包? (我听说苹果的AS是一个古老的一个)