Hallo, ich bin gerade dabei eine etwas größeres Projekt mit dem PIC16F887 zu verwirklichen. Ich mache mir gerade aber Gedanken darüber, wie ich den Assembler Code möglichst übersichtlich und sauber halte. Ein Problem dabei was ich habe sind die Label Namen. Ich kann jedes ja nur einmal verwenden und irgendwann gehen einem die kurzen Namen aus. Insbesondere wenn ich nur in einer Routine temporäre Labels brauche. Gibt es da eine Möglichkeit "lokale" Labels zu definieren, die nur in der definierten Routine gültig sind und ich diese so auch in anderen Routinen nochmal verwenden kann ?
C kannst Du nicht verwenden? Den XC8 kannst Du Dir so herunterladen.
Ja, es kommt aber an manchen stellen bei mir fasst auf jeden Takt an und der Free xc8 ist in Sachen Optimierung überhaupt nicht gut. Ich habe halt keine Kontrolle mehr wievielt Takte jetzt ein bestimmter Befehl braucht.
Servus, lokale Programm-Labels sind mir bei MPASM (außer ggf. in Makros) nicht bekannt. Zur Übersichtlichkeit trägt aber auch bei, möglichst aussagekräftige Namen zu verwenden, und die tendieren naturgemäß dazu, nicht mehr ganz so kurz zu sein. Klar, daß so simple Namen wie "loop", die oft als lokale Labels nützlich wären, schnell "verbaucht" sind. Solche "lokalen" Labels könnte man z.B. durch Benutzung einer an die Hauptfunktion angelehnten Bezeichnung mit einer Erweiterung erstellen. Im einfachsten Fall ist das ein simpler Index (..._1, ..._2) , oder auch etwas sinnvolleres (..._lp1, ..._next) Da die "lokalen" Labels ja nur im unmittelbaren Umfeld interessant sind, dürfen die auch etwas kryptischer ausfallen. z.B.: ProgrammMachtDas <code> pmd_lp <code> pmd_next <code> pmd_exit return "Ausgegangen" sind mir die Zeichenkombinationen jedenfalls noch nie...
Ich kann Thomas nur zustimmen! Labels verbrauchen keinen Speicherplatz und brauchen daher nicht besonders kurz oder kryptisch zu sein. LED2_ON steht z.B. für bsf PORTB,RB0 DCF_Stunde ist verständlicher als DCF_hh LED2_OFF ist beser zu lesen als led2off oder LedOff mfg GroberKlotz
Zum Einstieg: MPASM Guide 33014L Labels: can be 32 characters long Directive: "global" - bei relokierbarem Code genau das Gegenteil von local. Cheerio, marcus
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.