Welches Register für was?

Hi
Eigentlich ist das einfach....
Ich arbeite viel mit Variablen, also Speicherzellen aus dem SRAM. Fest zugeteilte Register hab ich selten und dann haben sie Namen wie "Zero", "Sekunde" etc. Diese Namen behalten sie über das ganze Programm. Es sind meist Register aus dem Bereich 0 bis 15. Nehme ich ein Unterprogramm, welches Register verändert, deren Inhalte jedoch noch gebraucht werden, dann wird gepusht und gepopt. Ich hab ja schon genug darauf hingewiesen, das da jeder Programmierer seinen Stil umsetzt, auch den Umgang mit Subroutinen. Und sicherlich hat er ein Schema, seine Register zu benennen und sie damit für eine Aufgabe zu spezifizieren. Wenn ich es für sinnvoll halte, tue ich es auch, aber sie haben einen Namen und gut. Wenn du die Register innerhalb des Programms umbenennst, dann mach das. Es ist dein Programm und auch dein Stil, Wenn du irgendwann einmal erkennst, das du es einfacher machen kannst, wirst du deinen Stil evtl. anpassen oder sogar ändern. Wenn ich heute Programme aus den 80ger Jahren von mir sehe, kann ich es manchmal auch nicht glauben. Du wirst dein Leben lang schauen, wie es andere machen und lächeln oder erstaunt sein. Es ist aber falsch, sich einen Stil anderer anzugewöhnen. Du wirst immer zweifel haben, es doch nicht optimal übernommen zu haben. Lass drei Experten in Assembler eine Aufgabe lösen und du bekommst drei Programme. Glaub mir, jeder ist von seiner Lösung überzeugt. Lass drei Autoren ein Buch über ein Thema schreiben... sieht genau so aus und wenn du dich an deine Schulzeit erinnerst, und an Aufsätze... Da waren nur die abgeschriebenen gleich. Nun sag mir, wer wird nie einen eigenen Stil entwickeln, auch wenn er, weil es nicht auffiel, eine gute Note erhalten hat ?
Ok, genug philosophiert. Schreib mir dein Problem und ich versuche dir meine Lösung dazu zu zeigen. Allerdings kann ich dir nicht mit einer Programmbibliothek aufwarten, da selten unterprogramme in verschiedenen Programmen so gleich sind. Klar, diverse Initialisierungen für Timer, UART, evtl. IO oder andereDinge, ja, aber die lade ich zuerst, dann da sehe ich, ob Register bereits Namen haben, die dann noch definiert werden müssen. Dadurch sind diese Grundlegenden Register auch immer zuerst da.
Gruß oldmax
 
Hallo,

also ich hab schon verstanden was es bezwecken soll.

Damit man im Unterprogramm am Namen (Alias) erkennen kann was mit dem Register bezweckt werden soll. Ob es für temporäre Werte sein soll oder ob es Flags beinhaltet oder zB für eine Anzeige Zehner oder Einerstellen oder Multiplexzähler oder PWM-Werte oder was weiß ich für einen Wert halten soll.

zB so ...

.def PWMwert = r18
.def Grenze = r19

ldi PWMwert, 0x40
cp PWMwert,Grenze ; Test auf PWM-Grenze
brne irgendeinlabel
...

Also in etwa so.
Dann kann man für den Fall der Fälle mit der Definition auf einen Schlag das Register in der gesamten Subroutine ändern wenn man es mal in einem Projekt für einen anderen Zweck benötigt. Außerdem weiß man über den Namen wofür das Register verwendet wird.

Naja ... ich habs bis jetzt noch nicht wirklich benötigt :rolleyes: aber verständlich ist das Anliegen schon.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)