Forum: Compiler & IDEs gcc bzw. avr-as "undefined combination of operands"


von AndreasH (Gast)


Lesenswert?

Hallo,

ich habe in der Assembler-Datei folgende Zeile eingegeben:

st X+, R27

und erhalte immer den oben genannten Fehler.
Zum Testen habe ich es dann folgendermassen in der C-Datei gemacht:
asm("st X+, R27");
Selbe Ergebnis.

Hiermit st X, R27 bzw. asm("st X, R27");
oder
st X+, R2 bzw. asm("st X+, R2");
geht es auch ohne weiteres.
Laut Doku sollte es aber auch mit R27 gehen.

Weiss jemand warum nicht.

Danke
Andreas

von A.K. (Gast)


Lesenswert?

Doku:

The result of these combinations is undefined:
ST X+, r26
ST X+, r27
ST -X, r26
ST -X, r27

Weil: X ist nichts anderes als R27:R26. Wird also R27 vor oder nach dem
inkrementieren gespeichert?

von AndreasH (Gast)


Lesenswert?

Stimmt, mit ein bischen Nachdenken hätte ich selber darauf kommen
müssen
Danke

Aber wo in der Doku hast Du das gelesen?
Im Assembler-Manual stand es nicht drin.
Will mir jetzt ersparen sämtliche Doku zu durchsuchen.

von AndreasH (Gast)


Lesenswert?

Nachtrag.


Habe es gestern abend im AVR-Studio versucht. Damit ging es
einwandfrei.

von A.K. (Gast)


Lesenswert?

Was nur zeigt, das GAS dem Programmierer unter die Arme greift, der
Atmel Assembler hingegen nach dem "Motto Mist rein Mist" raus
agiert.

Es ist ja eben "undefined", aber durchaus codierbar. Aber was dabei
zur Laufzeit rauskommt mag sich von Version zu Version unterscheiden.

Es steht in der Instruction Set Reference, DOC0856. Unter ebendiesem ST
Befehl.

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
Noch kein Account? Hier anmelden.