1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-22 10:44:17 +00:00
appunti-steffo/2 - Architettura dei calcolatori/1 - Appunti/10 - Meltdown.md

21 lines
703 B
Markdown
Raw Normal View History

# Meltdown
Esempio circa comprensibile:
```c++
int meltdown() {
bool array[2] = {false, true};
if( qualcosa_che_restituisce_false() ) {
//Questo viene predetto
//Durante le predizioni non ci sono segfault!
int protetto = *(indirizzo_bersaglio);
//Se il primo bit di protetto è 1, verrà caricato "true" in cache, altrimenti, verrà caricato "false", ANCHE SE E' SOLO UNA PREDIZIONE!
//Dopo essere stato caricato, NON VIENE RIMOSSO, anche se la predizione è sbagliata.
int caricato = array[protetto & 1];
}
if( in_cache(true) ) cout << "Il primo bit del bersaglio è 1.\n";
else cout << "Il primo bit del bersaglio è 0.\n";
}
```