[F] GCC Optimierung

Gast #3073304
Lesenswert?

Unten ein Codeauszug, bei dem ich meine, dass der GCC (avr-gcc (WinAVR 
20100110) 4.3.3) Optimierungen (Stufe S(ize)) nicht oder nicht 
vollständig durchführt.

*1 Da in R24 der Wert schon steht, braucht er nicht extra gelesen 
werden.

*2 SUBI setz das Z-Flag, so dass der Testvefehl überflüssig ist.

Sehe ich das richtig?



54:          --timeout;
+000001F0:   8189        LDD       R24,Y+1        Load indirect with 
displacement
+000001F1:   5081        SUBI      R24,0x01       *2 Subtract immediate
+000001F2:   8389        STD       Y+1,R24        *1 Store indirect
55:          if (timeout == 0)
+000001F3:   8189        LDD       R24,Y+1        *1 Load indirect
+000001F4:   2388        TST       R24            *2 Test for Zero or 
Minus
+000001F5:   F099        BREQ      PC+0x14        Branch if equal

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren