我把我的idtr地址定义为
gdt_pointer:
DW 0;size_of_gdt
DD 0;start_of_gdt
,我可以用LGDT [gdt_pointer]
加载它。但是如果需要的话,我如何改变gdt的内容呢?设置正确的值后,我可以再次使用LGDT
指令吗?
编辑:我计划保持我的gdt_pointer起始地址相同的所有时间,但我将改变大小参数。此外,我正在加载和改变gdt从32位保护模式。
如果您更改了GDT的内容(但将其保留在相同的地址),那么您只需加载将受更改影响的段寄存器(如果有的话)。
如果您更改了GDT的(虚拟)地址(但保持其内容不变),那么您只需再次执行lgdt
。
如果更改GDT的(虚拟)地址及其内容,则需要执行lgdt
并加载任何受影响的段寄存器。