2 Register vertauschen (AVR Assembler)

OP Admin Persönliche Seite #8150
Lesenswert?
• ▲
▼
Wenn die Register knapp werden und man 2 Register vertauschen muss, kann 
man sich den Umweg über ein 3. Register als Zwischenspeicher sparen:

1. Möglichkeit: Stack
Unpraktisch, da pop und push jeweils 2 Takte brauchen.

push R1
push R2
pop R1
pop R2

2. Möglichkeit: XOR
Besser, eor benötigt nur 1 Takt.

eor R1, R2
eor R2, R1
eor R1, R2
#8152
Lesenswert?
• ▲
▼
Jeder Prozessor hat so seine eigenen Tricks.

Beim 8051 geht das z.B. so:

xch a, r0
xch a, r1
xch a, r0

Damit sind R0 und R1 vertauscht und ACC unverändert.

Vorteil beim 8051: Das geht nicht nur mit den 32 Registern sondern mit 
allen 128 Bytes im RAM:

xch a, 055h
xch a, 077h
xch a, 055h


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren