- Man sollte asm volatile (anstatt asm) nehmen, damit GCC nicht auf die Idee kommt, was wegzuoptimieren. Das inline asm hat ja keine output-Operanden, also aus gcc-Sicht keine Wirkung auf die Welt.
- Sollte das %C0 nicht ein %A2 sein?
- Zur Sicherheit sollte dem GCC mitgeteilt werden, daß sich Regsiterinhalte ändern. Momentan gibt es wohl keine Probleme, aber wenn du txd zum Beispiel als static deklarierst, kann GCC es inlinen und das asm verändert Register, ohne daß GCC was davon merkt. Das Problem könnte IMHO auch auftauchen ohne inlining, weil nur nichtinitialisierte Variablen als Input(!)operanden verwendet werden. Die Operanden sind hier also besser Output-Operanden.
Lesezeichen