Hallo Leute, wie ermittelt man eigentlich Ruecksprungsadresse in C, und wie kehre ich dann auf diese adresse zurück.
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
Ich will eine Multitasking OS programmieren, da hier jeder Task in eine bestimmte Zeitscheib ablaufen muss.
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.
@Birger garnicht. Denn Du weißt ja nicht, welche Variablen er noch so auf dem Stack abgelegt hat. Peter
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.
Guck dir doch einfach die X verschiedenen OSe an, die's schon gibt. Kurz: dieser Teil wird wohl praktisch immer in Assembler gezimmert.
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.