Chapitre 9 Structure et données Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 1 / 21
Plan 1 Données 2 Structures 3 Tas et allocation dynamique 4 Listes Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 2 / 21
Plan 1 Données 2 Structures 3 Tas et allocation dynamique 4 Listes Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 3 / 21
Données Donnés simples Entier (8 bits, 16 bits Charactères Pointeurs Flotants (pas encore) Instructions Données complexes Tableaux (dont chaînes de caractères) Tableaux à plusieurs dimentions Structures (enregistement) Objets (instances de classes) Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 4 / 21
En assembleur Principe Tout n est que bits Le sens des tas de bits est la manipulation qui en est faite Et mes données complexes alors? Au programmeur assembleur de se débrouiller Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 5 / 21
Plan 1 Données 2 Structures 3 Tas et allocation dynamique 4 Listes Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 6 / 21
Structures Définiton Un agrégat de données Exemples (à peu près) Une structure C Un tuple de base de donnée Un objet Java (sans méthode) Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 7 / 21
Structures en assembleur En mémoire Les champs en mémoire En séquence La taille de la structure vaut (au moins) la somme de la taille des éléments Accès aux champs On connaît l adresse mémoire de la structure On connaît la position relative du champ Donc, on somme Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 8 / 21
Exemple Structure produit Un code (entier 16 bits) Un prix en cents (entier 16 bits) Un nom (pointeur vers une chaîne de caractère) Caractéristique Taille d un produit : 6 octets Position du code : +0 octets Position du prix : +2 octets Position de l adresse de la chaîne : +4 octets Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 9 / 21
Exemple en Pep/8 Utiliser.EQUATE prcode :.EQUATE 0 ; #2d Le code p r o d u i t p r P r i x :.EQUATE 2 ; #2d Le p r i x du p r o d u i t ( en c e n t s ) prnom :.EQUATE 4 ; #2h Le nom du p r o d u i t ( cha î ne ) Utiliser l adressage indexé LDX p r P r i x, i DECO p r o d u i t, x ; A f f i c h e l e p r i x Utiliser le débogeur p r o d u i t :.BLOCK 6 ; #prcode #p r P r i x #prnom Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 10 / 21
Exercice Sur les produits Afficher le prix d un produit initialisé Afficher un produit en entier (sous-programme) Initialiser un produit vide Initialiser un produit interactivement (sous-programme) Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 11 / 21
Tableaux et structures Un tableau Des données concaténées Un tableau de structures Des structures concaténées Accéder à un champ C est de l arithmétique d adresse Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 12 / 21
Plan 1 Données 2 Structures 3 Tas et allocation dynamique 4 Listes Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 13 / 21
Tas Définition Zone mémoire réservée aux allocations dynamiques malloc, new, etc. Concrètement C est dans la mémoire Gérée par le programme Pas de gestions spécifique de l UCT Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 14 / 21
Tas dans les langages de haut niveau Pas gérée pas le programme Gérée par bibliothèque (C) Gérée par le compilateur (C++) Gérée par la machine virtuelle/interpréteur (Java et autres) Et les détails? Cachés au programmeur Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 15 / 21
Tas en assembleur Do It Yourself On se déclare une zone de tas On se fait un sous-programme new New Entrée A : nombre d octets à allouer Sortie X : pointeur vers la zone allouée Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 16 / 21
Désallocation Manuelle On fait un sous-programme free Une structure permettant de savoir ce qui est libre ou pas new et free mettent à jour la structure Automatique (Ramasse-miettes) Quelque chose fait des free tout seul Les détails quand vous serez plus grands En Pep/8 Laissons tomber la désallocation Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 17 / 21
Exercice Des tas de produits Allouer des produits dans le tas Les initialiser Les afficher Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 18 / 21
Plan 1 Données 2 Structures 3 Tas et allocation dynamique 4 Listes Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 19 / 21
Liste Définition Des maillons chaînés ensembles Une structure contenant l adresse de la structure suivante (voire de la précédente) Exemple c l a s s P r o d u i t { i n t code ; i n t p r i x ; S t r i n g nom ; P r o d u i t next ; } Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 20 / 21
Exercice Des listes de produits Allouer et initialiser une liste de produits Les afficher tous mais dans l ordre inverse Afficher seulement ceux dont le prix est > 10 Jean Privat (UQAM) 09 Structures et données INF2170 Automne 2013 21 / 21