push Problem?

24/12/2009 - 13:28 von Jens Kallup | Report spam
Hallo,

warum bekomme ich diese Ausgabe:

->>>>>>>>>>> 2.000000, (null)

wenn ich folgenden Code verwende:
...
push dword LCS70
fld qword [LC70]
fstp qword [esp]
call _add_dtoc
push dword eax
...

extern "C" EXPORT char* add_dtoc(double d, char *txt)
{
printf("->>>>>>>>>>> %f, %s",d,txt);
return txt;
}

???

Gruß und frohe Weihnachten
Jens
 

Lesen sie die antworten

#1 Markus Wichmann
24/12/2009 - 14:13 | Warnen spam
Jens Kallup () schrieb:
Hallo,

warum bekomme ich diese Ausgabe:

->>>>>>>>>>> 2.000000, (null)

wenn ich folgenden Code verwende:
...
push dword LCS70
fld qword [LC70]
fstp qword [esp]



Das hier überschreibt den vorher hineingeschriebenen Pointer. Zu deinem
Glück mit Nullen.

call _add_dtoc
push dword eax
...

extern "C" EXPORT char* add_dtoc(double d, char *txt)
{
printf("->>>>>>>>>>> %f, %s",d,txt);
return txt;
}

???




Der richtige Assembler-Code:

push dword LCS70
fld qword [LC70]
sub esp, 8
fstp qword [esp]
call _add_dtoc
add esp, 12

Oder, ohne FPU:

push dword LCS70
mov eax, [LC70]
mov ecx, [LC70+4]
push ecx
push eax
call _add_dtoc
add esp, 12

Gruß und frohe Weihnachten
Jens



HTH,
Markus
Nur weil ein Genie nix reißt, muß ja nun nicht gleich jeder Idiot
pausieren... Bully hats ja auch geschafft.

news://freenews.netfront.net/ - complaints:

Ähnliche fragen