Bloc 1
(3 semaines)
|
Architecture d’un ordinateur
- Architectures Von Neumann et Harvard
- Unité centrale de traitements (UCT), cartes (PCI et mémoire), bus et périphériques d’entrées/sorties.
- Types de mémoire (RAM, ROM, PROM, EPROM, EEPROM, flash, cache)
- Mémoire virtuelle
Base numérique (binaire, octale, décimale, hexadécimale).
Représentation des nombres et des symboles :
- Nombres entiers (positif, négatif)
- Caractères alphabétiques
- Nombre réels à simple et double précision (IEEE-754)
Calcul à virgules flottantes
Composition d’un processeur (UCT) :
- Bus de données, registres, unité arithmétique et logique (UAL), unités de stockage, unité de contrôle et de commande (UCC)
Bases du traitement parallèle (branchements, dépendances, instructions) :
- Exécution séquentielle sur mémoire unique (SISD)
- Instruction unique sur données variées (SIMD)
- Instructions variées sur données variées (MIMD)
|
Bloc 2
(3 semaines)
|
Fonctionnement d’un processeur :
Organisation de la mémoire : tas ou heap, pile ou stack, pointeur de pile ou stack pointer et compteur ordinal ou program counter
Programmation à l’aide du langage assembleur d’une machine virtuelle
- Éléments de base du langage assembleur
-Registres (A, X, Z, N, C, V)
-Instructions machine - Pep/8 (LDr, STr, LDBYTEr, STBYTEr, ADDr,
SUBr, NEGr, NOTr, ORr, ANDr, ASLr, ASRr, ROLr, RORr, NOP, STOP)
- Comparaison booléenne
- Branchement absolu et conditionnel (BRLT, BRLE, BREQ, BRGE, BRGT)
- CPr
- Variables globales : .WORD, .BYTE, .ASCII, .BLOCK, .ADDRSS
- Constantes littérales : .EQUATE
- Entrées/sorties (DECI, CHARI, DECO, CHARO)
- Structures de contrôle (if, if-else, if-else-if, switch-case, while, do-while et for)
- Arithmétique de base avec les entiers et les réels (+, -, * et /)
- Modes d'adressage : immédiat (i), direct (d) et indirect (n)
*** Programme principal sans sous-programme avec variables globales
|
Bloc 3
(5 semaines)
|
Programmation à l’aide du langage assembleur d’une machine virtuelle (suite)
- Déclaration de tableaux statiques à une et deux dimensions (suite d'octets consécutifs).
- Mode d'adressage indexé (x)
- Pile système et pointeur de pile en Pep8 (SP)
- Empile (adresse décroissante) et désempile (adresse croissante)
- ADDSP et SUBSP
- Variables globales (heap) version variables locales (pile)
- Mécanisme d'empilement des variables locales
- Déclaration de variables et de tableaux (avec son adresse) sur la pile (MOVSPA)
- Appel (call) et écriture de sous-programmes (avec et sans paramètre)
- CALL, RETn
- Passage de paramètres
- Partage des responsabilités entre les sous-programmes appelants et appelés
- Déclaration des constantes pour les paramètres effectifs et empilement
- Modes d'adressage sur la pile : direct (s), indexé (sx), indirect (sf) et indirect indexé (sxf)
- Passage par copie de valeur
- Mécanisme de dépilement des variables locales et des paramètres formels avant le retour d'un sous-programme
- Passage par copie d'adresse (p. ex. scanf("%d", &x);)
- Fonction et valeur de retour
- Enregistrement : Structures simples et tableaux d'enregistrements
- Déclaration sur la pile et passage de paramètres par copie et par copie d'adresse (référence).
- Explication simple d'une table d'allocation, d'allocation dynamique sur le tas ou heap et de contraintes d'alignement.
|