diff options
author | biouman <> | 2001-04-15 16:57:11 +0000 |
---|---|---|
committer | biouman <> | 2001-04-15 16:57:11 +0000 |
commit | ec47858fe9883186fad904f71d43ec289fa01409 (patch) | |
tree | cddf54138fa0b4e11d649d7f5853d54c3f89a467 /lib | |
parent | 9ff8f76673e167cf3b14b1cd3f401441fd4397ef (diff) |
*** empty log message ***
Diffstat (limited to 'lib')
-rw-r--r-- | lib/interne.c | 18 | ||||
-rw-r--r-- | lib/memoire.c | 11 | ||||
-rw-r--r-- | lib/registre.c | 15 | ||||
-rw-r--r-- | lib/simulator.c | 38 |
4 files changed, 31 insertions, 51 deletions
diff --git a/lib/interne.c b/lib/interne.c index 05c4332..5a563fe 100644 --- a/lib/interne.c +++ b/lib/interne.c @@ -1,12 +1,12 @@ #include <stdio.h> #include "interne.h" #include "simulator.h" - -// mettre des exceptions dans les fcns ci dessous a la place de GestionErreurs - -void GestionErreurs(void) -{ -} +#include "exceptions.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define _(x) x +#endif void Reset(Uint32 * i) { /* met tous les bits d'un mot à zéro */ @@ -22,7 +22,7 @@ void Set(Uint32 * i) void ResetBit(Uint32 * i, int position) { if (position < 0 || position > 31) { - GestionErreurs(); + exception(1,_("ResetBit: Incorrect Value")); } else { Uint32 aux = VAL_MAX - (1 << position); @@ -34,7 +34,7 @@ void ResetBit(Uint32 * i, int position) void SetBit(Uint32 * i, int position) { if (position < 0 || position > 31) { - GestionErreurs(); + exception(1,_("SetBit: Incorrect Value")); } else { Uint32 aux = 1 << position; @@ -46,7 +46,7 @@ void SetBit(Uint32 * i, int position) int ValeurBit(Uint32 nombre, int position) { if (position < 0 || position > 31) { - GestionErreurs(); + exception(1,_("ValeurBit: Incorrect Value")); return (-1); } return ((nombre >> position) & 1); diff --git a/lib/memoire.c b/lib/memoire.c index 0bbd367..e191735 100644 --- a/lib/memoire.c +++ b/lib/memoire.c @@ -1,6 +1,13 @@ #include "memoire.h" #include "interne.h" #include "simulator.h" +#include "exceptions.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define _(x) x +#endif + /*****************************************/ /** **/ @@ -15,7 +22,7 @@ Uint32 LD(Uint32 offset) Reset(&i); if (offset < 0 || offset >= TAILLE_MEMOIRE) { - Set(&Err_Mem); + exception(1,_("Invalid Memory Adress")); return (i); } else { i = memoire_principale[offset]; @@ -27,7 +34,7 @@ Uint32 LD(Uint32 offset) void ST(Uint32 offset, Uint32 valeur) { if (offset < 0 || offset >= TAILLE_MEMOIRE) - Set(&Err_Mem); + exception(1,_("Invalid Memory Adress")); else memoire_principale[offset] = valeur; } diff --git a/lib/registre.c b/lib/registre.c index ccd284c..e77e9c1 100644 --- a/lib/registre.c +++ b/lib/registre.c @@ -1,6 +1,13 @@ #include "registre.h" #include "interne.h" #include "simulator.h" +#include "exceptions.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define _(x) x +#endif + /*****************************************/ /** **/ @@ -66,7 +73,7 @@ Uint32 LireRegistre(Uint32 champ_registre) if (ValeurBit(champ_registre, 5) == 0) { /* Test du bit S */ Reset(&i); if (champ_registre < 0 || champ_registre >= NB_REGISTRES_UTILISABLES) { /* Si on voudrait diminuer le nombre de registres */ - Set(&Err_Reg); /* Il n'y a que 32 registres */ + exception(1,_("Invalid Register Descriptor")); /* Il n'y a que 32 registres */ return (i); } i = registre[champ_registre]; /* Registre classique */ @@ -82,7 +89,7 @@ Uint32 LireRegistre(Uint32 champ_registre) case 3: return (LireRegistreFLAG()); default:{ - Set(&Err_Reg); + exception(1,_("Invalid Register Descriptor")); return (0); } } @@ -96,7 +103,7 @@ void EcrireRegistre(Uint32 champ_registre, Uint32 valeur) if (ValeurBit(champ_registre, 5) == 0) { /* Test du bit S */ Reset(&i); if (champ_registre < 0 || champ_registre >= NB_REGISTRES_UTILISABLES) - Set(&Err_Reg); /* Il n'y a que 32 registres */ + exception(1,_("Invalid Register Descriptor")); /* Il n'y a que 32 registres */ else registre[champ_registre] = valeur; /* Registre classique */ } else /* Registre spécial */ @@ -110,7 +117,7 @@ void EcrireRegistre(Uint32 champ_registre, Uint32 valeur) case 3: EcrireRegistreFLAG(valeur); default: - Set(&Err_Reg); + exception(1,_("Invalid Register Descriptor")); } } diff --git a/lib/simulator.c b/lib/simulator.c index ac1dae4..211e9de 100644 --- a/lib/simulator.c +++ b/lib/simulator.c @@ -56,8 +56,6 @@ void Initialisation(void) { int i; - Reset(&Err_Mem); - Reset(&Err_Reg); for (i = 0; i < TAILLE_MEMOIRE; i++) Reset(&memoire_principale[i]); EcrireRegistrePP(ADD_PP); @@ -137,7 +135,7 @@ void Decode(Uint32 instruction) EcrireRegistre(champ_registre_resultat, resultat); /* On écrit le résultat dans le registre de sortie */ break; } - case 8:{ /* MOV <=> il exige une loge en losange ou la sauje jonche les sieges */ + case 8:{ /* MOV */ if (ValeurBit(Extension(instruction), 4) == 1) /* MOV conditionnel */ if (ValeurBit(Extension(instruction), 5) == 0) /* Test normal */ switch (champ(Extension(instruction) >> 2, 4)) { /* teste les bits 2 et 3 */ @@ -301,39 +299,7 @@ void Traitement(void) void Debogueur(void) // transformer en affiche reg { int i,j; - -/* gotoxy(1, 1); - printf("Etat des registres classiques Etat des registres"); - gotoxy(1, 2); - printf(" speciaux "); - gotoxy(1, 11); - printf(" Instruction a decoder"); - gotoxy(1, 14); - printf(" Prochaine instruction"); - for (i = 1; i <= 16; i++) { - gotoxy(1, i + 2); - printf("r%2d:%9d", i - 1, registre[i - 1]); - } - for (i = 17; i <= 32; i++) { - gotoxy(17, i - 16 + 2); - printf("r%2d:%9d", i - 1, registre[i - 1]); - } - gotoxy(40, 4); - printf("Rg :%9d", LireRegistreRG()); - gotoxy(40, 5); - printf("Rd :%9d", LireRegistreRD()); - gotoxy(40, 6); - printf("PC :%9d", LireRegistrePC()); - gotoxy(40, 7); - printf("Flag :%9d", LireRegistreFLAG()); - gotoxy(40, 12); - printf(" %9d", LireInstruction()); - registre[REG_PC]++; - gotoxy(40, 15); - printf(" %9d", LireInstruction()); - registre[REG_PC]--; - getc(stdin); -*/ + for (i=0; i<=3; i++) { for (j=1; j<=8;j++) { printf(" R%02d ", (i*8+j)); |