www.mikrocontroller.net

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


Autor: Moritz E (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hagen Re (hagen)
Datum:

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

Gruß Hagen

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: Moritz E (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Hagen Re (hagen)
Datum:

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

Gruß Hagen

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.