Intel ha recentemente aggiunto nuove istruzioni al proprio set di istruzioni per supportare il controllo dei limiti. Intel li chiama Memory Protection Extensions (MPX) e sono descritti nel capitolo 9 di questo manuale . In poche parole, è possibile utilizzare le nuove istruzioni MPX per caricare una base e un limite superiore in registri speciali prima di eseguire un'operazione di memoria; il processore controllerà quindi che l'indirizzo di memoria sia entro i limiti e verrà intrappolato se non lo è. Fondamentalmente, questo è il supporto a livello hardware per il controllo dei limiti.
Sembra molto interessante. Fino ad ora, una delle principali sfide con la distribuzione automatica del controllo dei limiti per i programmi C e C ++ è la prestazione: se un'opzione del compilatore rallenterebbe il programma del 50%, o del 10%, molti sviluppatori potrebbero essere riluttanti. Questa estensione hardware suona come il tipo di cosa che potenzialmente potrebbe indirizzare l'indirizzo delle prestazioni, e forse anche rendere più facile per i compilatori abilitare il controllo automatico dei limiti con meno complessità nel codice del compilatore.
Quindi, è utile in pratica? I compilatori esistenti offrono supporto per il controllo dei limiti con accelerazione hardware utilizzando queste istruzioni? Ci sono delle misurazioni su quale overhead delle prestazioni di questo tipo di controllo dei limiti accelerati dall'hardware?