在實模式下,段暫存器含有段值,為訪問儲存器形成實體地址時,處理器引用相應的某個段暫存器並將其值乘以16,形成20位的段基位址。在保護模式下,段暫存器含有段選擇子,如上所述,為了訪問儲存器形成線性位址時,處理器要使用選擇子所指定的描述符中的基位址等資訊。為了避免在每次儲存器訪問時,都要訪問描述符表而獲得對應的段描述符,從80286開始每個段暫存器都配有乙個高速緩衝暫存器,稱之為段描述符高速緩衝暫存器或描述符投影暫存器,對程式設計師而言它是不可見的。每當把乙個選擇子裝入到某個段暫存器時,處理器自動從描述符表中取出相應的描述符,把描述符中的資訊儲存到對應的高速緩衝暫存器中。此後對該段訪問時,處理器都使用對應高速緩衝暫存器中的描述符資訊,而不用再從描述符表中取描述符。
各段描述符高速緩衝暫存器之內容如下表所示。其中,32位段基位址直接取自描述符, 32位的段界限取自描述符中20位的段界限,並根據描述符屬性中的粒度位轉換成以位元組為單位。其它十個特性根據描述符中的屬性而定,「y」表示「是」,「n」表示「否」 ,「r」表示必須可讀,「w」表示必須可寫,「p」表示必須存在,「d」表示根據描述符中屬性而定。
段描述符高速緩衝暫存器再處理器內,所以可對其進行快速訪問。絕大多數情況下,對儲存器的訪問是在對應選擇子裝入到段暫存器之後進行的,所以,使用段描述符高速緩衝暫存器可以得到很好的執行效能。
段描述符高速緩衝暫存器之內儲存的描述符資訊將一直儲存到重新把選擇子裝載到段暫存器時再更新。程式設計師儘管不可見段描述符高速緩衝暫存器,但必須注意到它的存在和它的上述更新時機。例如,在改變了描述符表中的某個當前段的描述符後,也要更新對應的段描述符高速緩衝暫存器的內容,即使段選擇子未作改變,這可通過重新裝載段暫存器實現。
實模式下
段描述符
高速緩衝
暫存器的
內容段暫存器
段基位址
段界限(固定)
段屬性(固定)
存在性特權級
已訪問粒度
擴充套件方向
可讀性可寫性
可執行堆疊大小
一致特權
cs當前cs*16
0000ffffhy0
ybuy
yy-n
ss當前ss*16
0000ffffhy0
ybuy
ynw-
ds當前ds*16
0000ffffhy0
ybuy
yn--
es當前es*16
0000ffffhy0
ybuy
yn--
fs當前fs*16
0000ffffhy0
ybuy
yn--
gs當前gs*16
0000ffffhy0
ybuy
yn--
段選擇器 段描述符 段描述符表 線性位址形成
買了本羅老師的琢石成器,才看前3章就感覺暈暈忽忽,總體覺得要看懂這本書前提是必須會dos彙編,了解32位彙編基礎.dos彙編本人只看了王爽老師的組合語言前11章,中斷這塊還沒有看,看來不看還是不行的。轉回來說,羅老師這本書前3章寫的很亂,尤其是描述符這塊,看了似懂非懂,通而不透。只能自己抽絲剝繭,捋...
段選擇器 段描述符 段描述符表 線性位址形成
段選擇器 32位彙編中16位段暫存器 cs ds es ss fs gs 中不再存放段基址,而是段描述符在段描述符表中的索引值,d3 d15位是索引值,d0 d1位是優先順序 rpl 用於特權檢查,d2位是描述符表引用指示位ti,ti 0指示從全域性描述表gdt中讀取描述符,ti 1指示從區域性描述...
GPIO暫存器描述
gpio暫存器描述 stm32參考手冊中文 p75 1 埠配置低暫存器 gpiox crl x a e 2 埠配置高暫存器 gpiox crh x a e 3 埠輸入資料暫存器 gpiox idr x a e 這些位為唯讀並只能以字 16位 的形式讀出。讀出的值為對應i o口的狀態。4 埠輸出資料暫...