我的idtr地址被定义为
gdt_pointer:
DW 0;size_of_gdt
DD 0;start_of_gdt我可以用LGDT [gdt_pointer]装载它。但是,如果必须的话,以后如何更改gdt的内容呢?在设置适当的值后,我是否可以再次使用LGDT指令?
编辑:我计划一直保持我的gdt_pointer起始地址不变,但我将更改大小参数。此外,我正在加载和改变gdt从32位保护模式。
发布于 2014-08-25 07:31:01
如果您更改了GDT的内容(但将其保留在相同的地址),那么您只需加载将由更改(如果有的话)影响的段寄存器。
如果您更改了GDT的(虚拟)地址(但将其内容保持不变),则只需再次执行lgdt即可。
如果同时更改GDT的(虚拟)地址及其内容,则需要执行lgdt并加载任何受影响的段寄存器。
https://stackoverflow.com/questions/25480905
复制相似问题