Hallo
ich suche eine Möglichkeit, den Wert des PC in C auszulesen bzw. zu speichern. Weiss jemand, wie es geht?
Gruss
Robert
Hallo
ich suche eine Möglichkeit, den Wert des PC in C auszulesen bzw. zu speichern. Weiss jemand, wie es geht?
Gruss
Robert
Thomas Belau schrieb im Beitrag ...
Na ja, der Prozessor muss es nicht tun. Wenn der C-Compiler wie ueblich die Return-Adresse auf den Stack legt, und die Bitanzahl von Code-Adressen mit der Bitanzahl des Datentyps int uebereinstimmt, und keine Registeroptimierungen an sind, hilft dieser Konstrukt:
int PC(int i) { return *(&i+1); }
um an jeder Programmstelle den PC zu holen:
addr=PC(0); // liefert den PC *an einer Stelle innerhalb der Zeile*
Das allerdings stimmt, doch es geht wohl um uC.
...
Oops. Das kann beliebig weit daneben gehen. Dein Konstrukt setzt noch voraus, daß der Stack nach unten wächst und der Compiler wirklich nur Returnadresse und Argument auf den Stack legt.
An den OP: in C gibt es keinen PC, die Frage ist also relativ sinnfrei. Allerdings können die meisten Linker ein Mapfile schreiben, das zumin- dest die Adressen aller globalen Variablen und Funktionen enthält.
XL
R.Freitag schrieb:
Hallo,
äh, ich wollte Dir doch gerade begreiflich machen das es für die Ermittlung des Program Counters keine portable Lösung gibt, weil es dazu in Standard C nichts gibt.Bye
Jaja. Genau _das_ wollte ich ja auch wissen.
Danke!
Robert
Have something to add? Share your thoughts — no account required.
Ask the community — no account required