prefijo VEX


El prefijo VEX (de "extensiones vectoriales") y el esquema de codificación VEX son una extensión de la arquitectura del conjunto de instrucciones x86 y x86-64 para microprocesadores de Intel , AMD y otros.

El esquema de codificación VEX permite la definición de nuevas instrucciones y la ampliación o modificación de códigos de instrucción previamente existentes . Esto sirve para los siguientes propósitos:

El prefijo VEX reemplaza los bytes de prefijo de instrucción y los códigos de escape más utilizados . En muchos casos, la cantidad de bytes de prefijo y bytes de escape que se reemplazan es la misma que la cantidad de bytes en el prefijo VEX, de modo que la longitud total de la instrucción codificada en VEX es la misma que la longitud del código de instrucción heredado. . En otros casos, la versión con codificación VEX es más larga o más corta que el código heredado. En el modo de 32 bits, las instrucciones codificadas VEX solo pueden acceder a los primeros 8 registros YMM/XMM; las codificaciones de los demás registros se interpretarían como instrucciones LDS y LES heredadas que no se admiten en el modo de 64 bits.

El esquema de codificación VEX utiliza un prefijo de código que consta de dos o tres bytes , que se agrega a los códigos de instrucción nuevos o existentes . [1]

En la arquitectura x86, las instrucciones con un operando de memoria pueden usar el byte ModR/M que especifica el modo de direccionamiento. Este byte tiene tres campos de bits:

Las formas base-más-índice y escala-más-índice de direccionamiento de 32 bits (codificado con r/m=100 y mod <>11) requieren otro byte de direccionamiento, el byte SIB. Tiene los siguientes campos: