2010年7月2日金曜日

下で、kitaxさんからコメントをいただいている通り、じつはこれ、リンカ最適化の"-O"オプションで制御されます。
前回の結果は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

と、ぎゅっと小さくなっています。 おそまつさま、、
割り込みを使わないこのプログラム、実はさらにコードサイズを小さくする秘策が、、

1 件のコメント:

kitax さんのコメント...

まぁそういうこともありますて。

現在、チョッパー型の昇圧回路に凝っています。
いろいろ工夫を加えた結果、開放電圧、1.5Vの安定化電源でVin=0.767V、Iin=1.146A → Vout=.3.1V、Iout=.301A 効率=81.9% を達成。
単3電池一本で、爆光ライトを作ろうって魂胆です。
発振制御をtiny2313辺りでやってやろうかなと。

こういうのやりだすと、勉強することたくさんあるなぁ・・。

++ Myself ++

普通(?)のサラリーマン -- 生活のすきま時間にキーボードとはんだごてを持ち替えてプログラミングと電子工作してます