Changes between Version 157 and Version 158 of Archi-1-TP9


Ignore:
Timestamp:
Nov 21, 2021, 1:41:36 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v157 v158  
    397397{{{#!protected ------------------------------------------------------------------------------------
    398398''
     399Cours 9 / slides 23 et 24\\\\
    399400Pour 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.
    400401{{{#!c
     
    404405''
    405406}}}
    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 '''''''''''''''
     4071. 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''
     410Cours 9 / slides 23 et 24\\\\
     411La syntaxe est assez explicite, cela ne devrait pas poser de problème.
    409412{{{#!c
    410413kdata_region : ORIGIN = __kdata_origin, LENGTH = __kdata_length
    411414}}}
    412 '''''''''''''''
     415''
    413416}}}
    4144171.  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.
    415418{{{#!protected ------------------------------------------------------------------------------------
    416 '''''''''''''''
     419''
     420Cours 9 / slides 23 et 24\\\\
     421Il 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`.
    417422{{{#!c
    418423.ktext : {
     
    420425} > ktext_region
    421426}}}
    422 '''''''''''''''
     427''
    423428}}}
    424429 
     
    4684734. Au début du fichier se trouve la déclaration des variables du Makefile, quelle est la différence entre `=`, `?=` et `+=` ?
    469474{{{#!protected ------------------------------------------------------------------------------------
    470 '''''''''''''''
     475''
     476@@
    471477* `=`  fait une affectation simple
    472478* `?=` 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`
    473479* `+=` concatène la valeur courante à la valeur actuelle, c'est une concaténation de chaîne de caractères.
    474 '''''''''''''''
     480''
    475481}}}
    4764821. Où est utilisé `CFLAGS` ? Que fait `-DNTTYS=$(NTTY)` et pourquoi est-ce utile ici ?