Program counter Wert ermitteln

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Hallo

ich suche eine Möglichkeit, den Wert des PC in C auszulesen bzw. zu
speichern. Weiss jemand, wie es geht?

Gruss

Robert

Re: Program counter Wert ermitteln
Quoted text here. Click to load it
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*

Quoted text here. Click to load it

Das allerdings stimmt, doch es geht wohl um uC.
--
Manfred Winterhoff, reply-to invalid, use mawin at gmx.net
homepage: http://www.geocities.com/mwinterhoff /
We've slightly trimmed the long signature. Click to see the full one.
Re: Program counter Wert ermitteln
Quoted text here. Click to load it


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
--
Das ist halt der Unterschied: Unix ist ein Betriebssystem mit Tradition,
die anderen sind einfach von sich aus unlogisch. -- Anselm Lingnau

Re: Program counter Wert ermitteln

R.Freitag schrieb:
Quoted text here. Click to load it

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


Re: Program counter Wert ermitteln

Quoted text here. Click to load it


Jaja. Genau _das_ wollte ich ja auch wissen.

Danke!

Robert

Site Timeline