[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2743] Re: ぐいぐいプログラミング質問
- Subject: [OSASK 2743] Re: ぐいぐいプログラミング質問
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Sat, 15 Dec 2001 01:56:11 -0000
こんにちは、川合です。
I.Tak. さんは 2001/12/14 22:48:15 の「[OSASK 2740] ぐいぐいプロ
グラミング質問」で書きました:
> ぐいぐい00仕様について質問です。
とてもよい質問です。喜んでお答えしましょう。
> レジスタの初期値はどうなっていますか?
>セグメントレジスタはどれとどれが同じとか、汎用レジスタは0クリアされ
>ているとかは、当てにしてもいいのですか。
はい。仕様では、以下の通りです。
EAX = ECX = EDX = EBX = ESP = EBP = ESI = EDI = 0;
CS = 0x0007;
ES = SS = DS = FS = 0x000f;
GS = 未定;
EIP = 0;
CF = PF = AF = ZF = SF = DF = OF = 0; /* EFLAGS */
これらは仕様として保証している値ですので、あてにしていいです。
なお、セグメントレジスタの値は、読み取ったら下位2ビットが0クリア
されているかもしれません。その辺はIA-32の仕様に依存します(CPL=3
で走ることはぐいぐい00仕様が保証します)。
> pioneerを呼んだ後はどうですか?
>一般コマンドではEBXに入っている値が終了コマンドを指していると保証され
>ますか。フラグは変わりますか。
一般コマンドでは、EBXが終了コマンドを指します(エラーが無い場
合)。フラグは基本的に保存されません。
>そして、特別コマンド(tek0とか)ではどうですか。
特別コマンドは、いろいろややこしくなっています(だから特別なん
ですが・・・笑)。とりあえず、何も保証していないという事にしてく
ださい(いや、ある程度は保証している値があるのですが、どれがどれ
だかちょっとすぐには分かりません)
> 特にEBXが当てにできるとできないとでは、2バイトの差が出ます(^^;;;
なるほど、確かにそうですね。予想がつきました(笑)。
>ちなみにcolorは圧縮して224バイトに縮みました(281から2割減!)。
>こういう遊びが好きです。
うーん、僕も好きです(笑)。・・・言い訳がましいことを書いてお
くと、僕は学習用のサンプルという枠をはみ出さないように自制したの
で、color1は限界には達していません(そもそも、forループを使うべ
きじゃないです。do-whileにすべきです)。
でも、224バイトにはできないかもしれません。ちょっと自信ないで
す(笑)。縮みきったら、公開してくださいね。勉強させていただきま
すから。・・・なんなら、バンドルアプリケーションのいくつかをいじ
ってくださってもいいです。小さい方を採用しますから(ABALLはそろ
そろバンドルをやめる予定なので、改良しなくていいです)。
ええと、2バイトすら重要というレベルに達しているようなので、あ
と6バイトほどプレゼントします(笑)。ヘッダの32バイトのうち、最
初の8バイトはどのように使ってもいいです。残りの24バイトは意味が
あるので、勝手な値にしてはいけません(リザーブのところは必ず0に
しておくこと)。
---
・・・それで、実は、僕も血が騒いだのでやってみました(笑)。と
りあえず、205バイトまでは行きました。えへへ。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/