グローバル記述子テーブル (GDT) の基本を確認し、 asm を使用して "GDT.inc" を正常に作成したので、ブートローダーに簡単に含めることができます。赤ちゃんのステップとして、メモリ内の最初のバイトからバイト 0xFFFFFFFF (メモリ内の任意の部分) まで読み書きするようにコード記述子とデータ記述子を構成しました。
; null descriptor
dd 0 ; null descriptor--just fill 8 bytes with zero
dd 0
; code descriptor: ; code descriptor. Right after null descriptor
dw 0FFFFh ; limit low
dw 0 ; base low
db 0 ; base middle
db 10011010b ; access
db 11001111b ; granularity
db 0 ; base high
; data descriptor: ; data descriptor
dw 0FFFFh ; limit low (Same as code)
dw 0 ; base low
db 0 ; base middle
db 10010010b ; access
db 11001111b ; granularity
db 0 ; base high
ここでの目的は、GDT を使用して 2 つの別個のリージョンを作成することです。たとえば、最初の 512B を 1 つのリージョンとして、次の 512B を別のリージョンとして、スペースを未使用のままにします。
そのために何ができますか?