Intel ha agregado recientemente nuevas instrucciones a su conjunto de instrucciones para admitir la verificación de límites. Intel los llama las Extensiones de Protección de Memoria (MPX), y se describen en el Capítulo 9 de este manual . En pocas palabras, puede usar las nuevas instrucciones MPX para cargar una base y un límite superior en registros especiales antes de realizar una operación de memoria; el procesador luego verificará que la dirección de la memoria esté dentro de los límites y quedará atrapado si no lo está. Básicamente, este es un soporte a nivel de hardware para la verificación de límites.
Esto parece muy intrigante. Hasta ahora, uno de los principales desafíos con la implementación de la comprobación automática de límites para los programas C y C ++ es el rendimiento: si una opción de compilación ralentiza su programa en un 50%, o un 10%, muchos desarrolladores pueden mostrarse reacios. Esta extensión de hardware suena como el tipo de cosa que potencialmente podría abordar la dirección de rendimiento, y quizás también facilite a los compiladores habilitar la verificación automática de límites con menos complejidad en el código del compilador.
Entonces, ¿esto es útil en la práctica? ¿Alguno de los compiladores existentes ofrece soporte para la verificación de límites acelerados por hardware usando estas instrucciones? ¿Existe alguna medida sobre cuál es la sobrecarga de rendimiento de este tipo de comprobación de límites acelerada por hardware?