Content #
GDTR格式 在selector能够访问GDT之前,需要用lgdt指令加载GDTR。
lgdt [GDT_POINTER]
GDT_POINTER: dw 3ffh ;GDT limit
dd 200000h ;GDT base
使用selector访问GDT时,处理器会检查是否会超出limit。当GDT的limit为0c6h时,下面的情形就超出limit范围。
mov ax, 0xc0 ;selector is c0h
mov ds, ax ;GP 异常(超限)
GDT中segment descriptor是8个字节,这个selector需要访问的空间是c0h-c7h,而c7h超出了c6h的限制,引发#GP异常。