Peter II schrieb:
> warum willst du überhaupt SREG sichern? Dafür gibt es doch überhaupt
> kein Grund.
Vermutlich will er den Code einer ISR in main() testen. Das ist u.U.
keine ganz schlechte Idee, habe ich auch schon das eine oder andere Mal
getan, einfach nur, um das Debugging zu erleichtern.
> Nach jeder Anweisung steht wieder was anderes drin.
Nein, längst nicht nach jeder Anweisung steht da was anderes drin. Sehr
viele Anweisungen tangieren SREG überhaupt nicht.
> [c]
Ah, fuck. C... Naja. Da muss man natürlich mehr oder weniger raten, ob
SREG betroffen sein könnte oder nicht. Maximal ist ein "educated guess"
möglich oder die Lektüre des Assemblercodes, den der C-Compiler
raushaut. Der aber schon bei der Verwendung einer anderen
Optimierungsoption wieder völlig anders aussehen kann und erst recht bei
Verwendung eines anderen Compilers. Im Allgemeinen wird man also in C
SREG sichern müssen, wenn man den Einflussbereich des linearen
Compilerlaufs verlässt...
In Asm hingegen absolut kein Problem: man schaut einfach in die
"instruction set reference". Da steht das einfach für jede legale
Anweisung eindeutig drin. Und zwar nicht nur OB SREG beeinflusst wird,
sondern auch noch ganz genau WIE...
Das ist einer der Hauptvorteile von Asm. Volle Kontrolle der machine
flags (lesend und schreibend). Ein erklecklicher Teil der in Asm
erzielbaren Performancevorteile resultiert aus genau diesem Sachverhalt.