CHAPITRE 10. Les sous-programmes

Documents pareils
Compilation (INF 564)

Architecture des ordinateurs

Rappels d architecture

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Logiciel de base. Première année ENSIMAG

Jeu d instructions NIOS II

CM2 L architecture MIPS32

Architecture des ordinateurs Introduction à l informatique

Architecture des ordinateurs

Programmation assembleur : aperçu

Conception de circuits numériques et architecture des ordinateurs

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Gestion mémoire et Représentation intermédiaire

Structure d un programme

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Aide à l installation et à la migration en HelloDoc 5.60

GESTION BOOTLOADER HID

PACK ADSL WIFI. Configurer ma connexion ADSL avec Modem/Routeur Sagem 1400W

Guide d installation des pilotes MF

Crédits... xi. Préface...xv. Chapitre 1. Démarrer et arrêter...1. Chapitre 2. L interface utilisateur...25

Comment installer un client Rivalis Devis factures

Traduction des Langages : Le Compilateur Micro Java

Sélection du contrôleur

Chapitre 1 L interface de Windows 7 9

Réparer un disque dur passé en RAW

Les failles Format String

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Résolution d équations non linéaires

CAHIER DES CHARGES D IMPLANTATION

GESTION DE L'ORDINATEUR

UE Programmation Impérative Licence 2ème Année

Le langage C. Séance n 4

Janvier Entretien de l ordinateur

Introduction aux buffer overflow, CS335

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

Exécution des instructions machine

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Structure fonctionnelle d un SGBD

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Gérer son Google Drive pour gérer ses informations : le tutoriel

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Guide de l enseignant. pour le Passeport Sécurité. Mise à jour : 10 août 2015

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

FANTEC DB-229US Manuel de l'utilisateur

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

Fonction Memory Viewer

GUIDE D INSTALLATION RAPIDE DEXH264

Solution du challenge SSTIC Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13

Manuel d'installation de GESLAB Client Lourd

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

Procédure de sauvegarde pour AB Magique

WebSpy Analyzer Giga 2.1 Guide de démarrage

GlobalScape Secure FTP Server Buffer Overflow

PAPIER OU SUPPORT NUMÉRIQUE, QUEL EST LE BON CHOIX ÉCOLOGIQUE?

WINDOWS SERVER 2003 Maintenance d'active directory V1.0

Sauvegarder automatiquement sa clé USB

Gestion de photos avec Picasa

Lutter contre les virus et les attaques... 15

Cours Informatique Master STEP

EX-word TextLoader Fonction Bibliothèque

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Licence Sciences et Technologies Examen janvier 2010

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

GPA770 Microélectronique appliquée Exercices série A

La mémoire. Un ordinateur. L'octet. Le bit

HDDtoGO. Guide de l'utilisateur

Partie 7 : Gestion de la mémoire

Thomson ST 2030 guide de configuration et d utilisation

Cours 1 : La compilation

MANUEL D UTILISATION TERMINAL PHL 2700

Client SFTP Filezilla. Version anglaise du client 1/14

PIC : COURS ASSEMBLEUR

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Introduction à Eclipse

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

INTRODUCTION AU CMS MODX

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

SoMachine. Solution logicielle pour votre architecture Machine Atelier de découverte. SoMachine

CONFIGURATION MINIMALE REQUISE CARACTERISTIQUES TECHNIQUES

Logiciels DSPiy. DSPiyStudio logiciels et format des fichiers. incomplet

Utilisation de l'outil «Open Office TEXTE»

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

MANUEL D UTILISATION PRO-FACE

Samsung Drive Manager FAQ

Microprocesseur + Logiciel

Projet audio. Analyse des Signaux ELE2700

Tutoriel de formation SurveyMonkey

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

Accès instantané aux mots et aux locutions Le dictionnaire électronique offre une traduction rapide d'un mot ou d'une locution

Initiation à LabView : Les exemples d applications :

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

Réparer un disque dur passé en RAW

TERMINAL D AUDIO CONFERENCE ANALOGIQUE USB VOIP NOTICE

Programmation C. Apprendre à développer des programmes simples dans le langage C

SYSTÈME DE SURVEILLANCE VIDÉO À DISTANCE

Réalisation de cartes vectorielles avec Word

Transcription:

1 CHAPITRE 10 Les sous-programmes

2 Sous-programme Suite d instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts Une seule façon de faire l appel Sauvegarde de la valeur courante du PC Effectuer un branchement à l adresse du sous-programme Une seule façon de faire le retour Effectuer un branchement à l ancienne valeur du PC, à une constante près.

3 Sous-programme Un sous-programme se compose généralement de: Récupération des paramètres (inverse du passage de paramètres) Sauvegarde de l environnement de l appelant Traitement Retour des résultats, s il y a lieu Rétablissement de l environnement de l appelant Retour vers l appelant (inverse de l appel)

4 Passage de paramètres Sur le SPARC On utilise l instruction save pour sauvegarder l environnement On peut utiliser six registres O pour le passage de paramètres. Que faire si on doit passer plus de six paramètres? Que faire si l architecture n offre pas de fenêtres de registres?

5 Passage de paramètres Il existe différentes façons d effectuer le passage des paramètres Utilisation d une fenêtre de registre (comme le SPARC) Utilisation directe des registres Utilisation de l adresse de retour ou du registre de lien Utilisation d une table Utilisation d une pile

6 Fenêtre de registres Peut être utilisé lorsque l architecture supporte le concept de fenêtre de registres Pgm: Somme: mov 10, %o0 mov 25, %o1 call Somme mov 32, %o2 mov %o0, %l6 save %sp, -208, %sp add %i0, %i1, %i0 add %i0, %i2, %i0 ret restore

7 Registres Similaire à la technique précédente Ne fonctionne pas si le nombre de paramètres est plus grand que le nombre de registres. Pgm: mov 10, %l0 mov 25, %l1 call Somme mov 32, %l2 mov %l0, %l6 Somme: add %l0, %l1, %l0 add %l0, %l2, %l0 retl nop

8 Adresse de retour On met les paramètres directement dans le code Juste après l appel du sous-programme Sur le SPARC, l adresse de retour est dans le registre %o7 On peut donc indexer, à partir de cette adresse, le bon paramètre On doit modifier la valeur de %o7 pour que le retour soir à la suite des paramètres %o7 + 8 + n 4 donne l adresse de retour du sousprogramme, avec n paramètres.

9 Adresse de retour Pgm: Somme: call Somme nop.word 10.word 25.word 32 mov %l0, %l6 ldsw [%o7+8], %l0 ldsw [%o7+12], %l1 ldsw [%o7+16], %l2 add %o7, 12, %o7 add %l0, %l1, %l0 add %l0, %l2, %l0 retl nop 3 4 = 12 octets %o7 + 8

10 Table On met les paramètres dans une table en mémoire On passe l adresse de la table comme paramètre du sousprogramme On peut donc indexé à partir de cette adresse pour obtenir chacun des paramètres Comme avec la méthode précédente, on peut passer un nombre arbitraire de paramètres.

11 Table Pgm: setx Table, %l7, %l0 call Somme nop mov %l0, %l6 Somme: ldsw [%l0], %l1 ldsw [%l0+4], %l2 ldsw [%l0+8], %l3 add %l1, %l2, %l0 add %l0, %l3, %l0 retl nop.section ".rodata".align 4 Table:.word 10, 25, 32

12 Pile On met les paramètres au sommet d une pile C est le programme appelant qui s occupe d empiler Le programme appelant et le sous-programme ont accès à un registre qui contient l adresse du sommet de la pile. Le sous-programme dépile les paramètres Empile le résultat sur la pile En SPARC, le registre %sp contient l adresse du sommet de la pile C est une pile biaisée (2047) et il faut ajouter 128 (on va voir plus tard)

13 Pile Pgm: mov 10, %l0 dec 8, %sp stx %l0, [%sp+2047+128] mov 25, %l0 dec 8, %sp stx %l0, [%sp+2047+128] mov 32, %l0 %sp-24 %sp-16 32 25 dec stx call 8, %sp %l0, [%sp+2047+128] Somme %sp-8 %sp 10 nop ldx [%sp+2047+128], %l6

14 Pile Somme: ldx [%sp+2047+128], %l3 inc 8, %sp ldx [%sp+2047+128], %l2 inc 8, %sp ldx [%sp+2047+128], %l1 inc 8, %sp add %l1, %l2, %l0 add %l0, %l3, %l0 dec 8, %sp stx %l0, [%sp+2047+128] retl nop %sp %sp+8 %sp+16 %sp+24 32 25 10 67

15 Récursivité Il faut habituellement sauvegarder l environnement de l appelant lors de l exécution d un sous-programme On utilise généralement une pile C est d autant plus vrai pour les sous-programmes récursifs Si l architecture ne fournit qu une seule fenêtre de registres Il faut sauvegarder tous les registres que le sous-programme modifie L endroit le plus adapté est la pile Sur le SPARC, le changement de fenêtre de registres règle le problème

16 Récursivité Factoriel: dec 8, %sp stx %o7, [%sp+2047+128] dec 8, %sp stx dec stx dec %o1, [%sp+2047+128] 8, %sp %l0, [%sp+2047+128] 8, %sp %sp-32 %sp-24 %sp-16 %l1 %l0 %o1 stx %l1, [%sp+2047+128] %sp-8 %o7 brz,a %o1, fact05 %sp mov 1, %o0 mov %o1, %l0 sub %o1, 1, %o1 call Factoriel nop

17 Récursivité brz,a nop %o0, fact05 mulx %l0, %o0, %l1 srlx %l1, 32, %l0 brnz,a %l0, fact05 clr %o0 %sp-32 %sp-24 %l1 %l0 fact05: mov %l1, %o0 ldx [%sp+2047+128], %l1 inc 8, %sp %sp-16 %sp-8 %sp %o1 %o7 ldx [%sp+2047+128], %l0 inc 8, %sp ldx [%sp+2047+128], %o1 inc 8, %sp ldx [%sp+2047+128], %o7 inc 8, %sp retl nop

18 La pile sous Solaris Espace d adressage d un processus Système 0xFFFFFFFFFFFFFFFF Pile Librairies partagées Système Pile Biais %sp+0x7ff %sp 2047 Tas (heap) Données Instructions Système section.data,.rodata,.bss section.text 0x0000000000000000

19 La pile sous Solaris Le contenu de la pile varie selon l utilisation que le programmeur veut en faire Si le programmeur utilise l instruction save Le système d exploitation utilise aussi la pile Si un sous-programme en assembleur est appelé par un programme en langage évolué (par exemple C) Le code généré par le compilateur modifie le contenu de la pile Il faut donc respecter certaines règles d utilisation

20 La pile sous Solaris Pour résoudre le manque de fenêtres de registres, le programme et les sous-programmes s allouent un espace sur la pile Appelé «bloc» C est le système d exploitation qui s occupe de sauvegarder dans un bloc l image de tous les registres de la fenêtre utilisée

21 La pile sous Solaris Allocation d un bloc %sp %sp %fp %fp save %sp, -nn, %sp save %sp, -mm, %sp restore restore %sp

22 La pile sous Solaris Composition d un bloc %sp Données locales Données dynamiques Espace de travail Paramètres additionnels Registres %o0 à %o5 Registres %i0 à %i7 %l0 à %l7 %fp -m octets -n octets -p octets -q octets -48 octets -128 octets Tout programme a accès aux données de son bloc Grâce au registre %sp, avec des déplacements positifs Grâce au registre %fp, avec des déplacements négatifs Tout programme a accès aux données du bloc de l appelant Grâce au registre %fp avec des déplacements positifs Tout bloc doit être aligné sur une frontière de double mot Le 128 ajouté à la valeur du %sp dans les exemples précédents