BEXTR
Bit Field Extract
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
VEX.LZ.0F38.W0 F7 /r | BEXTR r32a, r/m32, r32b | RMV | Valido | Valido | Extracto de bitwise contiguo de r/m32 usando r32b como control; resultado de la tienda en r32a. |
VEX.LZ.0F38.W1 F7 /r | BEXTR r64a, r/m64, r64b | RMV | Valido | No codificable | Extracto de bitwise contiguo de r/m64 usando r64b como control; resultado de la tienda en 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
modrm.regescriturabyte 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 pidevex.vvvvlecturaprefijo VEX, campo vvvv (invertido)
Coste medido
Cargando las mediciones de arch-data...
Banderas nombradas
PFParidadAFAcarreo auxiliarZFCeroSFSigno
Descripción
Extrae bits contiguos del primer operando de origen (el segundo operando) utilizando un valor índice y un valor de longitud especificado en el segundo operando de origen (el tercer operando). El bit 7:0 del segundo operando de origen especifica la posición inicial de extracción de bits. Un valor START superior al tamaño de operando no extraerá ningún bit del segundo operando de origen. El bit 15:8 del segundo operando de origen especifica el número máximo de bits (LENGTH) comenzando en la posición START para extraer. Sólo se extraen posiciones de bit hasta (OperandSize -1) del primer operando de origen. Los bits extraídos se escriben en el registro de destino, a partir del bit menos significativo. Todos los bits de orden más alto en el operando de destino (estando en posición de bit LENGTH) se ponen a cero. El destino registra se pone a cero si no se extraen bits.
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
START := SRC2[7:0];
LEN := SRC2[15:8];
TEMP := ZERO_EXTEND_TO_512 (SRC1 );
DEST := ZERO_EXTEND(TEMP[START+LEN -1: START]);
ZF := (DEST = 0);Banderas afectadas
ZF se actualiza en función del resultado. AF, SF y PF quedan indefinidas. Todas las otras banderas están limpias.
Intel C/C++ compilador intrínseco
BEXTR unsigned __int32 _bextr_u32(unsigned __int32 src, unsigned __int32 start. unsigned __int32 len);
BEXTR unsigned __int64 _bextr_u64(unsigned __int64 src, unsigned __int32 start. unsigned __int32 len);SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Tabla 2-29, "Tipo 13 Condiciones de Excepción", además:
#UD If VEX.W = 1.