Zitat Zitat von Siro Beitrag anzeigen
Er ruft schon bei der ersten Zeile ein Unterprogramm (Multiplier) auf.

33 Zyklen
Code:
volatile unsigned char t,cnt;

void main(void)
{
   t = cnt + cnt;   // hier ruft er wieder eine Multiplikation auf. 
   cnt = cnt + t;    
}
Ist schon lustig, daß der Compiler in cnt + cnt 2*cnt erkennt. Ich hab anderes ähnliches gefunden: für t = 1 erzeugt er clear t und dann inc t.

so macht er aber besseren Code ohne Multiplikation: 15 Zyklen
Code:
  t = cnt;
  t = t + cnt;
  cnt = t + cnt;
Das wäre das, was ich in Assembler schreiben würde, wobei t dann der Akku wäre.

MfG Klebwax