首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x86如何在已加载gdt后更改gdt?

x86如何在已加载gdt后更改gdt?
EN

Stack Overflow用户
提问于 2014-08-25 07:25:32
回答 1查看 321关注 0票数 0

我的idtr地址被定义为

代码语言:javascript
复制
gdt_pointer:
    DW 0;size_of_gdt
    DD 0;start_of_gdt

我可以用LGDT [gdt_pointer]装载它。但是,如果必须的话,以后如何更改gdt的内容呢?在设置适当的值后,我是否可以再次使用LGDT指令?

编辑:我计划一直保持我的gdt_pointer起始地址不变,但我将更改大小参数。此外,我正在加载和改变gdt从32位保护模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 07:31:01

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

如果您更改了GDT的(虚拟)地址(但将其内容保持不变),则只需再次执行lgdt即可。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25480905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档