Forum: Offtopic Program-Counter


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


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.

;-)

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Matthias L. (Gast)


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.

;-)

von Nico E. (masta79)


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.

von mr.chip (Gast)


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.

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


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!!!


;-)

von Nico E. (masta79)


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.

von Bernd (Gast)


Lesenswert?


von yalu (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das kann keiner wissen. Echt nicht.

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


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