Changes between Version 100 and Version 101 of Archi-1-TP9


Ignore:
Timestamp:
Dec 10, 2020, 11:13:40 PM (4 years ago)
Author:
heydeman
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v100 v101  
    229229{{{#!protected ------------------------------------------------------------------------------------
    230230'''''''''''''''
    231 1. Déclarer `static` une variable globale ou une fonction en faisant précéder leur définition du mot clé `static` permet de limiter la visibilité de cette variable ou de cette fonction au seul fichier de déclaration. Notez que par défaut les variables et les fonctions du C ne sont pas `static`, il faut le demander explicitement. C'est exactement l'inverse en assembleur où tout label est `static` et il faut demander avec la directive `.globl` de le rendre visible.
     2311. Déclarer `static` une variable globale ou une fonction en faisant précéder leur définition du mot clé `static` permet de limiter la visibilité de cette variable ou de cette fonction au seul fichier de déclaration. Notez que par défaut les variables et les fonctions du C ne sont pas `static`, il faut le demander explicitement. C'est exactement l'inverse en assembleur où tout label est implicitement  `static` ; il faut demander avec la directive `.globl` de le rendre visible.
    2322321. Déclarer `static` une variable locale permet de la rendre persistante, c'est-à-dire qu'elle conserve sa valeur entre deux appels. Cette variable locale n'est pas dans le contexte de la fonction (celui-ci est dans la pile et il est libéré en sortie de fonction). Une variable locale `static` est en fait allouée comme une variable globale mais son usage est limité à la seule fonction où elle est définie.
    233233'''''''''''''''
     
    236236{{{#!protected ------------------------------------------------------------------------------------
    237237'''''''''''''''
    238 * Les déclarations `extern` permettent d'informer que le compilateur qu'une variable ou qu'une fonction définie ailleurs existe. Le compilateur est ainsi informé du type de la variable ou du prototype des fonctions, il sait donc comment les utiliser. En C par défaut les variables et les fonctions
    239 * Il n'y a pas de déclaration `extern` en assembleur par ce n'est pas un langage typé. Pour l'assembleur, un label c'est juste une adresse donc un nombre.
     238* Les déclarations `extern` permettent d'informer que le compilateur qu'une variable ou qu'une fonction existe et est définie ailleurs. Le compilateur connaît ainsi le type de la variable ou du prototype des fonctions, il sait donc comment les utiliser. En C, par défaut, les variables et les fonctions ddoivent être déclarées / leur existence et type doit être connus avant leur utilisation.
     239* Il n'y a pas de déclaration `extern` en assembleur parce que ce n'est pas un langage typé. Pour l'assembleur, un label c'est juste une adresse donc un nombre.
    240240'''''''''''''''
    241241}}}