Changes between Version 34 and Version 35 of Archi-1-TP9


Ignore:
Timestamp:
Nov 16, 2020, 8:46:53 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v34 v35  
    154154- **Questions**\\
    155155  ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\
    156   - Question ?
     156  - Regarder dans le fichier `hcpu.S`, dans quelle section est désormais le code de boot ?
    157157{{{#!protected ------------------------------------------------------------------------------------
    158158'''''''''''''''
     
    160160'''''''''''''''
    161161}}}
    162 
     162  - Le code de boot ne fait que sauter dans la fonction kinit avec l'instruction `j`,
     163    il n'y a pas de retour, ce n'est donc pas un `jal`, mais pourquoi ne pas avoir utiliser
     164    `j init` et donc pourquoi passer par un registre ?
     165{{{#!protected ------------------------------------------------------------------------------------
     166'''''''''''''''
     167  - On ne sait pas le code de boot est en `0xBFC00000`.
     168    L'instruction `j imm26` permet de sauter à n'importe quelle adresse d'instruction `0xB.......`
     169    (dans le memento MIPS `j imm26` : `PC <- PC[31:28] || imm26*4`
     170'''''''''''''''
     171}}}
     172  - Dans `kernel.ld`, la définition de la mémoire est plus complète, elle contient 3 régions :
     173    pour le code de boot `boot_region` pour le code du noyau `ktext_region` et
     174    pour les données globales du noyau `kdata_region`.
     175    Ces régions ne contiennent qu'une section de sorties (resp. `.boot`, `.ktext` et `.kdata`)
     176    remplies avec les sections d'entrées produites par le compilateur.\\
     177    Que signifie `*(.*data*)` ?
     178{{{#!protected ------------------------------------------------------------------------------------
     179'''''''''''''''
     180  - C'est une manière de désigner toutes les sections nommées `.*data*` avec `*` = n'importe quoi
     181    présentes dans n'importe quel fichier objets reçus par le compilateur.
     182'''''''''''''''
     183}}}
     184  - Quelle est la valeur de `__kdata_end` ? Pourquoi, selon vous, mettre 2 «`_`» au début des variables ?
     185{{{#!protected ------------------------------------------------------------------------------------
     186'''''''''''''''
     187  - `__kdata_end` est l'adresse du premier octet placé juste après la région data.
     188  - les 2 «`_`» permettent d'éviter les conflits avec les noms des symboles (fonction, variable, type, etc.)
     189    présents dans le programme.
     190'''''''''''''''
     191}}}
     192  -
     193{{{#!protected ------------------------------------------------------------------------------------
     194'''''''''''''''
     195  -
     196'''''''''''''''
     197}}}
     198  -
     199{{{#!protected ------------------------------------------------------------------------------------
     200'''''''''''''''
     201  -
     202'''''''''''''''
     203}}}
     204  -
     205{{{#!protected ------------------------------------------------------------------------------------
     206'''''''''''''''
     207  -
     208'''''''''''''''
     209}}}
     210  -
     211{{{#!protected ------------------------------------------------------------------------------------
     212'''''''''''''''
     213  -
     214'''''''''''''''
     215}}}
    163216
    164217