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.
ist 'real' evtl. ein reserviertes Keyword? Teste mal mit _ davor.
es ist egal, was danach kommt. rotfuchs geht auch nicht.
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.
Weiss sonst keiner Rat?
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 | |
- 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 | |
2 | |
3 | |
4 | |
Hier ist der zugehörige disassemblierte Binärcode:
1 | |
2 | |
3 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.