描述符屬性:db位
情況一:對cs段的影響
d = 1 採用32位定址方式
d = 0 採用16位定址方式
字首67 改變定址方式
情況二:對ss段的影響
d = 1 隱式堆疊訪問指令(如:push pop call) 使用32位堆疊指標暫存器esp
d = 0 隱式堆疊訪問指令(如:push pop call) 使用16位堆疊指標暫存器sp
情況三:向下拓展的資料段
d = 1 段上線為4gb
d = 0 段上線為64kb
cpl(current privilege level) :當前特權級
cs:段後兩位稱為cpl:當前特權級,可以理解為當前程式它的特權級是什麼
注意:cs和ss段選擇子後兩位永遠都是相同的
dpl(descriptor privilege level) 描述符特權級別
dpl儲存在段描述符中,規定了訪問該段所需要的特權級別是什麼,通俗的理解為如果你想訪問我,那麼你應該具備什麼特權.
rpl(request privilege level) 請求特權級別
rpl是針對段選擇子而言的,每個段的選擇子都有自己的rpl。
資料段的許可權檢查
參考如下**:
比如當前程式處於0環,也就是說cs段暫存器後兩位為0,cpl=0
mov ax,000b //mov ax,000b //1011 段選擇子後四位為11 ,rpl = 3 mov ds,ax //ax指向的段描述符的dpl = 01011 段選擇子後四位為11 ,rpl = 3
mov ds,ax //
ax指向的段描述符的dpl = 0
資料段的許可權檢查:
cpl <= dpl 並且 rpl <= dpl (數值上的比較)
只有當cpl和rpl都小於等於dpl的時候,資料段的賦值才會成功
注意:**段和系統段描述符中的檢查方式並不一樣
總結:cpl cpu當前的許可權級別
dpl 如果你想訪問我,你應該具備什麼樣的許可權
rpl 用什麼許可權去訪問乙個段
為啥要有rpl?
本可以用「讀 寫」的許可權去開啟乙個檔案,但為了避免出錯,有些時候我們使用「唯讀」的許可權去開啟
24 段描述符屬性
s位用於指定描述符的型別,當s 0表示是乙個系統段,s 1則表示是乙個資料段或 段,對於系統段我們將在後面介紹。type欄位有4位,用於指定描述符的子型別。對於type來說,當s 1或0時,type所表示的含義是完全不一樣的,這裡我們只討論s 1的情況。對於資料段來說,type有e,w,a三位 對於...
段描述符屬性P位和G位
前言 段描述符屬性p位和g位筆記 自己在學習段描述符與段選擇子的時候有提出乙個問題,如下圖所示,這個問題老師在段描述符屬性p位和g位中提及 因為老師說段暫存器是有96位的,但是可以發現段描述符的64位再加上段選擇子16位,實際總共才是80位,那剩下的16位是從 來的呢?這裡再來看下段描述符的結構 首...
7 保護模式 段描述符DB位
b 0 64k 65535位元組 b 1 4g 指定的虛擬4gb空間 如果需要去16位的加個字首67 1.db位位於第22位 對以下三種情況都有影響 只要是 段都為b,只要是資料段都為d 情況一 對cs段的影響 d 1 採用32位定址方式 d 0 採用16位定址方式 字首67 改變定址方式 情況二 ...