Compiladors II - 25002
Junio 2002

  1. OPTIMIZACIÓN DE CÓDIGO
¿Qué mejora suponen las tipletas indirectas respecto a las tipletas?
     La reordenación de código es más fácil de realizar
     Las dependencias entre instrucciones se detectan con mayor facilidad y esto simplifica la reordenación de código
     Las indirecciones se utilizan para calcular el número de registros que necesitará el código durante la ejecución.
       a) y b)
       Ninguna de las anteriores
       No contesto...
 
  2. Las cuadruplas facilitan
     La reordenación de código
     La aplicación de las propiedades de las operaciones aritméticas para optimizar
     La minimización de las transferencias entre memoria y registros
       La interpretación rápida
       Ninguna de las anteriores
       No contesto...
 
  3. Dado un código representado en forma de árbol sintáctico abstracto, la separación en bloques básicos es
     única
     dependiente del orden de generación de código
     un recorrido en postorden del árbol
       a) y b)
       Ninguna de las anteriores
       No contesto...
 
  4. Dentro de un bloque básico, ¿dónde podemos encontrar saltos incondicionales?
     Al principio del bloque básico
     En medio del bloque básico
     Al final del bloque básico
       En cualquier lugar
       Ninguna de las anteriores
       No contesto...
 
  5. Dentro de un bloque básico, ¿dónde podemos encontrar saltos condicionales?
     Al principio del bloque básico
     En medio del bloque básico
     Al final del bloque básico
       En cualquier lugar
       Ninguna de las anteriores
       No contesto...
 
  6. ¿Cuántas veces se ha de aplicar la propagación de constantes durante la optimización del código de una función?
     Una vez
     Dos veces
     Tres veces
       Cuatro veces
       Ninguna de las anteriores
       No contesto...
 
  7. ¿Qué operaciones pueden formar parte de las subexpresiones redundantes que elimine un optimizador de C++?
     Operaciones aritméticas (+,-,*,/)
     ++, --
     Operaciones booleanas (||, &&)
       a) y c)
       Ninguna de las anteriores
       No contesto...
 
  8. La propagación de constantes afecta principalmente a las optimizaciones...
     reducción de potencia y folding
     reducción de potencia, folding y reducción de frecuencia
     reducción de frecuencia
       folding
       ninguna de las anteriores
       No contesto...
 
  9. La optimización global se puede utilizar para...
     Detectar el código duplicado
     Detectar el uso de variables globales no inicializadas
     Detectar las funciones no utilizadas
       Detectar el código que nunca se ejecutará
       Ninguna de las anteriores
       No contesto...
 
  10. Cuándo se optimiza el uso de registros en la compilación de una expresión se considera
     El orden en que se evaluará las subexpresiones de la expresión
     Mantener en registro los operandos izquierdos de operaciones no conmutativas
     De qué valores de los registros hay copia en memoria
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  11. ESTRUCTURAS COMPLEJAS
¿En qué afecta la orientación a objetoa la implementación de las excepciones?
     No afecta, ya que el tratamiento de excepciones es un método más de control de flujo de ejecución
     La implementación de excepciones tiene que considerar las declaraciones de objetos
     En las llamadas a métodos hay que considerar la posibilidad que se produzcan excepciones
       b) y c)
       Ninguna de las anteriores
       No contesto...
 
  12. ¿Por qué en un switch los casos se limitan a constantes?
     Para poder detectar casos duplicados durante la compilación
     Por simplificar la gramática
     Para que un switch sea más rápido que un código escrito con if else
       Para evitar casos de selección ambiguos
       Ninguna de las anteriores
       No contesto...
 
  13. La mejor implementación de un switch cuyos casos sean todos los valores de un intervalo es
     Una tabla de saltos
     Una búsqueda dicotómica
     Una secuencia de comparaciones con cada valor del intervalo
       Una búsqueda binaria
       Ninguna de las anteriores
       No contesto...
 
  14. GESTIÓN DE MEMORIA DINÁMICA (HEAP)
¿Qué método utiliza menos memoria?
     Lista ordenada de bloques libres
     Bloques etiquetados en los extremos
     Bloques compañeros
       Recolección por copia
       Ninguna de las anteriores
       No contesto...
 
  15. ¿Qué impacto tendría el uso de gestión de memoria implícita en el lenguaje C++?
     Sería igual que con gestión de memoria explícita
     Los programas gastarían menos memoria
     Casi no se tendrían que definir constructores
       Casi no se tendrían que definir destructores
       Ninguna de las anteriores
       No contesto...
 
  16. ¿Qué dificultades introduce la aritmética de apuntadores a la implementación de gestores de memoria implícitos?
     Complica la detección de que bloques de memoria utiliza el programa
     Ninguna
     No permite la compactación de memoria
       a) y c)
       Ninguna de las anteriores
       No contesto...
 
  17. ¿Qué método tiene una menor complejidad temporal?
     El método basado en lista ordenada de bloques libres
     El método de bloques etiquetados en los extremos
     El método de bloques compañeros
       Los tres tienen la misma complejidad
       Ninguna de las anteriores
       No contesto...
 
  18. ¿Qué método tiene una complejidad menor?
     El método de marcar y barrer
     El método de recolección por copia
     Los dos métodos tienen la misma complejidad por que han de procesar todo el heap
       El método de recolección por copia tiene una complejidad mayor porque copia la memoria
       Ninguna de las anteriores
       No contesto...
 
  19. PROGRAMACIÓN FUNCIONAL
¿Cómo se puede acceder a las variables de una función después de haber acabado su ejecución?
     No es posible
     Mediante una clausura de una función definida en su ámbito local
     Mediante la recursividad en cola
       Llamando de nuevo a la función
       Ninguna de las anteriores
       No contesto...
 
  20. ¿Cuál es el principal beneficio de la optimización de la recursividad en cola?
     Una ejecución más rápida
     Una menor ocupación del heap
     Una menor ocupación de la pila
       Una menor ocupación de los bloques de activación
       Ninguna de las anteriores
       No contesto...
 
  21. La optimización de la recursividad en cola se puede implementar utilizando
     Una pila específica para los argumentos
     Poniendo el bloque de activación en el heap
     Poniendo los argumentos después del enlace dinámico junto a las variables
       c) y además poniendo el display después del enlace dinámico
       Ninguna de las anteriores
       No contesto...
 
  22. PROGRAMACIÓN LÓGICA
¿Cómo la WAM sabe queno tiene que eliminar el ámbito de una regla al salir de ella?
     Porque hay un bloque de elección encima del que lo protege (más cerca del final de la pila)
     Porque hay otro ámbito encima del que lo protege (más derca del final de la pila)
     Porque no se ha utilizado el operador de corte (cut)
       Siempre se eliminan los ámbitos al salir de una regla
       Ninguna de las anteriores
       No contesto...
 
  23. El código de unificación que se genera para la WAM
     Compara dos valores a unificar
     Instancia desconocidos
     Construye estructuras o functores
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  24. ¿Cómo se representa el desconocido?
     Mediante un apuntador cíclico
     Mediante un átomo
     Mediante un functor
       Mediante un valor constante
       Ninguna de las anteriores
       No contesto...
 
  25. PROGRAMACIÓN ORIENTADA A OBJETO
¿Cuándo se puede necesitar más de una dirección de memoria para referenciar el mismo objeto?
     Una dirección diferente para cada relación d herencia
     En el caso de la herencia simple se necesita una dirección por cada clase base
     En el caso de herencia múltiple
       Nunca
       Ninguna de las anteriores
       No contesto...
 
  26. En el caso de llamar a un método no virtual es necesario sumar a la dirección del objeto el desplazamiento al que se encuentra una clase base cuando se da la siguiente condición:
     Nunca
     Cuando se llama a un método cualquiera del objeto
     Cuando se llama a un método de una clase base
       Cuando se llama a un método de una clase base que no esté al principio de la memoria que ocupa el objeto
       Ninguna de las anteriores
       No contesto...
 
  27. En el caso de llamar a un método virtual, este sumará a la dirección del objeto el desplazamiento resultante de
     No se tiene que aplicar desplazamiento en ningún caso
     Pasar de la dirección de una clase base a una clase derivada. Este desplazamiento será negativo
     Pasar de la dirección de una clase derivada a una clase base. Este desplazamiento será positivo
       Pasar de la dirección de una clase derivada a otra clase derivada. Este desplazamiento será positivo
       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 de programación
     El cálculo de los atributos
     Las restricciones semánticas de un lenguaje de programación
       El análisis semántico de un lenguaje de programación
       Ninguna de las anteriores
       No contesto...
 
  29. ¿Qué ventajas aporta el uso de gramáticas con atributos?
     Son independientes del analizador sintáctico utilizado
     Su notación marca donde se pueden producir errores semánticos
     a) y b)
       Se implementan fácilmente
       Ninguna de las anteriores
       No contesto...
 

Check...