Symbolnamen in gnu assembler

OP #4142639
Lesenswert?
• ▲
▼
Hallo zusammen,

da man bei mov r15,r12 und co. schnell die Übersicht verliert, verwende 
ich natürlich Aliasnamen. Die heissen bei gas wohl Symbole. Allerdings 
habe ich da ein Problem. Folgendes funktioniert nicht:

real = 16
inc real

jedoch

eal = 16
inc eal

geht ohne Probleme. Anscheinend mag gas es nicht, wenn ein Symbol mit r 
anfängt???? Welchen Hebel muss ich umlegen, damit mein Alphabet wieder 
26 Buchstaben hat? Danke.
Moderator #4143623
Lesenswert?
• ▲
▼
Die 'R's als Registerargumente sind tatsächlich reserviert, auch wenn
keine Nummer danach folgt.

Abhilfen:
- keine 'R's als Anfangsbuchstaben verwenden ;-)
- Underscore von dem 'R' (wie von Heinz vorgeschlagen)
- Die Ersetzung der Symbole nicht durch den Assembler selbst, sondern
  durch den Präprozessor vornehmen lassen, also bspw. mit
1
  #define real 16
- avr-as patchen (die Änderung sollte nicht allzu schwer fallen)
Moderator #4144174
Lesenswert?
• ▲
▼
Alles Quatsch in meinem letzten Beitrag :)

Dieser bezog sich auf die bis heute auf meinem Rechner installierte
veraltete Binutils-Version.

In den aktuellen Binutils (2.25) dürfen symbolische Registerargumente
auch mit 'R' beginnen. Außerdem kann man nun auch X, XL, XH, Y, YL, YH,
Z, ZL und ZH als Registerargumente verwenden, ohne diese Namen vorher
explizit definieren zu müssen.

Folgendes ist also legaler Code:
1
real = 16
2
inc real
3
inc zl
4
adiw x,23

Hier ist der zugehörige disassemblierte Binärcode:
1
   0:   03 95           inc     r16
2
   2:   e3 95           inc     r30
3
   4:   57 96           adiw    r26, 0x17       ; 23

Antwort schreiben

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.

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.