Forum: Mikrocontroller und Digitale Elektronik Frage zu einigen Assembler Befehlen


von Michael D. (etzen_michi)


Lesenswert?

Guten Tag.

Ich woltle mal fragen was der große Unterschied zwischen rcall und 
call sowie ijmp und rjmp ist.

Worin besteht der Unterschied der BEfehle und wozu werden die einzelnen 
verwendet (wann wird welches verwendet)?

von Purzel H. (hacky)


Lesenswert?

Normalerweise ist ein call ein kurzer call mit einem kleinen 
displacement zB +-64byte, waehrend ein rcall den gesammten adressbereich 
springen kann, hier wahrscheinlich 0..65k.
Ein ijmp ist ein indirekter Sprung, der zB ueber den Z-pointer geht.
Der Unterschied zwischen einem call und einem jmp ist, dass der call 
zurueck kann, da wird beim call selbst der returnpointer auf dem stack 
abgelegt, waehrend ein jmp das nicht macht. Am ende des calls ( = 
subroutine) macht man ueblicherweise ret (=return), und dann ist der 
programmzaehler wieder zurueck, vor dem call, plus zwei, oder so.

von Floh (Gast)


Lesenswert?

Mini Nilp schrieb:
> Normalerweise ist ein call ein kurzer call mit einem kleinen
> displacement zB +-64byte, waehrend ein rcall den gesammten adressbereich
> springen kann, hier wahrscheinlich 0..65k.

kann es sein dass du was verwechselt hast?
Kenn das eher so rum:
rcall = relative call, Unterfunktionsaufruf mit begrenzter Reichweite
call = Unterfunktionsaufruf
:-)

von Andi (Gast)


Lesenswert?

im wesentlichen liegt der unterschied in der "erreichbarkeit". d. h. du 
kannst mit den verschiedenen "calls" verschieden weit von dieser 
Position springen. im zweifel nimm einfach den "call", der am weitesten 
springt

von Michael D. (etzen_michi)


Lesenswert?

Wenn er nur bestimmt weit springen kann, kann man doch sagen, dass man 
bis zu einer bestimmten Größe immer rcall nehmen kann.

Wie schauts aus mit den Ressourcen, braucht der call befehlt länger, 
mehr Spreicher?

von Tom (Gast)


Lesenswert?

> Wie schauts aus mit den Ressourcen, braucht der call befehlt länger,
> mehr Spreicher?

Die weitreichenden Versionen brauchen natürlich mehr Speicher, weil die 
Adresse länger ist.

von Purzel H. (hacky)


Lesenswert?

Ja. moeglichewrweise ist ein rcall kuerzer. Ein Blick ins Datenblatt 
sollte helfen, nachdem die Optionen aufgezeigt wurden.

von spess53 (Gast)


Lesenswert?

Hi

Wieso nicht:

http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf

konsultieren

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.