ページへ戻る

− Links

 印刷 

GUIGUI01​/memo15 のバックアップ差分(No.3) :: OSASK計画

osaskwiki:GUIGUI01/memo15 のバックアップ差分(No.3)

« Prev[4]  Next »[5]
2: 2008-12-23 (火) 15:30:18 ソース[6] 3: 2008-12-23 (火) 15:30:18 ソース[7]
Line 3: Line 3:
-メモのうち重要な部分をそのうちまとめてまともなページを作る -メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (30) helloの改良の歴史 (118→18) *** (30) helloの改良の歴史 (118→18)
--(参考として)''DOS''+-(参考として)''DOS''の.COM形式:
--22バイトが限界 --22バイトが限界
--ヘッダとかはない。AHとDXに代入してINT21H。終了はRETでいい。 --ヘッダとかはない。AHとDXに代入してINT21H。終了はRETでいい。
Line 28: Line 28:
-''27バイトのhello'': -''27バイトのhello'':
--DOS版が22バイトなのは16bitだからしょうがないと思えたが、「はりぼてOS」に負けたのは屈辱的だった。そこで設計をやり直す。 --DOS版が22バイトなのは16bitだからしょうがないと思えたが、「はりぼてOS」に負けたのは屈辱的だった。そこで設計をやり直す。
---適当な標準値を設けてそれを変更する方式で、スタックサイズなどを記述させることに。標準値は小規模プログラムには十分な値なので、helloでは変更の必要が全くない。 +--適当な標準値を設けてそれを必要に応じて変更する方式で、スタックサイズなどを記述させることに。標準値は小規模プログラムには十分な値なので、helloでは変更の必要が全くない。 
---またパケット要素を32bit固定長からeh4という4bit単位可変長エンコードに変更(のちにgh4にアップグレードするがhelloは影響なし)。小さい数値なら4bitで収まるので、パケット効率8倍に!+--またパケット要素を32bit固定長から、eh4という4bit単位可変長エンコードに変更(のちにgh4にアップグレードするがhelloは影響なし)。小さい数値なら4bitで収まるので、パケット効率8倍に!
--またレジスタ初期値を工夫したので、EBPの値を破壊しない限り、CALL(EBP)の2バイトでAPI-callができるようになった(EBXを変更しなければEIPからパケットが始まると見なされる)。終了もDOSと同じくRETだけでもOKに。初期化funcはシステムが事前に適当にやってくれるので、それを変更したいとき以外は省略可能。 --またレジスタ初期値を工夫したので、EBPの値を破壊しない限り、CALL(EBP)の2バイトでAPI-callができるようになった(EBXを変更しなければEIPからパケットが始まると見なされる)。終了もDOSと同じくRETだけでもOKに。初期化funcはシステムが事前に適当にやってくれるので、それを変更したいとき以外は省略可能。
--旧OSASKでは8バイトもあったシグネチャを2バイトに。 --旧OSASKでは8バイトもあったシグネチャを2バイトに。
« Prev[4]  Next »[5]