assemb coursi

86
Architecture des ordinateurs Fa¨ ıssal Ouardi [email protected] Coordinateur du Module M11 Fa¨ ıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 1/1

Upload: fadwa-zed

Post on 23-Oct-2015

28 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Assemb CoursI

Architecture des ordinateurs

Faıssal Ouardi

[email protected]

Coordinateur du Module M11

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 1 / 1

Page 2: Assemb CoursI

Mod�ele de Von Neumann (1946)

Memoire sequentielle

programme (instructions)

donnees

organisation en vecteur de mots.

Unite centrale

Une unite de traitement arithmetique ou logique : l’U.A.L.

Unite de commande (controle).

Interfaces d’entrees/sorties

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 2 / 1

Page 3: Assemb CoursI

M�emoire

d�e�nitions tr�es large

Memoire : dispositif (electronique) capable de conserver et de

restituer une information

Mot memoire : ensemble de bits pouvant etre lus ou ecrits

simultanement

Importance

Deux caracteristiques essentielles pour un ordinateur :

Vitesse de traitement

Capacite a memoriser les informations

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 4: Assemb CoursI

M�emoire

m�emoire

On classe les memoires selon

Caracteristiques : capacite, debit ...

Type d’acces : sequentiel, direct ...

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 5: Assemb CoursI

M�emoire

Di��erents types physiques de m�emoires

Principaux supports utilises :

Semi-conducteur : registres

Magnetique : disquettes

Optique : CD-ROM

Dur�ee de m�emorisation

Fonction du temps :

Quasi-permanente : CD-ROM, disques, disquettes, ROM

temporaire : memoires dynamiques, registres

Alimentation electrique :

Alimente: RAM, registre,

Non alimente: CD-ROM,...

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 6: Assemb CoursI

M�emoire

Capacit�e

Represente le nombre d’information stockable

Exprime en mot (word) ou octet (byte)

le kilo informatique Ko vaut 1024 octets et non 1000 (210 = 1024 ∼ 1000).

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 7: Assemb CoursI

M�emoire

Performance

Temps d’acces : temps necessaire a une operation de lecture/ ecriture

Debit : la quantite d’informations lues/ecrites par unite de temps

1Mo/s

Mode d’acces : Maniere de retrouver une information

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 8: Assemb CoursI

M�emoire

L’ideal est de disposer d’une memoire tres rapide etillimite ! C’est impossible !

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 9: Assemb CoursI

M�emoire

Hi�erarchie

Plus les donnees sont utilisees, plus ont doit y acceder rapidement ⇒hierarchie

du plus rapide au moins rapide

du moins couteux au plus couteux

du plus petit au plus grand

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 3 / 1

Page 10: Assemb CoursI

M�emoireRegistres

Carac�eristiques

Se trouvent integres dans le CPU

Capacite typique : < 1Ko

Un registre est un mot stockant des informations relatives a uneinstruction

Operandes

Parametres

Resultats

Peu nombreux dans un CPU

Tampon entre CPU et memoire centrale

Tres rapides (vitesse du CPU), Debit : 4000 − 32000Mo/s

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 4 / 1

Page 11: Assemb CoursI

M�emoireM�emoire cache

Carac�eristiques

Memoire intermediaire entre le processeur et la memoire centrale

Memoire cache est integree dans le processeur et est cadencee a la

meme frequence

But :

Debit de la memoire centrale tres lent par rapport au debit requis par

le processeur

On accelere la vitesse de lecture des informations par le CPU en les

placant dans le cache

Capacite : < 4Mo

Debit : 800 − 5000Mo/s

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 4 / 1

Page 12: Assemb CoursI

M�emoireM�emoire de masse

Caract�eristiques

Memoire de grande capacite : plusieurs centaines de Mo a plusieurs

centaines de Go

Memoire non volatile

Stockage

Tres lente : 4 − 32Mo/s

Exemples : Disque dure, DVD ou CD...

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 5 / 1

Page 13: Assemb CoursI

M�emoireM�emoire Principale

Caract�eristiques

Taille : quelques centaines de Mo a quelques Go

De type DRAM car moins cher

Vitesse relativement lente

RAM

Stockent des donnees temporaires

2 categories :RAM dynamique (DRAM) :

Condensateurs utilises comme unite de memorisation.

Rafraıchissement periodique obligatoire

Composee : 1 transistor, 1 condensateur

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 5 / 1

Page 14: Assemb CoursI

M�emoireM�emoire Principale

Caract�eristiques

Taille : quelques centaines de Mo a quelques Go

De type DRAM car moins cher

Vitesse relativement lente

RAM

Stockent des donnees temporaires

2 categories :RAM statique (SRAM) :

Bascules utilisees comme unite de memorisation

Plus rapide

Pas de rafraıchissement

Composee : 4 transistors

Cout plus eleve

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 5 / 1

Page 15: Assemb CoursI

M�emoireM�emoire Principale

ROM

Utilises pour le stockage permanent

4 categories

ROM : ecriture unique lors de la fabrication

PROM : ecriture unique apres la fabrication

EPROM : admet un nombre d’ecriture limite (effacable par ultra-violet)

EAROM : admet un nombre d’ecriture illimite (effacable par electricite)

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 6 / 1

Page 16: Assemb CoursI

Interface d'entr�ee/sortie

Role

Connecter le peripherique au bus de donnees

Gerer les echanges entre le processeur et le peripherique

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 7 / 1

Page 17: Assemb CoursI

Bus

Bus

Ensemble de liaisons physiques fils (fils, pistes de circuits imprimes,...) qui

assure la transmission du meme type d’information entre plusieurs

elements materiels.

Objectif : reduire le nombre de voies necessaires a la communication

des differents composants.

Caracteristiques :

Largeur : nombre de lignes physiques sur lesquelles les donnees sont

envoyes = nombre de bits transmis en parallele.

Frequence (en Hz) : nombre de paquets de donnees envoyees ou recus

par seconde.

Dedit maximal (ou taux de transfert maximal) : quantite de donnees

transportees par unite de temps (largeur × frequence).

Exemple : largeur 16 bits et frequence 133MHz → 266Mo/s

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 8 / 1

Page 18: Assemb CoursI

Bus

Bus de donnees : bidirectionnel qui assure le transfert des instructions

entre le processeur et son environnement, et inversement. Son

nombre de lignes est egal a la capacite de traitement du processeur.

Bus d’adresses : unidirectionnel qui permet la selection des

informations a traiter dans un espace memoire (ou espace adressable)

qui peut avoir 2n emplacements, avec n = nombre de conducteurs du

bus d’adresses.

Bus de commande : bidrectionnel, constitue par quelques conducteurs

qui assurent la synchronisation des flux d’informations sur les bus des

donnees et des adresses.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 8 / 1

Page 19: Assemb CoursI

Unit�e CentraleProcesseur

Processeur (CPU, Central Processing Unit) qui est charge d’interpreter et

d’executer les instructions d’un programme, de lire ou de sauvegarder les

resultats dans la memoire.

Toutes les activites du microprocesseur sont cadencees par une horloge.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 9 / 1

Page 20: Assemb CoursI

Unit�e CentraleProcesseur

Caract�eristiques

frequence d’horloge : en MHz ou GHz

le nombre d’instructions par secondes qu’il est capable d’executer : en

MIPS

la taille des donnees qu’il est capable de traiter : en bits

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 9 / 1

Page 21: Assemb CoursI

Unit�e CentraleProcesseur

Une instruction est une suite de 0 et de 1 qui codent des informations,

selon un format definit par le concepteur du processeur (sur un octet, un

mot de 16 bits, ... ): l’instruction elle-meme, les operandes, et la facon

d’acceder a ceux-ci.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 9 / 1

Page 22: Assemb CoursI

ProcesseurUnit�e de commande

1 “Cherche“ les instructions en memoire (fetch) : positionne l’adresse

de l’instruction sur le bus d’adresses, puis, apres une delais assurant

que le contenu de cette adresse est bien stable sur le bus de donnees,

charge dans un registre le code instruction ainsi obtenu.

2 ”Reconnaıt” l’instruction, operation designee par decodage (decode),

3 ”Indique” l’unite de traitement quels traitements arithmetiques ou

operations logiques il faut effectuer. sequencement (execute).

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 10 / 1

Page 23: Assemb CoursI

ProcesseurUnit�e de commande

Composition

Le registre instruction, note RI, recoit le code de l’instruction que

l’unite de commande est “alle chercher“ en meoire.

Le compteur ordinal, note CO ou PC (Program Counter), est un

compteur contenant l’adresse de l’instruction a executer.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 10 / 1

Page 24: Assemb CoursI

ProcesseurUnit�e de commande

Composition

Decodeur d’instruction est un circuit combinatoire de reconnaissance

de l’instruction contenue dans le registre instruction.

Bloc logique de commande (Sequenceur) est le dispositif qui produit

la suite des commandes de chargement, sens de decalage, code

operation pour l’UAL, etc. Il organise l’execution des instructions au

rythme d’une horloge.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 10 / 1

Page 25: Assemb CoursI

ProcesseurUnit�e de traitement

L’Unite Arithmetique et Logique (UAL): Un circuit complexe qui

assure les fonctions logiques (ET, OU, Comparaison, Decalage ,

etc...) ou arithmetique (Addition, soustraction).

Le registre d’etat : Chacun de ces bits est un indicateur dont l’etatdepend du resultats de la derniere operation effectuee par l’UAL. Onles appelle indicateur d’etat ou flag ou drapeaux.

etenue (carry : C)

retenue intermediaire (Auxiliary-Carry : AC)

signe (Sign : S)

debordement (overflow : OV ou V)

zero (Z)

parite (Parity : P)

Les accumulateurs : Registres de travail qui servent a stocker une

operande au debut d’une operation arithmetique et le resultat a la fin

de l’operation.Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 10 / 1

Page 26: Assemb CoursI

Sch�ema fonctionnel

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 11 / 1

Page 27: Assemb CoursI

Cycle d'ex�ecution d'une instruction

Fetch

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 12 / 1

Page 28: Assemb CoursI

Cycle d'ex�ecution d'une instruction

Decode

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 12 / 1

Page 29: Assemb CoursI

Cycle d'ex�ecution d'une instruction

Execute

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 12 / 1

Page 30: Assemb CoursI

Jeu d'instructions

La premiere etape de la conception d’un microprocesseur est la definition

de son jeu d’instructions.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 31: Assemb CoursI

Jeu d'instructions

Codage

Une instruction est composee de deux champs :

∗ le code instruction (opcode) : indique au processeur quelle instruction

realiser

∗ le champ operande : contient la donnee, ou la reference a une donnee

en memoire

Comment interpreter Operandes pour trouver les donnees de l’instruction

opcode ?

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 32: Assemb CoursI

Jeu d'instructions

Les modes d'adressage

C’est la facon d’acceder aux donnees. On peut citer :

∗ direct sur registre : l’operande est un registre de donnee ou d’adresse.

∗ indirect sur registre : l’operande est designe soit par le contenu d’un

registre d’adresse soit par l’addition du contenu d’un registre d’adresse

et daune constante (deplacement ou offset ) et/ou du contenu d’un

registre de donnee ou d’adresse designe par le terme d’index.

∗ immediat : la donnee est fournie dans le code instruction.

∗ relatif au compteur ordinal : l’adresse est calculee a partir de

l’addition du compteur ordinal et d’un deplacement et/ou d’un index.

∗ implicite : les registres manipules sont les registres detat ou de

controle ( etat, compteur ordinal, piles).

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 33: Assemb CoursI

Jeu d'instructions

Types d'instructions

Transfert : mouvement de donnees MOV...

Arithmetiques et logiques : ADD, AND

Controle de sequence :

∗ saut conditionnel

∗ appel de procedure

Interruptions : en general int numero de 0 a 255.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 34: Assemb CoursI

Jeu d'instructions

Deux grands types de jeux d’instructions

1 CISC : Complex Instruction Set Computing

∗ Exemples : processeurs Intel et AMD : familles x86

2 RISC : Reduced Instruction Set Computing

∗ Exemples : Sun Sparc et IBM PowerPC

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 35: Assemb CoursI

Jeu d'instructions

CISC vs RISC

Faire la somme du registre R1 et de la valeur a l’adresse 10 en memoire et

placer le resultat a l’adresse 20

RISC CISC

ADD Reg, Reg, Reg

ADD Reg, Reg, Reg ADD Reg, Mem, Mem

ADD Mem, Mem, Mem

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 36: Assemb CoursI

Jeu d'instructions

CISC vs RISC

Faire la somme du registre R1 et de la valeur a l’adresse 10 en memoire et

placer le resultat a l’adresse 20

RISC CISC

LOAD R2, [10] ADD R1, [10], [20]

ADD R3, R1, R2

STORE R3, [20]

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 13 / 1

Page 37: Assemb CoursI

Langage Assembleur

Le langage d’assemblage est une representation symbolique du codage

binaire des instructions machine.

C’est une version lisible par un humain du langage machine, obtenu en

remplacant les valeurs binaires du langage machine par des mnemoniques

(instruction du langage assembleur).

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1

Page 38: Assemb CoursI

Langage Assembleur

1 Ecriture d’un ou plusieurs fichiers

sources

2 Invocation de programmes de

traduction, l’assembleur pour la

langage d’assemblage, compilateur

pour des langages evolues· · · Le

fichier cree s’appelle fichier objet

3 Appel l’editeur de liens (linker) qui

prend en entree un ou plusieurs

fichiers objets pour creer un fichier

binaire executable (chargeable)

4 Pour executer un fichier, le chargeur

(loader) va le chercher sur le disque et

le ranger en memoire.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1

Page 39: Assemb CoursI

Langage Assembleur

Phase d’assemblage

Premiere passe : Creation de la tabledes symboles et les adresses associeesa chaque mnenomique.

1 initialisation d’un compteur a zero2 ce compteur est incremente a chaque

lecture d’une ligne du fichier source3 pour chaque symbole rencontre, on

cree une nouvelle entree dans la

table des symboles (cross-reference).

Si celui-ci est une etiquette, on lui

associe la valeur du compteur

Deuxieme passe : a partir de de la

table symboles l’assembleur effectu le

codage binaire de chaque instruction

et la range dans le fichier objetFaıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1

Page 40: Assemb CoursI

Langage Assembleur

Edition des liens

Les fichiers objets comportent au moins trois

sections :

le programme (text segment, ou code

segment) ;

les donnees initialisees par l’utilisateur

(data segment)

les donnees non initialisees (bss

segment), eventuellement mise a zero

par le systeme).

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1

Page 41: Assemb CoursI

Langage Assembleur

Fusion des espaces d'adressage des

di��erents modules objets

l’editeur de liens construit une table qui

contient le nom, la taille et la longueur de

tous les modules objets, puis il affecte une

adresse de chargement a chaque module

objet.

Construit un module objet unique dote

d’une seule table de symboles

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1

Page 42: Assemb CoursI

Langage Assembleur

Assembleur

Programme qui transforme le langage

assembleur en langage machine.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1

Page 43: Assemb CoursI

Architecture Intel 32

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 44: Assemb CoursI

Architecture Intel 32

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 45: Assemb CoursI

Architecture Intel 32

Chaque registre peut avoir une fonction particuliere implicite selonl’instruction utilisee :

* EAX : accumulateur ou valeur de retour de fonction

* EBX : base ou pointeur vers des donnees dans le segment DS (adresse

memoire)

* ECX : compteur de boucles

* EDX : pointeur pour entrees/sorties

* ESI : pointeur de donnees dans DS et pointeur source pour la

manipulation de chaınes de caracteres

* EDI : pointeur de donnees dans ES et pointeur destination pour la

manipulation de chaınes de caracteres

* EBP : base de la pile (dans le segment SS)

* ESP : pointeur sur le sommet de la pile (dans le segment SS)

Autres registres :

* EIP : pointeur d’instruction

* FLAGS : flags (drapeaux 1 bit)

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 46: Assemb CoursI

Architecture Intel 32

Chaque registre peut avoir une fonction particuliere implicite selonl’instruction utilisee :

* EAX : accumulateur ou valeur de retour de fonction

* EBX : base ou pointeur vers des donnees dans le segment DS (adresse

memoire)

* ECX : compteur de boucles

* EDX : pointeur pour entrees/sorties

* ESI : pointeur de donnees dans DS et pointeur source pour la

manipulation de chaınes de caracteres

* EDI : pointeur de donnees dans ES et pointeur destination pour la

manipulation de chaınes de caracteres

* EBP : base de la pile (dans le segment SS)

* ESP : pointeur sur le sommet de la pile (dans le segment SS)

Registres de segments memoires :* CS : code

* DS : donnees (data)

* SS : pile (stack)

* ES : extra

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 47: Assemb CoursI

Architecture Intel 32

Registre Flags

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 48: Assemb CoursI

Architecture Intel 32

Bus d’adresse de l’architecture x86

20 bits soit 1Mo de memoire adressable

segment : zone memoire de 64Ko.

Les registres n’ont que 16 bits

64Ko de memoire adressable

Pour avoir des adresses memoire sur 20 bits avec des registres de 16bits

On combine 2 registres

Le premier donne l’adresse de base d’un segment

Le second donne le deplacement dans ce segment

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 49: Assemb CoursI

Architecture Intel 32

Adressage sur 20 bits avec 2 registres

2 registres 16 bits : peut coder adresses sur 32 bits

Pour uniquement 20 bits

Decale le premier registre de 4 bits et l’additionne au second

Adresse notee A:B

Adresse reelle : A * 16 + B

Exemple (les nombres sont en hexa)

3100:27EE correspond a l’adresse 31000 + 27EE = 337EE

Decaler de 4 bits en binaire revient a decaler d’un chiffre en hexa

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 50: Assemb CoursI

Architecture Intel 32

4 segments d’adresses : CS, DS, SS, ES

2 registres pour adresser des mots memoires1 Le premier est le registre de segment2 Le second un registre general

On l’appelle l’offset (decalage)

Addresse : segment:offset

Exemples

CS:IP : adressee de la prochaine instruction a executer

DS:SI : adresse d’une donnee

SS:SP : adresse du haut de la pile

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 51: Assemb CoursI

Architecture Intel 32

Addressage memoire en IA32

Pentium : Adresses memoire codables sur 32 bits ⇒ 232 = 4Go

adressable

Pentium Pro/II : Extensions possibles pour coder des adresses sur 36bits ⇒ 236 = 64Go adressable

Segment code sur 16 bits

Offset code sur 32 bits

Deux segments supplementaires en IA32

FS et GS : donnees

4 segments de donnees au total : DS, ES, FS, GS

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 52: Assemb CoursI

Architecture Intel 32

Pourquoi des segments ?

Pour pouvoir adresser plus de 64Ko de memoire dans un programme

car les registres n’avaient que 16 bits

separation des zones memoires selon leur role :

la pile ne peut pas etre ecrasee par des donnees ou deborder sur des

donnees/code

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1

Page 53: Assemb CoursI

Mode d'adressage en Architecture Intel 32

adressage par registre : Utilisation des noms des registres (AX, BX,

CX, ...),

MOV EAX, EBX

adressage immediat

adressages en memoire

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 16 / 1

Page 54: Assemb CoursI

Mode d'adressage en Architecture Intel 32

adressage par registre

adressage immediat : Utilisation d’une valeur donnee, d’une

constante,

MOV EAX, 460h

adressages en memoire

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 16 / 1

Page 55: Assemb CoursI

Mode d'adressage en Architecture Intel 32

adressage par registre

adressage immediat

adressages en memoire :

∗ adressage direct : Utilisation de l’adresse memoire ou aller chercher la

donnee

MOV AX,[300h]

∗ adressage indirect par registre : Utilisation de l’adresse memoire

contenue dans un registre (BX, BP, SI, DI)

MOV BX,300h

MOV AX,[BX]

∗ adressage relatif a une base : Utilisation de l’adresse memoire obtenue

par la somme d’un registre de base (EBX ou EBP) et un deplacement

(dep) : [EBX + dep]

MOV BX,2F0h

MOV AX,[BX+10h]

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 16 / 1

Page 56: Assemb CoursI

Mode d'adressage en Architecture Intel 32

adressage par registre

adressage immediat

adressages en memoire :

∗ adressage direct indexe : Utilisation de l’adresse memoire obtenue par

la somme d’un deplacement (dep) et un registre d’index (ESI ou EDI)

MOV EDI,10h

MOV EAX,[2F0h+EDI]

∗ adressage indexe par rapport a une base : Utilisation de l’adresse

memoire obtenue par la somme d’un registre de base (EBX ou EBP),

d’un registre d’index (ESI ou EDI) et d’un deplacement (dep).

MOV EDI,15h

MOV EBX,0Bh

MOV EAX,[EBX+EDI+1E0h]

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 16 / 1

Page 57: Assemb CoursI

Assembleur NASM

R�eferences

L’excellent ”PC Assembly Language“ de Paul A. Carter

http ://www.drpaulcarter.com/

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 17 / 1

Page 58: Assemb CoursI

Assembleur NASM

programme en assembleur = fichier texte (extension .asm)

organise en plusieurs segments, au moins trois segments associes ades registres (16 bits):

∗ code : CS EIP⇒ .text

∗ donnees : DS ⇒ .data

∗ pile : SS ESP⇒ .bss

sections differentes pour les donnees et le code

une seule instruction par ligne, separateur = changement de ligne

1 ligne de code = 4 champs (certains optionnels) :

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 18 / 1

Page 59: Assemb CoursI

Assembleur NASM

etiquette : mnemonique operandes ; commentaire

∗ etiquette : adresse effective de lainstruction, utile pour les

branchements

∗ mnemonique : nom generique donne a une instruction : ADD,

JUMP...

∗ operandes : arguments de l’instruction : 0, 1 ou 2

∗ ;commentaires :non pris en compte au moment de l’assemblage

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 18 / 1

Page 60: Assemb CoursI

Assembleur NASM

Format d’une instruction machine

etiquette : mnemonique operandes ; commentaire

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 18 / 1

Page 61: Assemb CoursI

Assembleur NASM

Types des operandes

operande 1 : destination operande 2 : source

registre registre

registre immediat

registre memoire

memoire registre

memoire immediat

Jamais de memoire a memoire, il faut passer par un registre

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 18 / 1

Page 62: Assemb CoursI

Assembleur NASMStructure d'un programme

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 63: Assemb CoursI

Assembleur NASMStructure d'un programme

Directives pour NASM 6= Instructions pour le processeur

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 64: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Directives

Une Directive est destinee a l’assembleur, pas au processeur. Elles ne sont

pas traduites en code machine. Les utilisations courantes des directives

sont :

la definition de constantes

la definition de memoire pour stocker des donnees

grouper la memoire en segment

inclure d’autres fichiers

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 65: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Directives

∗ equa : utile pour definir un symble, symbole equa valeur

∗ %define : utile pour definir des macros, %define SIZE 100

∗ %include : permet d’inclure d’autres fichiers, %include ′′asm io.inc ′′

∗ extern printf : printf sera importe

∗ global main : main sera exporte

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 66: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Donn�ees initialis�ees : segment .data

declarer des donnees initialisees avec la directive : DX avec X egale

Unite Lettre X

Octet B

Mot W

Double mot D

Quadruple mot Q

Dix octets T

Exemple :

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 67: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Donn�ees initialis�ees : segment .data

declarer des donnees initialisees avec la directive : DX

Exemple :

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 68: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Donn�ees non initialis�ees : segment .bss

declarer des donnees non initialisees avec la directive : resX avec X

egale

Unite Lettre X

Octet B

Mot W

Double mot D

Quadruple mot Q

Dix octets T

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 69: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Donn�ees non initialis�ees : segment .bss

declarer des donnees non initialisees avec la directive : resX

Exemple : (etiquette obligatoire)

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 70: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Donn�ees non initialis�ees : segment .bss

declarer des donnees non initialisees avec la directive : resX

Exemple : (etiquette obligatoire)

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 71: Assemb CoursI

Assembleur NASMStructure d'un programme : les donn�ees

Utilisation des etiquettes ou labels :

label simple fait reference a l’adresse (ou offset) de la donnee

label entre crochets [] est interprete comme la donnee a cette adresse

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1

Page 72: Assemb CoursI

Assembleur NASMSegment de code

Corps du programme : segment .textcommencer par declarer global l’etiquette de debut de programme

(main) pour qu’elle soit visible :

segment .text

global main

main :

enter 0,0 ; ouvre une fenetre de pile

· · ·fin de fichier :

mov eax, 0 ; signifie fin du programme

leave ; libere la zone utilisee sur la pile

ret ; restaure EIP

EIP Le compteur de programme, contient l’adresse de la prochaine

instruction a executer.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 20 / 1

Page 73: Assemb CoursI

Assembleur NASMSegment de code

Corps du programme : segment .textcommencer par declarer global l’etiquette de debut de programme

(main) pour qu’elle soit visible :

segment .text

global main

main :

enter 0,0 ; ouvre une fenetre de pile

· · ·fin de fichier :

mov eax, 0 ; signifie fin du programme

leave ; libere la zone utilisee sur la pile

ret ; restaure EIP

EIP Le compteur de programme, contient l’adresse de la prochaine

instruction a executer.

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 20 / 1

Page 74: Assemb CoursI

Assembleur NASMFichier squelette

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 75: Assemb CoursI

Assembleur NASMAssembler un programme

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 76: Assemb CoursI

Assembleur NASMEntr�ee/Sortie

Interruption

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 77: Assemb CoursI

Assembleur NASMEntr�ee/Sortie

Entrees-sorties (I/O) : echanges d’informations entre le processeur et les

peripheriques.

Entrees : donnees envoyees par un peripherique a destination de

l’unite centrale.

Sorties : donnees emises par l’unite centrale a destination d’un

peripherique.

Gestion par interruptions : permet de reagir rapidement a un

changement en entree. le peripherique previent le processeur par une

interruption, le processeur interrompt la tache en cours, effectue

l’action prevue pour cette interruption et reprend l’execution du

programme principal ou il l’avait laisse.

Gestion ”haut-niveau” : Bibliotheques standards en C pour les E/S.

MAIS, les conventions d’appels utilisees par C sont complexes...

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 78: Assemb CoursI

Assembleur NASMEntr�ee/Sortie

A�chage avec printf

extern printf

segment .data

msg2: db ”msg 2”, 10, 0

segment .text

global main

main:

...

push msg2

call printf

...

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 79: Assemb CoursI

Assembleur NASMEntr�ee/Sortie

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 80: Assemb CoursI

Assembleur NASMEntr�ee/Sortie

A�chage avec asm io.inc

%include “asm io.inc“

segment .data

msg3: db ”msg 3”, 10, 0

segment .text

global main

main:

...

mov eax, msg3

call print string

...

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 81: Assemb CoursI

Assembleur NASMD�ebogage

En assembleur, le debogage consiste essentiellement a tracer

l’etat des registres et de la memoire

Macros utilisees comme des instructions ordinaires dont les operandes

sont separes par des virgules

dump regs A affiche les valeurs des registres (en hexadecimal)

ainsi que les bits positionnes du registre FLAGS. ”A” est un entier qui

est affiche egalement (pour distinguer 2 appels)

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 82: Assemb CoursI

Assembleur NASMD�ebogage

En assembleur, le debogage consiste essentiellement a tracer

l’etat des registres et de la memoire

Macros utilisees comme des instructions ordinaires dont les operandes

sont separes par des virgules

dump regs A

dump mem A, B, C affiche les valeurs d’une region de la

memoire (en hexadecimal et ASCII). ”A” est un entier utilise pour

etiqueter la sortie, “B“ est l’adresse a afficher (cela peut etre un

label), ”C” est le nombre de paragraphes de 16 octets a afficher apres

dump stack A, B, C

dump math A

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 83: Assemb CoursI

Assembleur NASMD�ebogage

En assembleur, le debogage consiste essentiellement a tracer

l’etat des registres et de la memoire

Macros utilisees comme des instructions ordinaires dont les operandes

sont separes par des virgules

dump regs A

dump mem A, B, C

dump stack A, B, C affiche les valeurs de la pile du processeur

autour de l’adresse contenue dans EBP (B double mots apres et C

double mots avant). “A“ est un entier utilise pour etiqueter la sortie

dump math A

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 84: Assemb CoursI

Assembleur NASMD�ebogage

En assembleur, le debogage consiste essentiellement a tracer

l’etat des registres et de la memoire

Macros utilisees comme des instructions ordinaires dont les operandes

sont separes par des virgules

dump regs A

dump mem A, B, C

dump stack A, B, C

dump math A affiche les valeurs des registres du coprocesseur

arithmeique. ”A” est un entier utilise pour etiqueter la sortie

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1

Page 85: Assemb CoursI

Exemple

Adresse memoire Valeur

0x100 0xFF

0x104 0xAB

0x108 0x13

0x10C 0x11

Registre Valeur

EAX 0x100

ECX 0x1

EDX 0x3

eax

[104h]

108h

[EAX]

[EAX+4]

[9+EAX+EDX]

[260+ECX+EDX]

[FCh+ECX*4]

[EAX+EDX*4]

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 22 / 1

Page 86: Assemb CoursI

Exemple

Adresse memoire Valeur

0x100 0xFF

0x104 0xAB

0x108 0x13

0x10C 0x11

Registre Valeur

EAX 0x100

ECX 0x1

EDX 0x3

eax 0x100

[104h] 0xAB

108h 0x108

[EAX] 0xFF

[EAX+4] 0xAB

[9+EAX+EDX] 0x11 9+0x100+0x3=0x10C

[260+ECX+EDX] 0xAB 260=16*16+4=0x104

[FCh+ECX*4] 0xFF 0xFC+1*0x4 = 0x100

[EAX+EDX*4] 0x11 0x100+0x3*4=0x10C

Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 22 / 1