SGDT
Store Global Descriptor Table Register
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
0F 01 /0 | SGDT m | M | Valido | Valido | Almacene GDTR a m. |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
M
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Coste medido
Cargando las mediciones de arch-data...
Descripción
Almacena el contenido del registro mundial de tablas de descriptores (GDTR) en el operando de destino. El operando de destino especifica una ubicación de memoria.
En el modo legado o compatibilidad, el operando de destino es una ubicación de memoria de 6 bytes. Si el atributo el operando-size es de 16 o 32 bits, el campo límite de 16 bits del registro se almacena en los 2 bytes bajos de la ubicación de memoria y la dirección base de 32 bits se almacena en los 4 bytes altos.
En modo de 64 bits, el tamaño de operando se fija en 8+2 bytes. La instrucción almacena una base de 8 bytes y un límite de 2 bytes.
SGDT es útil sólo por software del sistema operativo. Sin embargo, se puede utilizar en programas de aplicación sin causar una excepción a generar si CR4.UMIP = 0. Ver "LGDT/LIDT--Load Global/Interrupt Descriptor Table Register" en Capítulo 3, Intel(R) 64 e IA-32 Architectures Software Developer's Manual, Volumen 2A, para información sobre la carga del GDTR y IDTR.
Compatibilidad de arquitectura IA-32
La forma de 16 bits del SGDT es compatible con el procesador Intel 286 si no se hacen referencia a los 8 bits superiores. El procesador Intel 286 llena estos bits con 1s; generaciones procesadoras más tarde que el procesador Intel 286 llenan estos bits con 0s.
Operación
IF instruction is SGDT
IF OperandSize =16 or OperandSize = 32 (* Legacy or Compatibility Mode *)
THEN
DEST[0:15] := GDTR(Limit);
DEST[16:47] := GDTR(Base); (* Full 32-bit base address stored *)
FI;
ELSE (* 64-bit Mode *)
DEST[0:15] := GDTR(Limit);
DEST[16:79] := GDTR(Base); (* Full 64-bit base address stored *)
FI;
FI;Banderas afectadas
None.
Excepciones
Modo protegido
#UD | Si se utiliza el prefijo LOCK. |
#GP(0) | Si el destino se encuentra en un segmento no escrito. Si la dirección efectiva un operando de memoria está fuera del límite de segmento CS, DS, ES, FS o GS. Si el registro DS, ES, FS o GS se utiliza para acceder a la memoria y contiene un NULL selector de segmento. Si CR4.UMIP = 1 y CPL > 0. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está activada y se hace una referencia de memoria no alineada mientras CPL = 3. |
Modo real
#UD | Si se utiliza el prefijo LOCK. |
#GP | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#SS | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
Modo virtual-8086
#UD | Si se utiliza el prefijo LOCK. |
#GP(0) | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. Si CR4.UMIP = 1. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#SS(0) | Si una dirección de memoria que hace referencia al segmento SS está en forma no canónica. |
#UD | Si se utiliza el prefijo LOCK. |
#GP(0) | Si la dirección de memoria está en forma no canónica. Si CR4.UMIP = 1 y CPL > 0. #PF(fault-code) Si ocurre un fallo de pagina. |
#AC(0) | Si la comprobación de alineación está activada y se hace una referencia de memoria no alineada mientras CPL = 3. |