4
Cours 6 - LI221 - Automne 2012 23 octobre 2012 1 Uniformité et structuration de la mémoire La mémoire est uniforme. La mémoire, modélisée par un tableau de mots de 4 octets adressable en octets, stocke sous forme de suite d’octets tout ce qui est nécessaire à l’exé- cution d’un programme. Cette uniformité est ce qui confère à l’ordinateur (machine de Von Neumann) son universalité : les traitements exécutés par le processeur sont précablés mais l’agement de traitements est infini. La mémoire est structurée. Un programme n’est pas le seul objet présent en mémoire, il y a les données et programmes de l’OS, éventuellement d’autres utilisateurs de la ma- chine. Il faut pouvoir protéger : – les informations du système vis-à-vis des programmes utilisateurs – les différents types d’informations au sein d’un même programme – les programmes vis à vis d’autres programmes Pour protéger les informations système vis-à-vis des programmes utilisateur, la mémoire est découpée en deux zones distinctes : 1. celle réservée au système (OS), on ne peut y accéder qu’avec des instructions spé- ciales utilisables seulement en mode superviseur/super utilisateur, 2. celle réservée aux utilisateurs dont l’accès n’est pas restreint. En MIPS, ces deux zones sont distinguées par leur adresse : 1. zone users : 0x00000000 0x7FFFFFFF 2. zone system : 0x80000000 0xFFFFFFFF Pour protéger les différents types d’informations au sein d’un même programme, celles-ci ne sont pas rangées au même endroit en mémoire. Les différents types d’in- formations d’un programme sont regroupés en zones distinctes appelées segments. Un segment est un espace d’adressage contigü muni d’une taille maximale dans lequel sont stockées les informations de même nature. Un programme possède au moins 3 segments comme illustré sur la figure 1 : 1. segment de code : il contient les instructions codées en binaire selon l’ISA du pro- cesseur

cours6etu-2012

Embed Size (px)

DESCRIPTION

cours6etu-2012

Citation preview

  • Cours 6 - LI221 - Automne 2012

    23 octobre 2012

    1 Uniformit et structuration de la mmoire

    La mmoire est uniforme. La mmoire, modlise par un tableau de mots de 4 octetsadressable en octets, stocke sous forme de suite doctets tout ce qui est ncessaire lex-cution dun programme. Cette uniformit est ce qui confre lordinateur (machine deVon Neumann) son universalit : les traitements excuts par le processeur sont prcablsmais lagement de traitements est infini.

    La mmoire est structure. Un programme nest pas le seul objet prsent en mmoire,il y a les donnes et programmes de lOS, ventuellement dautres utilisateurs de la ma-chine. Il faut pouvoir protger :

    les informations du systme vis--vis des programmes utilisateurs les diffrents types dinformations au sein dun mme programme les programmes vis vis dautres programmes

    Pour protger les informations systme vis--vis des programmes utilisateur, la mmoireest dcoupe en deux zones distinctes :

    1. celle rserve au systme (OS), on ne peut y accder quavec des instructions sp-ciales utilisables seulement en mode superviseur/super utilisateur,

    2. celle rserve aux utilisateurs dont laccs nest pas restreint.

    En MIPS, ces deux zones sont distingues par leur adresse :

    1. zone users : 0x00000000 0x7FFFFFFF2. zone system : 0x80000000 0xFFFFFFFFPour protger les diffrents types dinformations au sein dun mme programme,

    celles-ci ne sont pas ranges au mme endroit en mmoire. Les diffrents types din-formations dun programme sont regroups en zones distinctes appeles segments. Unsegment est un espace dadressage contig muni dune taille maximale dans lequel sontstockes les informations de mme nature.

    Un programme possde au moins 3 segments comme illustr sur la figure 1 :

    1. segment de code : il contient les instructions codes en binaire selon lISA du pro-cesseur

  • pile

    segment de

    donnees

    segment de

    codesegment de

    FIGURE 1 Reprsentation des 3 segments mmoire associs tout programme lors deson excution

    2. segment de donnes : il contient les donnes codes en binaire selon leur type etcorrespond aux variables globales

    3. segment de pile : cest une mmoire temporaire alloue la demande au cours delexcution pour stocker les variables locales, les contextes dexcution des sous-programmes et leurs paramtres dappel.

    2 Programmation assembleur

    2.1 Niveaux de programmation et traduction de programmes

    Il existe diffrents niveaux de programmation qui correspondent aux diffrents ni-veaux dabstraction des traitements excuter : programmation de haut niveau, langagedassemblage, programme binaire.

    Traduction programme haut niveau programme assembleur La traduction entreprogramme de haut niveau et langage dassemblage est ralise par un compilateur. Lesinstructions de haut niveau sont traduites en une suite dinstructions assembleur. Lesregistres sont utiliss pour raliser les traitements.

    Traduction programme assembleur programme binaire excutable La traductionassembleur-binaire ou lassemblage ralise la traduction binaire des instructions. Elle n-cessite 2 phases :

    1. Traduction en binaire et assignation des adresses dimplantation

    2. Rsolution des adresses : les tiquettes dans les instructions sont converties enadresses absolues ou relatives (champ des sauts conditionnels/inconditionnels).

  • 2.2 Programmation assembleur et structuration dun fichier asm MIPS

    On peut crire des programmes directement en assembleur. Il faut alors dcrire lestraitements raliser avec les instructions de jeu dinstructions du processeur cible, ilfaut aussi dclarer/allouer les donnes.

    Structuration dun programme assembleur MIPS En MIPS, tout programme assem-bleur est constitu de 2 sections, la section de donnes et la section de code.La directive .text dsigne la section de code. Les instructions doivent se trouver danscette section.La directive .data dsigne le section de donnes. Les donnes globales doivent tre d-clares/alloues dans cette section du programme.

    Assemblage et chargement dun programme en mmoire Une fois un programme as-sembleur crit, il faut crer un programme binaire excutable en lassemblant.

    Pour excuter un programme, il faut le lancer. Lors de son lancement, le programmeest charg en mmoire (par un loader). La section de code est range dans le segmentde code et la section de donnes est range dans le segment de donnes. La premireinstruction de la section .text est implante ladresse 0x00400000 et les suivantes sontalloues conscutivement en mmoire dans le segment de code, dans leur ordre dappa-rition dans le fichier assembleur. La premire donne de la section .data est implante ladresse 0x10010000 et les donnes dclare/alloue ensuite sont implante en squencedans le segment de donnes.

    Excution et terminaison dun programme assembleur La premire adresse de la sec-tion de code correspond au point dentre du programme. Lors du lancement dun pro-gramme, ladresse du point dentre du programme est mise par le loader dans le registrePC, la premiere instruction est alors lue en mmoire, puis excute. Lexcution continueensuite squentiellement (avec parfois des sauts si excution dune instruction spcifiantladresse de la prochaine instruction qui nest pas celle qui suit dans le programme sour-ce/asm). Le programme sarrte avec un appel systme demandant la terminaison duprogramme.

    Appel systme Les appel ssystme, en MIPS, ont des numros ; pour les utiliser il fautmettre le numro de lappel systme voulu dans le registre $2 avant dexcuter linstruc-tion syscall. Voici quelques appels systme et leur numro.

    Terminaison dun programme : numro 10. Affichage dun entier : numro 1 ; il faut mettre lentier afficher dans le registre $4

    avant lappel. Affichage dune chaine de caractres : numro 4 ; l faut mettre dans le registre $4

    ladresse du premier caractre de la chane, celle-ci doit se terminer par le caractre

  • de fin de chane.

    Etiquettes Une tiquette la forme etiq :, son nom est etiq. Sa smantique est "adressede ce qui suit". Elle permet de dsigner des adresses dans le code assembleur, que ce soitde donnes ou dinstructions.

    3 Exemples de programme assembleur

    3.1 Programme qui affiche la valeur 2

    . data

    . t e x to r i $4 , $0 , 2o r i $2 , $0 , 1s y s c a l lo r i $2 , $0 , 10s y s c a l l