LMSW

Palabra de estado de la máquina de carga

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
0F 01 /6LMSW r/m16MValidoValidoCarga r/m16 en estado de máquina palabra de CR0.

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 la palabra estado de la máquina, bits 0 a 15 de registro CR0. El operando de origen puede ser un registro de proposito general de 16 bits o una ubicación de memoria. Sólo los 4 bits del operando de origen (que contiene las banderas PE, MP, EM y TS) se cargan en CR0. Las banderas PG, CD, NW, AM, WP, NE y ET de CR0 no se ven afectadas. El atributo el operando-size no tiene efecto en esta instrucción.

Si la bandera PE del operando de origen (bit 0) se establece a 1, la instrucción hace que el procesador cambie a modo protegido. Mientras que en modo protegido, la instrucción LMSW no se puede utilizar para limpiar la bandera PE y forzar un cambio de nuevo a modo de direccion real.

La instrucción LMSW se proporciona para uso en el software del sistema operativo; no debe ser utilizado en los programas de aplicación. En protegidos o modo virtual-8086, sólo se puede ejecutar en CPL 0.

Esta instrucción se proporciona para la compatibilidad con el procesador Intel 286; los programas y procedimientos destinados a ejecutar en procesadores IA-32 e Intel 64 comenzando con procesadores Intel386 deben utilizar la instrucción MOV (registros de control) para cargar todo el registro CR0. La instrucción MOV CR0 se puede utilizar para establecer y limpiar la bandera PE en CR0, permitiendo un procedimiento o programa para cambiar entre modos protegidos y de dirección real.

Esta instrucción es una instrucción serializadora.

La operación de esta instrucción es la misma en modos no-64-bit y modo 64-bit. Tenga en cuenta que el tamaño de operando se fija en 16 bits.

Ver "Cambios para el comportamiento de la instrucción en VMX Operación no-rota" en el capítulo 27 de Intel(R) 64 e IA-32 Architectures Software Developer's Manual, Volumen 3C, para obtener más información sobre el comportamiento de esta instrucción en VMX operación no-raíz.

Operación

CR0[0:3] := SRC[0:3];

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 se utiliza para acceder a la memoria y contiene un NULL selector de segmento.
#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.
#UDSi se utiliza el prefijo LOCK.
Modo real
#GPSi un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS.
#UDSi se utiliza el prefijo LOCK.
Modo virtual-8086
#GP(0)La instrucción LMSW no se reconoce en modo virtual-8086.
#UDSi se utiliza el prefijo LOCK.
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. #PF(fault-code) Si un fallo de pagina ocurre.
#UDSi se utiliza el prefijo LOCK.

Fuentes