Skip to content

Maniarr/CoreWar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoreWar

Instructions:

- live

Suivie de 4 octets qui représente le numéro du joueur. Cette instruction indique que ce joueur est en vie. (pas d’octet de codage des paramètres).

- ld

Cette instruction prend 2 paramètres le deuxième est forcement un registre (pas le PC). Elle load la valeur du premier paramètre dans le registre. Cette opération modifie le carry. ld 34,r3 charge les REG_SIZE octets a partir de l’adresse (PC + (34 % IDX_MOD)) dans le registre r3.

- st

Cette instruction prend 2 paramètres. Elle store (REG_SIZE OCTET)la valeur du premier argument (toujours un registre) dans le second. st r4,34 store la valeur de r4 a l’adresse ( PC + (34 % IDX_MOD)) st r3,r8 copie r3 dans r8

- add

Cette instruction prend 3 registres en paramètre, additionne le contenu des 2 premiers et met le résultat dans le troisième. Cette opération modifie le carry. add r2,r3,r5 additionne r2 et r3 et mets le résultat dans r5

- sub

même que add mais soustrait

- and

p1 & p2 -> p3 le paramètre 3 et toujours un registre. Cette opération modifie le carry. and r2, %0,r3 met r2 & 0 dans r3

- or

même que and mais avec le ou ( | du c).

- xor

même que and mais avec le ou exclusif (du c).

- zjmp

Cette instruction n’est pas suivie d’octet pour décrire les paramètres. Elle prend toujours un index (IND_SIZE) et fait un saut a cet index si le carry est a un. Si le carry est nul, zjmp ne fait rien mais consomme le même temps. zjmp %23 met si carry == 1 met (PC + (23 % IDX_MOD)) dans le PC.

- ldi

Cette opération modifie le carry. ldi 3,%4,r1 lit IND_SIZE octets a l’adresse : (PC + (3 % IDX_MOD)) ajoute 4 a cette valeur. On nommera S cette somme. On lit REG_SIZE octet a l’adresse (PC

  • (S % IDX_MOD)) qu’on copie dans r1. Les paramètre 1 et 2 sont des index.

    • sti sti r2,%4,%5 sti copie REG_SIZE octet de r2 a l’adresse (4 + 5) Les paramètres 2 et 3 sont des index. Si les paramètres 2 ou 3 sont des registres, on utilisera leur contenu comme un index

Values:

r1 => Value of register %:name => Address of function %1 => Static value

## Struct Instruction

opcode => unsigned char nbr_args => unsigned char args_type_t => type[MAX_ARGS_NUMBER] args => int

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published