LLDT

Cargar Registro de la tabla local descriptor

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
0F 00 /2LLDT r/m16MValidoValidoCarga 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

  1. modrm.rm lecturabyte 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.
#UDSi se utiliza el prefijo LOCK.
Modo real
#UDLa instrucción LLDT no se reconoce en modo de direccion real.
Modo virtual-8086
#UDLa 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.
#UDSi se utiliza el prefijo LOCK.

Fuentes