Jetzt willst Du mir sagen, daß die menschliche Birne bei 32 ARM-Registern oder einer ebensolchen Anzahl ATMega-Registern noch den Überblick behält?
Ja locker. 6 gehen eh für die X,Y,Z-Pointer drauf. r0, r1 ist mul-Rückgabe, noch ein paar Counter und Temps.
Wenn Du z.B. eine Software-PWM für 8 Kanäle programmierst, nimmst Du 8 der Register für die PWM-Werte, und einen PWM-Counter. Damit musst Du in der zeitkritischen Routine keine Werte im SRAM rumschubsen und bekommst eine PWM-Geschwindigkeit, die erreicht kein C-Compiler.
Das Problem bei C aufm AVR ist erstmal eher, dass es versucht alles auf 16bit zu trimmen, was bei einem 8-Bitter natürlich reichlich sinnlos ist. Das kann Freepascal inzwischen sogar besser.