Core War

Core War

   
En savoir plus :  Retourner à la page précédente   Imprimer cette page   

FAQ Microsoft Windows
 
 
Core War est un jeu sur ordinateur, l'un des tout premiers. C'est un jeu pour programmeurs s'affrontant sur le terrain de la programmation. Cela démarre en 1961 avec le jeu Darwin, à l'ère des cartes perforées - les écrans d'ordinateurs n'existent pas et les disques durs non plus.

Core War est remarquable car il contient tout ce que les virus mettront en oeuvre beaucoup plus tard dont la réplication, l'autoprotection, la furtivité, la destruction, le recouvrement, tuer un processus, utiliser les espaces vierges pour se copier, l'injection etc. ... et ce que les antivirus utiliseront : la reconnaissance de signatures, les machines virtuelles...

En Août 1961, trois jeunes programmeurs des célèbres Bell Laboratories (une division d'ATT), qui travaillent sur les théories de Von Neumann : Robert Thomas Morris, Douglas McIlory et Victor Vysottsky, développent un jeu nommé Darwin qui se joue sur les énormes ordinateur (mainframe) IBM 7090. Des programmes (les combattants) s'affrontent dans une arène. Le jeu ne dure pas longtemps car Robert Thomas Morris a développé un combattant que personne n'arrive à vaincre et plus personne ne développe d'adversaire.

Le jeu Core War semble démarrer fin des années 1960s (mais aucune source ne semble fiable).

A. K. Dewdney, qui publiera en mars 1984 avec D. G. Jones (puis dans une revue de récréation mathématiques à partir de mai 1984), les spécifications du jeu et du langage Code Red, déclara que Darwin avait été une source d'inspiration pour Core War.

La société "The International Core Wars Society (ICWS)" sera fondée en 1985

Core Warrior (Core War ou Core Wars ou Corewar) :
Deux programmes minimum, respectant les règles d'un jeu, vont s'affronter dans la mémoire vive d'un ou plusieurs ordinateurs et vont s'attaquer mutuellement jusqu'à ce qu'il n'y ait qu'un survivant (les autres plantent ou ne peuvent plus évoluer ou si l'attaquant arrive à se reproduire dans les cellules de l'attaqué.

Les programmes sont chargés dans des cellules quelconques d'un espace mémoire d'une machine virtuelle appelée Mars, simulant un anneau (Core), et l'attaquant, qui ignore où sont situés les segments de son adversaire, doit le localiser puis le détruire. A tour de rôle, un programme attaque (il peut tomber sur des cellules vides...) puis c'est à lui d'attaquer ou de s'auto-réparer ou se camoufler grâce à des réplications de son code et / ou des fonctions auto-réparatrices et des fonctions de déplacements en mémoire etc. ...

Exemple de règles du jeu:
Extraits du Projet de Tournoi de Core War à NormalSup en 2000 qui n'aura pas lieu.
  • Le processeur de la machine virtuelle Mars:
    Le processeur est des plus rudimentaire : un pointeur d'instruction (invisible), un accumulateur, et 15 registres numérotés de 0 à 15. Toutes les adresses sont relatives à la position actuelle, le pointeur d'instruction étant incrémenté après l'exécution. Une instruction de saut désactive l'incrémentation automatique, donc jmp 0 boucle, et jmp 1 passe à l'instruction suivante (nop). De même, lm 1, si reg1=0, copie l'instruction lm 1 elle-même dans l'accumulateur. Toutes les instructions prennent un mot (16 bits). Tous les calculs sont sur 16 bits signés ([-32768;32767]).

  • La mémoire de la machine virtuelle Mars:
    La mémoire se compose de 32768 mots de 16 bits, adressés comme un cercle, avec comme origine le pointeur d'instruction du processeur. Cela signifie que 0 pointe sur l'instruction en cours, 1 sur la suivante, -1 et 32767 sur la précédente. Les programmes n'ont aucun accés à leur position absolue, ni évidemment, à celle de l'autre programme.

  • Le jeu d'instructions de CodeRed dans la machine virtuelle Mars:

    Instruction Signification
    dat x Vaut le mot x. Ceci n'est pas une instruction du processeur
    l x Copie le contenu du registre x dans l'accumulateur
    s x Copie le contenu de l'accumulateur dans le registre x
    add x Ajoute le contenu du registre x à l'accumulateur
    sub x Soustrait le contenu du registre x à l'accumulateur
    mul x Multiplie l'accumulateur par le contenu du registre x
    div x Divise l'accumulateur par le contenu du registre x
    mod x Divise l'accumulateur par le registre x et garde le reste entier
    lm x Copie la valeur du mot mémoire pointé par le registre x dans l'accumulateur
    sm x Copie l'accumulateur dans le mot mémoire pointé par le registre x
    neg Change la valeur de l'accumulateur en son opposé
    inc Incrémente la valeur de l'accumulateur de 1
    dec Décrémente la valeur de l'accumulateur de 1
    and x Réalise un et binaire entre l'accumulateur et le registre x
    or x Réalise un ou binaire entre l'accumulateur et le registre x
    xor x Réalise un ou exclusif binaire entre l'accumulateur et le registre x
    shl x Décale la valeur de l'accumulateur de x bits vers la gauche
    shr x Décale la valeur de l'accumulateur de x bits vers la droite
    not Change la valeur de l'accumulateur en son complémentaire binaire
    is=0 Change l'accumulateur en -1 s'il était nul, 0 sinon
    is<>0 Change l'accumulateur en -1 s'il était non nul, 0 sinon
    is<0 Change l'accumulateur en -1 s'il était strictement négatif, 0 sinon
    is>0 Change l'accumulateur en -1 s'il était strictement positif, 0 sinon
    is<=0 Change l'accumulateur en -1 s'il était négatif ou nul, 0 sinon
    is>=0 Change l'accumulateur en -1 s'il était positif ou nul, 0 sinon
    jmp x Effectue un saut de x mots (x de -128 à 127)
    jc x Effectue un saut de x mots (x de -128 à 127) si l'accumulateur est non nul, rien sinon
    ljmp Effectue un saut de la valeur de l'accumulateur
    dlh x Stoque x dans les 8 bits de poids fort de l'accumulateur
    dll x Stoque x dans les 8 bits de poids faible de l'accumulateur

Ce jeu met donc en oeuvre des fonctions qui seront utilisées plus tard par les virus et les vers.

On notera que Core War est écrit dans un langage de bas niveau (proche de l'assembleur) dénommé "Code Red", nom que prendra un des virus les plus virulents découvert le 4 août 2001. Le langage Code Red est, pour Core War, l'une des règles du jeu : il s'agit d'un langage dont le jeu d'instructions est volontairement limité. Ce jeu continu d'avoir des adeptes - voir les liens externes de l'encadré.


Nouvelle adresse du site Assiste.com depuis le 22 octobre 2012 : http://assiste.com Nouvelle adresse du site Assiste.com depuis le 22 octobre 2012 : http://assiste.com

Nouvelle adresse du site Assiste.com depuis le 22 octobre 2012 : http://assiste.com






Historique des révisions de ce document :

Historique
 
   
Rédigé en écoutant :
Music