我正試圖在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是一個古老的一個)