Gast
#784046
Was ändert sich intern in meinem AVR wenn ich statt rjmp rcall oder umgekehrt verwende?
|
Anzeige
|
unterschied rcall rjmp
Gast
#784046
Was ändert sich intern in meinem AVR wenn ich statt rjmp rcall oder umgekehrt verwende?
Gast
#784047
der inhalt des stacks und der stackpointer selbst demzufolge auch
Gast
#784049
wie meinst du das kannst du mir das genauer erklären?
Gast
#784055
Assembler ist schon lange her bei mir. Aber ich glaube bei call kommt eine Rücksprungadresse auf den Stack. Bei einem RET-Kommando springt der Stackpointer wieder an die Stelle nach dem Call. JMP macht das nicht.
Gast
#784057
Äh, sorry nicht Stackpointer, sondern der Instructionpointer.
Gast
#784058
wo springt jmp dann hin?
Gast
#784059
call ist ein Unterprogrammaufruf, bei dem die Rücksprungadress auf dem Stack abgelegt wird. Nach einem ret wird das Programm an der Stelle nach dem Unterprogrammaufruf fortgeführt. jmp ist eine Verzweigung im Programm auf eine andere Adresse.
Gast
#784061
Ein jmp ist eigentlich nichts anderes als den Instructionpointer mit der adresse im jmp zu laden. Wie ein goto in Basic, ein call wie ein gosub. Klar ??
Gast
#784062
>wo springt jmp dann hin?
jmp springt an die adresse, die du hinter jmp schreibst.
call macht das ebenso. nur mit dem unterschied:
call merkts sich, von wo aus an die adresse gesprungen wird. es merkt
sich als die alte adresse.
am ende einer mit call angesprungenen funktion schreibt mat ein ret. das
bedeutet: rücksprung wo du herkamst. dadurch springt der µC an die
stelle direkt hinter den call befehl. bei jmp geht das nicht, weil
dieser befehl sich nichts merkt.
dadurch hast du den vorteil, oft benutzte codezeilen als funktion zu
verpacken und von beliebiger stelle im programm aufzurufen.
Gast
#784065
gecheckt danke !!!!!!!!!
Gast
#784073
Jetzt kommt der Haarspalter : @ lippy keine Funktion sondern Unterprogramm/Subroutine. Eine Funktion gibt nach einer Operation einen Wert zurück, hierbei können auch Argumente übergeben werden. So. :)
Gast
#784091
> Analog (Gast) Na und? Das kann doch trotzdem sein. Eine Funktion wird immer mit call aufgerufen und mit ret beendet. >Jetzt kommt der Haarspalter : Also nix ist. Das war schon alles richtig so
Gast
#784107
Je nach Programmiersprache heisst es manchmal Funktion und manchmal Unterprogramm, Subroutine, procedure, oder anders. Ein Vorhandensein eines Rückgabewertes kann man daraus oft nicht ablesen.
Gast
#784127
@lippy >>Jetzt kommt der Haarspalter : >Also nix ist. Das war schon alles richtig so nein. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|