5
sp
sp
data[MAX_SIZE − 1]
data[2]
data[1]
data[0]
sp
pop (stack)
42
5
???
2
???
42
???
1
???
?5?
pop (stack)
— V´erifier que sp >0
— D´ecr´ementer sp :sp ←sp−1⇒1
— Retourner la valeur `a l’indice sp
(sommet de la pile)
On peut implanter une pile de taille non fixe en allouant dynamiquement (avec malloc) le
tableau et en le r´e-allouant (nouvelle allocation, recopie, lib´eration de l’ancien tableau) lorsque
la pile est pleine.
2 Du code source `a l’ex´ecution
Code source = description statique.
Ex´ecutable = comportement dynamique.
Le langage dans lequel est ´ecrit le source poss`ede une s´emantique dynamique.
Processus du code source `a l’ex´ecution :
1. D´ecoupe du source en mots et v´erification de bonne orthographe : analyse lexicale.
2. Assemblage des mots en phrases et v´erification de bonne grammaire : analyse syn-
taxique.
3. Analyses s´emantiques et v´erification du sens correct des phrases.
4. Production de code assembleur et optimisation.
5. Production de code binaire : assemblage.
6. Regroupement final de tous les composants : ´edition de lien.
7. Chargement en m´emoire puis ex´ecution.
3 Ex´ecution (mono-tˆache et simplifi´ee)
Un CPU poss`ede quelques zones de stockage internes rapides : les registres.
Un CPU ne comprend que des instructions ´el´ementaires : d´eplacement de donn´ees, arithm´etique,
logique,saut, (+ quelques autres).
Cycle infini du CPU : r´ecup´erer l’instruction courante, la d´ecoder, l’ex´ecuter, passer `a l’instruc-
tion suivante.
Adresse de l’instruction courante : dans un registre d´edi´e PC .
Pour effectuer des saut conditionnels, il est n´ecessaire de m´emoriser le statut des conditions
test´ees : un registre d´edi´e SR avec 1 bit par condition (r´esultat nul, positif, n´egatif, d´ebordement
. . . ).
Pour les appels de fonctions et les variables locales, il faut une pile d’ex´ecution. Adresse du
pointeur de pile : dans un registre d´edi´e SP .
Charger un code en m´emoire c’est recalculer les adresses figurant dans ses instructions en fonc-
tion de l`a o`u il a ´et´e log´e.
Lancer un code charg´e en m´emoire lui attribuer une zone de pile (initialiser SP), effacer les bits
de conditions (SR) et mettre le PC `a l’adresse de d´ebut de ce code.
C’est un des rˆoles du syst`eme d’exploitation (OS) de charger et lancer l’ex´ecution.
2