加载GDTR

加载GDTR

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异常。

Viewpoint #

From #