Ошибка: неверный суффикс инструкции для `push ‘

У меня были проблемы с компиляцией программы. Я не уверен, что это значит, и буду благодарен, если кто-нибудь сможет помочь.

C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S: Assembler
messages:
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:41: Error:
invalid instruction suffix for `push'
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:46: Error:
invalid instruction suffix for `push'
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:449: Error: invalid instruction suffix for `pop'
C:\Users\Joshua\Documents\GitHub\Zeus-TSO\_deps\libmpg123\dct64_sse.S:451: Error: invalid instruction suffix for `pop'
_deps\libmpg123\CMakeFiles\libmpg123_static.dir\build.make:378: recipe for targe
t '_deps/libmpg123/CMakeFiles/libmpg123_static.dir/dct64_sse.S.obj' failed
mingw32-make[2]:  [_deps/libmpg123/CMakeFiles/libmpg123_static.dir/dct64_sse.
S.obj] Error 1
CMakeFiles\Makefile2:225: recipe for target '_deps/libmpg123/CMakeFiles/libmpg12
3_static.dir/all' failed
mingw32-make[1]:  [_deps/libmpg123/CMakeFiles/libmpg123_static.dir/all] Error
2
Makefile:74: recipe for target 'all' failed
mingw32-make:  [all] Error 2

1

Решение

Похоже, что вы пытаетесь собрать 32-битный ассемблерный код с 64-битным ассемблером.

У вас есть 2 варианта:

  1. Используйте 32-битный ассемблер, например, используя --32 вариант;
  2. Изменить код путем замены 64-битных (расширенных) регистров, таких как %raxНапример, вместо 32-битных регистров, таких как %eax используется с push/pop инструкции.

Поскольку система сборки выглядит как CMake, я отсылаю вас к этому руководство о том, как настроить сборку для различных сборочных диалектов в CMake.

Вы можете попробовать:

set(CMAKE_ASM_FLAGS "--32")

но я не проверял это.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]