My first blog: GDT与基本描述符的结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了My first blog: GDT与基本描述符的结构相关的知识,希望对你有一定的参考价值。
参考文章:Intel64 and IA32 Architectures Software Developer‘s Manual Volume 2 ~ 3
GDT(Global Descriptor Table,全局描述符表)是x86和amd64架构最最基本的数据结构,它存储在内存中,以GDTR记录基地址,是让电脑从实模式跳转到保护模式的台阶。在汇编代码中,我们可以用 lgdt [gdt_base] 来加载GDT到内存中。
GDT的结构是这样的:
GDTR.base-> _________________________ \
|________``````````_______| |
|_________Items___________| | <- GDTR.limit
|________``````````_______| /
然后GDTR的结构是这样的:
79 16 15 0
|________________Base_________________|____Limit_____|
其实,它并没有这么高深,而只是一个表状结构而已。而里边的表项(描述符)则因为历史原因被分割得乱七八糟。
在实模式里,描述符(没此一说)就是个long-jmp pointer,如下所示。
31 16 15 0
|_________Base__________|________Limit________|
而在保护模式里,它分成了两类:段描述符和系统描述符
段描述符的格式如下:
63 56 55 54 53 52 51 48 47 46 45 44 43 40 39 16 15 0
| Base(31:24) | G|DB| L|AVL|Limit(19:16)| P| DPL | S| Type |_______________Base(23:0)___________________|________Limit(15:0)___|
Granularity-----^ ^ ^ ^ ^ ^ ^ ^
Default op size----‘ | | | | | |
Long mode-------------‘ | | | | |
Available for developers-‘ | | | |
Present-----------------------------------‘ | | |
Descriptor Privilege Level-------------------‘ | |
Is system descriptor-------------------------------‘ |
Descriptor type: details under------------------------‘
以上是关于My first blog: GDT与基本描述符的结构的主要内容,如果未能解决你的问题,请参考以下文章