• Aucun résultat trouvé

Chapitre 9 Structure et données

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre 9 Structure et données"

Copied!
21
0
0

Texte intégral

(1)

Chapitre 9

Structure et données

Jean Privat

Université du Québec à Montréal

INF2170 — Organisation des ordinateurs et assembleur Automne 2013

(2)

Plan

1 Données

2 Structures

3 Tas et allocation dynamique

4 Listes

(3)

Plan

1 Données

2 Structures

3 Tas et allocation dynamique

4 Listes

(4)

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)

(5)

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

(6)

Plan

1 Données

2 Structures

3 Tas et allocation dynamique

4 Listes

(7)

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)

(8)

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

(9)

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

(10)

Exemple en Pep/8

Utiliser .EQUATE

p r C o d e : . EQUATE 0 ; #2d Le c o d e 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 ( c h a î 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 ; #p r C o d e #p r P r i x #prNom

(11)

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)

(12)

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

(13)

Plan

1 Données

2 Structures

3 Tas et allocation dynamique

4 Listes

(14)

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

(15)

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

(16)

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

(17)

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

(18)

Exercice

Des tas de produits

Allouer des produits dans le tas Les initialiser

Les afficher

(19)

Plan

1 Données

2 Structures

3 Tas et allocation dynamique

4 Listes

(20)

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 c o d e ; i n t p r i x ; S t r i n g nom ; P r o d u i t n e x t ; }

(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

Références

Documents relatifs

On désire ecrire un programme qui calcule le discriminant et les éventuelles racines d’un trinôme du second degré ax 2 + bx + c... Première S Programmer

Pour afficher l'heure d'enregistrement des ondes cherchées, déplacer le curseur par un « cliquer- glisser » et lire l’heure en haut à droite. Choisir le nombre de trace

À ce niveau, deux fichiers PostScript sont créés : le premier est compacté (gzip) et rendu disponible sur le serveur, le second est créé en incluant les polices en format Type 1

Ecrivez l’algorithme puis le programme qui réponde au problème suivant : Vous effectuez une dépense de santé d’un montant MT à saisir. La Sécurité sociale vous rembourse 70%

Si les oiseaux et les insectes ont tous les deux des ailes, ils n’ont pas le même nombre de pattes : 6 pattes pour les insectes et 2 pattes pour

Cliquer sur le lien « Tableau de bord », puis aller dans l’onglet « Cours » pour voir la liste des cours dont vous êtes gestionnaire. Cliquer sur le cours que vous voulez éditer..

[r]

 Suite à ces analyses, envoyer votre production à Fabrice pour validation du projet, un appel téléphonique sera nécessaire pour mettre à jour le projet et le valider..