Unterschiedliche Adressen in Watch Window und Variablenzuweisung

Gast #7518946
Lesenswert?
• ▲
▼

Hallo zusammen,

ich habe hier ein Verständnisproblem mit Pointern auf Funktionen. Angenommen ich habe folgenden Code (gcc compiler für einen PSOC5):

1
int myfunction(void)
2
{
3
    return 0;    
4
}
5

6
int main(void)
7
{
8
    uint32_t tmpAdress = (uint32_t)&myfunction;
9

10
    for(;;)
11
    {       
12
    }
13
}

Schaue ich mir die Adresse der Funktion myFunction im Watch Window an, bekomme ich die Adresse 84. Weise ich diese Adresse einer int Variable zu bekomme ich die Adresse 85. In beiden Fällen wurde mit &myFunction die Adresse geholt (siehe auch Bild). Kann mir jemand erklären, warum das so ist?

Vielen Dank und beste Grüße Heiko

Angehängte Dateien:
Gast #7518965
Lesenswert?
• ▲
▼

Hallo Walter,

ja, ARM. Danke für den Hinweis in Richtung der geraden/ungerade Einsprungandressen. Dennoch interessant, dass die Zuweisung zu einer int Variable das Alignment auf Worte durchführt, wohingegen das Watch Window die un-aligned Adresse anzeigt.

Gruß Heiko

#7519077
Lesenswert?
• ▲
▼

Mööp! Da geht es nicht um Alignment. Das niederwertigste Bit im Programcounter zeigt an, welcher Befehlssatz genutzt wird (Arm oder Thumb).

Bei der Cortex Reihe fällt das sofort auf, da die nur Thumb können, so dass ein falsches LSB Dich umgehend zum Hard-Fault-Handler bringt.

In keinem Fall kann ein Arm Befehle ausführen, die um ein Byte im Speicher verschoben sind.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.