• Aucun résultat trouvé

Chapitre 5 Adressage des opérandes, boucles, tableaux et pointeurs

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre 5 Adressage des opérandes, boucles, tableaux et pointeurs"

Copied!
23
0
0

Texte intégral

(1)

Chapitre 5

Adressage des opérandes, boucles, tableaux et pointeurs

Jean Privat

Université du Québec à Montréal

INF2170 — Organisation des ordinateurs et assembleur Automne 2013

(2)

Plan

1 Boucles et structures de contrôles

2 Adressage des opérandes

3 Adressages calculés et tableaux

4 Adressages indirects et pointeurs

5 Autres adressages

(3)

Plan

1 Boucles et structures de contrôles

2 Adressage des opérandes

3 Adressages calculés et tableaux

4 Adressages indirects et pointeurs

5 Autres adressages

(4)

Structures de contrôles

Les langages procéduraux (et supérieurs) if(cond) instrs

if(cond) instrs else instrs while(cond) instrs

do instr while(cond)

for(instr ; cond ; instr) instrs

opérateurs booléens (and or not && || !)

En assembleur BR

BRcond

(5)

Goto vs. programmation structurée

Structures de contrôles Pour les humains

Pour écrire des algorithmes (et des recettes de cuisine)

Gotos

Pour les machines

Pour écrire des livres dont vous êtres le héros

(6)

Programmer en assembleur

Principe

Simuler les structures de contrôles

Comment faire

Transformer les structures de contrôles en BR et BRcond

Éviter d’utiliser des BR et BRcond autrement

Objectif

Le code écrit doit être le plus linéaire possible Éviter le pire (code spaghetti)

(7)

Exercices

Conditions

Écrire un programme qui demande (poliment) un nombre ; indique s’il est négatif, compris entre 0 et 100 ou plus grand que 100 ; puis dit au revoir.

Boucles

Écrire un programme qui compte de 1 jusqu’à 100

E-S

Écrire un programme qui lit un ligne et transforme les

’a’ en 4, les ’e’ en ’3’ et les ’i’ en ’1’.

(8)

Plan

1 Boucles et structures de contrôles

2 Adressage des opérandes

3 Adressages calculés et tableaux

4 Adressages indirects et pointeurs

5 Autres adressages

(9)

Rappel

L’assembleur

Attribue des adresses relatives : Aux instructions

Aux données

À l’exécution

Les adresses réelles (absolues) utilisées peut être différentes des adresses relatives

Le chargeur

Doit charger le programme quelque part en mémoire Doit se débrouiller pour que le programme fonctionne

(10)

Modes d’adressages

Spécificateur d’opérande 6= opérande

L’opérande est la valeur utilisée par l’instruction Le spécificateur d’opérande est un paramètre de l’instruction

Mode d’adressage

Le mode d’adressage est un paramètre de l’instruction

Il explique comment obtenir l’opérande à partir du spécificateur

(11)

Adressage immédiat

L’opérande telle quelle

L’opérande est dans l’instruction elle même Pas d’accès mémoire supplémentaire

opérande = spécificateur d’opérande

Exemples

LDA 456,i ; A ← 456 CHARO ’*’,i ; print(’*’) Utilisation

Constantes

(12)

Adressage direct

L’adresse effective de l’opérande

L’opérande est en mémoire à l’adresse effective désignée par le spécificateur

Plusieurs octets peuvent être lus ou modifiés opérande = mem[spécificateur]

Exemples

LDA val,d ; A ← mem[val]

CHARI char,d ; mem[char] <- getChar() ; Utilisations

Variables globales

(13)

Plan

1 Boucles et structures de contrôles

2 Adressage des opérandes

3 Adressages calculés et tableaux

4 Adressages indirects et pointeurs

5 Autres adressages

(14)

Adressage indexé

Une adresse relative de l’opérande

L’adresse effective est calculée à l’exécution Le spécificateur désigne une adresse de base Un registre d’index indique le décalage opérande = mem[spécificateur + index]

Exemples

LDX j,d ; X ← mem[j]

LDBYTEA vec,x ; mem[vec + X] (ou "vec[j]" en C) Attention

(15)

Adressage basé

Une adresse relative de l’opérande (bis) Un registre de base indique une adresse Le spécificateur désigne le décalage opérande = mem[base + spécificateur]

Exemples

Pas d’adressage basé en Pep/8

Utilisation

Relocation dynamique (chargeur)

Astuce : adressage indexé ≈ adressage basé

(16)

Tableaux

Tableaux en assembleur

Une suite de valeurs en mémoire

L’adresse du tableau est l’adresse de la première case

Attention

C’est au programmeur de gérer la longueur du tableau

la taille des éléments du tableau (octets ou mots) Exercice

Écrire un programme qui calcule la somme des

(17)

Plan

1 Boucles et structures de contrôles

2 Adressage des opérandes

3 Adressages calculés et tableaux

4 Adressages indirects et pointeurs

5 Autres adressages

(18)

Adressage indirect

L’adresse de l’adresse

L’adresse effective de l’opérande est à l’adresse effective désignée par le spécificateur

Il y a donc deux accès mémoire.

opérande = mem[mem[spécificateur d’opérande]]

Exemple

LDA dataPtr,n ; A ← mem[mem[dataPtr]]

Exercices

Simuler l’adressage indirect avec l’adressage indexé Simuler l’adressage indexé avec l’adressage indirect

(19)

Pointeurs

On manipule une adresse

En assembleur, les pointeurs ne sont pas typés

En Pep/8

Les adresses sont sur un mot

Attention : pointeur en mémoire ou adressage indexé

Exercice

Écrire un programme qui épelle un mot en utilisant l’alphabet phonétique de l’OTAN

Alpha Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliet Kilo Lima Mike November Oscar Papa Romeo Quebec Sierra Tango Uniform Victor Whiskey X-ray Yankee Zulu

(20)

Adressages indirects multiples

L’adresse de l’adresse de l’adresse de...

On précise le nombre d’indirection

Un accès en mémoire par niveau d’indirection

Exemple

Pas d’indirection multiple en Pep/8

Exercice

Simuler une indirection triple en Pep/8 en utilisant que l’adressage immédiat et l’adressage indexé opérande = mem[mem[mem[mem[spécificateur]]]]

Même question en utilisant que des adressages

(21)

Plan

1 Boucles et structures de contrôles

2 Adressage des opérandes

3 Adressages calculés et tableaux

4 Adressages indirects et pointeurs

5 Autres adressages

(22)

Adressages sur la pile

Les choses sont sur la pile

Les adresses sont relatives au pointeur de pile (SP)

4 adressages de plus Direct sur la pile Indirect sur la pile Indexé sur la pile

Indirect indexé sur la pile Plus tard

Chapitre sur les sous programmes

(23)

Segmentation et Pagination

Mécanismes évolués Architectures modernes

Utilisés par les systèmes d’exploitation

Plus tard

Cours INF3172 Principes de systèmes d’exploitation Cours INF4170 Architecture des ordinateurs

Références

Documents relatifs

93 La leishmaniose à Alger. Infection d’un enfant, d’un chien et d’un chat dans la même habitation. et Ét.), LOMBARD et QUILLICHINI 98 La leishmaniose à Alger.. Infection

Comme revu dans l'introduction, lorsqu'une expression de type tableau est l'opérande de l'opérateur d'affectation (p=tab ), d'addition (tab+2 ), d'appel de fonction

EN: The Electromagnetic Compatibility Directive (EMCD) and its amending Directives – DE: Richtlinie über elektromagnetische Verträglichkeit (EMCD) und ihre Änderungsrichtlinien

CENTRE COMMERCIAL DES TEMPLIERS 27140 GISORS... DU PDT WILSON

A la différence de ce qui est relaté dans les autres protocoles concernant l'insémination artificielle chez la chatte, le déclenchement de l'ovulation n’est donc pas réalisé à

[r]

Tous droits réservés pour tous

Activités productives : activités artisanales, activités de haute technologie, activités industrielles, activités de production de services matériels et de