Rekursion



  • Hallo,

    wenn ich eine Rekursion in Assembler schreibe bin ich dann selbst verantwortlich die Parameter und die Rücksprungadresse auf den STack zu legen ?



  • blurry333 schrieb:

    bin ich dann selbst verantwortlich die Parameter und die Rücksprungadresse auf den STack zu legen ?

    ja, nein und vieleicht.



  • Um Funktionen aufzurufen und von diesen heraus zu springen, gibt es in x86 Prozessoren extra eigene Befehle:

    CALL und RET

    CALL ist wie JMP, also ein Sprung zu einer anderen Programmadresse. CALL legt zusätzlich eine Rücksprungadresse auf den Stack. Wenn anschließend RET aufgerufen wird, nimmt dieser Befehl die Rücksprungadresse vom Stack und springt dorthin zurück.

    jmp start
    
    MeineFunktion:
     ETWAS TUN...
    ret
    
    start:
    call MeineFunktion
    

    Also alles schön vorgekaut für dich. 😛
    Das einzige was man bei einfachen Rekursion beachten muss ist, dass man nicht den ganzen Stackspeicher verbraucht bzw. diesen groß genug einrichtet.


Anmelden zum Antworten