Changes between Version 33 and Version 34 of Archi-1-TP9
- Timestamp:
- Nov 16, 2020, 1:48:34 PM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v33 v34 38 38 39 39 - **Questions**\\ 40 ''Les réponse son rdans le cours ou dans les fichiers sources''\\\\40 ''Les réponse sont dans le cours ou dans les fichiers sources''\\\\ 41 41 - 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 ''''''''''''''' 54 50 }}} 55 51 - 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 ''''''''''''''' 64 57 }}} 65 58 - 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 ''''''''''''''' 74 66 }}} 75 67 - 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 ''''''''''''''' 82 73 }}} 83 74 - 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 ''''''''''''''' 91 80 }}} 92 81 - 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 ''''''''''''''' 95 86 }}} 96 87 - Dans quelle section se trouve le code de boot pour le compilateur ? 97 {{{#!protected 98 88 {{{#!protected ------------------------------------------------------------------------------------ 89 ''''''''''''''' 90 91 ''''''''''''''' 99 92 }}} 100 93 - Dans quelle section se trouve le message hello pour le compilateur ? 101 {{{#!protected 102 94 {{{#!protected ------------------------------------------------------------------------------------ 95 ''''''''''''''' 96 97 ''''''''''''''' 103 98 }}} 104 99 - Dans quelle section se trouve le code de boot dans le code exécutable ? 105 {{{#!protected 106 100 {{{#!protected ------------------------------------------------------------------------------------ 101 ''''''''''''''' 102 103 ''''''''''''''' 107 104 }}} 108 105 - Dans quelle région de la mémoire le code de boot est placé ? 109 {{{#!protected 110 106 {{{#!protected ------------------------------------------------------------------------------------ 107 ''''''''''''''' 108 109 ''''''''''''''' 111 110 }}} 112 111 - Comment connaît-on l'adresse du registre de sortie du contrôleur de terminal TTY ? 113 {{{#!protected 114 112 {{{#!protected ------------------------------------------------------------------------------------ 113 ''''''''''''''' 114 115 ''''''''''''''' 115 116 }}} 116 117 - Comment sait-on que le message est fini et que le programme doit s'arrêter ? 117 {{{#!protected 118 118 {{{#!protected ------------------------------------------------------------------------------------ 119 ''''''''''''''' 120 121 ''''''''''''''' 119 122 }}} 120 123 - Pourquoi terminer le programme par un `dead: j dead` ? 121 {{{#!protected 122 124 {{{#!protected ------------------------------------------------------------------------------------ 125 ''''''''''''''' 126 127 ''''''''''''''' 123 128 }}} 124 129 … … 147 152 }}} 148 153 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 157 169 Dans ce troisième programme, nous faisons la même chose que pour le deuxième mais `kinit()` est désormais écrit en 158 170 langage C. Cela change peu de choses, sauf une chose importante `kinit()` est une fonction et donc il faut absolument … … 170 182 ├── kinit.c : fichier en C contenant le code de démarrage du noyau, ici c'est la fonction kinit(). 171 183 └── 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 ''''''''''''''' 172 193 }}} 173 194 … … 198 219 }}} 199 220 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 200 230 201 231 … … 226 256 }}} 227 257 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 }}} 235 266 236 267 - Quel est le nom de la directive assembleur permettant de déclarer une section … … 240 271 241 272 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