LLDT
Cargar Registro de la tabla local descriptor
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
0F 00 /2 | LLDT r/m16 | M | Valido | Valido | Carga selector de segmento r/m16 en LDTR. |
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.rmlecturabyte 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
Carga el operando de origen en el campo el selector de segmento del registro de la mesa descriptor local (LDTR). El operando de origen (un registro de proposito general o una ubicación de memoria) contiene un selector de segmento que apunta a una mesa descriptor local (LDT). Después de que el selector de segmento está cargado en el LDTR, el procesador utiliza el selector de segmento para localizar el descriptor de segmento para el LDT en la tabla de descriptor global (GDT). Luego carga el límite de segmento y la dirección base para el LDT del descriptor de segmento en el LDTR. El segmento registra DS, ES, SS, FS, GS y CS no se ven afectados por esta instrucción, ni el campo LDTR en el segmento de estado de tarea (TSS) para la tarea actual.
Si los bits 2-15 del operando de origen son 0, LDTR es inválido marcado y la instrucción LLDT completa silenciosamente. Sin embargo, todas las referencias posteriores a los descriptores en las instrucciones LDT (excepto por las instrucciones LAR, VERR, VERW o LSL) causan una excepción de protección general (#GP).
El atributo el operando-size no tiene efecto en esta instrucción.
La instrucción LLDT se proporciona para uso en el software del sistema operativo; no debe ser utilizado en los programas de aplicación. Esta instrucción sólo se puede ejecutar en modo modo protegido o 64 bits.
En modo de 64 bits, el tamaño de operando se fija a 16 bits.
Operación
IF SRC(Offset) > descriptor table limit
THEN #GP(segment selector); FI;
IF segment selector is valid
Read segment descriptor;
IF SegmentDescriptor(Type) LDT
THEN #GP(segment selector); FI;
IF segment descriptor is not present
THEN #NP(segment selector); FI;
LDTR(SegmentSelector) := SRC;
LDTR(SegmentDescriptor) := GDTSegmentDescriptor;
ELSE LDTR := INVALID
FI;Banderas afectadas
None.
Excepciones
Modo protegido
#GP(0) | Si el nivel actual de privilegios no es 0. 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 contiene un NULL selector de segmento. |
#GP(selector) | Si el selector operando no apunta a la Tabla de Descriptor Global o si la entrada en el GDT no es una Tabla de Descriptor Local. selector de segmento está más allá del límite GDT. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
#NP(selector) | Si el descriptor LDT no está presente. #PF(fault-code) Si un fallo de pagina ocurre. |
#UD | Si se utiliza el prefijo LOCK. |
Modo real
#UD | La instrucción LLDT no se reconoce en modo de direccion real. |
Modo virtual-8086
#UD | La instrucción LLDT no se reconoce en modo virtual-8086. |
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. |
#GP(0) | Si el nivel actual de privilegios no es 0. Si la dirección de memoria está en forma no canónica. |
#GP(selector) | Si el selector operando no apunta a la Tabla de Descriptor Global o si la entrada en el GDT no es una Tabla de Descriptor Local. selector de segmento está más allá del límite GDT. |
#NP(selector) | Si el descriptor LDT no está presente. #PF(fault-code) Si un fallo de pagina ocurre. |
#UD | Si se utiliza el prefijo LOCK. |