X86保護模式程式設計總結(4)

2021-08-25 13:11:49 字數 1984 閱讀 1673

cpu標識:

eflage標誌位

8086cpu: 第12-15位始終置位

intel286cpu: 在實模式下,12-15位始終清除

32位cpu: 在實模式下,第15位始終清除,第12-14位具有最後被裝入的值.

在保護模式下,第14位具有最後被裝入的值,第15位被清除.

第18位: intel486和pentium置位. intel386清除.

第21位: 用於確定程式是否可執行cpuid指令

關於特權級:

cpl: 表示當前執行程式cs段的rpl.

rpl: 表示當前程式要訪問某個段的請求特權.

dpl: 表示某個段描述符中描述一段的訪問特權級

注: 比如當時皇帝的特權是cpl,皇帝要微服私訪乙個縣(dpl),他只用了省級(rpl)的職位就嚇到了縣官.

cs段暫存器的最低兩位儲存當前特權級(cpl).這是正在執行的程式的特權級.

ss段暫存器的最底兩位也儲存cpl的副本.通常,cpl等於正從其中取指令的**段

的特權級.當控制被轉移到具有不同特權級的**段時,cpl才改變.

段描述符包含被稱為描述符特權級(dpl)的字段.dpl是適用於段的特權級.

段選擇符包含有被稱位請求者特權級(rpl)的字段,rpl是建立該選擇符的過程試圖去

代表的特權級. 如果rpl低於cpl的特權級,它就是超越cpl.當較高的特權級的程式接收來自較低特權級稱許的段選擇符時,rpl使儲存器訪問在較低特權級上執行.

當dpl<=cpl&rpl中較低的特權級時,段暫存器才能由指令裝入.

cpl 訪問限制

1 所有特權級上的資料段都是可以訪問的

2 只有在特權級1-3上的資料段才可訪問

3 只有特權級3上的資料段才可訪問

指標有效性檢查指令:

arpl: 檢查指標的提供者是否被允許訪問段

lar x: 裝入訪問權,被用來證實指標引用的是有適當特權級和型別的段,運算元表示對應於訪問權被檢查的描述符的段選擇符.((rpl||cpl>dpl)&&段選擇符超出描述符表的表限?zf=0:zf=1)

lsl: 裝入段限,允許軟體測試段描述符的段限.如果由段選擇符引用的描述符在cpl上是可讀的.則此指令將32位的,根據描述符的並置段限字段和g位計算的位元組粒度限值裝入指定的32位暫存器.門描述符是不可訪問的.(裝入成功zf=1,否則為0)

verr: 讀驗證,驗證段的可讀性,如果該段可用cpl讀,則zr=1.

verw: 寫驗證, 如果該段可用cpl讀,則zr=1.

X86保護模式程式設計總結(4)

cpu標識 eflage標誌位 8086cpu 第12 15位始終置位 intel286cpu 在實模式下,12 15位始終清除 32位cpu 在實模式下,第15位始終清除,第12 14位具有最後被裝入的值.在保護模式下,第14位具有最後被裝入的值,第15位被清除.第18位 intel486和pen...

X86保護模式程式設計總結(1)

系統設計的步驟 1,初始化相關硬體.並裝入系統.2,取得並測試相應硬體的引數.並初始化如x387等硬體.3,載入gdt到gdtr 第乙個描述符必須為0,至少需要乙個 段和乙個資料段 4,載入idt到idtr 必須先關中斷,載入完後可開啟 5,設定cr0中pe 1 也可和pg位一起設,並用jmp大跳 ...

X86保護模式程式設計總結(6)

中斷和異常 中斷 可遮蔽中斷,在cpu的intr引腳接收的中斷請求,if 1時才允許發生可遮蔽中斷 不可遮蔽中斷,在cpu的nmi輸入腳上接收到,cpu無法關閉不可遮蔽中斷.異常 cpu檢測的異常被分為3種 故障,是在已被檢測到異常的指令之前的指令邊界上報告的異常.故障在恢復到允許指令重新啟動狀態時...