kikiatw 发表于 2019-10-17 16:16:39

Win32匯編基礎知識03, 關於GDTR的問題

本帖最后由 kikiatw 于 2019-10-18 09:23 编辑

我剛剛看了小甲魚的這份教學, 最後甲魚哥用圖解的方式說明如何尋求GDTR與LDTR
那麼在這個過程中, GDTR的48bit裡面(感謝人造人更正)
bit 48:16 共32bit放的是GDTR在記憶體中的偏移
bit 15:0 共16bit放的是GDTR的SIZE,
問題一: 所以可以理解GDTR這個表最大是64Kbyte?

那麼一個段最大還是16bit. 只有高位的13個bit是指向GDTR的偏移,
問題二: 段寄存器址有13個bit作GDTR的偏移, 可是GDTR有64kbyte, 後面一點的不就索引不到了??

以上兩個問題求解, 謝謝.

发表于 2019-10-17 18:13:45

我正在看保护模式,后面再来回答你的问题。推荐你看大陆人写的这本书《x86汇编语言-从实模式到保护模式》,里面保护模式讲的比较清楚,有完整代码可以调试。

kikiatw 发表于 2019-10-17 21:16:54

哈哈, 這不是正在學小甲魚的彙編32教程嗎, 我先翻翻課本看看啊

人造人 发表于 2019-10-17 21:30:38

gdtr是48位的

0~15 全局描述符表边界
16~47 全局描述符表线性基地址

kikiatw 发表于 2019-10-18 09:21:10

本帖最后由 kikiatw 于 2019-10-18 09:24 编辑

關於這個問題,我剛剛忽然有了領悟,16bit size, 但是每個GDT的內容是64bit, 所以,只需要2^10就可以索引到64k的size,所以是夠用的

发表于 2019-10-18 11:12:34

https://s2.ax1x.com/2019/10/18/KV2Iij.jpg

kikiatw 发表于 2019-10-18 12:27:20

原來是BYTE
64KB = 8092個描述符 (8082*64bit = 64Kbyte)
所以剛好 2^13 就是 8192 個

kikiatw 发表于 2019-10-18 12:29:41

SB兄最近看匯編也看得很勤勞啊~~ 感謝幫忙答覆!!
页: [1]
查看完整版本: Win32匯編基礎知識03, 關於GDTR的問題