Bonjour,
Je suis en train de créer une machine virtuelle capable entre autre de faire linstruction suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Instruction add : Reg[dest]<=Reg[rn]+Reg[valeurS] si imm=0 Reg[dest]<=Reg[rn]+valeurS si imm=1 Le bit Z est mis à 1 Reg[dest] est nul Le bit C est mis à 1 si il ya une retenue que je ne sais pas comment y traiter. Le bit N est mis à 1 si Reg[dest] a un signe positif.
Je crois que mon problème réside dans le fait que je ne sais pas comment affecter à chacun des Reg[i] (tel que 0<=i<=32) (2048*i) ème cases de la mémoire (Mem[] dans mon programme). Par exemple pour Reg[0] je veux lui affecter le premier cases de Mem[65536] pour qu'elle puisse parcourir jusqu'à Mem[2047]. Pouvez vous m'aider? Merci d'avance
D'abord commençons par les variables globales:
Et maintenant la fonction add:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int Reg[32]; char Mem[65536]; int Z=0; int C=0; int N=0;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 int add(int dest, int rn,int imm, int valeurS){ int tmp=0; if(dest!=0){ if(imm=0 && valeurS<=31){ Reg[dest]=Reg[rn]+Reg[valeurS]; }else if (imm=1){ Reg[dest]=Reg[rn]+valeurS; } }else{ tmp=Reg[rn]+valeurS; return tmp; } if (Reg[dest]==0){ Z=1; }else{ Z=0; } if(Reg[dest]<0){ N=1; }else{ N=0; } return Reg[dest]; }
Partager