Langage d'assemblage typé

Un article de Wikipédia, l'encyclopédie libre.

En informatique, un langage d’assemblage typé (L.A.T.), ou assembleur typé, désigne un langage d’assemblage qui possède une syntaxe permettant d’exprimer de manière avancée certains invariants d’un programme, concernant essentiellement des données voire des flux d’exécution ; afin qu’ils soient vérifiés mécaniquement.

Pour être rapide, le principe consiste à doter un assembleur « traditionnel » d’un vérifieur de type dont la tâche consiste à vérifier de manière statique (avant l’assemblage) ou dynamique (pendant l’exécution) la « cohérence » d’un programme au travers du respect qu’il a desdits invariants (appelés types) fixés par ses concepteurs.

(On pourrait voir une analogie entre ce travail et celui que fait le physicien lorsqu’il vérifie l’homogénéité d’une formule : que l’homogénéité soit respectée ne prouve pas la formule, par contre, qu’elle ne le soit pas, la remet grandement en cause.)

Certains assembleurs typés s’accompagnent des facilités communes aux langages de haut niveau : glaneur de cellules (avec support de plusieurs fils d’exécutions), systèmes de modules facilitant la séparation puis réutilisation du code, optimisations de bas niveau (supplémentaires), objets, etc.

Un langage d’assemblage typé tente donc d’associer l’expressivité et l’efficacité d’un langage machine avec la fiabilité et l’aisance d’un langage de haut niveau, au détriment, consubstantiel, de sa portabilité.

En outre, il semblerait qu’un L.A.T.[1] soit un bon moyen d’exécuter du code provenant d’une source de faible confiance, sans recourir à un interprète, et permettant (en théorie tout du moins) des fonctionnalités aussi avancées que celles des machines virtuelles comme Java ou Microsoft .NET.

Liens externes[modifier | modifier le code]

  • TALx86, Un projet de recherche de l’Université de Cornell orienté vers l’architecture IA-32, quelque peu délaissé par ses concepteurs depuis 2000-2001, au profit de Cy-clone semblerait-il, mais qui possède une intéressante base théorique et une importante implémentation (en OCaml).

Références[modifier | modifier le code]