system888net 发表于 2008-04-23 22:51

VC6.0 中使用汇编需要注意的一个小问题

VC6.0 + Intel CPU
int main()
{
        unsigned int var_EAX;
        unsigned int var_EBX;
        unsigned int var_ECX;
        unsigned int var_EDX;
        unsigned int var_R8;
        int i;

        i=0;

        __asm{
                push MB_OK                                        //把要传给MessageBox的参数(4个)入栈
                push title
                push message
                push NULL
                call dword ptr MessageBoxA        //调用MessageBoxA
                movvar_EBX,EBX
                movvar_EAX,EAX
                movvar_ECX,ECX
                movvar_EDX,EDX

//                movvar_R8,r8
        }
return(0);
}

其中把
                movvar_EBX,EBX
                movvar_EAX,EAX
                movvar_ECX,ECX
                movvar_EDX,EDX
翻译成了:
        mov        DWORD PTR _i$, eax
        mov        DWORD PTR _i$, ebx
        mov        DWORD PTR _i$, ecx
        mov        DWORD PTR _i$, edx

因此对于VC6.0不要用var_EAX[...]这样的形式.而用var_EAX这样的非数组为好.
其它有的编译器则没有这个问题
:outu:

[ 本帖最后由 system888net 于 2008-4-23 22:55 编辑 ]
页: [1]
查看完整版本: VC6.0 中使用汇编需要注意的一个小问题