C++ 错误:“push';

C++ 错误:“push';,c++,assembly,mingw,nasm,C++,Assembly,Mingw,Nasm,我在编译程序时遇到了一些问题。我不确定这些是什么意思,如果有人能帮助我,我将不胜感激 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 `p

我在编译程序时遇到了一些问题。我不确定这些是什么意思,如果有人能帮助我,我将不胜感激

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

似乎您正在尝试使用64位汇编程序构建32位汇编代码

您有两种选择:

  • 使用32位汇编程序,例如使用
    --32
    选项
  • 通过替换64位(扩展)寄存器(例如
    %rax
    )来更改代码,而不是与
    推送
    /
    指令一起使用的32位寄存器(例如
    %eax
  • 由于构建系统似乎是CMake,因此我建议您参考此,了解如何在CMake中为各种程序集方言配置构建

    你可以试试:

    set(CMAKE_ASM_FLAGS "--32")
    

    但是我还没有测试它。

    看起来您正在尝试使用64位汇编程序构建32位汇编代码

    您有两种选择:

  • 使用32位汇编程序,例如使用
    --32
    选项
  • 通过替换64位(扩展)寄存器(例如
    %rax
    )来更改代码,而不是与
    推送
    /
    指令一起使用的32位寄存器(例如
    %eax
  • 由于构建系统似乎是CMake,因此我建议您参考此,了解如何在CMake中为各种程序集方言配置构建

    你可以试试:

    set(CMAKE_ASM_FLAGS "--32")
    

    但是我还没有测试过它。

    如果你发布了它所引用的代码——至少是第41行、第46行、第449行和第451行——最好是它周围的几行……如果你发布了它所引用的代码——至少是第41行、第46行,那么它的可能副本将非常有帮助,449和451-最好是它周围的几行…可能重复的我不确定在哪里添加--32选项。我在任何地方都找不到一个能让我为汇编程序定义选项的文件。更新了,看一看。出于好奇,我将Mingw改为32位,并用32位编译。我们现在又回到了不兼容错误。您能否提供更多有关编译内容和希望实现什么的信息,否则很难了解您面临的问题类型,甚至更难提出任何解决方案。我不确定在何处添加--32选项。我在任何地方都找不到一个能让我为汇编程序定义选项的文件。更新了,看一看。出于好奇,我将Mingw改为32位,并用32位编译。我们现在回到不兼容错误。您能否提供更多信息,说明您正在编译什么以及您希望实现什么,否则很难了解您面临的问题类型,甚至更难提出任何解决方案。