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
zusammen sind 301 clockcyclesCode:// 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
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







Zitieren

Lesezeichen