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

时间:2009-09-25 15:49:38

标签: c++ assembly x86

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

    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;

   }
}

但是我有pushad和popad的问题。他们给了我一个“未声明的标识符”

3 个答案:

答案 0 :(得分:2)

PUSHA 波帕 (没有d)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用C编译某些内容,并使用-S参数保留汇编程序列表。这应该显示AT& T语法的所有荣耀。