ASM Parameter von cdecl funktion mit LEAVE aufräumen?



  • Ich habe folgenden Code :

    PUSH EBP
    MOV EBP, ESP
    MOV EAX, [EBP+4] ; char* Parameter
    PUSH EAX
    PUSH 3
    PUSH 2
    CALL some_address ; cdecl funktion
    ;ADD ESP, 12 ?
    MOV ESP, EBP ;(LEAVE)
    POP EBP      ;
    RETN 4
    

    Das soll sowas ergeben :

    void __stdcall foo(char*)
    

    Ist mit dem asm Code alles richtig ? Und muss ich den stack von dem funktionsaufruf noch durch das ADD ESP, 12 aufräumen oder reicht das LEAVE ?( MOV ESP, EBP POP EBP)



  • bei mir wird

    func("a");
    

    ,wobei func mit __stdcall deklariert ist, zu

    00E58520  push        0E5C94Ch  
    00E58525  call        func (0E58080h)
    

    kompiliert.



  • Ich meinte das die funktion vom prototyp so aussieht (stdcall -> RETN 4 etc.) Das was du meinst ist doch der funktionsaufruf ?


Anmelden zum Antworten