www.mikrocontroller.net

Forum: Offtopic Program-Counter


Autor: Hannes J. (Firma: eHaJo.de) (joggl) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe mich jetzt mal in die µC-Architektur von zB Atmegas eingelesen. 
Nun bin ich öfters über den Begriff Programm Counter gestolpert.
Jetzt stellt sich mir die Frage, wofür dieser eigentlich gut sein 
sollte. Weil wenn ich ein µC-Programm schreibe und auf den µC schicke 
ist dort ja genau DIESES Programm drauf. Kann es passieren, dass 
irgendwo weiter hinten im Flash Programmleichen rumliegen die dieser 
Programmcounter mitzählt oder kann man irgendwie Programme forken? 
Ansonsten sollte der Counter ja immer auf 1 stehen.

;-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er steht natürlich nicht auf 1, sondern auf 0, weil ernstgemeinte 
Programmiersprachen bei 0 anfangen zu zählen.

Sollte ja wohl klar sein.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Er steht natürlich nicht auf 1, sondern auf 0, weil ernstgemeinte
>Programmiersprachen bei 0 anfangen zu zählen.

Und deshalb ist das PC-Register ja auch mindestens 16bit breit.

;-)

Autor: Nico Erfurth (masta79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rate mal woher der µC weiss welchen Teil deines Programmes er grade 
ausführt?

Der PC ist einfach nur ein Pointer zur aktuellen Stelle im Code. Diese 
Stelle wird dann ausgeführt, und der Pointer wird um die entsprechende 
Befehlslänge weitergesetzt.

Mit den Branch/Call-Befehlen kann der PC dann auch noch gesetzt werden 
um Verzweigungen etc. zu ermöglichen.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei allem Respekt: Wenn du nicht kapiert hast, wofür der Program-Counter 
gut ist, dann hast du von der Architektur wohl nix kapiert.

Autor: Hannes J. (Firma: eHaJo.de) (joggl) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird mir jetzt glaub ich zu hoch... bzw. macht das ja gar keinen 
Sinn mehr für mich... Ich denke schon, dass ich die gesamte Archtiktur 
mittlerweile kapiert habe...
Aber was für einen Sinn sollte das haben, dass der PC dorthin zeigt wo 
das Programm gerade ist? Das würde dann ja bedeuten, dass ich duch 
Setzen des PCs an beliebige Stellen im Code springen könnte. Damit würde 
dann ja mein schön von oben bis unten ablaufendes Programm aus seinem 
Konzept gebracht!!!


;-)

Autor: Nico Erfurth (masta79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Jochriem wrote:

> Setzen des PCs an beliebige Stellen im Code springen könnte. Damit würde
> dann ja mein schön von oben bis unten ablaufendes Programm aus seinem
> Konzept gebracht!!!

Das ist aber nunmal das was ein jump/branch bzw. Call macht. Der PC wird 
normal nicht direkt verändert (weiss jetzt auch garnicht ob das beim AVR 
geht). Aber irgendwie MUSS dein Prozessor ja wissen WAS er grad WO 
ausführen soll und ein Index ist dafür nunmal die effizienteste Lösung. 
System Glaskugel funktioniert halt eher selten in dem Bereich.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was wohl diese geheimnisvolle Zeichenkombination (Semikolon,
Bindestrich und schließende Klammer) jeweils em Ende der Posts von
Hannes zu bedeuten hat?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann keiner wissen. Echt nicht.

Autor: Hannes J. (Firma: eHaJo.de) (joggl) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yalu wrote:
> Was wohl diese geheimnisvolle Zeichenkombination (Semikolon,
> Bindestrich und schließende Klammer) jeweils em Ende der Posts von
> Hannes zu bedeuten hat?

Und warum es wohl im Offtopic ist und nicht im µC-Forum...

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, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Yahoo-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.