LMSW
Palabra de estado de la máquina de carga
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
0F 01 /6 | LMSW r/m16 | M | Valido | Valido | Carga 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
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 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. |
#UD | Si se utiliza el prefijo LOCK. |
Modo real
#GP | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#UD | Si se utiliza el prefijo LOCK. |
Modo virtual-8086
#GP(0) | La instrucción LMSW no se reconoce en modo virtual-8086. |
#UD | Si 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. |
#UD | Si se utiliza el prefijo LOCK. |