リンカの吐いたマップファイルをチェックしてて驚愕した。RAMが256バイトしかないマイコンなのに、開発環境提供のスタートアップルーチンが120バイトもRAMを占領するってどういうことよ!? 希少なRAMを半分近く使っちゃうとかありえないだろ!? プログラム本体は、静的変数50バイト、最大スタック50バイトぐらいなのに。
調べてみると、ヒープやら atexit関数やらのために大胆にRAMが確保されてたようだ。そんなもん使わないので、ばっさり削ってスタートアップルーチンをアセンブルし直した。
なんか、パソコンのアプリとは6ケタぐらいメモリの桁が違う話だなぁ。文字通り、ミリオネア(百万長者)の逆の貧民的プログラミング。