Compiladors II - 25002
Junio 2000

  1. OPTIMIZACIÓN DE CÓDIGO
¿Qué ventaja ofrece el código intermedio respresentado con tripletas indirectas?
     Unas instrucciones no dependen de las otras.
     Las dependecias entre instrucciones se expresan explícitamente.
     El código se puede reordenar fácilmente.
       b) y c)
       Ninguna de las anteriores.
       No contesto...
 
  2. ¿Qué desventajas tiene el código en postorden?
     Es difícil reordenarlo.
     Es difícil generarlo.
     Su interpretación es lenta.
       Utiliza muchos registros.
       Ninguna de las anteriores.
       No contesto...
 
  3. ¿Qué ventajas ofrece el código en forma de árbol sintáctico abstracto?
     Facilita la aplicación de las propiedades de las operaciones aritméticas.
     Se puede interpretar rápidamente.
     Su representación es próxima al código máquina.
       Simplifica la partición en bloques básicos.
       Ninguna de las anteriores.
       No contesto...
 
  4. ¿Qué propiedades cumple un bloque básico?
     Tiene un único punto de entrada y salida
     Las instrucciones se ejecutan todas o ninguna
     Hay un único orden posible para la ejecución de las instrucciones
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  5. Un bloque básico puede contener:
     Un salto incondicional al final del bloque
     Un salto condicional al final del bloque
     a) y b)
       No puede contener saltos
       Ninguna de las anteriores
       No contesto...
 
  6. En que orden se tiene que aplicar el folding y la propagación de constantes para obtener la mejor optimización?
     folding, propagación de constantes
     propagación de constantes, folding
     a) y b)
       Se han de aplicar varias veces hasta que el código no varie
       Ninguna de las anteriores
       No contesto...
 
  7. La reducción de potencia es
     Un método de optimización local
     Un método de optimización de bucles
     a) y b)
       Un método de optimización global
       Ninguna de las anteriores
       No contesto...
 
  8. ¿Qué optimizaciones se ven beneficiadas por el loop unrolling?
     folding, reducción de potencia, propagación de constantes
     folding, reducción de potencia
     folding, reducción de potencia, propagación de constantes, eliminación de subexpresiones comunes, reducción de frecuencia
       folding, propagación de constantes
       Ninguna de las anteriores
       No contesto...
 
  9. ESTRUCTURAS COMPLEJAS
El código generado por un goto puede realizar las siguientes tareas:
     Crear bloques de activación y saltar
     Eliminar bloques de activación y saltar
     Crear bloques de activación, construir objetos y saltar
       Eliminar blqoues de activación, destruir objetos y saltar
       Ninguna de las anteriores
       No contesto...
 
  10. Al compilar un throw
     Se conoce la dirección de código a la que hay que saltar
     No se conoce la dirección de código a la que hay que saltar
     Se conoce la dirección de código a la que hay que saltar si en el código fuente esta dentro de un try catch
       Se conoce la dirección de código a la que hay que saltar si en el código fuente esta dentro de una función
       Ninguna de las anteriores
       No contesto...
 
  11. ¿Cómo se puede optimizar un switch?
     Crear una tabla ordenada con valores del case y direcciones de código. Generar el código que realiza una búsqueda binaria por la tabla y salta al encontrar el valor que busca
     Si el intervalo de los valores de los cases es pequeño, crear una tabla de saltos indexada por el valor de la expresión del switch
     Generar un código que compara con cada valor de case
       a) y b)
       Ninguna de las anteriores
       No contesto...
 
  12. GESTIÓN DE MEMORIA DINÁMICA (HEAP)
¿Qué ventajas ofrece la gestión de memoria implícita respecto a la explícita?
     Desarrollo más rápido
     Velocidad
     Optimiza el uso de la memoria
       Reduce los fallos de página
       Ninguna de las anteriores
       No contesto...
 
  13. ¿Qué método de gestión de memoria es más rápido?
     Gestión mediante lista de bloques libres
     Gestión mediante bloques etiquetados en los extremos
     Gestión mediante bloques compañeros
       Gestión mediante contadores de referencias
       Ninguna de las anteriores
       No contesto...
 
  14. La gestión mediante bloques etiquetados en los extremos
     Realiza búsquedas al pedir memoria
     Realiza búsquedas al liberar memoria
     No realiza búsquedas
       a) y b)
       Ninguna de las anteriores
       No contesto...
 
  15. ¿Cuál de las siguientes afirmaciones es cierta?
     La complejidad de marcar y barrer es lineal respecto a la memoria utilizada por el programa y la del recolector por copia es lineal respecto a la memoria utilizada por el programa
     La complejidad de marcar y barrer es lineal respecto a la memoria utilizada por el programa y la del recolector por copia es lineal respecto al tamaño del heap
     La complejidad de marcar y barrer es lineal respecto al tamaño del heap y la del recolector por copia es lineal respecto a la memoria utilizada por el programa
       La complejidad de marcar y barrer es lineal respecto al tamaño del heap y la de recolector por copia es lineal respecto al tamaño del heap
       Ninguna de las anteriores
       No contesto...
 
  16. ¿Cuál de las siguientes afirmaciones es cierta?
     El recolector por copia no puede trabajar con estructuras e datos cíclicas
     El recolector marcar y barrer no puede trabajar con estructuras de datos cíclicas
     La gestión de memoria explícita no puede trabajar con estructuras de datos cíclicas
       Las estructuras de datos cíclicas no son un problema para ningún método de gestión de memoria
       Ninguna de las anteriores
       No contesto...
 
  17. ¿Cuál es la información mínima que ha de conocer la gestión de memoria implícita de cada bloque de memoria?
     Tamaño y contenido
     Tamaño y número de celdas
     Tamaño y apuntadores que contiene el bloque de memoria
       Tamaño y el tipo del bloque de memoria
       Ninguna de las anteriores
       No contesto...
 
  18. PROGRAMACIÓN FUNCIONAL
La optimización de la recursividad en cola...
     Evita el crecimiento excesivo de la pila de argumentos
     Evita el crecimiento excesivo de la pila de contexto
     Elimina los argumentos de la pila
       Elimina el uso del display
       Ninguna de las anteriores
       No contesto...
 
  19. ¿Qué ha de contener una clausura?
     La dirección de entrada de la función
     La dirección de entrada de la función y la base del ámbito de la función donde se ha definido la clausura
     El nombre de la función
       a) y c)
       Ninguna de las anteriores
       No contesto...
 
  20. ¿Qué sería incorrecto en un lenguaje funcional?
     Definir una función dentro de otra
     Retornar un apuntador a una variable local
     Definir una función lambda
       Definir una variable local
       Ninguna de las anteriores
       No contesto...
 
  21. El ámbito de una función se puede encontrar
     En la pila de contexto
     En la pila de argumentos
     En el heap
       a) y c)
       Ninguna de las anteriores
       No contesto...
 
  22. PROGRAMACIÓN LÓGICA
¿Cómo se representa el desconocido?
     Mediante un apuntador cíclico
     Mediante un átomo
     Mediatne un functor
       Mediante un valor constante
       Ninguna de las anteriores
       No contesto...
 
  23. ¿Cuándo se puede eliminar un ámbito de la pila en prolog?
     Al acabar la ejecución de una regla y si no tiene por encima ningún punto de elección
     Al acabar la ejecución de una regla
     Sólo después de un cut
       Al salir de una función
       Ninguna de las anteriores
       No contesto...
 
  24. ¿Qué problemas aporta el backtracking a su implementación?
     Tener que guardar el estado de ejecución del programa
     Complica el código de la unificación
     El desconocido se ha de representar de forma compleja
       La pila de argumentos no se puede vaciar
       Ninguna de las anteriores
       No contesto...
 
  25. PROGRAMACIÓN ORIENTADA A OBJETO
¿Cuándo un objeto se puede referenciar con más de una dirección?
     En el caso de herencia simple
     En el caso de herencia múltiple
     En el caso de tener funciones virtuales
       En el caso de ser una clase base
       Ninguna de las anteriores
       No contesto...
 
  26. ¿Cuándo puede ser necesario aplicar un desplazamiento para obtener la dirección correcta de un objeto?
     En el paso por referencia
     Al llamar a un método
     Al llamar a una función virtual
       b) y c)
       Ninguna de las anteriores
       No contesto...
 
  27. Las tablas virtuales se utilizan para...
     Implementar las funciones virtuales
     Poder identificar el tipo de un objeto en tiempo de ejecución
     a) y b)
       Implementar clases virutales
       Ninguna de las anteriores
       No contesto...
 
  28. ESPECIFICACIÓN DE LENGUAJES DE PROGRAMACIÓN
La semántica interpretativa intenta representar
     El comportamiento de los programas de un lenguaje
     El cálculo de los atributos
     Las restricciones semánticas de un lenguaje
       El análisis semántico de un lenguaje
       Ninguna de las anteriores
       No contesto...
 
  29. En una gramática con atributos se ha de considerar
     El recorrido del árbol que realiza el analizador sintáctico
     La variación de los valores de los atributos
     El contenido de las variables asociadas a los símbolos no terminales
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  30. ¿Qué relaciones de cálculo se pueden dar en una gramática con atributos?
     Un atributo puede depender de cualquier otro atributo de la misma regla BNF
     Un atributo heredado sólo puede depender de otros atributos heredados
     Un atributo sintetizado sólo puede depender de otros atributos sintentizados
       Sólo los atributos heredados pueden depender de cualquier atributo
       Ninguna de las anteriores
       No contesto...
 

Check...