0

I have my idtr addressing defined as

gdt_pointer:
    DW 0;size_of_gdt
    DD 0;start_of_gdt

and I can load it with LGDT [gdt_pointer]. But how can I change the contents of gdt later if I have to? Can I use the LGDT instruction again after setting the proper values?

EDIT: I'm planning to keep my gdt_pointer start address same all the time, but I'll be changing the size parameter. Also I'm loading and changing the gdt from 32 bit protected mode.

4

1 回答 1

2

如果您更改 GDT 的内容(但将其保留在相同的地址),那么您只需加载将受更改影响的段寄存器(如果有)。

如果您更改 GDT 的(虚拟)地址(但保持其内容不变),那么您只需要再做lgdt一次。

如果您同时更改 GDT 的(虚拟)地址及其内容,那么您需要执行lgdt并加载任何受影响的段寄存器。

于 2014-08-25T07:31:01.970 回答