Forum: Mikrocontroller und Digitale Elektronik "Variable" mit .message beim AVR Assemblieren ausgeben?


von Moritz E (Gast)


Lesenswert?

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

von Hagen R. (hagen)


Lesenswert?

geht nicht meines Wissen, habe darüber auch par Stunden gegrübelt, alle 
Dokus durchgeackert und dann sein gelassen.

Gruß Hagen

von Peter D. (peda)


Lesenswert?

Hängs hinten an Deinen Code als .db oder .dw Anweisung ran und guck im 
Listing nach, welchen Wert die haben.


Peter

von Moritz E (Gast)


Lesenswert?

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!

von Hagen R. (hagen)


Lesenswert?

Die gleiche Idee hatte ich auch und finde es ebenfalls schade das das 
nicht unterstützt wird :(

Gruß Hagen

von Ralf (Gast)


Lesenswert?

(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
Noch kein Account? Hier anmelden.