[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2797] Re: Smaller color



  こんばんは、川合です。


I.Tak. さんは 2001/12/26 20:37:51 の「[OSASK 2795] Re: Smaller c
olor」で書きました:

(スタック開放)
> それは前から省きたかったところです(^^; どうせfarコールした後も
>戻ってこないんだし、いや、でも倫理面の問題が……と。

  これは、I.Tak.さんのスタンスにかかっています。

  サイズを徹底的に追求するのか、それとも教育的な価値を維持してい
くのか・・・。僕としては、どちらでもかまいません。

>>>    xchg [ebx +LIB_PutString.x_pos], ch
>>の代わりに、
>>    xor dword [ebx +LIB_PutString.x_pos], byte 10
> これって byte 11 ……

  え?なぜに11なんですか?0と10が交互にくればいいというわけでは
ないんですか?・・・ごめんなさい、よく分かりませんでした。

>>  いやここまでやるならループ条件をnsからnzに変更して、LOOP命令を
>>使いましょう。これでさらに1バイト減らせます。
> あれ、color  0 は表示しなくても構いませんか。背景色固定ですね(^^

  ええ、僕は汎用性を犠牲にしてでもサイズを小さくしようとしていま
す。汎用性重視なら、data_sizeがジャスト0x0100であることを利用し
たらどうかなんていいませんよ(笑)。

  でもこの辺もI.Tak.さんのお好きなようになさってください。

> 多分そこのアラインも試したはずです。そして、変わらなかったところ
>はメモリを節約してあります(無意味か)。

  ああ、なるほど、そういうことでしたか。それならいいです。

> そういえばASKAでは構造体内のアラインは使えるんでしょうか。使え
>ないから↑になるんでしょうかね。

  正式仕様では使えます。構造体内のoriginも使えます。でも今のバー
ジョンはそういう事はできないようです。しかし、代替方法は一応あり
まして、

struct ALLSTATIC {
    WORK work;
    int libwork[256];
    int window[128];
    int wtitle[112]; // 64 + 6 * 8 (6文字分)
    int textbox[1344]; // 64 + 20 * 8 * 8 (20x8文字分)
};

を、

struct ALLSTATIC {
    WORK work[512];
    int libwork[256];
    int window[128], [128];
    int wtitle[112], [144]; // 64 + 6 * 8 (6文字分)
    int textbox[1344]; // 64 + 20 * 8 * 8 (20x8文字分)
};

とすることはできます。この場合、workがポインタになってしまうので
参照方法が少し変わりますが。ASKAでの配列の添え字は要素数ではなく
バイト数なのです。

> ぼやきページも記録更新してくださいよ。(^^

  一通りの改良が済んで、決定的なサイズが決まったら反映させるつも
りでいます。

> それにしても今考えると、窓タイトルに hello, world って出るだけで
>十分エントリ可能な気がします。

  いや、やっぱりそれはだめでしょう。OSASKのハンディーとしてこれ
はがんばるしかありません(笑)。

---

>む、adelaid4がない。

  すみません、アップロードする時にファイル名を間違えました。今は
直っています。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/