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++) 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