---
# System prepended metadata

title: MIF08 QCM_CM5
tags: [QCM_CM5]

---

---
title: MIF08 QCM_CM5
tags: QCM_CM5
---

**Question 1 : La génération du code assembleur dans un compilateur** ✅

- [ ] utilise un graphe de flot de contrôle (CFG) comme représentation intermédiaire 
- [ ] N'utilise jamais de graphe de flot de contrôle (CFG) comme représentation intermédiaire
- [x] Peut utiliser un graphe de flot de contrôle (CFG) comme représentation intermédiaire, mais pas forcément.

**Question 2 : Dans un compilateur, sont NP-complets les problèmes suivants:**  ?
- [ ] L'analyse syntaxique.
- [ ] Le calcul des intervalles de durée de vie des variables temporaires.
- [X] Le coloriage du graphe de conflit avec un nombre minimal de couleurs.
- [X] La génération de code.
- [?] L'ordonnancement d'instructions à l'intérieur d'un bloc de base.

**Question 3 : Soit le programme C : Cochez les affirmations correctes. Il est vivement conseillé de faire un dessin.** (Florian) ✅
```
int main() {
    int x,y,z,t;
    x=42;
    t=666;
    y=0;
    z=1;
    while(y == z) {
        x = 0;
    };
    println_int(x);
    t=1234;
    println_int(t);

    return 0;
}
```

- [ ] La variable y est vivante juste avant d’entrer dans la boucle.
- [x] L’affectation t=666 est du code mort et peut être supprimée sans changer la sémantique du programme.
- [ ] L’affectation t=1234 est du code mort et peut être supprimée sans changer la sémantique du programme.
- [ ] La variable t est vivante juste avant d’entrer dans la boucle.
- [ ] L’affectation x=42 est du code mort et peut être supprimée sans changer la sémantique du programme     .
- [ ] La variable x est vivante juste avant d’entrer dans la boucle.
- [x] La variable z est vivante juste avant d’entrer dans la boucle.
- [ ] L’affectation x=0 est du code mort et peut être supprimée sans changer la sémantique du programme.

**Question 4 :  L'analyse de vivacité (liveness) de variables ...** ✅
- [ ] Est utilisée pour construire le graphe de flot de contrôle.
- [ ] N'est pas nécessaire pour une allocation naive qui alloue un registre physique par temporaire
- [ ] Est utilisée pour l'analyse lexicale
- [x] Est utilisée pour construire le graphe de conflit, lui-même utilisé pour l'allocation de registres
- [ ] Est utilisée pour l'analyse syntaxique

**Question 5 : Un graphe de flot de contrôle ...** ✅
- [x] Est une représentation intermédiaire utilisée dans un compilateur
- [ ] Est généré par ANTLR en analysant un programme
- [x] Permet de réaliser l'analyse de vivacité (liveness) des variables

**Question 6 :  Dans la phase d'allocation de registres, l'analyse de vivacité des variables ("liveness"):** ? ✅
- [ ] Se fait sur l'arbre (de dérivation/syntaxique) du programme.
- [x] Calcule un sur-ensemble des variables vivantes en chaque point.
- [ ] Calcule exactement les variables vivantes en chaque point du programme.
- [x] Sert à calculer des informations de conflit.
- [ ] Calcule un sous-ensemble des variables vivantes en chaque point.

**Question 7 : Les étapes d'analyse et transformation réalisées par un compilateur sont :** ✅
- [x] l'analyse lexicale
- [x] L'analyse syntaxique
- [X] La vérification de type.
- [ ] Le chargement du fichier binaire exécutable en mémoire.
- [ ] ((La coloration syntaxique) -> impossible moy la dit 👎).
- [ ] L'analyse p-adique.(ça ressemble au lycée Kadic lol comme dans code lyoko)
- [ ] La transformation de Fourier.
- [x] L'allocation de registres.
- [x] La génération de code 3 adresses.
- [ ] L'évaluation des opérations arithmétiques par un interprète.