[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-gcc-list] Oh why....
From: |
Tvrtko A. Ursulin |
Subject: |
[avr-gcc-list] Oh why.... |
Date: |
Thu, 21 Nov 2002 18:00:35 +0100 |
User-agent: |
KMail/1.4.3 |
Please look at this piece of code:
void lcd_at(uint8_t line, uint8_t col)
{
4e8: 36 2f mov r19, r22
uint8_t adr = col;
uint8_t l1 = line&1;
4ea: 28 2f mov r18, r24
4ec: 21 70 andi r18, 0x01 ; 1
uint8_t l2 = line&2;
4ee: 82 70 andi r24, 0x02 ; 2
l1 <<= 6;
4f0: 22 95 swap r18
4f2: 22 0f add r18, r18
4f4: 22 0f add r18, r18
4f6: 20 7c andi r18, 0xC0 ; 192
l2 <<= 3;
4f8: 88 0f add r24, r24
4fa: 88 0f add r24, r24
4fc: 88 0f add r24, r24
adr |= l1 | l2;
4fe: 28 2b or r18, r24
500: 32 2b or r19, r18
lcd_address(adr);
502: 30 68 ori r19, 0x80 ; 128
504: 83 2f mov r24, r19
506: b8 df rcall .-144 ; 0x478
}
508: 08 95 ret
Compiler doesn't like LSR/LSL so he rather spends 3(4) cycles instead of 1?
I am confused...totally....
avr-gcc-list at http://avr1.org
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-gcc-list] Oh why....,
Tvrtko A. Ursulin <=