Forum: Compiler & IDEs Ruecksprungsadresse


von xion (Gast)


Lesenswert?

Hallo Leute,
wie ermittelt man eigentlich Ruecksprungsadresse in C, und wie kehre
ich
dann auf diese adresse zurück.

von Εrnst B. (ernst)


Lesenswert?

Wohin willst Du zurückspringen?

Aus einer Funktion zum Aufrufer? das geht automatisch am Funktionsende
oder mit "return", musst Du dich in C nicht drum kümmern.

/Ernst

von Xion (Gast)


Lesenswert?

Ich will eine Multitasking OS programmieren, da hier jeder Task  in eine
bestimmte Zeitscheib ablaufen muss.

von Birger* (Gast)


Lesenswert?

Mich würde dabei mal interessieren, wie ich eine Rücksprungadresse vom
Stack sauber in C entfernen könnte, wenn ich aus einem Unterprogramm
eben nicht wie gewohnt zurückkehren möchte.

von peter dannegger (Gast)


Lesenswert?

@Birger

garnicht.

Denn Du weißt ja nicht, welche Variablen er noch so auf dem Stack
abgelegt hat.


Peter

von Xion (Gast)


Lesenswert?

ich weiss es jetzt umgefähr man muss den ganzen prozessor in einer Ram
retten wie das ganz fkt weiss ich noch nicht mehr dazu später.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Guck dir doch einfach die X verschiedenen OSe an, die's schon
gibt.

Kurz: dieser Teil wird wohl praktisch immer in Assembler gezimmert.

von Rolf Magnus (Gast)


Lesenswert?

> Mich würde dabei mal interessieren, wie ich eine Rücksprungadresse
> vom Stack sauber in C entfernen könnte, wenn ich aus einem
> Unterprogramm eben nicht wie gewohnt zurückkehren möchte.

Wozu?
Du könntest höchstens mit setjmp/longjmp arbeiten.

von Daniel aka Khani (Gast)


Lesenswert?

Hallo,

schaut Euch doch einfach FreeRTOS (www.freertos.org). Das ist schön
dokumentiert die ganze Rücksprungadressenverrenkung in Assembler
ausgeführt.
Es ist (wie schon meine Vorredner so ähnlich sagten) keine gute Idee,
zu versuchen den Compiler zu "bescheißen", in dem man den Stack mit
Hochsprachenaufrufen oder innerhalb von Hochsprachenkonstrukten
manipuliert. Das führt meist zu gewissen Unfällen.

MfG, Daniel.

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.