BZHI

Zero High Bits Comenzando con Posición de Bit Especificada

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.LZ.0F38.W0 F5 /rBZHI r32a, r/m32, r32bRMVValidoValidoCero bits en r/m32 comenzando con la posición en r32b, escriba resultado a r32a.
VEX.LZ.0F38.W1 F5 /rBZHI r64a, r/m64, r64bRMVValidoNo codificableCero bits en r/m64 comenzando con la posición en r64b, escriba resultado a r64a.

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.

RMV

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
  3. vex.vvvv lecturaprefijo VEX, campo vvvv (invertido)

Coste medido

Cargando las mediciones de arch-data...

Banderas nombradas

Descripción

BZHI copia los bits del primer operando de origen (el segundo operando) en el operando de destino (el primer operando) y aclara los bits más altos en el destino según el valor INDEX especificado por el segundo operando de origen (el tercer operando). El INDEX se especifica por bits 7:0 del segundo operando de origen. El valor INDEX está saturado al valor de OperandSize -1. CF se establece, si el número contenido en los 8 bits bajos del tercer operando es mayor que OperandSize -1.

Esta instrucción no es compatible en modo real y modo virtual-8086. El tamaño de operando es siempre 32 bits si no en modo de 64 bits. En modo de 64 bits tamaño de operando 64 requiere VEX.W1. VEX.W1 es ignorado en modos no-64-bit. Un intento de ejecutar esta instrucción con VEX.L no igual a 0 causará #UD.

Operación

N := SRC2[7:0]
DEST := SRC1
IF (N < OperandSize)

    DEST[OperandSize-1:N] := 0
FI
IF (N > OperandSize - 1)

    CF := 1
ELSE

    CF := 0
FI

Banderas afectadas

Las banderas ZF y SF se actualizan sobre la base del resultado. La bandera CF se establece como se especifica en la sección Operación. De la bandera se pone a cero. AF y PF banderas quedan indefinidas.

Intel C/C++ compilador intrínseco

BZHI unsigned __int32 _bzhi_u32(unsigned __int32 src, unsigned __int32 index);
BZHI unsigned __int64 _bzhi_u64(unsigned __int64 src, unsigned __int32 index);

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-29, "Tipo 13 Condiciones de Excepción de Clase".

Fuentes