資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。
  • ソース を表示
  • GDTへの設定 は削除されています。
2: 2007-03-25 (日) 19:50:36 ソース バックアップ No.2 を復元して編集 現: 1970-01-01 (木) 18:00:00 ソース 編集
Line 1: Line 1:
-OS自作本の6日目。P124。 
-ここは難しくはありませんが、とても煩雑でややこしい部分。 
- 
-初めて読む方でもしうまく理解できなかったら、''「とにもかくにも合計80ビット分くらい必要なデータを、むりやり64ビットに押し込んでいる」''程度に理解して、先に進んじゃうのがいいかも。(それで後でもう一回よく読んでみれば意外とスルスルっと解ることも多いので) 
- 
-・・・まあでも、これじゃちょっとあんまりなので、オイラなりの解説〜♪ 
- 
- 
-*GDTへの設定に必要なもの [#y2711dbc] 
--とにかく、GDTには 8,192個分の設定ができる。(セグメントを 8,192種類設定できる) 
--各1個の設定には、大きさ・開始番地・属性の三つを設定する必要がある。 
- 
-まずはこれだけ。属性はちょっと特殊なのでちょっと置いておく。とりあえずは16ビット必要ということで。 
- 
-そう考えると、こういう設定パラメータが必要になると。 
- 
-||C大きさ|C開始番地|C属性|h 
-|~範囲|0x0〜0xFFFFFFFF|0x0〜0xFFFFFFFF|0x0〜0xFFFF| 
-|~必要ビット数|32|32|16| 
-|~例|0x00230000|0x0000C000|0xA4FD| 
- 
-さて、これを見ると、一つのセグメントに設定しなくちゃいけないパラメータの合計は32+32+16で、合計80ビットが必要になるわけです。 
- 
-''しかし!!'' 
- 
-これを設定するためのLGDTというレジスタが、なんと48ビットしかないんですよ!!!。 
-~(これはインテルがそう設計したんだからどうしようもありません) 
- 
-そのため、上記の表の「例」の部分みたいに素直に設定できないんです。そのために、値を押し込む(一種の圧縮?)必要があるのです。 
- 
-LGDTの48ビット。48ビットってことは、2進数だと0x000000000000000000000000000000000000000000000000とこうなります。(48桁ですね) 
- 
-この48桁に上記のデータを分解・圧縮して収めるわけです。こういうふうになります。 
- 
-#ref(ldtr1.jpg) 


トップ   編集 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 0, today: 0, yesterday: 0