C++ 转换内联C汇编程序(英特尔语法转换为AT&;T)

C++ 转换内联C汇编程序(英特尔语法转换为AT&;T),c++,assembly,x86,C++,Assembly,X86,我正在尝试将此函数从MSVC++转换为MINGW(这是原始的MSVC函数) 但我对普沙德和波帕德有意见。他们给我一个“未声明的标识符”在Mingw中,它可能被称为“pushall”而不是“pusha”:所以试试“pushalld”和“popalld”。你可以用C编译一些东西,还可以用-S参数保存汇编程序列表。这将显示AT&T语法的辉煌。pusha 波帕 (不带d)编译器发出的代码不一定包含push-all寄存器操作码的实例。实际上,它是pushal和popal(不带额外的“l”)。这些不只是16

我正在尝试将此函数从MSVC++转换为MINGW(这是原始的MSVC函数)


但我对普沙德和波帕德有意见。他们给我一个“未声明的标识符”

在Mingw中,它可能被称为“pushall”而不是“pusha”:所以试试“pushalld”和“popalld”。

你可以用C编译一些东西,还可以用
-S
参数保存汇编程序列表。这将显示AT&T语法的辉煌。

pusha 波帕
(不带d)

编译器发出的代码不一定包含push-all寄存器操作码的实例。实际上,它是pushal和popal(不带额外的“l”)。这些不只是16位(word)版本吗?
    VOID __declspec(naked) BNSTUB()
{
   __asm
   {
      pushad;
      call OnChatPacketReceived;
      TEST EAX,EAX;

      popad;
      jnz oldCall;

        MOV EAX,0;
      MOV DWORD PTR DS:[EBX+0x6FF3EBA0],1
      ret;
oldCall:
        CALL eax;
        MOV DWORD PTR DS:[EBX+0x6FF3EBA0],1
        ret;

   }
}