はりぼて日記
2007 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 10
2006 | 11 | 12
3月 25 (日曜日) 2007
16:31
6日目
 
6日目〜。

ふむ。makeの説明はトントンと進んで・・・

P124のdsctbl.cの部分。なんと!中ボスだ!!!

(デェ〜ン・・デデデッテッテッテ♪デンドリレンレリレ〜ン♪)by 杉山こういち


ここは、難しくはないんですよねぇ。ややこしくて煩雑なだけ。なので、初めて読まれる人は、「とにもかくにもいくつかあるGDT設定用のパラメータ(10バイト必要)を、むりやり8バイトに押し込んでいるだけ」っていう理解にして進めちゃうのがいいかも。(意外と、後でもう一回読んだりするとツルツルっと解るものですよ(^^ )

 
30日を過ぎたBlogにはコメントできません。
16:16
5日目3
 
5日目終了〜

・・・さてここで、ちょっとした疑問。
P116で、セグメント1とセグメント2の設定をしてる。で、セグメント1は、0x0〜0xffffffffまで。すなわち、i386がアクセスできる全てのメモリを設定してるよね?

・・・ということは、たとえばそれ以降、どんなセグメントを宣言しても、それは「セグメント1と重複している」わけだけど、これはいいのかな???

セグメントはメモリを好きな大きさに仕切り、先頭を0番地扱いできる便利な機能だけど、これがなんのためにあるのかって言えば、それは「メモリのダブルブッキング」を起こしてシステムがおかしくならないようにするため。

たとえばその後は、セグメント3は0x0100〜0x0200、セグメント4は0x0201〜0x0300という設定をしたとする。プログラムAをセグメント3で。プログラムBをセグメント4で実行させれば、AとBがメモリの重複を起こすことはない。

で、ここで、プログラムしているオイラがバカなので、セグメント5を、うっかり0x0150〜0x0250に設定しちゃった。さらにそこを使って、プログラムCを動かしちゃった!

結果は当然のごとく、システムすっ飛び。まあ、それはいい。<良くないが・・・

その場合、たとえば設定時に、CPUから「バカたれ!重複してるぞ!」というようなエラーや警告が出ることはないって理解でいいのかな?(そうなんだろうなぁ。現に重複しているわけだし)

つまり、
・セグメントでちゃんと分けておけば、重複は起きない!
・「ちゃんと分ける」のはプログラマの仕事
・「ちゃんと分け」をミスれば32bitだろうとプロテクトモードだろうと逝ってしまう!

ってことでOKなのかな????
 
30日を過ぎたBlogにはコメントできません。
15:37
5日目2
 
わーい。あった!これこれ!

P102。下のソース。これが面白いよね。p[3]とかやってるけど、このソース内には、どっこにもp[7]なんて宣言はない!。でも使える。使えるだけじゃなくて、ちゃんと問題なく動作もしちゃう!!

これがなによりも、p[x]は配列でもなんでもないっていう証拠。
また、p[3]なんてのは、単に char *p;p=p+3;*p を、面倒なので短く書いただけに過ぎないってことが解る!


おぉ〜っと!これ重要。メモメモ・・・

 externはソース以外で準備したデータだという宣言

(これ利用して、ボタンだのタイトルバーだののデータを一まとめにしたら見た目のカスタムやりやすそうだな・・・)


むむむ!セグメンテーション!
これ、幸いオイラは1巡目で理屈の理解だけはできたんだけど、確かに今みてもむずかしいよね?
自分の理解というより、「人に説明する・教える場合、なんて言えばいいんだろう?」って考え込んじゃう。
 
30日を過ぎたBlogにはコメントできません。
13:55
5日目
 
5日目〜。

P100の付近。うんうん。思い出すなぁ。この、「構造体をポインタ化しちゃえばまるでデータベースのごとくメモリ内部を参照できる」という手法。(まさかこれが後にFDのFATの読み込み処理に活躍するとは)

おっと!。ここ重要だね。(ちょっと忘れてたのでメモメモ・・・)

・構造体をポインタ化すると当然参照は*が必要(*pが値になるのと同じ)
・ポインタ化していない構造体の内部を覗くには、構造体名.内部変数 となると。
・で、今回はポインタ化したので構造体名に*が付いて、*構造体名.内部変数の形になると。(たーんじゅん!)
・でもC言語ってバカだから、これだと勘違いするらしい
・なので、(*構造体名).変数名って書いてやらないといけない(オバカな言語だ〜)
・基本的には、これだけ知ってればじゅーぶん!!!!
・・・・ただし、この*を使うパターンは書くのが面倒なので
・なので、構造体名->変数名という、「省略書き」がある

と・・・



 
30日を過ぎたBlogにはコメントできません。
04:18
4日目番外1
 
積み残しの「桁指定」。だいたいまとめることができた。

たぶんこれで合っているはず!

 
30日を過ぎたBlogにはコメントできません。
00:03
4日目5
 
4日目終了〜!

・・・しかしこうして改めて見ると、4日目、なかなかのボリュームだなぁ。(重要な基礎やテクニックもかなり入っていると思う)

逆に言えば、「たかだか画面に四角を三つ書く」ことがどれほど大変なことなのかってことだよね?

 
30日を過ぎたBlogにはコメントできません。
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.