BSWAP
Byte Swap
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
0F C8+rd | BSWAP r32 | O | valid* | Valido | Invierte el orden byte de un registro de 32 bits. |
REX.W + 0F C8+rd | BSWAP r64 | O | Valido | No codificable | Invierte el orden byte de un registro de 64 bits. |
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.
O
opcode.reglectura y escrituralos tres bits bajos del propio byte de opcode
Coste medido
Cargando las mediciones de arch-data...
Descripción
Invierte el orden de byte de un registro de 32 bits o 64 bits (destinación). Esta instrucción se proporciona para convertir los valores pocoendianos a formato grande y viceversa. Para cambiar bytes en un valor de palabra (16-bit registro), utilice la instrucción XCHG. Cuando la instrucción BSWAP hace referencia a un registro de 16 bits, el resultado no está definido.
En modo de 64 bits, el tamaño de operación predeterminado de la instrucción es de 32 bits. El uso de un prefijo REX en forma de REX.B 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.
Compatibilidad de arquitectura IA-32
La instrucción BSWAP no es compatible con procesadores IA-32 antes que la familia procesadora Intel486TM. Para la compatibilidad con esta instrucción, el software debe incluir código funcionalmente equivalente para la ejecución en procesadores Intel antes que la familia procesadora Intel486.
Operación
TEMP := DEST
IF 64-bit mode AND OperandSize = 64
THEN
DEST[7:0] := TEMP[63:56];
DEST[15:8] := TEMP[55:48];
DEST[23:16] := TEMP[47:40];
DEST[31:24] := TEMP[39:32];
DEST[39:32] := TEMP[31:24];
DEST[47:40] := TEMP[23:16];
DEST[55:48] := TEMP[15:8];
DEST[63:56] := TEMP[7:0];
ELSE
DEST[7:0] := TEMP[31:24];
DEST[15:8] := TEMP[23:16];
DEST[23:16] := TEMP[15:8];
DEST[31:24] := TEMP[7:0];
FI;Banderas afectadas
None.
Excepciones
Modo real
#UD | Si se utiliza el prefijo LOCK. |
Modo protegido
#UD | Si se utiliza el prefijo LOCK. |
Modo virtual-8086
#UD | Si se utiliza el prefijo LOCK. |
Modo de compatibilidad
#UD | Si se utiliza el prefijo LOCK. |
Modo de 64 bits
#UD | Si se utiliza el prefijo LOCK. |