XOR
Exclusivo lógico
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
34 ib | XOR AL, imm8 | I | Valido | Valido | AL XOR imm8. |
35 iw | XOR AX, imm16 | I | Valido | Valido | AX XOR imm16. |
35 id | XOR EAX, imm32 | I | Valido | Valido | EAX XOR imm32. |
REX.W + 35 id | XOR RAX, imm32 | I | Valido | No codificable | RAX XOR imm32 (extended firma). |
80 /6 ib | XOR r/m8, imm8 | MI | Valido | Valido | r/m8 XOR imm8. |
81 /6 iw | XOR r/m16, imm16 | MI | Valido | Valido | r/m16 XOR imm16. |
81 /6 id | XOR r/m32, imm32 | MI | Valido | Valido | r/m32 XOR imm32. |
REX.W + 81 /6 id | XOR r/m64, imm32 | MI | Valido | No codificable | r/m64 XOR imm32 (extended firma). |
83 /6 ib | XOR r/m16, imm8 | MI | Valido | Valido | r/m16 XOR imm8 (extended firma). |
83 /6 ib | XOR r/m32, imm8 | MI | Valido | Valido | r/m32 XOR imm8 (extended firma). |
REX.W + 83 /6 ib | XOR r/m64, imm8 | MI | Valido | No codificable | r/m64 XOR imm8 (extended firma). |
30 /r | XOR r/m8, r8 | MR | Valido | Valido | r/m8 XOR r8. |
31 /r | XOR r/m16, r16 | MR | Valido | Valido | r/m16 XOR r16. |
31 /r | XOR r/m32, r32 | MR | Valido | Valido | r/m32 XOR r32. |
REX.W + 31 /r | XOR r/m64, r64 | MR | Valido | No codificable | r/m64 XOR r64. |
32 /r | XOR r8,1 r/m8 | RM | Valido | Valido | r8 XOR r/m8. |
33 /r | XOR r16, r/m16 | RM | Valido | Valido | r16 XOR r/m16. |
33 /r | XOR r32, r/m32 | RM | Valido | Valido | r32 XOR r/m32. |
REX.W + 33 /r | XOR r64, r/m64 | RM | Valido | No codificable | r64 XOR r/m64. |
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.
I
AL/AX/EAX/RAXimm8/16/32inmediato que sigue a la instruccion, del ancho del operando
MI
modrm.rmlectura y escriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pideimm8/16/32inmediato que sigue a la instruccion, del ancho del operando
MR
modrm.rmlectura y escriturabyte 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)
RM
modrm.reglectura y escriturabyte ModRM, campo reg (bits 5-3)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...
Banderas nombradas
CFAcarreoPFParidadAFAcarreo auxiliarZFCeroSFSignoOFDesbordamiento
Descripción
Realiza un funcionamiento exclusivo de OR (XOR) en el destino (primero) y fuente (segundo) operandos y almacena el resultado en la ubicación del operando de destino. El operando de origen puede ser un registro inmediato, un registro, o una ubicación de memoria; el operando de destino puede ser un registro o una ubicación de memoria. (Sin embargo, dos operandos de memoria no se pueden utilizar en una instrucción.) Cada parte del resultado es 1 si los bits correspondientes de los operandos son diferentes; cada bit es 0 si los bits correspondientes son los mismos.
Esta instrucción se puede utilizar con un prefijo LOCK para permitir que la instrucción se ejecute atómicamente.
En modo de 64 bits, el uso de un prefijo REX en forma de REX.R permite el acceso a registros adicionales (R8-R15). Utilizar un prefijo REX en forma de REX.W promueve la operación a 64 bits. Vea la tabla resumen al comienzo de esta sección para la codificación de datos y límites.
Operación
DEST := DEST XOR SRC;Banderas afectadas
Las banderas OF y CF se limpian; las banderas SF, ZF y PF se establecen según el resultado. El estado de la bandera AF es indefinido.
Excepciones
Modo protegido
#GP(0) | Si el operando de destino apunta a 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 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 el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |
Modo real
#GP | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#SS | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
#UD | Si el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |
Modo virtual-8086
#GP(0) | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#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. |
#UD | Si el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |
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 la dirección de memoria está en forma no canónica. #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 el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |