【发布时间】:2012-04-18 07:19:09
【问题描述】:
我尝试在 iOS 上使用 ffmpeg,并在优化的 arm 代码中调试崩溃。我发现一些无符号(.u16,.u32)指令已被有符号(.i16,.i32)取代。很容易看出,因为 GDB 上的反汇编指令与源代码不太匹配。
例如,
vrshrn.u32 -> vrshrn.i32
vrshrn.u16 -> vrshrn.i16
vadd.u16 -> vadd.i16
我的问题:
- 这种行为是否正确且符合预期?如果不是,我们如何纠正它?
- 如果它们是等价的,为什么我们还需要未签名的呢?是不是因为这样代码更明确?
- 其他平台的工具包是否会出现这种行为?比如Android的工具包? (我听说苹果的 AS 很古老)
【问题讨论】: