El siguiente segmento de código se ejecuta en un procesador que solo permite registrar operandos en sus instrucciones. Cada instrucción puede tener como máximo dos operandos de origen y un operando de destino. Suponga que todas las variables están muertas después de este segmento de código.
c = a + b; d = c * a; e = c + a; x = c * c; if (x > a) { y = a * a; } else { d = d * d; e = e * e; }
Suponga que la arquitectura del conjunto de instrucciones del procesador tiene solo dos registros. La única optimización del compilador permitida es el movimiento del código, que mueve las declaraciones de un lugar a otro mientras conserva la corrección. ¿Cuál es el número mínimo de derrames en la memoria en el código compilado?
(A) 0
(B) 1
(C) 2
(D) 3
Respuesta: (B)
Explicación:
r1......r2 a.......b......c = a + b a.......c......x = c * c a.......x......but we will have to store c in mem as we don't know if x > a ................. or not y.......x......y = a * a choosing the best case of x > a , min spills = 1
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA