Eléments de traduction

 

     

Structure d'un programme C   

Passage des paramètres         

Variables temporaires     

Implémentation des types abstraits             

Fichiers

Nomination des opérations

Paramètres de la traduction

Optimisations

Structure d'un programme C
 

#include <stdio.h>
#include <stdlib.h>


typedef ...

#define ...
#define ...


Implémentation (Définition des types et des opérations)

Déclaration des variables globales

Fonctions standards
Macro opérations

Prototypes des fonctions

Fonction 1
{

Allocation dynamique ( malloc )
Déclaration des variables
Corps
}


Fonction 2
{

Allocation dynamique ( malloc )
Déclaration des variables
Corps
}

...
int main(int argc, char *argv[])
{
Allocation dynamique (malloc)
system("PAUSE");
return 0;
}
 


Passage des paramètres

Tous les paramètres sont passés par adresses : utilisation du symbole * dans les paramètres formels et utilisation du symbole & dans les paramètres réels.
 

Lors des appels, des variables temporaires sont créées pour les expressions (_Px1,_Px2, etc. )
 

Variables temporaires

Des variables, des enregistrements ou des tableaux temporaires peuvent être générés par le traducteur.

Ils sont préfixées par le symbole '_'.

Implémentation des types abstraits

Toutes les machines sont implémentées par les adresses.
Adresse vers la structure
Adresse vers le tableau
Adresse vers le bloc d'un fichier

Fichier

Le bloc d'en-tête se trouve au début du fichier.

Gestion spéciale des fichiers ouverts

        _Empiler_ouvert: empile un fichier ouvert (Nom et Handle)
        _Depiler_ouvert: dépile le dernier fichier ouvert(Nom) d'un handle donné.
        _Ouvert : teste si un fichier de nom donné existe ou pas.

Quand on définit un fichier, deux structures sont envisagées
- Définition de la structure du bloc du fichier avec des adresses. Si à l'intérieur du bloc, il ya un tableau c'est son adresse qui est considérée.

- Définition du bloc réel du fichier (sans adresse)

Nomination des opérations

Les noms des opérations des machines sont post fixés par les types.

Paramètres de la traduction

Le langage Z permet le partage des fichiers, c'est à dire un même fichier peut être ouvert plusieurs fois. Selon le compilateur C utilisé, le partage de fichier peut ne pas être permis. Dans ce cas, une gestion spéciale des fichiers ouverts est intégrée dans la traduction.

Optimisations

Quelques optimisations restent à faire telles que le recouvrement des variables temporaires créées.