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. ;-)
Er steht natürlich nicht auf 1, sondern auf 0, weil ernstgemeinte Programmiersprachen bei 0 anfangen zu zählen. Sollte ja wohl klar sein.
>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. ;-)
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.
Bei allem Respekt: Wenn du nicht kapiert hast, wofür der Program-Counter gut ist, dann hast du von der Architektur wohl nix kapiert.
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!!! ;-)
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.
Was wohl diese geheimnisvolle Zeichenkombination (Semikolon, Bindestrich und schließende Klammer) jeweils em Ende der Posts von Hannes zu bedeuten hat?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.