Aller au contenu principal
Compilation & VM· 2025· Difficulté

Corewar

Assembleur et machine virtuelle

CBashValgrind

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