Création d'une machine virtuelle
Bonjour,
Je suis en train de créer une machine virtuelle capable entre autre de faire linstruction suivante
Code:
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:
Code:
1 2 3 4 5 6
|
int Reg[32];
char Mem[65536];
int Z=0;
int C=0;
int N=0; |
Et maintenant la fonction add:
Code:
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];
} |