For-Next: Ok javítom:)
Én már csak így tanultam....
A fogalmazás nem volt a levélben teljesen pontos:
"Ha a for ciklusban van ciklusmag (legyen az bármi), akkor a fordító nem tudja kipotimalizálni. Üres ciklusmag esetén természetesen mintha ott sem lenne maga a ciklus."
Az eredti szövegben a következő bekezdés: "És miért van benn néhány karakter sorosporti kiírása? Nagyon egyszerű a válasz: 9600 bps adási sebesség esetén (~1 kbyte/sec) 1 karakter kiírása: 1 msec időt vesz igénybe!"
Kód: Egész kijelölése
for (long i=0;i<1250000;i++){
//Serial.print("6");
asm volatile ("nop"::);
}
ekkor a késleltetés ~1,5-2 sec-t eredményez. Azaz a NOP-t nem veszi észre a fordító (Arduino-0022). -> Elírtam! A //Serial.print("6"); ugye kimarad és a NOP-t nem mint üres utasítást kezeli a fordító! Hanem mint tényleges valamit is csináló utasítást...
C specifikus dolog: A NOP egyetlen esetben kerül ki az utasításokból optimalizálás alatt, ha a GCC fordítót a legdurvább optimalizációra (o0) kényszerítjük!
1.0 alatt tesztelni kell.
U.i.: Irgumburgum, hogy ilyen t@kéletlen az arduino, bár a felhasználó minek is akarna az INT-be várakozást tenni....