push avant de manger

This commit is contained in:
2021-12-17 19:29:54 +01:00
parent 18bbd5e10f
commit b7e6ae7e19
3 changed files with 17 additions and 3 deletions

View File

@@ -33,6 +33,7 @@ int calculer_position(int posActuelle, short int modeAddr, short int valeur, str
} }
void execute_instruction(union mars_instruction instruction, int player, struct adresse memoire[TAILLE_MEM], int positions[2]){ void execute_instruction(union mars_instruction instruction, int player, struct adresse memoire[TAILLE_MEM], int positions[2]){
/* Permet d'executer les instructions des virus */
short int operation = instruction.instruct.codeOp; /* Pour rendre le code un peu plus lisible */ short int operation = instruction.instruct.codeOp; /* Pour rendre le code un peu plus lisible */
int position = positions[player]; int position = positions[player];
printf("Position dans le exec: %d\n", position); printf("Position dans le exec: %d\n", position);
@@ -97,7 +98,10 @@ void execute_instruction(union mars_instruction instruction, int player, struct
} }
case SUB:{ case SUB:{
int premiere_valeur;
int first_pos, next_pos;
union mars_instruction first_instruction, next_instruction;
} }
case JMP: { case JMP: {
short int modeadresse = instruction.instruct.modeAddrA; short int modeadresse = instruction.instruct.modeAddrA;

View File

@@ -1,11 +1,13 @@
#ifndef MARS_TYPES_H #ifndef MARS_TYPES_H
#define MARS_TYPES_H #define MARS_TYPES_H
/* Structure utilisée pour la ram */
struct adresse { struct adresse {
int player; int player; /* Permet de différencier les joueurs */
long long instruction; /* Instruction en long long */ long long instruction; /* Instruction en long long */
}; };
/* Permet de transformer le long long en une structure et inversement. Cela nous permet de travailler plus rapidement sur la compilation des virus */
union mars_instruction { union mars_instruction {
long long instructLL; long long instructLL;
struct struct
@@ -22,6 +24,8 @@ union mars_instruction {
/* Listes des opérations possibles */ /* Listes des opérations possibles */
enum liste_operations {DAT, MOV, ADD, SUB, JMP, JMZ, JMG, DJZ, CMP}; enum liste_operations {DAT, MOV, ADD, SUB, JMP, JMZ, JMG, DJZ, CMP};
/* Les différents types d'adressages utilisés par les fichiers des virus non compilés */
enum modes_adressage {IMMEDIAT, DIRECT, INDIRECT}; enum modes_adressage {IMMEDIAT, DIRECT, INDIRECT};
#endif #endif

View File

@@ -13,4 +13,10 @@ Dépot de la saé de dev 1.1: Corewar
On a travaillé sur la partie qui vient décoder le fichier .butt en instructions lisibles par le programme MARS. On a travaillé sur la partie qui vient décoder le fichier .butt en instructions lisibles par le programme MARS.
Pour cela on a utilisé un `union` qui nous permet d'utiliser le type `struct` pour rendre plus facile la création des instructions en "binaire" et le décodage des instructions. Pour cela on a utilisé un `union` qui nous permet d'utiliser le type `struct` pour rendre plus facile la création des instructions en "binaire" et le décodage des instructions.
Il se peut que les instructions ne soient pas traduites de la même façon que dans les exemples envoyés dans le fil SAÉ. Il se peut que les instructions ne soient pas traduites de la même façon que dans les exemples envoyés dans le fil SAÉ.
# Qu'est-ce qu'il manque pour que le projet fonctionne parfaitement ?
Pour que le projet fonctionne parfaitement, il faudrait que la partie compilation puisse mieux traduire le fichier `.ass`. Il nous manque aussi une fonction pour écrire les décimauux dans un fichier `.mars`.
La fonction qui lit le fichier `.mars` n'a pas pu être vraiment implémentée pour l'instant.