assemb coursi
Post on 23-Oct-2015
25 Views
Preview:
TRANSCRIPT
Architecture des ordinateurs
Faıssal Ouardi
ouardi@fsr.ac.ma
Coordinateur du Module M11
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 1 / 1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Sch�ema fonctionnel
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 11 / 1
Cycle d'ex�ecution d'une instruction
Fetch
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 12 / 1
Cycle d'ex�ecution d'une instruction
Decode
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 12 / 1
Cycle d'ex�ecution d'une instruction
Execute
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 12 / 1
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
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
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
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
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
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
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
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
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
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
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
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
Langage Assembleur
Assembleur
Programme qui transforme le langage
assembleur en langage machine.
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 14 / 1
Architecture Intel 32
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1
Architecture Intel 32
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1
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
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
Architecture Intel 32
Registre Flags
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 15 / 1
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
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
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
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
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
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
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
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
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
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
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
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
Assembleur NASM
Format d’une instruction machine
etiquette : mnemonique operandes ; commentaire
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 18 / 1
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
Assembleur NASMStructure d'un programme
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1
Assembleur NASMStructure d'un programme
Directives pour NASM 6= Instructions pour le processeur
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 19 / 1
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
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
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
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
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
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
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
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
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
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
Assembleur NASMFichier squelette
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1
Assembleur NASMAssembler un programme
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1
Assembleur NASMEntr�ee/Sortie
Interruption
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1
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
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
Assembleur NASMEntr�ee/Sortie
Faıssal Ouardi (FSR, Rabat) Architecture des ordinateurs 21 / 1
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
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
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
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
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
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
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
top related