[OSASK 4059] Re: kata08

  こんにちは、川合です。


くーみん さんは 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/


ML番号でジャンプ
ML単語検索