LGDT/LIDT – 加载全局/中断描述符表格寄存器

LGDT/LIDT – 加载全局/中断描述符表格寄存器操作码指令说明 0F01 2LGDTm16 amp 32 将 m 加载到 GDTR0F01 3LIDTm16 amp 32 将 m 加载到 IDTR 说明将源操作数中的值加载到全局描述符表格寄存器 GDTR 或中断描述符表格寄存器 IDTR

大家好,欢迎来到IT知识分享网。

操作码

 

指令

说明

0F 01 /2

LGDT m16&32

m 加载到 GDTR

0F 01 /3

LIDT m16&32

m 加载到 IDTR

说明

将源操作数中的值加载到全局描述符表格寄存器 (GDTR) 或中断描述符表格寄存器 (IDTR)。源操作数指定 6 字节内存位置,它包含全局描述符表格 (GDT) 或中断描述符表格 (IDT) 的基址(线性地址)与限制(表格大小,以字节计)。如果操作数大小属性是 32 位,则将 16 位限制(6 字节数据操作数的 2 个低位字节)与 32 位基址(数据操作数的 4 个高位字节)加载到寄存器。如果操作数大小属性是 16 位,则加载 16 位限制(2 个低位字节)与 24 位基址(第三、四、五字节)。这里,不使用操作数的高位字节,GDTR 或 IDTR 中基址的高位字节用零填充。

LGDT 与 LIDT 指令仅用在操作系统软件中;它们不用在应用程序中。在保护模式中,它们是仅有的能够直接加载线性地址(即,不是段相对地址)与限制的指令。它们通常在实地址模式中执行,以便处理器在切换到保护模式之前进行初始化。

如需有关存储 GDTR 与 IDTR 内容的详细信息,请参阅本章中的 SFENCE – 存储边界。

操作

影响的标志

无。

保护模式异常

#UD – 如果源操作数不是内存位置。

#GP(0) – 如果当前特权级别不是 0。如果内存操作数有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS、或 GS 寄存器用于访问内存,并且它包含空的段选择器。

#SS(0) – 如果内存操作数有效地址超出 SS 段限制。

#PF(错误代码) – 如果发生页错误。

实地址模式异常

#UD – 如果源操作数不是内存位置。

#GP – 如果内存操作数有效地址超出 CS、DS、ES、FS 或 GS 段限制。

#SS – 如果内存操作数有效地址超出 SS 段限制。

虚 8086 模式异常

#GP(0) – 如果内存操作数有效地址超出 CS、DS、ES、FS 或 GS 段限制。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122818.html

(0)
上一篇 2025-10-13 20:20
下一篇 2025-10-13 20:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信