ARPL
Ajustar RPL Campo de selector de segmento
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
63 /r | ARPL r/m16, r16 | MR | n. e. | Valido | Ajuste RPL de r/m16 a no menos de RPL de r16. |
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.
MR
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pidemodrm.reglecturabyte ModRM, campo reg (bits 5-3)
Coste medido
Sin medir: no se ejecuta en procesadores de 64 bits.
Banderas nombradas
ZFCero
Descripción
Compare los campos RPL de dos selectores de segmento. El primer operando (el operando de destino) contiene un selector de segmento y el segundo operando (operando de origen) contiene el otro. (El campo RPL se encuentra en los bits 0 y 1 de cada operando.) Si el campo RPL del operando de destino es menos que el campo RPL del operando de origen, la bandera ZF se establece y el campo RPL del operando de destino se aumenta para igualar el del operando de origen. De lo contrario, la bandera ZF se pone a cero y ningún cambio se hace al operando de destino. (el operando de destino puede ser un registro de palabras o una ubicación de memoria; el operando de origen debe ser un registro de palabras.)
La instrucción ARPL se proporciona para uso mediante procedimientos de sistema operativo (cuando sea, también puede ser utilizada por aplicaciones). Se utiliza generalmente para ajustar el RPL de un selector de segmento que ha sido pasado al sistema operativo por un programa de aplicación para que coincida con el nivel de privilegio del programa de aplicación. Aquí el selector de segmento pasó al sistema operativo se coloca en el operando de destino y selector de segmento para el segmento de código del programa de aplicación se coloca en el operando de origen. (El campo RPL en el operando de origen representa el nivel de privilegio del programa de aplicación.) La ejecución de la instrucción ARPL asegura entonces que el RPL del selector de segmento recibido por el sistema operativo no es menor (no tiene un privilegio superior) que el nivel de privilegio del programa de aplicación (el selector de segmento para el segmento de código de aplicación siguiente puede ser leído una llamada).
Esta instrucción se ejecuta como se describe en modo de compatibilidad y modo legado. No es encodable en modo de 64 bits.
Ver "Comprobar privilegios de acceso de llamadas" en el capítulo 3, "Protected-Mode Memory Management", de Intel(R) 64 e IA-32 Architectures Software Developer's Manual, Volume 3A, para obtener más información sobre el uso de esta instrucción.
Operación
IF 64-BIT MODE
THEN
See MOVSXD;
ELSE
IF DEST[RPL] < SRC[RPL]
THEN
ZF := 1;
DEST[RPL] := SRC[RPL];
ELSE
ZF := 0;
FI;
FI;Banderas afectadas
La bandera ZF se establece a 1 si el campo RPL del operando de destino es menos que el del operando de origen; de lo contrario, se establece a 0.
Excepciones
Modo protegido
#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. |
#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 mientras que el nivel de privilegio actual es 3. |
#UD | Si se utiliza el prefijo LOCK. |
Modo real
#UD | La instrucción ARPL no se reconoce en modo de direccion real. Si se utiliza el prefijo LOCK. |
Modo virtual-8086
#UD | La instrucción ARPL no se reconoce en modo virtual-8086. Si se utiliza el prefijo LOCK. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
| No es aplicable. |