Kennt sich hier noch jemand mit dem GNU Assembler aus?

Gast #6703280
Hi!

Ich nutze den gas für meine AVR Projekte. Viele Module füge ich via 
#include zusammen, da die in verschiedenen Dateien aufgeteilt sind. Mein 
Problem ist, dass Labels von einer Datei nicht out of scope gehen. 
Letztens z.B. wiedermal:

Datei 1 enthält:
1
i = 16
2
ldi i,100
16 ist hier der Register 16, welcher als Zähler in einem Loop verwendet 
wird.

Datei 2 enthält auch einen Loop, der auf i zugreift, dummerweise habe 
ich aber vergessen, in Datei 2 i zu definieren. Einen Fehler gab es 
nicht, da i ja in Datei 1 definiert wurde.

Wenn man jetzt in Datei 1 i auf z.B. 17 ändert, wird Datei 2 nicht mehr 
funktionieren.

Ich möchte gerne lokale Labels haben, die nur in der jeweiligen Datei 
aktiv sind. Sowas wie .local i = 16, wenns das geben würde. (Gibt zwar 
ein .local, aber das macht was anderes.)

Hat da jemand eine Idee? Ausser halt die üblichen Trollsprüche wie 
"Nutze halt eine Hochsprache".
#6703373
Jan schrieb:
> Viele Module füge ich via
> #include zusammen, da die in verschiedenen Dateien aufgeteilt sind.

Eleganter wäre es, die Module einzeln zu assemblieren und dann zusammen 
zu linken.
Man kann aber auch den Präprozessor benutzen und damit #define, #undef.
Dazu muß die Datei *.S heißen. *.s wird ohne Präprozessor assembliert.
#6703374
GNU as kann doch seperat mit GNU ld gelinkt werden. Mit AVR selbst kenne 
ich mich nicht aus, aber das AVR Studio konnte das (früher) gerade 
nicht. Damit bist du die includes los und Sprungmarken sind File lokal 
und werden erst vom Linker auf extern geprüft

Using as von Dean Elsner, Jay Fenlason & friends ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.