ajout de l'instruction JMP + types adressages

This commit is contained in:
2021-12-17 13:29:04 +01:00
parent e823d28d32
commit 8f2b0d4dbe
2 changed files with 11 additions and 1 deletions

View File

@@ -11,7 +11,7 @@ void initialiser_memoire(){
int calculer_position(); /* Va permettre de calculer la position à laquelle le programme doit effectuer une action*/
void execute_instruction(union mars_instruction instruction, int player, struct adresse memoire[8000], int position[2]){
void execute_instruction(union mars_instruction instruction, int player, struct adresse memoire[TAILLE_MEM], int position[2]){
short int operation = instruction.instruct.codeOp; /* Pour rendre le code un peu plus lisible */
switch (operation){
@@ -22,6 +22,15 @@ void execute_instruction(union mars_instruction instruction, int player, struct
case SUB:
case JMP:
short int modeadresse = instruction.instruct.modeAddrA;
if (modeadresse == IMMEDIAT){
position[player] = (instruction.instruct.ArgA + TAILLE_MEM) % TAILLE_MEM;
} else if (modeadresse == DIRECT) {
position[player] += (instruction.instruct.ArgA + TAILLE_MEM) % TAILLE_MEM;
} else if (modeadresse == INDIRECT){
/* Lire contenu mémoire à l'adresse demandée (DAT) puis aller à position actuelle + num contenu dans l'adresse relative */
}
case DJZ:

View File

@@ -22,5 +22,6 @@ union mars_instruction {
/* Listes des opérations possibles */
enum liste_operations {DAT, MOV, ADD, SUB, JMP, JMZ, JMG, DJZ, CMP};
enum modes_adressage {IMMEDIAT, DIRECT, INDIRECT};
#endif