Assembly x86在gdt已经加载之后如何更改它?
我的idtr地址定义为Assembly x86在gdt已经加载之后如何更改它?,assembly,x86,nasm,gdt,Assembly,X86,Nasm,Gdt,我的idtr地址定义为 gdt_pointer: DW 0;size_of_gdt DD 0;start_of_gdt 我可以用LGDT[gdt\u指针]加载它。 但是如果必须的话,我以后如何更改gdt的内容呢? 设置正确的值后,是否可以再次使用LGDT指令 编辑: 我计划一直保持gdt_指针的起始地址不变,但我会更改size参数。此外,我正在从32位保护模式加载和更改gdt。如果更改gdt的内容(但将其保留在同一地址),则只需加载受更改影响的段寄存器(如果有) 如果更改GDT
gdt_pointer:
DW 0;size_of_gdt
DD 0;start_of_gdt
我可以用LGDT[gdt\u指针]
加载它。
但是如果必须的话,我以后如何更改gdt的内容呢?
设置正确的值后,是否可以再次使用LGDT
指令
编辑:
我计划一直保持gdt_指针的起始地址不变,但我会更改size参数。此外,我正在从32位保护模式加载和更改gdt。如果更改gdt的内容(但将其保留在同一地址),则只需加载受更改影响的段寄存器(如果有) 如果更改GDT的(虚拟)地址(但保持其内容不变),则只需再次执行
lgdt
如果同时更改GDT的(虚拟)地址及其内容,则需要执行
lgdt
,并加载任何受影响的段寄存器。如何加载段寄存器?我没有任何线索。是的,我计划让gdt一直保持在同一个地址,只是改变它的内容。而且我没有使用虚拟地址(至少现在还没有)。