Hallo kautz

gute frage, habs mahl ausgesucht, mochtes auch mahl verstehen

for(i=0;i<=100;i++);

compilieren und guck in die test.lst datei

Code:
// for(i=0;i<=100;i++); compiliert als:

ldi r24,lo8(0)      //lade 0 in register 24
.L6                 //sprung label
subi r24,lo8(-1)    //substrahiere r24 mit -1 (selbe wie addierung mit +1) 
cpi r24,lo8(100)    //vergleich r24 mit 100
brio .L6            //spring zuruck nach L6 wenn niedriger

ldi r24,lo8(0)      //1 clockcyclus
.L6                 //0
subi r24,lo8(-1)    //1 * 100 = 100 clockcyclus \
cpi r24,lo8(100)    //1 * 100 = 100 clockcyclus  |<--- wird ja 100 mahl durchlaufen
brio .L6            //1 * 100 = 100 clockcyclus /

zusammen sind 301 clockcycles
zusammen sind 301 clockcycles
Ein clockcycle by 8MHz is 1/8us
301 * 1/8 us = ongefahr 38us

ist ja blitzschnell

von diesen loops (for(i=0;i<=100;i++) Bild   kan mann 26000 stuck hintereinander programmieren und dafur braucht die processor nur eine secunde (!) um die alle 26000 aus zu fuhren

wenn integer stat char benutzt wird mussen immmer 2 bytes addiert und verglichen werden und ich schatze dass wird ungefahr 4 bis 6 * 100 clockcycles extra daurn und machts mehr als zweimahl so langsam. (kanst du ja selbst ausprobiere/ausrechnen)

gruss

Henk