Hallo, ich programmiere (noch nicht so gut) Mikrocontroller (PIC). Manchmal lese ich, dass etwas in einem Stack geschrieben wird und manchmal wird etwas in einem Register geschrieben. Ist Stack und Register das selbe? Wenn nein, was ist der Unterschied? Johannes
Johannes schrieb: > Hallo, > ich programmiere (noch nicht so gut) Mikrocontroller ... In was für einer Sprache programmierst du denn? Ich nehme an in C, aber ...
:
Bearbeitet durch User
Deine Frage betrifft eine allgemein zugängliche Information. Sie bezieht sich nicht auf ein Problem oder eine schwer verständliche Erklärung. Bitte recherchiere selbst.
Johannes schrieb: > Ist Stack und Register das selbe? Bei manchen PICs liegt der Return-Stack in speziellen Registern. Andernfalls: nein.
Also kurz gesagt, hat der PIC Register. z.B. SFR (Special Funktion Reg.) Ports, Timer ,... GPR (General Purpose Reg.) das RAM Der C-Compiler verwendet einen Teil der GPR Register als "Stack". Auf diesem Stack werden dann lokale Variablen von Funktionen gespeichert. Diese Variablen benötigen den Speicherplatz nur solange sie gültig sind und können sich so den Stack mit Variablen anderer Funktionen teilen. Den Rest kannst du jetzt aber selber ...
Volker S. schrieb: > GPR (General Purpose Reg.) das RAM 8-Bit PICs haben die andernorts selten anzutreffende Eigentümlichkeit, begrifflich keinen Unterschied zwischen Registern und RAM zu machen. Alles weit und breit sind da Register, auch wenns um die 4000 Stück sein mögen. Um bei diesen PICs keine gegenüber anderen Architekturen völlig eigene Begriffswelt aufkommen zu lassen, betrachte ich das, was du GPR nennst, nicht als Register, sondern nur als RAM. Man tut sich dann auf C Ebene etwas leichter beim Verständnis von Texten, die nicht ausschliesslich für solche PICs geschrieben wurden.
:
Bearbeitet durch User
Komm labern wir ein bisschen Zeug, über Sachen die J. nicht gefragt hat und die er vielleicht auch <noch> nicht versteht. Sorry Johannes (Gast), so ist das nun mal hier ;-) A. K. schrieb: > Um bei diesen PICs keine gegenüber anderen Architekturen völlig eigene > Begriffswelt aufkommen zu lassen, betrachte ich das, was du GPR nennst, > nicht als Register, sondern als RAM. Bei vielen Archtekturen ist das ja so, dass man Daten aus dem RAM in ein Register holen muss, um dann dort irgend etwas damit zu tun. Zumindest bei den 8Bit PICs gibt es das so nicht. In diesem Sinne ist eben alles ein Register.
:
Bearbeitet durch User
Johannes schrieb: > ja, > C Dann ist der Stack für Dich tabu. Und alles andere sind Variablen. Die GPR sind dabei Variablen, die an bestimmten Adressen stehen und eine bestimmte Bedeutung haben, z.B. Timer lesen, starten usw.
Johannes schrieb: > ja, > C Wenn du C verwendest, ist der Stack etwas, mit dem du überhaupt nichts zu tun hast, das regelt das System selber, solange genug Platz dafür da ist, egal wo. Erst wenn das nicht mehr der Fall ist, also "der Stack überläuft", musst du dich damit beschäftigen warum und was man tun kann. Georg
Peter D. schrieb: > Die GPR sind dabei Variablen, die an bestimmten Adressen stehen und eine > bestimmte Bedeutung haben, z.B. Timer lesen, starten usw. Nö, das sind die SFR!
Beitrag #6902018 wurde von einem Moderator gelöscht.
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.