AVR Studio 4 + GCC
Mam taki fragment kodu:
Po kompilacji z parametrem -0s otrzymuję:
Oczywiście działa ok, ale ponieważ zależy mi na szybkości chciałbym wyeliminować ponowne ładowanie rejestru R24 a konkretnie:
Jak to zrobić w C?
Mam taki fragment kodu:
if(--bit_number == 0){
FLAG_all_bits_sent = 1;
}Po kompilacji z parametrem -0s otrzymuję:
66: if(--bit_number == 0){
+00000179: 91800067 LDS R24,0x0067 Load direct from data space
+0000017B: 5081 SUBI R24,0x01 Subtract immediate
+0000017C: 93800067 STS 0x0067,R24 Store direct to data space
+0000017E: 91800067 LDS R24,0x0067 Load direct from data space
+00000180: 2388 TST R24 Test for Zero or Minus
+00000181: F419 BRNE PC+0x04 Branch if not equal
68: FLAG_all_bits_sent = 1; // set bits end flag for Play_sound(void) function
+00000182: E081 LDI R24,0x01 Load immediate
+00000183: 93800061 STS 0x0061,R24 Store direct to data space
70: }Oczywiście działa ok, ale ponieważ zależy mi na szybkości chciałbym wyeliminować ponowne ładowanie rejestru R24 a konkretnie:
+0000017E: 91800067 LDS R24,0x0067 Load direct from data spaceJak to zrobić w C?