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


Ignore:
Timestamp:
Nov 16, 2020, 1:48:34 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v33 v34  
    3838
    3939- **Questions**\\
    40   ''Les réponse sonr dans le cours ou dans les fichiers sources''\\\\
     40  ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\
    4141  - Dans quel fichier se trouve la description de l'espace d'adressage du MIPS ? Que trouve-t-on dans ce fichier ?
    42 {{{#!protected
    43 ''
    44 C'est dans le fichier kernel.ld.
    45 On trouve:
    46 - la définition de variable du ldscript. Ce sont essentiellement des adresses dans l'espace d'adressage,
    47   mais pas seulement, il y a aussi la taille des régions.
    48 - On trouve ensuite la déclaration des régions mémoire.
    49 - et enfin la définition des sections de sortie qui seront mise dans le fichier binaire produit et dans quelle région elle sont placées.
    50 
    51 
    52 
    53 ''
     42{{{#!protected ------------------------------------------------------------------------------------
     43'''''''''''''''
     44  - C'est dans le fichier kernel.ld. On y trouve:
     45    - la définition de variable du ldscript. Ce sont essentiellement des adresses dans l'espace d'adressage,
     46      mais pas seulement, il y a aussi la taille des régions.
     47    - On trouve ensuite la déclaration des régions mémoire.
     48    - et enfin la définition des sections de sortie qui seront mise dans le fichier binaire produit et dans quelle région elle sont placées.
     49'''''''''''''''
    5450}}}
    5551  - Dans quel fichier se trouve le code de boot et pourquoi l'avoir nommé ainsi ?
    56 {{{#!protected
    57 ''
    58 Le code de boot est dans le fichier `hcpu.S`. Il a a été nommé ainsi parce que c'est du code qui dépend du
    59 hardware et qu'il concerne le cpu.
    60 
    61 
    62 
    63 ''
     52{{{#!protected ------------------------------------------------------------------------------------
     53'''''''''''''''
     54- Le code de boot est dans le fichier `hcpu.S`. Il a a été nommé ainsi parce que c'est du code qui dépend du
     55  hardware et qu'il concerne le cpu.
     56'''''''''''''''
    6457}}}
    6558  - A quelle adresse démarre le MIPS ? Où peut-on le vérifier ?
    66 {{{#!protected
    67 ''
    68 L'adresse de démarrage est `0xBFC00000`. On peut le vérifier dans le fichier `kernel.ld`. Il y a une définition des
    69 régions mémoire avec une région commençant à cette adresse et c'est dans cette région que l'on met le code de boot.
    70 
    71 
    72 
    73 ''
     59{{{#!protected ------------------------------------------------------------------------------------
     60'''''''''''''''
     61  - L'adresse de démarrage est `0xBFC00000`.
     62  - On peut le vérifier dans le fichier `kernel.ld`.
     63    Il y a une définition des régions mémoire dont une région commençant à cette adresse là et c'est dans
     64    cette région que l'on met le code de boot.
     65'''''''''''''''
    7466}}}
    7567  - Que produit `gcc` quand on utilise l'option `-c` ?
    76 {{{#!protected
    77 L'option `-c` demande à `gcc` de s'arrêter après avoir produit le fichier objet.
    78 Il produit donc un fichier au format `.o`
    79 
    80 
    81 
     68{{{#!protected ------------------------------------------------------------------------------------
     69'''''''''''''''
     70  - L'option `-c` demande à `gcc` de s'arrêter après avoir produit le fichier objet.
     71  - Il produit donc un fichier au format `.o`
     72'''''''''''''''
    8273}}}
    8374  - Que fait l'éditeur de liens ? Comment est-il invoqué ?
    84 {{{#!protected
    85 ''
    86 - L'éditeur de liens rassemble toutes les sections produite par le compilateur, et donc présentes dans les fichiers objet `.o`, dans de nouvelles sections et il place ces sections dans les régions de la mémoire,conformément au fichier ldscript (ici `kernel.ld`).
    87 - L'éditeur de liens est appelé par `gcc` si on n'a pas l'option `-c`ou directement par `ld` (ici `mipsel_unknown_ld`)
    88 
    89 
    90 ''
     75{{{#!protected ------------------------------------------------------------------------------------
     76'''''''''''''''
     77  - L'éditeur de liens rassemble toutes les sections produites par le compilateur, et donc présentes dans les fichiers objet `.o`, et il les place dans de nouvelles sections, elles-mêmes placées dans les régions de la mémoire, conformément au fichier ldscript (ici `kernel.ld`).
     78  - L'éditeur de liens est appelé par `gcc` si on n'a pas l'option `-c`ou directement par `ld` (ici `mipsel_unknown_ld`)
     79'''''''''''''''
    9180}}}
    9281  - De quels fichiers a besoin l'éditeur de liens pour fonctionner ?
    93 {{{#!protected
    94 
     82{{{#!protected ------------------------------------------------------------------------------------
     83'''''''''''''''
     84  - L'éditeur de liens a besoin des fichiers objets `.o` et du fichier ldscript (ici, `kernel.ld`)
     85'''''''''''''''
    9586}}}
    9687  - Dans quelle section se trouve le code de boot pour le compilateur ?
    97 {{{#!protected
    98 
     88{{{#!protected ------------------------------------------------------------------------------------
     89'''''''''''''''
     90
     91'''''''''''''''
    9992}}}
    10093  - Dans quelle section se trouve le message hello pour le compilateur ?
    101 {{{#!protected
    102 
     94{{{#!protected ------------------------------------------------------------------------------------
     95'''''''''''''''
     96
     97'''''''''''''''
    10398}}}
    10499  - Dans quelle section se trouve le code de boot dans le code exécutable ?
    105 {{{#!protected
    106 
     100{{{#!protected ------------------------------------------------------------------------------------
     101'''''''''''''''
     102
     103'''''''''''''''
    107104}}}
    108105  - Dans quelle région de la mémoire le code de boot est placé ?
    109 {{{#!protected
    110 
     106{{{#!protected ------------------------------------------------------------------------------------
     107'''''''''''''''
     108
     109'''''''''''''''
    111110}}}
    112111  - Comment connaît-on l'adresse du registre de sortie du contrôleur de terminal TTY ?
    113 {{{#!protected
    114 
     112{{{#!protected ------------------------------------------------------------------------------------
     113'''''''''''''''
     114
     115'''''''''''''''
    115116}}}
    116117  - Comment sait-on que le message est fini et que le programme doit s'arrêter ?
    117 {{{#!protected
    118 
     118{{{#!protected ------------------------------------------------------------------------------------
     119'''''''''''''''
     120
     121'''''''''''''''
    119122}}}
    120123  - Pourquoi terminer le programme par un `dead: j dead` ?
    121 {{{#!protected
    122 
     124{{{#!protected ------------------------------------------------------------------------------------
     125'''''''''''''''
     126
     127'''''''''''''''
    123128}}}
    124129
     
    147152}}}
    148153
    149 
    150 
    151 
    152 
    153 
    154 
    155 
    156  [wiki:AS5-TME9#a3.SautdanslafonctionkinitdunoyauenlangageC 3. kinit_c]:: \\
     154- **Questions**\\
     155  ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\
     156  - Question ?
     157{{{#!protected ------------------------------------------------------------------------------------
     158'''''''''''''''
     159  - Réponse
     160'''''''''''''''
     161}}}
     162
     163
     164
     165
     166
     167= 3. Saut dans la fonction kinit() du noyau en langage C
     168
    157169   Dans ce troisième programme, nous faisons la même chose que pour le deuxième mais `kinit()` est désormais écrit en
    158170   langage C. Cela change peu de choses, sauf une chose importante `kinit()` est une fonction et donc il faut absolument
     
    170182├── kinit.c      : fichier en C contenant le code de démarrage du noyau, ici c'est la fonction kinit().
    171183└── Makefile     : description des actions possibles sur le code : compilation, exécution, nettoyage, etc.
     184}}}
     185
     186- **Questions**\\
     187  ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\
     188  - Question ?
     189{{{#!protected ------------------------------------------------------------------------------------
     190'''''''''''''''
     191  - Réponse
     192'''''''''''''''
    172193}}}
    173194
     
    198219}}}
    199220
     221- **Questions**\\
     222  ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\
     223  - Question ?
     224{{{#!protected ------------------------------------------------------------------------------------
     225'''''''''''''''
     226  - Réponse
     227'''''''''''''''
     228}}}
     229
    200230
    201231
     
    226256}}}
    227257   
    228 
    229 
    230 
    231 =
    232 
    233 
    234 
     258- **Questions**\\
     259  ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\
     260  - Question ?
     261{{{#!protected ------------------------------------------------------------------------------------
     262'''''''''''''''
     263  - Réponse
     264'''''''''''''''
     265}}}
    235266
    236267- Quel est le nom de la directive assembleur permettant de déclarer une section
     
    240271
    241272
    242 = 3. Saut dans la fonction kinit() du noyau en langage C
    243 
    244 
    245 
    246 
    247 -
    248 
    249 
    250 
    251 
    252 
    253 
    254 
    255 
    256 
    257 -
    258 
    259 
    260 
    261 
    262 
    263 
    264 
    265 
    266 
    267 
    268 
    269 -
    270 
     273
     274
     275