1 École des mines de saint-etienne. 158, cours fauriel. 42 023 saint-etienne cedex 2. tél. 04 77...

32
1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot [email protected] http://kiwi.emse.fr/ASI Quatrième séance Introduction à la Compilation Cours Architecture des Systèmes Informatiques

Upload: helene-duprat

Post on 04-Apr-2015

110 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

1École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Jean-Jacques [email protected]

http://kiwi.emse.fr/ASI

Quatrième séanceIntroduction à la Compilation

Cours Architecture des Systèmes Informatiques

Page 2: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

2École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Plan

Concepts des processeurs : la pile Le simulateur pédagogique, suite… Langage machine, langage d’assemblage Compilation et génération de code

• Expressions arithmétiques, boucles, sous-programmes• Module objet, exécutable

Allocation des variables• Statique, automatique, dynamique

Utilisation de la pile• Notion de cadre

Page 3: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

3École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Terminologie Source (code, programme) : texte rédigé par le programmeur

dans un langage de programmation “évolué” Objet (code, programme) : traduction en langage de la

machine d’un texte source Exécutable : programme obtenu en assemblant un programme

objet et l’ensemble des sous-programmes nécessaires à son exécution

Assembleur : génère du code objet à partir d’un programme en langage d’assemblage (source)

Compilateur : génère du code objet à partir d’un programme source en langage de haut niveau (Pascal, C…)

Éditeur de liens : rassemble des modules objets pour constituer un programme exécutable

Chargeur : installe en mémoire centrale un programme en vue de son exécution

Page 4: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

4École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

La pile du processeur

Qu’est-ce, à quoi sert-elle ?• Portion de la mémoire centrale• Référencée par un registre spécifique, le “pointeur de pile”, stack

pointer• “Empiler” une valeur :

a: déplacer le pointeur de pile de ± un mot b: écrire la valeur dans le mot désigné par le pointeur de pile Note: certaines machines font b, puis a…

• “Dépiler” une valeur : effectuer les opérations inverses : b: lire le mot pointé par le registre de pile a: déplacer le pointeur de pile en sens inverse

Page 5: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

5École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

La pile : outil des sous-programmes

Gestion des appels et retour de sous-programmes• 2 instructions :

Appel de sous-programme : Empiler la valeur du pointeur programme (PC) Se brancher à l’adresse du sous-programme

Retour de sous-programme : Dépiler une valeur [le pointeur programme sauvegardé avant

l’appel] Affecter cette valeur au pointeur programme

Page 6: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

6École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

La machine mac :opérations sur la pile

Tout registre peut servir de pointeur de pile Empiler : PUSH, 0x0D

Rx <- [Rx] - 2 MemW[[Rx]] <- valeur

Formats : court/long, immédiat/direct/indirect-indexé Dépiler : POP, 0x0E

destination <- MemW[[Rx]] Rx <- [Rx] + 2

Formats : court/long, direct/indirect-indexé[pas de mode immédiat]

Page 7: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

7École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

La machine mac : appels et retour de sous-programme

Appel : JSR, Jump to SubRoutine, 0x0C Rx <- [Rx] - 2 MemW[[Rx]] <- PC PC <- adresse-du-sous-programme

Formats : pas de mode court immédiat Retour : RET, Return, 0x1C

PC <- MemW[[Rx]] Rx <- [Rx] + 2

Format : court immédiat : 0 00 11100 xxxx 0000

Page 8: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

8École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

La machine mac :autres opérations

Appel du superviseur : TRAP, 0x1A Format court immédiat : 0 00 11010 xxxx yyyy Appel niveau X, sous-niveau Y.

c.f. manuel pour les différentes fonctions…

Opération ineffective : NOP, No OPération, 0x1B Format court immédiat : 0 00 11011 0000 0000 Ne modifie ni la mémoire, ni les registres

Arrêt : HALT, 0x1E Format court immédiat : 0 00 11110 0000 0000 Arrêt du calculateur, lève l’exception ErrHalt

Page 9: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

9École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Le simulateur sim

Modèle logiciel de la machine mac Émulateur de la machine virtuelle :

• Simule registres et mémoire centrale• Interprète les codes instructions• Gère les erreurs/exceptions

Metteur au point• Visualise et modifie mémoire et registres• Lance et interrompt la machine virtuelle• Trace les instructions • Visualise les registres modifiés en cours d’exécution

Page 10: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

10École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Les commandes du simulateur

Syntaxe des commandes• Mot clef: /xxx suivi de compléments éventuels • Ex :

/R2 impression du contenu du registre R2 /PSW impression des drapeaux et de PC /run 2FC0 exécuter le programme débutant en 0x2FC0 /dm 1000 20 imprimer le contenu de la zone de mémoire

de 32 octets débutant en 4096 /R2=237 affectation de la valeur 567 à R2

• c.f. manuel pour l’ensemble des commandes

Page 11: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

11École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Exemples

Placer la valeur 3 dans le registre R5• /R5 = 3 • Note : constantes en hexadécimal…

Écrire un programme qui place 3 dans R5• ld r5,#3 code : 0 00 00001 0101 0011 • Placer l'instruction en mémoire, par exemple en 0

/addr 0 /sw 0153 • Exécuter l'instruction

/step 0 • Vérifier

/r5

Page 12: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

12École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Exemple d'utilisation :calcul du PGCD de deux

nombres

Programme chargé à l'adresse 1000

TEST: CMP R2,R3 10002523

JEQ FIN 1002 8F10 1016JL SUITE 1006 8F40

1010LD R0,R3 100A 2103LD R3,R2 100C 2132LD R2,R0 100E 2120

SUITE: SUB R3,R2 1010 2432JMP TEST 1012 8F00 1000

FIN: HALT 1016 1E00

Page 13: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

13École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Exemple d'utilisation :calcul du PGCD de deux

nombres Mise en mémoire du programme

• /addr 1000 /sw 2523 8f10 1016 8f40 1010 /sw 2103 2132 2120 2432 8f00 1000 1e00

Positionnement des registres• /r2=+7953 /r3=+12291

Lancement de l'exécution• /run 1000• réponse : psw = 0502 1018

Consultation du résultat• /r2• réponse : r2 = 0x02D3 723/723 2,-45 ‘ ‘

Page 14: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

14École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Tests sous sim

Créer sous un éditeur le fichier de commandes Utilisation directe du simulateur

• sim < pgcd.sim Utilisation interactive

• sim /rd "pgcd.sim" /run 0

• Mise au point /db 1 : trace des registres modifiés /db 2 : trace des instructions

Page 15: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

15École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Langage d’assemblage

Représentation symbolique des instructions• Syntaxe : [étiquette:] opération [opérandes]• Symboles :

registres, ex : R1, R2, R15, étiquettes, variables… opérations LD, ADD, SUB, ST… nombres (décimal, hexadécimal, octal, binaire, caractère)

• Sémantique : combinaison code opération et des opérandes

Une instruction assembleur = une instruction machine

Page 16: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

16École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Assembleur

Outil permettant le passage du langage d’assemblage au langage machine ; “machine dependent”• Instructions• Commentaires• Directives ou “pseudo-instructions”

DATA, ORG, BSS, START… Fournit :

• Binaire “absolu”/“core image”/“exécutable” ; ex l’assembleur ASM• Binaire “translatable”, ou programme objet.

Page 17: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

17École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

L'assembleur asm

Programme réalisant la transformation d'instructions exprimées en assembleur en code chargeable par le simulateur• Syntaxe

Toutes les instructions de la machine (c.f. manuel) Commentaires : * … Directives :

ORG : nouvelle adresse d'implantation des instructions suivantes BSS : réservation d'une zone de mémoire DATA : création d'une donnée initialisée occupant un mot START : définition de l'adresse de début du programme

Page 18: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

18École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Transformation de PGCD enun programme assembleur

ORG 0x1000PGCD: CMPR2,R3

JEQ FINJLT SUITELD R0,R3LD R3,R2LD R2,R0

SUITE: SUB R3,R2JMP PGCD

FIN: RET R15

MAIN: LA.LR15,PILE

LD.L R2,#1144LD.L R3,#858JSR R15,PGCD LD.L R3,#1287

JSR R15,PGCDHALT BSS 16

PILE: DATA 0START MAIN

Page 19: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

19École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Le code généré et l’exécution/addr 1000/w 2523 8f10 1016 8f40 1010 2103 2132 2120 /w 2432 8f00 1000 1cf0 abf0 1042 8120 0478/w 8130 035a 8cf0 1000 8130 0507 8cf0 1000/w 1e00 /addr 1042/w 0000/run 1018

/rd “pgcd.sim”/run 1018psw = 0501 1032/r2r2 = 0x008f 143/143 0,-113 ‘ ‘

Page 20: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

20École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Langages de “haut niveau”

Langages compilés• Un outil (compilateur) transforme le programme source en un

programme objet, ou un programme “core image”• Exemples : C, C++, Pascal, FORTRAN, ADA, COBOL, etc.

Langage interprété• Un outil (interprète) lit le programme source et (après transformations

diverses) l’exécute directement.• Exemples : APL, LISP, Perl, CAML, etc.

Approches intermédiaires - ex: SIM• Source code machine virtuelle, interprétation du code

Page 21: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

21École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Étapes de l’exécution d’un programme

Compilation : traduction d’un langage source vers un langage objet

Assemblage : traduction d’un programme source en assembleur vers un langage objet

Édition de liens : création d’un programme exécutable, rassemblant des modules objets et les sous-programmes de bibliothèque nécessaires à l’exécution

Exécution : chargement en mémoire centrale du programme exécutable ; le “chargeur” lui “donne la main”

Page 22: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

22École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Compilateur

Lit un programme en un langage dit “de haut niveau”C, C++, Pascal, Fortran, Ada : langage source

Convertit les instructions du programme en commandes pour la machine : langage machine, dit langage cible

A une instruction du langage source correspondent en général plusieurs instructions du langage cible.

Page 23: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

23École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Module objet

Résultat d’une compilation ou d’un assemblage• Structure de données

segments de code machine valeurs d’initialisation données liste des “externes” et “points d’entrée” informations de contrôle / mise au point

• Format d’entrée pour l’éditeur de liens

Page 24: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

24École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Module exécutable

Résultat d’une édition de liens• Structure de données

segments de code machine valeurs d’initialisation des données liste des “externes” et “points d’entrée”

les externes sont “résolus” informations de contrôle / mise au point

• Format d’entrée du chargeur• Peut contenir des “externes” non résolus

chargement dynamique

Page 25: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

25École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Traduction

Comment réalise-t-on sur la machine la représentation des éléments du langage source ?

• Variables TP 4

variables globales statiques, variables locales automatiques

• Sous-programmes Représentation

Appel et retour.

Page 26: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

26École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Un langage et son compilateur : mcc

mcc : “mini C compiler”• Sous-ensemble du langage C

type de données unique : entier 16 bits pas de structures de données

• Compilateur minimal pas de pré processeur pas d'optimisation du code généré fournit de l'assembleur en format source

• Utilisation compilation => assemblage => simulation

Page 27: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

27École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Compilation - 1 Expressions arithmétiques int a,b,c; a = 2; b = 5; c = (a+3)*(b-1);

ld r2,#2st.l r2,@ald r2,#5st.l

r2,@bld.l r2,@aadd r2,#3ld.l r3,@bsub r3,#1ld r0,r2

mul r3ld r2,r1st.l r2,@c...

@a: data 0@b: data 0@c: data 0

Page 28: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

28École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Compilation - 2 Boucles int i; i=0; while (i<10) i=i+1;

ld r2,#0st.l r2,@i

@1002:ld.l r2,@ild r3,#10cmp r2,r3jlt @1004ld r2,#0jmp @1005

@1004:ld r2,#1

@1005:jeq.l

@1003ld.l r2,@iadd r2,#1st.l r2,@ijmp @1002

@1003:...

@i: data 0

Page 29: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

29École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Un exemple : PGCD de 2 nombres Le programme Cint x, y, z;main(){ x = 7953; y = 12291; while (x != y) { if (x > y) { z=x; x=y; y=z; } y = y-x; } // out (x);}

Page 30: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

30École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Le code assembleur (presque complet)@main:

ld.l r2,#7953st.l r2,@xld.l r2,#12291st.l r2,@y

@1003:ld.l r2,@xld.l r3,@ycmp r2,r3jne @1005ld r2,#0jmp @1006

@1005:ld r2,#1

@1006:jeq.l @1004ld.l r2,@xld.l r3,@ycmp r2,r3jgt @1007ld r2,#0jmp @1008

@1007:ld r2,#1

@1008:jeq.l @1002ld.l r2,@xst.l r2,@zld.l r2,@yst.l r2,@xld.l r2,@zst.l r2,@y

@1002:ld.l r2,@yld.l r3,@xsub r2,r3st.l r2,@yjmp.l @1003

@1004:haltstart @main

@a: data 0@b: data 0@c: data 0

Page 31: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

31École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Compilation : sous-programmes

Passer des paramètres aux sous-programmes• Valeurs transmises dans les registres R2, R3, R4, R5…

Que fait le compilateur ?• Le registre R14 est sauvegardé dans la pile• Le registre R14 pointe sur la pile à l’entrée du sous-programme• Les registres R2, R3, R4… sont empilés• Les paramètres sont désignés par -2(R14), -4(R14)…• Les valeurs des registres sont restaurées à la sortie du sous-programme• Le résultat de la fonction est rendu dans R0 • Les sous-programmes peuvent être récursifs.

Page 32: 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr

32École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66.

Compilation - 3 Sous-programmes int incr(int x) { return x+1; } main(){ incr(3); }

@1000:ld.l r2,-2(r14)add r2,#1ld r0,r2jmp.l @1001

@1001:pop r15,r2ld r15,r14pop r15,r14ret r15

@incr:push r15,r14ld r14,r15

push r15,r2jmp.l @1000

@1002:ld r2,#3jsr.l r15,incrld r2,r0halt

main:ld r14,#0ld r15,#0jmp.l @1002start main