こんにちは、川合です。 くーみん さんは 2002/07/16 12:17:25 の「[OSASK 4054] Re: kata08 」で書きました: >凄いです。不思議です。250バイト縮みました。 それは、ほめすぎです(笑)。効果があってよかったです。 >何が起きているのか全然分かりません。 >ポインタのお陰なんでしょうかね? >雰囲気からして、良く使われる軽量化のような気もしますが。 まあ、何が起きているか説明するのは面倒なんですが、容量の大きな 配列をスタック上にとるのは、かなりバイナリサイズがでかくなるって ことなんです。 ちゃんと説明してないから、分かんないでしょう。すみません。その うち時間ができたら説明します。 >良く使うものをグローバル変数にして(どうせずっとメモリ領域を使う) >値を渡す手間を省こうかとは思いましたが。 これは効くときと効かないときがありますので、ちょっとやっては様 子を見る、というのが大事です。もっとも、僕のやつも効くときと効か ないときがあるんですがね。 >> 他の部分の改造は、手間が多いので今回はパスです。 > >まだまだありそうですね^^; とても喜ばれてしまったので、もう一つ。 static int MALLOC_ADDR; #define malloc(bytes) (void *) (MALLOC_ADDR -= ((bytes) + 7) & ~7) #define free(addr) for (;;); /* freeがあっては困るので永久ループ */ の3行を#define USE_RAND 1のあとにでも挿入してください。そしてさ らに、OsaskMain()のライブラリ初期化の前に、 /* 何よりも最初にやるべきこと(lib_initよりも先!) */ MALLOC_ADDR = lib_readCSd(0x0010); の2行を追加してあげてください。合計5行の改良です。 これはintroeのhellocaで紹介されているテクニックです。とりあえ ず、150バイトくらい小さくなると思います。 それでは。 -- 川合 秀実(KAWAI Hidemi) OSASK計画代表 / システム設計開発担当 E-mail:kawai !Atmark! imasy.org Homepage http://www.imasy.org/~kawai/