Estoy trabajando en un documento sobre ellos y creo que entiendo en general lo que sucede - > al explotar el almacenamiento en caché de la memoria de la CPU y la ejecución especulativa, pero estoy un poco perdido de cómo los datos protegidos están realmente expuestos.
Entonces, si entiendo correctamente la ejecución especulativa en un caso de:
if a == true {
firstFunction()
} else {
secondFunction()
}
la CPU llamará a la primera y la segunda función y las ejecutará antes de que sepa el valor de un? ¿Está almacenando los valores reales dentro de esas funciones o solo sus ubicaciones de memoria en su caché? Y una vez que se resuelve, ¿se descarta cualquier cosa que haya obtenido al ir por el camino equivocado?
Gracias