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.
:
Bearbeitet durch User
vermutlich ist r* als Variablenname unzulässig da der Assembler nach dem r die Nummer eines Register erwartet, versuch doch einfach den Unterstrich vorm r.
es wäre wirklich absurd, wenn r* als variablenname unzulässig wäre. ich kann mir nicht vorstellen, dass die leute so einen müll verzapft haben.
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)
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 |
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.