Más kérdés, hogy így a compiler két utasítást is bevágott, egyszer tölti a az Y 16 bites "címző" regisztert, majd beolvassa a akksiba az ott talált értéket. Lehet ez gyorsabb mint implicite olvasni a regisztert ... megnéztem nem, ugyanúgy 4 ciklus.
Ez itten valoszinuleg optimalizacio-fuggo. Az avr-gcc is csinal olyat hogy egy *(volatile uint8_t *)(0x20) olvasast azt siman asm("in r24, 0x00;");-nak fordit mondjuk -O3-as optimalizacioval. De optimalizacio nelkul pedig ugyanigy asm("ldi r28, 0x20; ldi r29, 0x00; ld r24, Y");-nek. Ezeeobbi 1 oracilus, ezutobbi pedig 3 vagy 4 :) De hogy miert az rejtely...