0% ont trouvé ce document utile (0 vote)
5 vues26 pages

Instructions SYSCALL en architecture MIPS

Transféré par

finconnu6
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues26 pages

Instructions SYSCALL en architecture MIPS

Transféré par

finconnu6
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ARCHITECTURE DES

ORDINATEURS
CHARGÉE DU COURS : MME BENOSMAN

CHAPITRE 5: INSTRUCTIONS SPÉCIALES


PLAN

 Les Exceptions

 Les interruptions

 Signal RESET

 Entrées-sorties

 Instructions systèmes
INTRODUCTION

 Il existe quatre types d'évènements qui peuvent interrompre l'exécution « normale » d'un
programme :

 Les exceptions

 Les interruptions

 Les appels système (instructions SYSCALL et BREAK)

 Le signal RESET

 le principe général consiste à passer la main à une procédure logicielle spécialisée qui s'exécute en
mode superviseur, à qui il faut transmettre les informations minimales lui permettant de traiter le
problème.
LES EXCEPTIONS
EXCEPTIONS

 Les exceptions sont des évènements "anormaux", le plus souvent liés à une erreur de
programmation, qui empêchent l'exécution correcte de l'instruction en cours.

 La détection d'une exception entraîne l'arrêt immédiat de l'exécution de l'instruction


fautive.

 Ainsi, on assure que l'instruction fautive ne modifie pas la valeur d'un registre visible ou de la mémoire.

 Il y a 7 types d'exception dans cette version du processeur R3000 :


EXCEPTIONS
EXCEPTIONS

 Le processeur doit alors passer en mode superviseur et se brancher au gestionnaire d'exceptions


qui est une routine logicielle implantée à l'adresse "0x80000080".

 Toutes les exceptions étant fatales dans cette version du processeur R3000, il n'est pas nécessaire de
sauvegarder une adresse de retour car il n'y a pas de reprise de l'exécution du programme
contenant l'instruction fautive.

 Le processeur doit cependant transmettre au gestionnaire d'exceptions l'adresse de l'instruction


fautive et indiquer dans le registre de cause le type d'exception détectée.
EXCEPTIONS

 Lorsqu'une exception est détectée, le processeur :

 Sauvegarde l'adresse de l'instruction fautive dans le registre EPC

 Sauvegarde l'ancienne valeur du registre d'état SR

 Passe en mode superviseur et masque les interruptions dans SR

 Écrit le type de l'exception dans le registre CR

 Branche à l'adresse "0x80000080".


LES INTERRUPTIONS
LES INTERRUPTIONS

 Les d'interruptions matérielles sont des évènements asynchrones provenant généralement de


périphériques externes.

 Elles peuvent être masquées.

 Le processeur MIPS possède 6 lignes d'interruptions externes qui peuvent être masquées
globalement ou individuellement.

 L'activation d'une de ces lignes est une requête d'interruption.


LES INTERRUPTIONS

 Elles sont écrites dans le registre CR et sont prises en compte à la fin de l'exécution de l'instruction
en cours si elles ne sont pas masquées.

 Cette requête doit être maintenue active par le périphérique tant qu'elle n'a pas été prise en compte
par le processeur

 Le processeur passe alors en mode superviseur et se branche ici encore au gestionnaire


d'exceptions.

 Comme il faut reprendre l'exécution du programme en cours à la fin du traitement de l'interruption, il


faut sauvegarder une adresse de retour.
LES INTERRUPTIONS

 Lorsqu'une requête d'interruption non-masquée est détectée, le processeur MIPS :

 Sauvegarde l'adresse de retour dans le registre EPC

 Sauvegarde l'ancienne valeur du registre d'état SR

 Passe en mode superviseur et masque les interruptions dans SR

 Écrit qu'il s'agit d'une interruption dans le registre CR

 Branche à l'adresse "0x80000080".


SIGNAL RESET
SIGNAL RESET
 Le processeur MIPS possède également une ligne RESET dont l'activation, pendant au moins un cycle,
entraîne le branchement inconditionnel au logiciel d'initialisation.

 Cette requête est très semblable à une septième ligne d'interruption externe avec les différences
importantes suivantes :

 Elle n'est pas masquée.

 Il n'est pas nécessaire de sauvegarder une adresse de retour.

 Le gestionnaire de reset est implanté à l'adresse "0xBFC00000".

 Dans ce cas, le processeur :

 Passe en mode superviseur et masque les interruptions dans SR

 Branche à l'adresse "0xBFC00000".


ENTRÉES-SORTIES
ENTRÉES-SORTIES

 Pour exécuter certaines fonctions système, typiquement les entrées/sorties (lire ou écrire un
nombre, ou un caractère), il faut utiliser des appels système.

 Par convention, le numéro de l’appel système est contenu dans le registre $2($v0) et son unique
argument est dans le registre $4($a0)
ENTRÉES-SORTIES

 Cinq appels système sont actuellement supportés dans l’environnement de simulation :

 Ecrire un entier : Il faut mettre l’entier à écrire dans le registre $4($a0) et exécuter l’appel
système numéro 1dans le registre $2 ($v0)

 Typiquement, on aura par exemple :

 li $4, 1234567 ; met 1234567 dans l’argument

 ori $2, $0, 1 ; code de ’print_integer’

 syscall ; affiche 1234567


ENTRÉES-SORTIES

 Lire un entier

 lire un entier consiste à exécuter l’appel système numéro 5 et récupérer le résultat dans le registre
$2.

 Exemple :

 ori $2, $0, 5 ; code de ’read_integer’

 syscall ; $2 contient ce qui a été lu


ENTRÉES-SORTIES

 Ecrire une chaîne de caractères : Une chaîne de caractères étant identifiée par un pointeur, il faut
passer ce pointeur à l’appel système numéro 4 pour l’afficher.

 Exemple :

 str: .asciiz "Chaîne à afficher\n"

 la $4, str ; charge le pointeur dans $4

 ori $2, $0, 4 ; code de ’print_string’

 syscall ; affiche la chaine pointée


ENTRÉES-SORTIES
 Lire une chaîne de caractères : Pour lire une chaîne de caractères, il faut un pointeur et une
longueur maximum. Il faut passer ce pointeur dans $4 et cette longueur dans $5 et exécuter l’appel
système numéro 8. Le résultat sera mis dans l’espace pointé.

 Exemple :

 read_str: .space 256

 la $4, read_str #charge le pointeur dans $4

 ori $5, $0, 255 #charge longueur max dans $5

 ori $2, $0, 8 #code de ’read_string’

 syscall # lit la chaîne dans l’espace ; pointé par $4


ENTRÉES-SORTIES

 Quitter : L’appel système numéro 10 effectue l’exit du programme au sens du langage C.

 Exemple :

ori $2, $0, 10 ; indique l’appel à exit

syscall ; quitte le prog


ENTRÉES-SORTIES
INSTRUCTIONS SYSTÈMES
INSTRUCTIONS SYSTÈMES

 Instructions SYSCALL et BREAK

 L'instruction SYSCALL permet à une tâche (utilisateur ou système) de demander un service au


système d'exploitation, comme par exemple effectuer une entrée-sortie.

 Le code définissant le type de service demandé au système et un éventuel paramètre doivent avoir été
préalablement rangés dans des registres généraux.

 L'instruction BREAK est utilisée plus spécifiquement pour poser un point d'arrêt
INSTRUCTIONS SYSTÈMES

 Dans les deux cas, le processeur passe en mode superviseur et se branche au gestionnaire
d'exceptions. Ces deux instructions sont exécutables en mode utilisateur. Elles effectuent les
opérations suivantes :

 Sauvegarde de l'adresse de retour dans le registre EPC

 Sauvegarde de l'ancienne valeur du registre d'état SR

 Passage en mode superviseur et masquage des interruptions dans SR

 Écriture de la cause du déroutement dans le registre CR

 Branchement à l'adresse "0x80000080".


INSTRUCTIONS SYSTÈMES

 Retour d’interruption

 Avant de reprendre l'exécution d'un programme qui a effectué un appel système (instructions
SYSCALL ou BREAK) ou qui a été interrompu, il est nécessaire d'exécuter l'instruction RFE.

 Cette instruction effectue la restitution de l'état précédent dans le registre SR

Vous aimerez peut-être aussi