Tuesday, 15 March 2011

visual c++ - "The value of ESP was not properly saved across a function call." even with LEAVE -


After

Trying to call a method that is defined in the assembly, I error "ESP Receiving the value of a function was not properly saved throughout the call. ", considering using Visual Studio 2012 other questions, a common factor is not to mention that the assembly could not The exit was going to be out of each label.

I am getting this error, but leave the code with the following code, which is not including .

  section .bss vs: resb 13; 12-byte vendor string + null four NS: Ridge 49; 48-byte proc global _meta_vendor global _meta_procname _meta_vendor Ktext name + minus four sections: Push EBP mov EBP, esp mov eax, 0h Seepiuaidi mov [v], EBX mov [vs 4], EDX mov [vs. + 8], ECX mov byte [vs. + 12], 0 hours mov eax, versus retired _meta_procname: push EBP mov EBP, esp mov eax, 80000002h Seepiuaidi mov [ns], eax mov [ns 4], EBX mov [ns + 8], ECX mov [Ns + 12], adx silent eX, 80000003 ccid mov [ns +16], ex mov [ns + 20], ebx mu [ns + 24], xx mu [ns + 28], adx Moaks AX, 80000004 H Seepiuaidi Moje [ns + 32], EX mov [ns + 36], Ibiaks MOU [ns +40] XX MOU [ns +44], ADX Mobi byte [ns + 48], 0 H Miaks AX , Ns replay write   

The function prototype for those labels is in a header file, which only contains:

  #include & lt; Cstdint> Extern "c" {char * meta_vendor (); Char * meta_procname (); }   

Any information Why am I receiving this error?

Note, if I click "Continue" on the popup that appears, then the expected value is displayed.

The problem was resolved by adding

push ebayx and pop EBX as shown below:

  _meta_vendor: push ebp mov ebp, esp push ebx; Code ... pop ebx leave leave    

No comments:

Post a Comment