Aller au contenu

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.