ptit commit après les mov

This commit is contained in:
2021-12-17 17:14:04 +01:00
parent 73aab806e4
commit bc91b6a725

View File

@@ -17,6 +17,11 @@ int calculer_position(int posActuelle, short int modeAddr, short int valeur, str
return (posActuelle + (TAILLE_MEM + valeur)) % TAILLE_MEM;
} else if (modeAddr == INDIRECT){
/* Va voir à la position + valeur, */
int posToCheck = (posActuelle + (TAILLE_MEM + valeur)) % TAILLE_MEM;
union mars_instruction val;
val.instructLL = memoire[posToCheck].instruction;
printf("Valeur stockée dans la ram: %d", val.instruct.ArgB);
} else if(modeAddr == IMMEDIAT) {
/* Retourne l'arguement de la position */
return valeur;
@@ -41,9 +46,19 @@ void execute_instruction(union mars_instruction instruction, int player, struct
int position = calculer_position(position, instruction.instruct.modeAddrB, instruction.instruct.ArgB, memoire);
memoire[position].instruction = to_write.instructLL;
memoire[position].player = player;
/* Ecrit un DAT avec la valeur demandée par le VIRUS */
} else {
/* Gérer les autres opérations de mov ici */
int position_1 = calculer_position(position, instruction.instruct.modeAddrA, instruction.instruct.ArgA, memoire);
int position_2 = calculer_position(position, instruction.instruct.modeAddrB, instruction.instruct.ArgB, memoire);
memoire[position_2].instruction = memoire[position_1].instruction;
memoire[position_2].player = player;
memoire[position_1].instruction = 0;
/* @APPEL GRAPHIQUE */
}
}
case ADD: {
@@ -56,14 +71,7 @@ void execute_instruction(union mars_instruction instruction, int player, struct
short int modeadresse = instruction.instruct.modeAddrA;
int position_calc = calculer_position(position, modeadresse, instruction.instruct.ArgA, memoire);
printf("Positon calculée: %d\n", position_calc);
positions[player] = position;
// if (modeadresse == IMMEDIAT){
// positions[player] = (instruction.instruct.ArgA + TAILLE_MEM) % TAILLE_MEM;
// } else if (modeadresse == DIRECT) {
// positions[player] += (instruction.instruct.ArgA + TAILLE_MEM) % TAILLE_MEM;
// } else if (modeadresse == INDIRECT){
// /* TODO: Lire contenu mémoire à l'adresse demandée (DAT) puis aller à position actuelle + num contenu dans l'adresse relative */
// }
positions[player] = position; /* On change la position du joueur */
}
case DJZ:
/* */
@@ -116,7 +124,7 @@ int main(int argc, char* argv[]){
union mars_instruction to_do;
to_do.instruct.codeOp = JMP;
to_do.instruct.ArgA = 753;
to_do.instruct.ArgB = 100;
to_do.instruct.ArgB = 0;
to_do.instruct.modeAddrA = DIRECT;
to_do.instruct.modeAddrB = DIRECT;
printf("Valeur instruction: %lld\n", to_do.instructLL);