Changes between Version 184 and Version 185 of Archi-1-TP9


Ignore:
Timestamp:
Nov 18, 2022, 10:37:21 AM (2 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v184 v185  
    6868
    6969
    70 Nous commençons par un petit programme de quelques lignes en assembleur, placé entièrement dans la région mémoire
    71 du boot, qui réalise l'affichage du message "Hello World". C'est un tout tout petit programme, mais pour obtenir
    72 l'exécutable, vous devrez utiliser tous les outils de la chaîne de cross-compilation MIPS et
     70Nous commençons par un petit programme de quelques lignes en assembleur, placé entièrement dans la région mémoire du boot, qui réalise l'affichage du message "Hello World". C'est un tout tout petit programme, mais pour obtenir l'exécutable, vous devrez utiliser tous les outils de la chaîne de cross-compilation MIPS et
    7371pour l'exécuter vous devrez exécuter le simulateur du prototype. C'est simple, mais c'est nouveau pour
    7472beaucoup d'entre vous
     
    9189
    9290
    93 **Questions**
     91**Questions** (certaines déjà vues en TD, mais vous devez ouvrir les fichiers pour répondre)
    9492
    9593
     
    104102''
    105103}}}
    106 1. Dans quel fichier se trouve le code de boot et pourquoi, selon vous, avoir nommé ce fichier ainsi ?
     1041. Dans quel fichier se trouve le code de boot et pourquoi, selon vous, avoir nommé ce fichier ainsi ? (h pour hardware, cpu = Central Processor Unit)
    107105{{{#!protected ------------------------------------------------------------------------------------
    108106''
     
    127125''
    128126}}}
    129 1. Que fait l'éditeur de liens ? Comment est-il invoqué ?
     1271. Que fait l'éditeur de liens ? Comment est-il invoqué ? (C9 S21)
    130128{{{#!protected ------------------------------------------------------------------------------------
    131129''
     
    186184''
    187185}}}
    188 1. Quelle est la différence entre `#include "file.h"` et `#include <file.h>` ? Quelle option du compilateur C permet de spécifier les répertoires lesquels se trouvent les fichiers include ? Si vous ne savez pas interrogez Internet !
    189 {{{#!protected ------------------------------------------------------------------------------------
    190 ''
    191 Cours 9 / slides 18 et 58\\\\
    192 Ce sont toujours des connaissances connues en principe, mais comme c'est utilisé dans le code, ce n'est pas inutile d'en parler rapidement.
     1861. Quelle est la différence entre `#include "file.h"` et `#include <file.h>` ? Quelle option du compilateur C permet de spécifier les répertoires lesquels se trouvent les fichiers include ? Si vous ne savez pas interrogez Internet ! (C9 annexe S4+S10)
     187{{{#!protected ------------------------------------------------------------------------------------
     188''
     189* Ce sont des connaissances connues en principe, mais comme c'est utilisé dans le code, ce n'est pas inutile d'en parler rapidement.
    193190* Avec `#include "file.h"`, le préprocesseur recherche le fichier dans le répertoire local.
    194191* Avec `#include <file.h>`, le préprocesseur recherche le fichier dans les répertoires standards tel que `/usr/include` et dans les répertoires spécifiés par l'option `-I` du préprocesseur. Il peut y avoir plusieurs fois `-I` dans la commande, par exemple `-Idir1 -Idir2 -Idir3`.
     
    196193''
    197194}}}
    198 1. Comment définir une macro-instruction C uniquement si elle n'est pas déjà définie ? Écrivez un exemple. Si vous ne savez pas regardez l'usage de `#ifndef`
    199 {{{#!protected ------------------------------------------------------------------------------------
    200 ''
    201 Cours 9 / slides 9 et 58\\\\
    202 Cette déclaration est présente à plusieurs endroits dans le code. Elle permet de définir des valeurs de paramètres par défaut, s'ils ne sont pas déjà définis ailleurs, soit plus haut dans le code, ou dans un fichier inclu, ou encore passé en paramètre du compilateur par l'option `-D`.
     1951. Comment définir une macro-instruction C uniquement si elle n'est pas déjà définie ? Écrivez un exemple. Si vous ne savez pas regardez l'usage de `#ifndef` (C9 annexe S9)
     196{{{#!protected ------------------------------------------------------------------------------------
     197''
     198* Cette déclaration est présente à plusieurs endroits dans le code. Elle permet de définir des valeurs de paramètres par défaut, s'ils ne sont pas déjà définis ailleurs, soit plus haut dans le code, ou dans un fichier inclu, ou encore passé en paramètre du compilateur par l'option `-D`.
    203199* En utilisant, une directive `#ifndef` :
    204200{{{#!c
     
    209205''
    210206}}}
    211 1. Comment être certain de ne pas inclure plusieurs fois le même fichier `.h` ? Vous devriez avoir trouvé l'explication en répondant à la question précédente.
    212 {{{#!protected ------------------------------------------------------------------------------------
    213 ''
    214 Cours 9 / slides 9 et 58\\\\
    215 C'est un usage de ce qui a été vu dans la question précédente. C'est utilisé dans tous les fichiers .h (sauf oubli).
     2071. Comment être certain de ne pas inclure plusieurs fois le même fichier `.h` ? Vous devriez avoir trouvé l'explication en répondant à la question précédente. (C9 annexe S10)
     208{{{#!protected ------------------------------------------------------------------------------------
     209''
     210* C'est un usage de ce qui a été vu dans la question précédente. C'est utilisé dans tous les fichiers .h
    216211* En utilisant ce que nous venons de voir dans la question précédente : on peut définir une macro instruction différente au début de chaque fichier `.h` (en utilisant le nom du fichier comme nom de macro pour éviter les collisions de nom). On peut alors tester l'existence de cette macro comme condition d'inclusion du fichier.
    217212{{{#!c