Commits

Jacques-Pascal Deplaix committed e641c23 Merge

Merged in Armael/tyllvm (pull request #1)

Some basic French corrections in the README.

Comments (0)

Files changed (1)

-TyLLVM: Librairie de génération sûre d'assembleur LLVM en OCaml
+TyLLVM: Bibliothèque de génération sûre d'assembleur LLVM en OCaml
 
 Résumé:
-    TyLLVM est une librairie OCaml permettant de générer de
+    TyLLVM est une bibliothèque OCaml permettant de générer de
     l'assembleur LLVM qui respecte au possible les spécifications du
     langage grâce au système types d'OCaml.
 
 Introduction:
     LLVM est une infrastructure de compilateur ayant l'architecture suivante:
-        - Le front-end spécifique à chaque langages compilant vers le code
+        - Le front-end spécifique à chaque langage compilant vers le code
             intermédiaire LLVM.
         - Un compilateur compilant de l'assembleur LLVM (code intermédiaire)
             vers du bytecode LLVM.
-        - Un back-end transformant depuis le bytecode LLVM vers une
-            architecture donnée
+        - Un back-end assemblant le bytecode LLVM pour une architecture donnée
 
-    La présente librairie permet donc de générer du code intermédiaire LLVM
-    à partir de code OCaml. Il doit pour cela présenter un ensemble de fonctions
-    générant les différents type et structures possible en LLVM-IR.
+    La présente bibliothèque permet donc de générer du code intermédiaire LLVM
+    à partir de code OCaml. Celui-ci doit présenter un ensemble de fonctions
+    générant les différents types et structures possibles en LLVM-IR.
 
-    LLVM inclue déjà un binding de leur API pour générer du LLVM-IR [1].
-    Seulement, ce n'est qu'un bind des fonctions C++ correspondant qui est
-    non complet et pouvant occasionner des « segmentation fault ».
+    LLVM inclut déjà un binding de leur API pour générer du LLVM-IR [1].
+    Seulement, ce n'est qu'une transcription des fonctions C++ correspondantes,
+    qui n'est pas complète et qui peut amener à des « segmentation fault ».
 
     La vraie différence de TyLLVM avec ce binding, en plus de pallier à ces
     problèmes mentionnés précédemment, est qu'il propose un moyen d'éviter un
     Le projet s'inspire de projets telle que TyXML [3] ou MaCaQue [4].
     On s'articule donc autour de la puissance du système de type d'OCaml
     (typage, variant polymorphes, GADT) pour pouvoir générer du code LLVM-IR
-    dont une analyse statique aura déjà était faite.
+    dont une analyse statique aura déjà été faite.
 
 Le Projet:
     LLVM-IR s'articule autour de 2 modules. L'un correspond à proprement parler
-    du code LLVM-IR tandis que l'autre offre une abstraction aux données associées
+    au code LLVM-IR tandis que l'autre offre une abstraction aux données associées
     à leurs types. En combinant les deux, on parvient à déceler des erreurs de
     types basiques.
 
 
     Le module LLVM s'organise sur 3 niveau. Une implémentation semblable en Coq [2]
     valide cette prise de position. Il s'agit, au premier niveau, de pouvoir
-    définir des variables globales ou des fonctions mais aussi de pouvoir
+    définir des variables globales ou des fonctions, mais aussi de pouvoir
     déclarer des fonctions externes. Le deuxième niveau correspond à la définition
     des labels et de l'instruction `ret` qui est très spécifique. Enfin, le
     troisième niveau correspond au code proprement parlé à l'aide d'un arbre
 
     Certains points peuvent être notés comme l'utilisation dans certaines
     situations des variants polymorphes afin d'étayer le système de type sur
-    les différents attributs que peuvent prendre la déclaration de fonction et
-    la définition de variable global notamment. L'idée est d'interdire
-    l'utilisateur de l'API de pouvoir mettre un mauvais linkage sur la
-    déclaration de fonction (ce qui aurait été possible dans le système de sous
-    typage d'OCaml).
+    les différents attributs que peuvent prendre la déclaration de fonctions et
+    la définition de variables globales notamment. L'idée est d'interdire
+    à l'utilisateur de l'API de mettre un mauvais linkage sur la déclaration de
+    fonctions (ce qui aurait été possible dans le système de sous typage
+    d'OCaml).
 
     Même si nous avons réussi à faire respecter certaines règles de façon statique
     dans la génération du code LLVM-IR, il reste tout de même des points qui ne
-    peuvent être vérifier sans un système plus fort que celui d'OCaml. En effet,
+    peuvent être vérifiés sans un système plus fort que celui d'OCaml. En effet,
     on peut parler de l'attribut `asign` qui ne peut prendre que des puissances de
-    2 entant que paramètres. Il nous aurait fallut un système de type de dépendant
+    2 en tant que paramètres. Il nous aurait fallut un système de type dépendants
     comme celui de Coq pour y parvenir.
 
     D'autres situations plus difficiles à contextualiser montrent aussi les
-    limites du système de typage de l'OCaml mais même si c'est le cas, il faut
-    aussi accorder une certaines confiance à l'utilisateur.
+    limites du système de type d'OCaml mais même si c'est le cas, il faut
+    aussi accorder une certaine confiance à l'utilisateur.
 
     LLVM_types:
 
-    Le module LLVM_types contient trois grosse parties:
-        - Le sous-module N_star qui modèlise l'ensemble N*
-            (entier naturel non-nulle)
-        - Le type t qui modèlise un type de LLVM-IR
-        - Le type value qui modèlise un type et sa valeur
-    Les GADT se révèlent ici très utile pour créer les types N_star.t
+    Le module LLVM_types contient trois grosses parties :
+        - Le sous-module N_star qui modélise l'ensemble N*
+            (entiers naturels non-nuls)
+        - Le type t qui modélise un type de LLVM-IR
+        - Le type value qui modélise un type et sa valeur
+    Les GADT se révèlent ici très utiles pour créer les types N_star.t
     et le type f (servant à modéliser le type des fonctions).
 
 Le résultat:
 
     Ainsi, nous avons essayé de générer comme point de départ un simple code
     de LLVM-IR qui affiche un « Hello World ! » afin de valider notre point de
-    vu sur la génération d'un code LLVM-IR en OCaml.
+    vue sur la génération d'un code LLVM-IR en OCaml.
 
     L'approche TyXML peut être critiquable (en prenant en comparaison la
     sémantique du XML et de LLVM-IR), néanmoins si nous arrivons à des
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.