1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-28 19:04:18 +00:00
triennale-appunti-steffo/public/materials/year1/architettura/10_meltdown.md

21 lines
703 B
Markdown
Raw Normal View History

2022-02-03 01:08:09 +00:00
# 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";
}
```