www.mikrocontroller.net

Forum: Compiler & IDEs Ruecksprungsadresse


Autor: xion (Gast)
Datum:

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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Xion (Gast)
Datum:

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

Autor: Birger* (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Birger

garnicht.

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


Peter

Autor: Xion (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck dir doch einfach die X verschiedenen OSe an, die's schon
gibt.

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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel aka Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.