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 | }}} |