ptit commit après les mov
This commit is contained in:
26
mars_main.c
26
mars_main.c
@@ -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);
|
||||
|
Reference in New Issue
Block a user