Die lokalen Variablen brauchen nicht als volatile (flüchtig) deklariert zu werden.
Ich stelle mich folgendes vor:

Eine function (A) mit 40 normalen (nicht-volatile) Variabelen.
Der compiler der ist intelligent, der nutzt fur jeden variabele ein anderes Register. Da aber die 30 Atmega Register nicht 40 unterschiedene Variabelen speichern konnen werden schon einige automatisch 'unterwasser' als volatile angewendet.

Gibt es nur 20 Variabelen dan genugen die 30 Atmega Register um jeden Variabele in ein specifischen Register zu speichern und nur die Register an zu sprechen.

Aber, wenn jetzt ein Interrupt passiert der auch viele register benutzt da kann ich mich folgendes vorstellen: die Register die im Interrupt verwendet werden werden am anfang vom Interrupt zuerst auf die Stack ge'pushed'.

Wenn meine 40-variabele function (A) ein eindere Funtion (B) anruft werden alle Register die von (B) benutzt werden zuerst in (A) in ihren originalen Speichplatze zuruck geschrieben.

Stimmt dieses so ein Bisschen?

Gruss

Henk