Comprendre l'ordinateur

C'est quoi Corewars, RedCode ?

CoreWars est une sorte de jeu: Chacun conçoit des programmes, puis on les fait se battre entre eux (le but étant de faire 'planter' le programme adverse).

Ce jeu a été inventé dans les universités américaines. C'est un exercice de programmation qui était vivement encouragé par les professeurs. C'est d'ailleurs probablement cela qui a donné l'idée aux premiers programmeurs de virus, mais Corewars reste un exercice de programmation tout à fait intéressant, instructif, pacifique, ludique et sans danger.
 

Mais c'est dangereux !

Absolument pas.
Les programmes Corewars sont écrits dans une sorte de langage assembleur appelé RedCode.
On fait fonctionner ces programmes dans une machine virtuelle (c'est un ordinateur fictif simulé par un programme).
Le microprocesseur de votre ordinateur (Pentium ou autre) ne comprend pas le langage machine RedCode. Les programmes RedCode ne peuvent donc en aucun cas s'exécuter directement sur votre processeur et ne peuvent pas s'«échapper».
 
 

RedCode, le langage de programmation.

RedCode est un langage assembleur (Ne le confondez pas avec Code Red qui lui est un virus !)
Il existe plusieurs version du langage RedCode, mais les instructions sont très similaires à n'importe quel langage assembleur (copier, additionner, multiplier, comparer, effectuer un saut...).
On trouve les programmes RedCode sous 2 formes: source assembleur ou code machine.
 
 

Quelles sont les règles ?

Le but est donc de faire planter tous les process du programme adverse. Il y a plein de tactiques différentes.
 
 

Un exemple !

Le programme de combat le plus simple existant est:  MOV 0,1
ce qui veut dire: "copie ce qu'il y a dans la cellule mémoire courante (0) dans la cellule mémoire suivante (1).". Ceci va copier l'instruction MOV 0,1 dans la cellule mémoire suivante. Après avoir exécuté l'instruction, le pointeur de programme passe à la cellule suivante (qui justement contient le MOV 0,1 qu'on vient de copier !).

Ce programme avance donc de cellule en cellule en mémoire, écrasant tout sur son passage, et embarquant les process de l'adversaire avec lui.

C'est le programme le plus simple, mais il est difficile à tuer. 
 

Quel intérêt ?

Si vous ne connaissez pas le langage assembleur, c'est l'occasion d'apprendre ! Il existe de tout petits programmes en RedCode faciles à comprendre.

Si vous connaissez déjà l'assembleur, vous verrez que c'est joussif de trouver des optimisations pour rechercher plus rapidement l'adversaire, le bombarder ou trouver des tactiques pour bloquer (ou vampiriser !) ses process et lui voler des cycles d'horloge.
Serez-vous capable de vaincre les programmes les plus puissants ? Attention: ce ne sont pas forcément les programmes les plus gros ou les plus complexes qui sont les plus dangereux ! A vous de trouver des tactiques efficaces.

Pour en savoir plus:

http://directory.google.com/Top/Games/Video_Games/Simulation/Programming_Games/Core_War/


Le contenu de cette page est placé sous les termes de la licence suivante : CC Attribution-Noncommercial 4.0 International
h t t p : / / s e b s a u v a g e . n e t