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