Contexte
Projet d'envergure d'Epitech mêlant compilateur, machine virtuelle et combat de programmes en mémoire partagée.
Objectif
Implémenter un assembleur traduisant un langage dédié vers un bytecode, et une VM exécutant simultanément 2 champions dans un arène mémoire.
Contraintes
- Compatibilité totale avec les champions de référence
Fonctionnalités clés
- VM avec ordonnanceur cyclique et 16 instructions
- Mémoire arène 6 KiB partagée entre processus
- Système de live et détection de mort des champions
- Suite de tests Criterion couvrant chaque opcode
- Affiche de la memoire à un instant T donné
- Gestion des actions exécutés par les champions
Défis & solutions
Problème
Ecriture de chaque bit sans écraser le précédent.
Solution
Bit shifting avec opérateur binaire pour placer la prochaine valeur
Problème
Ordonnancement équitable des processus tout en restant performant.
Solution
compteur de cycle décrémentiel par instruction, évitant tout recalcul inutile.
Apprentissages
- Conception d'une VM et compréhension du bytecode
- Gestion d'écriture binaire
- Comprehension et gestion de processus