1. 程式人生 > >整理標頭檔案及程式說明

整理標頭檔案及程式說明

  • 標頭檔案

        將一系列的函式宣告放在一個頭檔案裡,在分割出來的檔案裡面分別使用 #include<bootpack.h> 引用,減少重複宣告。

  • 程式說明:

      GDTR 的低16位是段上限,它等於“GDT的有效位元組數減一“,剩下的高32位,代表GDT的開始地址。

       為了儲存段的大小,段的起始地址,段的管理屬性,聲明瞭結構體segment_descriptor。段的地址使用32位表示,是段的基址,結構體中又使用了base_low(2個位元組),base_mid(1個位元組),base_high(1個位元組)三段,合起來剛好是32位。

         由於段上限只有兩個位元組,表示一個段有多少個位元組,段上限最多隻能指定1MB為止。所以intel設定了一個標誌位Gbit,但標誌位為1時,limit的單位不解釋成位元組,而是解釋成一頁(4KB)。1M*4KB=4GB,所以可以指定4GB的段。

      

        按照文章的說法,前四個位元組應該是段的起始地址,其中base_low佔2位元組,base_mid佔1位元組,base_high佔一個位元組。段上限佔20個位,第四五個位元組是limit_low,加上第六個位元組limit_high的低四位總共20位用於儲存段上限。Limit_high的高四位和第7個位元組用於儲存段屬性。