讀張銀奎老師的《軟體除錯》一書,其中一節講保護模式中分段機制,舉了乙個例子,用windbg觀察gdtr和ldtr值,並由此得出一些結論,例項如下:
kd> r gdtr
gdtr=8003f00
kd> r idtr
idtr=8003f400
kd>r gdtl
gdtl=000003ff
kd>r idtl
idtl=000007ff
結論是:gdt的邊界是1023,總長度是1024位元組,共有128個表項
idt的表長度是2048位元組,共有256項
我們來看看是怎麼計算得來,首先是gdt邊界為gdtl=00003ff(h)=1023(d),總長度即0-1023,則為1024位元組,也即為1k,這個沒問題,我算的來。
一共有128個表項。為什麼會有128項呢?怎麼計算的呢?怎麼想來想不明白。我就用1024÷128=8.我知道2的3次是8,關鍵這8從哪來的呢?代表什麼意思,好難呀,想不明白。
百思不得其姐,錯,是解,沒折了就在那亂翻書,突然翻到段描述通用格式那節才想起來,其結構是64位,也即8個位元組,這個8 是8 個位元組,這樣這個128表項就自然來了。
idt的7ff(h)即是2047,從0開始共講2048位元組,也即2k,除以8,剛好256個表項。
讀書最大的樂趣就在於「為伊消得人憔悴」後的「那人卻在燈火闌珊處。」
相關的一些東西
這幾天一直在看關於http和前端效能優化相關的內容,今天先寫一篇關於http的文章,如果時間允許的話再接著把前端效能優化的寫完。畢竟還要留著時間去看小片嘛?接下來就是正文啦!瀏覽器輸入url後http請求返回的完整過程 就是下圖這個啦 這個可是我從某課網偷來的 從輸入位址到頁面渲染 在http的五層...
一些webrtc gcc相關
1.google congestion control 就是webrtc中用的 webrtc通控制傳送端資料傳送位元速率來達到控制網路擁塞。draft ietf rmcat gcc 02.pdf 較早的草案draft alvestrand rmcat congestion 03.pdf 2.1 從w...
一些stl相關
vector swap ivec 清記憶體,單純的clear或remove是不會把記憶體清掉的 ivec.reserve 100000 預設vector空間大小,避免因為vec分配得不夠,後期還需要重新分配空間 ivec.swap vector ivec or vector ivec swap iv...