0

我正在尝试使用 Microsoft Visual Studio 2017 Preview 社区版为 Windows10/Aarch64 配置编译 FFmpeg(Chromium 版本)。我在汇编文件中遇到错误,如下所示(突出显示的几个错误)。我相信 FFmpeg 已经适用于 Linux/Aarch64 配置(可能使用 GNU 汇编器),在这种情况下,相同的汇编代码也应该适用于 Microsoft ARM 宏汇编器。如果我在这里遗漏任何内容以及任何有助于解决错误的指针,请告诉我。

D:\Work\Chromium_FFmpeg\chromium\src>ninja -C out\ARM64V8 third_party\ffmpeg ninja: 进入目录 `out\ARM64V8' [2/9] ASM obj/third_party/ffmpeg/ffmpeg_internal/autorename_libavcodec_aarch64_fft_neon.obj FAILED: obj/第三方/ffmpeg/ffmpeg_internal/autorename_libavcodec_aarch64_fft_neon.obj D:/Work/Chromium_FFmpeg/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/tool_wrapper.py asm-wrapper environment.arm64 armasm64.exe /Foobj/third_party/ffmpeg/ffmpeg_internal/autorename_libavcodec_aarch64_fft_neon.obj ../../third_party/ffmpeg/libavcodec/aarch64/autorename_libavcodec_aarch64_fft_neon.S Microsoft (R) ARM Macro Assembler Version 14.16.26926.0 for 64 bits D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\autorename_libavcodec_aarch64_fft_neon.S(1) :错误 A2003: 不正确的行语法: / // 文件自动生成。请参阅 crbug.com/495833。D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\autorename_libavcodec_aarch64_fft_neon.S(2) : error A2230: Illegal preprocessor directive; 仅识别“#line [文件名]” 包括 "fft_neon.S" D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\autorename_libavcodec_aarch64_fft_neon.S(3) :警告 A4045:缺少 END 指令包括 "fft_neon.S" 。. . [6/9] ASM obj/third_party/ffmpeg/ffmpeg_internal/mpegaudiodsp_neon.obj 失败:obj/third_party/ffmpeg/ffmpeg_internal/mpegaudiodsp_neon.obj D:/Work/Chromium_FFmpeg/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/tool_wrapper.py asm-wrapper environment.arm64 armasm64.exe /Foobj/third_party/ffmpeg/ffmpeg_internal/mpegaudiodsp_neon.obj ../../third_party/ffmpeg/libavcodec/aarch64/ mpegaudiodsp_neon.S Microsoft (R) ARM Macro Assembler Version 14.16.26926.0 for 64 bits D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(1) :错误 A2003:不正确的行语法:/ /* D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(2):错误 A2079:行语法不正确;预期符号 * 版权所有 (c) 2014 Janne Grunau D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(3):错误 A2079:行语法不正确;预期符号 * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(4):错误 A2079:行语法不正确;预期符号 * 此文件是 FFmpeg 的一部分。D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(5):错误 A2079:行语法不正确;预期符号 * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(6):错误 A2079:行语法不正确;预期符号 * FFmpeg 是免费软件;您可以重新分发它和/或 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(7):错误 A2079:行语法不正确;预期符号 * 根据 GNU Lesser General Public D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(8) 的条款对其进行修改:错误 A2079:行语法不正确;预期符号 * 由自由软件基金会发布的许可证;D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(9):错误 A2079:行语法不正确;符号预期 * 许可证的 2.1 版,或(由您选择)任何更高版本。D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(10):错误 A2079:行语法不正确;预期符号 * D: \Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(11):错误 A2079:行语法不正确;符号预期 * FFmpeg 分发是希望它有用,D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(12) : 错误 A2079: 行语法不正确;符号预期 * 但没有任何保证;甚至没有 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(13) 的默示保证:错误 A2079:行语法不正确;预期符号 * 适销性或特定用途的适用性。请参阅 GNU D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(14):错误 A2079:行语法不正确;预期符号 * 小通用公共许可证了解更多详细信息。丁:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(15):错误 A2079:行语法不正确;预期符号 * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(16):错误 A2079:行语法不正确;预期符号 * 您应该已收到 GNU Lesser General Public D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(17) 的副本:错误 A2079:行语法不正确;预期符号 * 与 FFmpeg 一起获得许可证;如果没有,请写入自由软件 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(18):错误 A2079:行语法不正确;预期符号 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA D: \Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(19):错误 A2079:行语法不正确;预期符号 */ D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(21):错误 A2230:非法预处理器指令;仅识别“#line [文件名]”包括“libavutil/aarch64/asm.S” D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(23):错误 A2230:非法预处理程序指令; 仅识别“#line [文件名]”定义 FRAC_BITS 23 // sb_samples 和 dct 的小数位 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(24) : 错误 A2230:非法的预处理器指令;只有“#line [文件名]” 已识别为窗口 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(25) 定义 WFRAC_BITS 16 // 小数位:错误 A2230:非法预处理器指令;仅识别“#line [文件名]”定义 OUT_SHIFT (WFRAC_BITS + FRAC_BITS - 15) D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(27):错误 A2034:未知操作码: tbl_rev128_s const tbl_rev128_s, align=4 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(28) :错误 A2034:未知操作码:。 .byte 12、13、14、15 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(29):错误 A2034:未知操作码:。.byte 8、9、10、11 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(30):错误 A2034:未知操作码:。.byte 4, 5, 6, 7 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(31):错误 A2034:未知操作码:。.byte 0, 1, 2, 3 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(34):错误 A2003:不正确的行语法:。.macro apply_window 类型,st D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(35) :错误 A2034:未知操作码:ff_mpadsp_apply_window_ 函数 ff_mpadsp_apply_window_\type()_neon,export=1 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(42):错误 A2034:未知操作码: movrel movrel x15, tbl_rev128_s D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(44) : 错误 A2003: 不正确的行语法: . .ifc \type,已修复 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(46) :错误 A2003:不正确的行语法:。.else D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(48):错误 A2003:不正确的行语法:。.endif D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(53) :错误 A2173:表达式中的语法错误 sub x5, x5, x4 // samples2 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(53) : 错误 A2003: 不正确的行语法: 无法解析操作数 sub x5, x5, x4 // samples2 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(54) : error A2173: syntax error in expression neg x13, x4 // -incr D:\Work\ Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(54) : 错误 A2003: 不正确的行语法: 无法解析操作数 neg x13, x4 // -incr D:\Work\Chromium_FFmpeg\chromium\src\ third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(56):错误 A2003:不正确的行语法:。.ifc \type,固定 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(57) : error A2173: syntax error in expression ld1r {v16.2s}, [x2] // dither_state D:\Work\Chromium_FFmpeg \chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(57) : 错误 A2003: 不正确的行语法: 无法解析操作数 ld1r {v16.2s}, [x2] // dither_state D:\Work\Chromium_FFmpeg\ chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(60) : 错误 A2061: 非法表达式类型;预期绝对数字 movi v30.2d, #(1<error A2034: unknown opcode: MLA2 MLA2 v17, v2, v0 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(93) : 错误 A2034: 未知操作码: MLS2 MLS2 v19、v3、v6 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(95):错误 A2034:未知操作码:MLS2 MLS2 v17、v4、v7 D:\Work \Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(97):错误 A2034:未知操作码:MLS2 MLS2 v19、v5、v1 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\ libavcodec\aarch64\mpegaudiodsp_neon.S(98):错误 A2034:未知操作码:。b.gt 2b D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(101) : 错误 A2173: 表达式 sub x10, x10, #64<<5 // 64 中的语法错误* 8 * sizeof(int32_t) D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon。S(101) : 错误 A2003: 不正确的行语法: 无法解析操作数 sub x10, x10, #64<<5 // 64 * 8 * sizeof(int32_t) D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\ libavcodec\aarch64\mpegaudiodsp_neon.S(103):错误 A2003:不正确的行语法:。.ifc \type,已修复 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(105):错误 A2034:未知操作码:ext ext v28.16b、v29.16b、v28。 16b,#8。. . \Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(105) : 错误 A2034: unknown opcode: ext ext v28.16b, v29.16b, v28.16b, #8 。. . \Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(105) : 错误 A2034: unknown opcode: ext ext v28.16b, v29.16b, v28.16b, #8 。. .

4

1 回答 1

0

我相信 FFmpeg 已经适用于 Linux/Aarch64 配置(可能使用 GNU 汇编器),在这种情况下,相同的汇编代码也应该适用于 Microsoft ARM 宏汇编器。

Microsoft Arm Assembler使用与 GNU Assembler 不同的语法,与armasm 使用的语法相似但不完全相同。它们不兼容。

于 2018-10-29T14:51:38.283 回答