Programmation Assembleur et algorithme d’Euclide
Dans cette session, nous verrons comment utiliser le langage WebAssembly pour implémenter l’algorithme d’Euclide et des programmes simples. Un langage assembleur est langage de plus bas niveau qui représente le langage machine sous une forme lisible par un humain. Bien que l’intérêt d’écrire directement de l’assembleur est sujet à débat, il reste intéressant pour comprendre comment son exécutés les programmes compilés.
Objectifs pédagogiques
- Concept de piles.
- Syntaxe de base WebAssembly : fonctions, operations, condition, boucle.
Déroulement possible de la session
- Introduction. Concept de piles.
- Étudier le programme binary-operator.wat.
- Générer un fichier binaire
binary-operator.wasm
en utilisant la commandewat2wasm binary-operator.wat
. - Utiliser run.js pour charger et exécuter
binary-operator.wasm
avec la commandenodejs run.js binary-operator.wasm 5 7
pour calculer 5 + 7. - Essayer avec d’autres arguments et d’autres operateurs binaires e.g.
i32.sub
(addition),i32.mul
(multiplication),i32.div_s
(division euclidienne),i32.rem_s
(reste de la division euclidienne). - Désassembler le programme avec la commande
wasm2wat binary-operator.wasm
et comparer le résultat avecbinary-operator.wat
. - Étudier le programme conditional.wat, générer le fichier binaire
conditional.wasm
et exécuter-le à l’aide derun.js
. Quelle est la fonction implémentée par ce programme ? - Faire de même avec recursive-gcd.wat. Comparer avec l’algorithme d’euclide récursif.
- Faire de même avec iterative-gcd.wat. Comparer avec l’algorithme d’euclide itératif.
Installation
L’environnement suivant sera mis à disposition pour cette session:
- Linux Mint >= 21
- Paquets
wabt
*nodejs