19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapitre 3<br />

Les interprètes C existants<br />

Comme on peut le voir sur la figure 15, la fonction strcmp() n est pas celle <strong>de</strong> la librairie<br />

standard C puisque le fichier hea<strong>de</strong>r «string.h » dans lequel elle est définie n a pas été inclus au<br />

programme «compare.ch ». De plus cette fonction compare <strong>de</strong>ux chaînes <strong>de</strong> caractères <strong>de</strong> types<br />

différents l une <strong>de</strong> type char * comme en C et l autre chaîne est <strong>de</strong> type string_t qui est un<br />

type propre au langage Ch. On peut aussi remarquer que le co<strong>de</strong> Ch est enregistré dans un fichier<br />

d extension .ch, qui contient en première ligne l appel à l interprète Ch sous la forme :<br />

# !/bin/ch S .<br />

L interprète Ch offre <strong>de</strong> plus la possibilité d utiliser <strong>de</strong>s comman<strong>de</strong>s Shell, awk et <strong>de</strong>s librairies<br />

graphiques telles que OpenGL. Il permet, comme Un<strong>de</strong>rC, Cint et EiC, <strong>de</strong> saisir <strong>de</strong>s instructions<br />

C en ligne <strong>de</strong> comman<strong>de</strong>s et d exécuter un fichier écrit en C <strong>de</strong> manière aisée. On peut voir cela à<br />

la figure 16.<br />

Figure 16. Aperçu <strong>de</strong> l exécution du programme testinterpC.c par Ch<br />

Ch est accompagné <strong>de</strong> trois documents (<strong>de</strong> type pdf <strong>de</strong> plus <strong>de</strong> 1000 pages en tout) et man, assez<br />

complets, permettant <strong>de</strong> mieux comprendre son langage et son fonctionnement.<br />

Ch existe en version standard gratuite, dédiée à la recherche et aux étudiants, et une version<br />

professionnelle payante. Nous avons testé la version standard <strong>de</strong> Ch dans l espoir <strong>de</strong> pouvoir<br />

obtenir le co<strong>de</strong> source par la suite, malheureusement sans succès. Les tests réalisés sont les<br />

mêmes que ceux appliqués à l outil EiC étant donnés que l outil gère toute la bibliothèque<br />

standard C, ainsi que les principaux éléments pouvant construire un quelconque programme<br />

source C, c'est-à-dire essentiellement : les pointeurs, les tableaux, l appel <strong>de</strong> fonctions, gestion <strong>de</strong>s<br />

boucles, la récursivité et encore les structures <strong>de</strong> contrôle.<br />

Ch permet aussi <strong>de</strong> gérer un co<strong>de</strong> source avec grand nombre <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong>s. Il a été<br />

cependant incapable d exécuter le co<strong>de</strong> <strong>de</strong> l interprète Lisp constitué <strong>de</strong> plusieurs fichiers sources,<br />

ceci bien qu il supporte en théorie la possibilité d interpréter ce type <strong>de</strong> programmes sources. En<br />

effet, l exécution <strong>de</strong> programmes composés <strong>de</strong> plusieurs fichiers sources nécessite <strong>de</strong>s<br />

manipulations préalables sur ce <strong>de</strong>rnier. Le co<strong>de</strong> source n étant <strong>de</strong> toute manière pas accessible,<br />

les tests pour cet outil n ont pas été au <strong>de</strong>là.<br />

Le langage Ch permettrait aussi <strong>de</strong> créer <strong>de</strong>s programmes avec <strong>de</strong>s points <strong>de</strong> contrôle grâce aux<br />

fonctions Ch, mais cela nécessite une étu<strong>de</strong> plus approfondie <strong>de</strong> ses capacités, difficile à réaliser<br />

du fait du manque <strong>de</strong> documentation à ce sujet.<br />

33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!