ajout de l'instruction JMP + types adressages
This commit is contained in:
11
mars_main.c
11
mars_main.c
@@ -11,7 +11,7 @@ void initialiser_memoire(){
|
|||||||
|
|
||||||
int calculer_position(); /* Va permettre de calculer la position à laquelle le programme doit effectuer une action*/
|
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 */
|
short int operation = instruction.instruct.codeOp; /* Pour rendre le code un peu plus lisible */
|
||||||
|
|
||||||
switch (operation){
|
switch (operation){
|
||||||
@@ -22,6 +22,15 @@ void execute_instruction(union mars_instruction instruction, int player, struct
|
|||||||
case SUB:
|
case SUB:
|
||||||
|
|
||||||
case JMP:
|
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:
|
case DJZ:
|
||||||
|
|
||||||
|
@@ -22,5 +22,6 @@ 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};
|
||||||
|
enum modes_adressage {IMMEDIAT, DIRECT, INDIRECT};
|
||||||
|
|
||||||
#endif
|
#endif
|
Reference in New Issue
Block a user