Beim Einbinden mit include fremder Quelltexte kommt man nicht umhin mit mehrfach definierten Registern zu arbeiten. .def a1=r16 <include fremderCode.asm> ; Registerdefinition im fremden Code .def a2=r16 Wenn die Register sauber über den Stack laufen, ist das kein Problem, hier wird das Register R16 sowohl über a1 als auch über a2 erreicht. Meine Frage ist wie man die Warnungen des Assemblers umgeht: vor lauter Warungen wegen doppelt definierten Registern findet man die wirklich relevanten nicht mehr. Wie definiert man ohne Warnungen?
Holler, mein Ratschlag ist, die Definitionen im fremden Code so zu ändern (mit Crtl-H: Replace), dass sie gleich den eigenen sind. Danach kannst Du die ".def"s im fremden Code löschen. Begründung: Früher oder später wirst im fremden Code etwas ändern wollen. Dabei kommst Du garantiert mit den eigenen und den fremden Definitionen durcheinander. So nach dem Motto ... ldi a1,0x01 ldi a2,0x03 add a1,a2 ; Du erwartest als Ergebnis 0x04, heraus kommt aber 0x06 ... Solche Fehler sind dann sehr schwer zu finden. Deshalb: Wenn überhaupt ".def"s, dann einheitlich im gesamten Programm. mare_crisium
Hi
>Wie definiert man ohne Warnungen?
Indem man diese .def-Gedödel komplett eliminiert. Für Spielzeugprogramme
mag das ganz nett sein. Bei größeren Programmen oder bei der Erstellung
von Librarys ist das nur noch lästig.
MfG Spess
spess53 schrieb: > Indem man diese .def-Gedödel komplett eliminiert. Für Spielzeugprogramme > mag das ganz nett sein. Bei größeren Programmen oder bei der Erstellung > von Librarys ist das nur noch lästig. Das liegt wohl eher am Programmierstiel der sich gerade bei Assembler im laufe der Zeit entwickelt. Ich finde das "def-Gedödel" ganz praktisch wenn ich z.B. eine Uhr programmieren und benenne vorher die Register mit sekunde, minute usw. und brauche nachher nicht mehr nachzuschauen in welchem Register die Sekunden stehen. Ausserdem lese ich im Quellcode mit einem Blick heraus was "inc sekunden" macht, im gegensatz zu "inc r3". Holler schrieb: > Beim Einbinden mit include fremder Quelltexte kommt man nicht umhin mit > mehrfach definierten Registern zu arbeiten. Assembler ist eben mal ungeeignet um Blind aus mehreren Quellen mit Copy und Paste ein lauffähiges Programm zu erstellen. Falls ich eine Library von einem anderen Programm benutze, muss ich eben die defs meinem Stiel anpassen. Das setzt natürlich vorraus, das ich (wie immer bei ASM) meinen Hirnschmalz anstrengen muss und das Programm analysiere und nachvollziehen kann. Das muss man ja auch wirklich nur einmal machen, danach passt die lib in alle nächsten projekte.
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.