TP 12 - WebAssembly 2
was
was est un utilitaire de ligne de commande pour assembler des fichiers wasm. Il transforme les fichiers texte wat en fichiers binaires wasm.
La documentation de was est disponible a github
Utilisation de was
Pour installer was, vous devez:
Exécuter la commande
npm install -g was
-
Entrer dans le dossier
was de votre PC et en utilisant la ligne de commande, exécuter:
npm install
Assembler un programme
Pour assembler un programme, utilisez la commande:
./was/assemble.js nom_du_fichier.wat
Pour exécuter cette commande sans erreurs, vous devez télécharger le repository dans le dossier ou se trouve aussi le programme .wat
.
Cela va générer un programme nommé
nom_du_fichier.wasm.
Exécuter un programme de Web Assembly
Pour exécuter un programme d'assemblage Web, utilisez la commande:
was run program.wasm
Définir une mémoire
Pour exécuter un programme de Web Assembly avec une mémoire, utilisez la commande suivante:
was run program.was -m 1:1
Ceci lancera le programme avec une mémoire de minimum 1 page et maximum 1 page.
Exercises
Installez “was”. Montrer l'aide de “was”. (1p)
Ecrivez un programme wat qui importe les fonctions readint et writeint à partir du module “io”. Utilisez les fonctions et lisez un numéro du clavier et affichez sa deuxième puissance. (1p)
Désassemblez le programme précédent dans un fichier nommé program_disassemble.wat. Essayez de faire la même chose en utilisant les options –debug, –names et –fold. (note: assembler le fichier program.wat en utilisant l'option –debug). (1p)
Écrivez un programme qui lit un caractère en minuscule du clavier et affiche son caractère majuscule. (1p)
Ecrivez un programme qui importe une mémoire avec 1 page. En utilisant l'instruction data, ajoutez votre groupe à la mémoire à la position 0 suivi d'un 0 (\00). Utilisez la fonction writestr de la bibliothèque io pour imprimer votre nom. (1p)
Ecrivez une fonction “afficher” qui fait la même chose que la fonction writestr. Elle obtient un paramètre, l'adresse où un string est situé dans la mémoire. (indice: commencez à la position initiale et écrivez des caractères de la mémoire jusqu'à ce que vous trouviez un 0) (2p)
Écrivez un programme qui lit une adresse mémoire (sous forme de nombre), lit une chaîne à cette adresse mémoire (maximum 10 caractères) et imprime la chaîne à l'aide de la fonction de l'exercice précédent. (1p)
Ecrivez une fonction de lecture qui fait la même chose que readstr. La fonction prend comme premier paramètre l'adresse mémoire où il doit lire la chaîne et un autre paramètre avec la longueur maximale de la chaîne. (2p)