Hallo Forum, ich bin am verzweifeln: Beim AVR Assembler v2.1.14 (AVR Studio) gibt es die ASM Direktive .message <string> und die Präprozessor-Direktive #message <TOKEN>, um Nachrichten beim build auszugeben. (analog auch mit warning und error in . und #) Nun würde ich gerne eine Zahl, die durch den Assembler aus .equ's oder #defines berechnet wird über message ausgeben. .message will nur String, und #message ein TOKEN Nach stundenlanger Suche bin ich nur auf C-bezogene Lösungen dieses Problems gestoßen: #define STR2(x) #x #define STR(x) STR2(x) #define ZAHL 100 #define STR_ZAHL STR(ZAHL) .warning STR_ZAHL (#warning STR_ZAHL ergibt selbes ergebnis) Nur der AVR ASM Preprocessor gibt dann einfach nur "ZAHL" aus, warum auch immer (Bug?) Da es die Stringificate Direktive # nur im Preprocessor gibt, kann ich auch nur mit #define's arbeiten, da die equ's und dergleichen erst nach dem Preprocessor ausgewertet werden. Eine Expression-Function wie INT() für Expressions in ASM direktiven gibt es für Stringificate auch nicht, (was könnte nützlicher sein) Wenn ich versuche .message mit irgendetwas anderem als ".." zu füttern gibts Errors. Gibt es für dieses stupide Problem wirklich keine Lösung bei AVR ASM? Eigentlich will ich sowas wie: .equ Const = A+B .message Const
geht nicht meines Wissen, habe darüber auch par Stunden gegrübelt, alle Dokus durchgeackert und dann sein gelassen. Gruß Hagen
Hängs hinten an Deinen Code als .db oder .dw Anweisung ran und guck im Listing nach, welchen Wert die haben. Peter
Ich hab mir irgendwie nicht vorstellen können das so eine banale Funktionalität die doch eigentlich viele assemblierer sich wünschen müssten noch nicht implementiert ist... Das mit dem .db ist sicher grundsätzlich eine gute Idee um Compile-Infos nach dem Build zusammen zufassen. Was ich mir konkret vorgestellt hatte, war den ganzen kram an Konfigurationen und Wertzuweisungen durch .equs beim Build komfortabel im Message-Output zusammengefasst sehen zu können, wie die eingebauten Reports z.B. zu Register und Speicher Benutzung. Insbesondere das Mapping, oder zu Modulen zusammengefasste Speicherverwendung des RAMS oder ROMS. Der Assembler scheint es mit Overlap seiner .db zuordnungen nicht so genau zu nehmen, hält nichtmal ein Error für nötig, wenn die .db's die Ramgröße übersteigen (es wird nur lapidar eine Ausnutzung von >100% angezeigt). Gibts für sowas nicht ein kleines handliches skripting-tool, was mir ein paar zusammenfassende Infos aus dem Build ziehen kann? (nur zum analysieren, nicht als Pre-Preprozessor), vielleicht was für AVR-Zwecke bereits selbstgeschriebenes? Oder als allgemeines IDE-Tool (sowas wie Programmer-Notepads)? Gruß, und danke für die Antworten!
Die gleiche Idee hatte ich auch und finde es ebenfalls schade das das nicht unterstützt wird :( Gruß Hagen
(ich weiß, ist schon alt...) Assemblieren und Debugging starten - die mit '.equ' definierten Werte ins Überwachungsfenster holen - unter 'Value' und 'Type' wird Mist angezeigt, aber der Wert unter 'Location' ist genau das, was die Definition/ Berechnung ergibt (also keine Adresse)
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.