Gast
#841343
Hallo, Wenn ich mir den output von GCC mit objdump ansehe, ist mir folgendes aufgefallen: Wenn der Stack-Frame im Epilog von Funktionen zurückgesetzt wird gibt GCC folgende Sequenz aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Der Sinn ist mir klar: Interrupt routinen sollten keinen inkonsistenten Stack pointer bekommen. Aber sollte das "out _SREG_,__tmp_reg__" nicht nach "out _SP_L_,r28" stehen? Ich bekomme den besagten Code im gcc 4.1.2 mit den folgenden Optionen: avr-gcc -mmcu=atmega16 -I. -fpack-struct -fshort-enums -fno-unroll-loops -Wall -Wstrict-prototypes -g Ist das ein Compiler-Fehler oder hat der AVR eine "latenz" bein Schreiben von SREG, die einen Unterbrechung erst nach "out _SP_L_,r28" ermöglicht?