Objectifs du deuxième travail écrit
Les objectifs qui seront examinés par le deuxième travail écrit sont les suivants:
Chapitres du script :
- Chapitre 3 : Architecture interne (Chapitre 3.5 + exercices 8 à 10)
- Chapitre 4 : Systèmes de nombres
- Chapitre 5 : Assembleur des processeurs ARM
Travaux pratiques :
- TP03 : 7-Segments et PWM
- TP04 :_ Codeur rotatif et écran LCD
- TP05 :_ La tour de Hanoï en assembleur
Chapitre 3 : Architecture interne
- Comprendre le rôle du pipeline sur la performance des CPUs.
- Savoir expliquer les différentes phases du pipeline.
- Comprendre les limites des pipelines (aléas, branchements, …) et la manière d’y remédier.
- Savoir écrire des programmes qui utilisent le pipeline efficacement.
- Comprendre et savoir résoudre les exercices 8 à 10.
Chapitre 4 : Systèmes de nombres
- Savoir représenter les nombres en base 2, 10 et 16.
- Savoir représenter les nombres signés et non signés.
- Comprendre le fonctionnement de l’addition binaire (avec des nombres signés et non signés).
- Comprendre le rôle des fanions (C, Z, N, V), savoir comment ils sont calculés es comment les utiliser.
- Comprendre la représentation des nombres signés (complément à deux)
- Savoir calculer l’opposé d’un nombre signé.
- Savoir comment l’addition binaire peut être utilisée pour soustraire deux nombres (signés ou non signés)
- Comprendre les opérations de comparaison.
- Comprendre la relation entre les fanions et les opérations de comparaison.
- Savoir coder et interpréter les nombres en virgules flottantes (IEEE 754).
- Comprendre et savoir résoudre tous les exercices.
Chapiter 5 : Assembleur des processeurs ARM
- Savoir décrire la structure d’un module d’assemblage.
- Comprendre le rôle et l’utilisation des symboles et des “labels”.
- Comprendre comment gérer les données (variables globales et constantes) dans un module d’assemblage.
- Comprendre le rôle des “macros” en assembleur.
- Comprendre l’assemblage conditionnel.
- Comprendre le rôle de la “stack” et son utilisation en assembleur.
- Savoir écrire du code en assembleur pour des fonctions simples.
- Comprendre l’utilisation et les rôles des registres.
- Etre capable d’implémenter un appel de fonction en assembleur (avec passage de paramètres).
- Savoir expliquer les différentes techniques (par valeur ou par référence) et les différents mécanismes (par registre ou avec la stack) pour passer des paramètres à une fonction.
- Comprendre comment une fonction peut retourner une valeur.
- Savoir expliquer les instructions conditionnelles et comprendre leur rôle.
- Etre capable d’utiliser l’opérande de décalage.
- Comprendre les opérations d’échange de données avec les registres (
MOV
) - Etre capable de comprendre et d’écrire du code pour lire et écrire la mémoire (
LDR
,STR
,LDM
,STM
). - Etre capable d’utiliser les instructions arithmétiques et logiques.
- Etre capable d’implémenter les instructions de contrôle de flux (
if ... else if ... else
,switch / case
,while ... do
.do ... while
.for
) en assembleur. - Comprendre et savoir résoudre tous les exercices.
Travaux pratiques :
- Comprendre le fonctionnement des registres à décalage.
- Comprendre le fonctionnement des afficheurs 7-segments.
- Comprendre le rôle et le fonctionnement du PWM et son lien avec les timers.
- Comprendre le fonctionnement du codeur rotatif et de son bouton‑poussoir.
- Etre capable de déterminer le sens de rotation du codeur rotatif en fonction des signaux A et B.
- Etre capable de concevoir une machine d’état (et d’une table de transitions) pour le codeur rotatif et pour un bouton‑poussoir.
- Comprendre le rôle et l’utilisé des timers
- Savoir programmer en “orienté objet” en C++
- Comprendre l’utilisation du CI/CD
- Savoir écrire des tests unitaires et comprendre les bienfaits des tests.