Forum: Compiler & IDEs auslesen des der StackpointerPos.


von Re T. (toobatch)


Lesenswert?

tagschön --

möchte die aktuelle StackPointerposition ausgeben ...

dafür brauch ich die adresse! des StackPointers außerdem ist die 
Übertragung byteweise .

adresse des Stackpointers ist dann sicher  "&SP" (winAvr) . oder ?

und der highwert dann (&SP)+1 oder &(SP+1) ?

von Stefan E. (sternst)


Lesenswert?

1
uint16_t StackPtr = SP;

oder wenn du gleich einen "richtigen" Pointer haben möchtest:

1
uint8_t *StackPtr = (uint8_t*)SP;

von Re T. (toobatch)


Lesenswert?

1
uint16_t *StackPtr = &SP;

so oder - wie gesagt, ich brauch für das ausgeben die ADRESSE des SP; 
nicht den SP selber.

von Matthias L. (Gast)


Lesenswert?

>die ADRESSE des SP;

Die Adresse des SP, oder die Adresse, wo der SP aktuelle hinzeigt?

von Re T. (toobatch)


Lesenswert?

Die Adresse des SP,  die ausgabe ist so realisiert ---

klappt auch soweit,

nun suche ich nur nochwas wo ich ca.  die ausdehnung des heaps erkennen 
kann.

hier: http://www.nongnu.org/avr-libc/user-manual/malloc.html

heißt die Variable "brkval" ...   aber die geht im prog. nicht ...



bin bei fehlersuche ...    und weiß nicht mehr weiter an was das liegen 
soll das das programm einfach immer nur blödsinn veranstaltet, deswegen 
diese kontrollausgaben ...

von Stefan E. (sternst)


Lesenswert?

Re To wrote:
>
1
uint16_t *StackPtr = &SP;
>
> so oder - wie gesagt, ich brauch für das ausgeben die ADRESSE des SP;
> nicht den SP selber.

Nein, was du brauchst, ist der Inhalt des Stackpointers. Die Adresse 
des Stackpointers ist konstant und für dich völlig uninteressant.

von (prx) A. K. (prx)


Lesenswert?

Wer es gern portabel zwischen verschiedenen GCCs hat:
  __builtin_frame_address(0)

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.