前回の結果はMakefileのこのオプションがコメントアウトされていて、"-O0"な状態でコンパイルされていたわけです。
で、これを"-Os"でやり直してみると、、
ver 3.4.6 では、
138 PORTB = 0x55;
139 84: 85 e5 ldi r24, 0x55 ; 85
140 86: 88 bb out 0x18, r24 ; 24
ver 4.4.3 でも、
120 64: 25 e5 ldi r18, 0x55 ; 85
:
152 PORTB = 0x55;
153 7c: 28 bb out 0x18, r18 ; 24
と、ちゃんと outを使った内容にコンパイルされます。コードサイズはそれぞれ、
ver 3.4.6
1 /usr/local/avr-gcc3/bin/avr-size led.elf
2 text data bss dec hex filename
3 154 0 0 154 9a led.elf
ver 4.4.3
1 /usr/local/avr-gcc4/bin/avr-size led.elf
2 text data bss dec hex filename
3 148 0 0 148 94 led.elf
と、ぎゅっと小さくなっています。 おそまつさま、、
割り込みを使わないこのプログラム、実はさらにコードサイズを小さくする秘策が、、