AECS-informatique

Dépôt git pour les ateliers d’informatique à l’AECS

View project on GitHub

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

  1. Introduction. Concept de piles.
  2. Étudier le programme binary-operator.wat.
  3. Générer un fichier binaire binary-operator.wasm en utilisant la commande wat2wasm binary-operator.wat.
  4. Utiliser run.js pour charger et exécuter binary-operator.wasm avec la commande nodejs run.js binary-operator.wasm 5 7 pour calculer 5 + 7.
  5. 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).
  6. Désassembler le programme avec la commande wasm2wat binary-operator.wasm et comparer le résultat avec binary-operator.wat.
  7. Étudier le programme conditional.wat, générer le fichier binaire conditional.wasm et exécuter-le à l’aide de run.js. Quelle est la fonction implémentée par ce programme ?
  8. Faire de même avec recursive-gcd.wat. Comparer avec l’algorithme d’euclide récursif.
  9. 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