PUERTA | PUERTA CS 2013 | Pregunta 48

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 

Cuestionario de esta pregunta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *