Changes between Version 157 and Version 158 of Archi-1-TP9
- Timestamp:
- Nov 21, 2021, 1:41:36 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v157 v158 397 397 {{{#!protected ------------------------------------------------------------------------------------ 398 398 '' 399 Cours 9 / slides 23 et 24\\\\ 399 400 Pour répondre, il faut savoir interpréter le dessin représentant l'espace d'adressage. Si ça semble difficile, il faut revoir ce qu'est l'espace d'adressage. 400 401 {{{#!c … … 404 405 '' 405 406 }}} 406 1. Le fichier contient ensuite la déclaration des régions (dans `MEMORY{...}`) qui vont être remplies par les sections trouvées dans les fichiers objets. Comment modifier cette partie (la zone `[... question 2 ...]`) pour ajouter les lignes correspondant à la déclaration de la région `kdata_region` ? 407 {{{#!protected ------------------------------------------------------------------------------------ 408 ''''''''''''''' 407 1. Le fichier contient ensuite la déclaration des régions (dans `MEMORY{...}`) qui seront remplies par l'éditeur de lien avec les sections trouvées dans les fichiers objets selon un ordre décrit dans la partie `SECTIONS{}` du `ldscript``. Complétez cette partie (la zone `[... question 2 ...]`) pour ajouter les lignes correspondant à la déclaration de la région `kdata_region` ? 408 {{{#!protected ------------------------------------------------------------------------------------ 409 '' 410 Cours 9 / slides 23 et 24\\\\ 411 La syntaxe est assez explicite, cela ne devrait pas poser de problème. 409 412 {{{#!c 410 413 kdata_region : ORIGIN = __kdata_origin, LENGTH = __kdata_length 411 414 }}} 412 '' '''''''''''''415 '' 413 416 }}} 414 417 1. Enfin le fichier contient comment sont remplies les régions avec les sections. Complétez les lignes correspondant à la description du remplissage de la région `ktext_region`. Vous devez la remplir avec les sections `.text` issus de tous les fichiers. 415 418 {{{#!protected ------------------------------------------------------------------------------------ 416 ''''''''''''''' 419 '' 420 Cours 9 / slides 23 et 24\\\\ 421 Il faut bien comprendre que `.ktext` est une section produite par l'éditeur de liens. C'est ce que l'on appelle une section de sortie. `.text` est une section que l'éditeur de liens trouve dans un fichier objet `.o`, c'est ce que l'on appelle une section d'entrée. Comme il y a plusieurs fichiers objet, on doit dire à l'éditeur de lien de prendre toutes les sections `.text` de tous les fichiers qu'on lui donne. Le `*` devant `(.text)` est une expression régulière permettant de dire à l'éditeur de liens quels fichiers sont concernés, ici avec `*` c'est tous les fichiers. Les expressions régulières sont celles qu'on utilise avec le `shell`. 417 422 {{{#!c 418 423 .ktext : { … … 420 425 } > ktext_region 421 426 }}} 422 '' '''''''''''''427 '' 423 428 }}} 424 429 … … 468 473 4. Au début du fichier se trouve la déclaration des variables du Makefile, quelle est la différence entre `=`, `?=` et `+=` ? 469 474 {{{#!protected ------------------------------------------------------------------------------------ 470 ''''''''''''''' 475 '' 476 @@ 471 477 * `=` fait une affectation simple 472 478 * `?=` fait une affection de la variable si elle n'est pas déjà définie comme variable d'environnement du shell ou dans la ligne de commande de make, par exemple avec `FROM` 473 479 * `+=` concatène la valeur courante à la valeur actuelle, c'est une concaténation de chaîne de caractères. 474 '' '''''''''''''480 '' 475 481 }}} 476 482 1. Où est utilisé `CFLAGS` ? Que fait `-DNTTYS=$(NTTY)` et pourquoi est-ce utile ici ?