---
# System prepended metadata

title: Untitled

---

**1. Dans notre série de TP, les tests unitaires (infrastructure pytest):**
- [X] Permettent d'avoir confiance en notre compilateur 
- [ ] Servent à tester le code final généré 
- [ ] Servent à tester qu'il n'y a jamais d'erreur à l'éxécution 

**2. Le code 3-adresses comme vu en cours est:**
- [ ] Du code éxécutable
- [x] Une réprésentation intermédiaire **(POSSIBLE)**
- [x] Une variante du code assembleur **(POSSIBLE)**

**3. L'ordonnancement des intructions peut permettre de:**
- [X] Utiliser les threads 
- [ ] Gérer les priorités entre processus 
- [X] Réduire la pression sur les registres, ce qui permettra de limiter les accés mémoires 
- [ ] Réduire le nombre de bugs dans le code généré 
- [ ] Réduire le nombre de bugs dans le code généré 
- [X] Générer du code efficace en utilisant au miaux le pipeline du processeur 

**4. Les règles de génération de code du cours sont: (1 seule réponse)**
- [ ] Le code assembleur généré 
- [ ] Du code Python représentant l'algorithme du compilateur pour la génération de code 
- [ ] Du pseudo code représentant le code assembleur généré 
- [X] Du pseudo code représentant l'algorithme du compilateur pour la génération du code 

**5. Un graphe de flot de contrôle:** 
- [x] est une représentation intermédiaire utilisée dans un compilateur 
- [ ] permet de réaliser de vivacité (Liveness) des variables 
- [ ] est généré par ANTLR en analysant un programme 


**6. Dans un compilateur, la table de symboles utilisée pour associer un temporaire à chaque variable est utilisée:**
- [X] Pendant la génération de code 
- [ ] A l'éxécution 
- [X] Pendant la compilation 

**7. Les avantages et défauts de l'allocation naïve qui alloue tous les temporaires dans les registres physiques sont :**
- [X] Avantage: c'est plus simple que les autres à coder 
- [X]  Inconvénient : l'algorithme n'est pas complet (certains programmes corrects ne sont pas compilables avec cet algorithme )
- [X] Inconvénient : Le code généré est très lent 

