cours6etu-2012

Preview:

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

Recommended