diff options
| author | Pixel <> | 2001-04-17 03:20:16 +0000 | 
|---|---|---|
| committer | Pixel <> | 2001-04-17 03:20:16 +0000 | 
| commit | a856126fe7e965bc80d17690732ee58343a655d3 (patch) | |
| tree | 5464a45d4ef03e2efdcc7788de31226832a0a45c | |
| parent | f12eda64018215310e5d563ebaf9fe4d46db24ff (diff) | |
Pouearf
| -rw-r--r-- | include/simulator.h | 4 | ||||
| -rw-r--r-- | lib/Makefile.am | 2 | ||||
| -rw-r--r-- | lib/linker.c | 6 | ||||
| -rw-r--r-- | lib/memoire.c | 13 | ||||
| -rw-r--r-- | lib/simulator.c | 5 | ||||
| -rw-r--r-- | po/ProjetArchi.pot | 43 | ||||
| -rw-r--r-- | po/cat-id-tbl.c | 55 | ||||
| -rw-r--r-- | samples/Makefile.samples | 3 | ||||
| -rw-r--r-- | samples/testtout.s | 7 | ||||
| -rw-r--r-- | src/compilo.c | 3 | ||||
| -rw-r--r-- | src/simul.c | 8 | 
11 files changed, 83 insertions, 66 deletions
| diff --git a/include/simulator.h b/include/simulator.h index a6350e7..51b965d 100644 --- a/include/simulator.h +++ b/include/simulator.h @@ -2,7 +2,7 @@  #define __SIMULATOR_H__  #include "types.h" -#define TAILLE_MEMOIRE 1024	/*  Nombre maximum de mots que peut contenir la mémoire principale  */ +#define TAILLE_MEMOIRE 10240	/*  Nombre maximum de mots que peut contenir la mémoire principale  */  #define NB_REGISTRES_PHYSIQUES   64	/*  Nombre réel de registres */  #define NB_REGISTRES_UTILISABLES 32	/*  Nombre de registres que le processeur a à sa disposition    */  #define REG_RG  32		/*  Numero du registre Rg   */ @@ -14,7 +14,7 @@  extern Uint32 registre[NB_REGISTRES_PHYSIQUES];	/*  Registres classiques    */ -extern int debug; +extern int debug, HasToRun;  void Initialisation(void);  void Flush(void); diff --git a/lib/Makefile.am b/lib/Makefile.am index a50e586..ef6b180 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -8,6 +8,8 @@ libCompilo_la_SOURCES = assembler.c parser.c meta.c numbers.c hash.c exceptions.  libSimul_la_SOURCES = alu.c simulator.c exceptions.c fpu.c interne.c memoire.c registre.c terminal.c  libLinker_la_SOURCES = linker.c exceptions.c hash.c +libLinker_la_CFLAGS = -DDEBUG +  libCompilo_la_LDFLAGS = -version-info $(ProjetArchi_VERSION_INFO)  libSimul_la_LFDLAGS = -version-info $(ProjetArchi_VERSION_INFO)  libLinker_la_LDFLAGS = -version-info $(ProjetArchi_VERSION_INFO) diff --git a/lib/linker.c b/lib/linker.c index 0460d41..8582142 100644 --- a/lib/linker.c +++ b/lib/linker.c @@ -236,7 +236,7 @@ static void dumprelog(FILE * f)  					break;  				}  #ifdef DEBUG -				fprintf(stderr, "Relogement effectué sur %i, de %i octets pour le symbole %s\n", +				fprintf(stderr, "Relogement effectué sur %i (text), de %i octets pour le symbole %s\n",  					s->offset, decal, s->name);  #endif  				objects[s->objindex]->text[s->offset] += decal; @@ -257,6 +257,10 @@ static void dumprelog(FILE * f)  					exception(1, _("Internal error"));  					break;  				} +#ifdef DEBUG +				fprintf(stderr, "Relogement effectué sur %i (data), de %i octets pour le symbole %s\n", +					s->offset, decal, s->name); +#endif  				objects[s->objindex]->data[s->offset] += decal;  				writeword(textsize + objects[s->objindex]->datastart + s->offset, f);  				break; diff --git a/lib/memoire.c b/lib/memoire.c index b181015..e38f0d7 100644 --- a/lib/memoire.c +++ b/lib/memoire.c @@ -75,13 +75,7 @@ static void litchaine(char *s, Uint32 * t)  	while (*t) {  		*(s++) = *(t++);  	} -} - -static void Affiche(Uint32 * t) -{ -	while (*t) { -		fprintf(stdout, "%c", (*t++)); -	} +	*s = 0;  }  static void AfficheBinaire(Uint32 valeur) @@ -106,7 +100,8 @@ void ST(Uint32 offset, Uint32 valeur)  		fprintf(stdout, "%c", valeur);  		break;  	case 0xffffff04: -		Affiche(&memoire_principale[valeur]); +		litchaine(temp, &memoire_principale[valeur]); +		fprintf(stdout, "%s", temp);  		break;  	case 0xffffff06:  		fprintf(stdout, "%i", valeur); @@ -129,6 +124,8 @@ void ST(Uint32 offset, Uint32 valeur)  		oldOC = LireRegistrePC();  		ChargeBinaire(temp);  		EcrireRegistrePC(oldOC); +		HasToRun = 1; +		break;  	default:  		if (offset < 0 || offset >= TAILLE_MEMOIRE)  			exception(1, _("Invalid Memory Adress")); diff --git a/lib/simulator.c b/lib/simulator.c index 4e77c6b..40c3431 100644 --- a/lib/simulator.c +++ b/lib/simulator.c @@ -402,7 +402,7 @@ void Debogueur(void)  		fprintf(stderr, "Opcode: %02X, extension: %02X, champ1: %02X, champ2: %02X, champ3: %02X\n",  			Opcode(instruction), Extension(instruction), Champ1(instruction), Champ2(instruction),  			Champ3(instruction)); -		fprintf(stderr, "%08lX:%08lX  > ", LireRegistrePC(), instruction); +		fprintf(stderr, "%08lX:%08lX - %08lX - %08lX > ", LireRegistrePC(), instruction, LD(LireRegistrePC() + 1), LD(LireRegistrePC() + 2));  		switch (fgetc(input)) {  		case 'G': @@ -457,10 +457,13 @@ void ChargeBinaire(char *filename)  	Uint32 entrypoint, nb, ns, nbss, nr, *relocation_table;  	int i; +	sprintf(message, _("Opening file %s"), filename); +	pushcontext(message);  	file = openfilereading(filename);  	if (readword(file) != 0x58454e4e) {	/* verification de la signature */  		exception(1, _("Invalid Signature"));  	} +	popcontext();  	sprintf(message, _("Loading file %s"), filename);  	pushcontext(message); diff --git a/po/ProjetArchi.pot b/po/ProjetArchi.pot index 0eb9f60..79dfdac 100644 --- a/po/ProjetArchi.pot +++ b/po/ProjetArchi.pot @@ -6,7 +6,7 @@  msgid ""  msgstr ""  "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-04-17 04:11+0200\n" +"POT-Creation-Date: 2001-04-17 05:14+0200\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" @@ -296,7 +296,7 @@ msgstr ""  msgid "Error writing output file"  msgstr "" -#: lib/assembler.c:2189 lib/linker.c:278 +#: lib/assembler.c:2189 lib/linker.c:282  msgid "Writing output file"  msgstr "" @@ -449,7 +449,7 @@ msgstr ""  msgid "FPU not implemented"  msgstr "" -#: lib/memoire.c:57 lib/memoire.c:134 +#: lib/memoire.c:57 lib/memoire.c:131  msgid "Invalid Memory Adress"  msgstr "" @@ -488,36 +488,36 @@ msgstr ""  msgid "Symbol %s not found"  msgstr "" -#: lib/linker.c:235 lib/linker.c:257 lib/linker.c:264 +#: lib/linker.c:235 lib/linker.c:257 lib/linker.c:268  msgid "Internal error"  msgstr "" -#: lib/linker.c:282 +#: lib/linker.c:286  msgid "No startpoint defined."  msgstr "" -#: lib/linker.c:285 +#: lib/linker.c:289  msgid "Writing headers"  msgstr "" -#: lib/linker.c:294 +#: lib/linker.c:298  msgid "Writing relocating informations"  msgstr "" -#: lib/linker.c:297 +#: lib/linker.c:301  msgid "Writing text segments"  msgstr "" -#: lib/linker.c:302 +#: lib/linker.c:306  msgid "Writing data segments"  msgstr "" -#: lib/linker.c:309 +#: lib/linker.c:313  #, c-format  msgid "Statistics: %i words of text, %i words of data and reserving %i words\n"  msgstr "" -#: lib/linker.c:311 +#: lib/linker.c:315  #, c-format  msgid "Output file size: %i words containing %i relocating offsets.\n"  msgstr "" @@ -552,17 +552,22 @@ msgid ""  "Q: quit\n"  msgstr "" +#: lib/simulator.c:460 +#, c-format +msgid "Opening file %s" +msgstr "" +  #. verification de la signature -#: lib/simulator.c:462 +#: lib/simulator.c:464  msgid "Invalid Signature"  msgstr "" -#: lib/simulator.c:465 +#: lib/simulator.c:468  #, c-format  msgid "Loading file %s"  msgstr "" -#: lib/simulator.c:499 +#: lib/simulator.c:502  #, c-format  msgid "Executing file %s"  msgstr "" @@ -617,21 +622,21 @@ msgstr ""  msgid "Signal received: segfault"  msgstr "" -#: src/compilo.c:68 src/linker.c:51 src/simul.c:93 +#: src/compilo.c:69 src/linker.c:51 src/simul.c:95  msgid ""  "\n"  "Performing initialisation...\n"  "\n"  msgstr "" -#: src/compilo.c:73 src/linker.c:63 src/simul.c:106 +#: src/compilo.c:74 src/linker.c:63 src/simul.c:108  msgid ""  "\n"  "Performing shutdown...\n"  "\n"  msgstr "" -#: src/compilo.c:78 src/linker.c:68 src/simul.c:112 +#: src/compilo.c:79 src/linker.c:68 src/simul.c:114  msgid "Exitting, bye!\n"  msgstr "" @@ -642,14 +647,14 @@ msgid ""  msgstr ""  #: src/simul.c:21 -msgid "Usage: linker [-q] [-d] binary\n" +msgid "Usage: linker [-s] [-d] binary\n"  msgstr ""  #: src/simul.c:27  msgid " o Initialising the simulator...   "  msgstr "" -#: src/simul.c:96 +#: src/simul.c:98  msgid "Beginning simulation"  msgstr "" diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c index 9b62514..f5efdd2 100644 --- a/po/cat-id-tbl.c +++ b/po/cat-id-tbl.c @@ -141,48 +141,49 @@ G: go\n\  P: Proceed\n\  R: display registers\n\  Q: quit\n", 126}, -  {"Invalid Signature", 127}, -  {"Loading file %s", 128}, -  {"Executing file %s", 129}, -  {"could not set terminal attributes", 130}, -  {"could not open terminal", 131}, +  {"Opening file %s", 127}, +  {"Invalid Signature", 128}, +  {"Loading file %s", 129}, +  {"Executing file %s", 130}, +  {"could not set terminal attributes", 131}, +  {"could not open terminal", 132},    {"\  Assembler v1.0\n\ -\n", 132}, -  {"Usage: compilo program.asm objet.out\n", 133}, -  {" o Initialising the meta engine...   ", 134}, +\n", 133}, +  {"Usage: compilo program.asm objet.out\n", 134}, +  {" o Initialising the meta engine...   ", 135},    {"\   Done!\n\ - o Meta language loading...          ", 135}, -  {"Meta language loading failed.", 136}, + o Meta language loading...          ", 136}, +  {"Meta language loading failed.", 137},    {"\   Done!\n\ - o Initialising the assembler core...", 137}, -  {"Assembler core init failed.", 138}, -  {" Done!\n", 139}, -  {"Signal received: segfault", 140}, + o Initialising the assembler core...", 138}, +  {"Assembler core init failed.", 139}, +  {" Done!\n", 140}, +  {"Signal received: segfault", 141},    {"\  \n\  Performing initialisation...\n\ -\n", 141}, +\n", 142},    {"\  \n\  Performing shutdown...\n\ -\n", 142}, -  {"Exitting, bye!\n", 143}, +\n", 143}, +  {"Exitting, bye!\n", 144},    {"\  Simul v1.0\n\ -\n", 144}, -  {"Usage: linker [-q] [-d] binary\n", 145}, -  {" o Initialising the simulator...   ", 146}, -  {"Beginning simulation", 147}, +\n", 145}, +  {"Usage: linker [-s] [-d] binary\n", 146}, +  {" o Initialising the simulator...   ", 147}, +  {"Beginning simulation", 148},    {"\  Linker v1.0\n\ -\n", 148}, -  {"Usage: linker obj1 [obj2 [obj3 [...]]] binary\n", 149}, -  {" o Initialising the linker...   ", 150}, -  {"Linking files...\n", 151}, -  {"Generating output file...\n", 152}, +\n", 149}, +  {"Usage: linker obj1 [obj2 [obj3 [...]]] binary\n", 150}, +  {" o Initialising the linker...   ", 151}, +  {"Linking files...\n", 152}, +  {"Generating output file...\n", 153},  }; -int _msg_tbl_length = 152; +int _msg_tbl_length = 153; diff --git a/samples/Makefile.samples b/samples/Makefile.samples index 35913b2..9877ae0 100644 --- a/samples/Makefile.samples +++ b/samples/Makefile.samples @@ -7,9 +7,10 @@  .s:  	../src/compilo $< tmp.o  	../src/linker tmp.o $@ +	chmod 755 $@  	rm tmp.o  all: recherche rechcara sommeentiers testtout  clean: -	rm -f recherche rechcara sommeenters testtout *.o +	rm -f recherche rechcara sommeenters testtout *.o __symbols__ __text__ diff --git a/samples/testtout.s b/samples/testtout.s index 0c1350e..b3e0b5b 100644 --- a/samples/testtout.s +++ b/samples/testtout.s @@ -14,7 +14,7 @@ PROGS	DD	PROG1, PROG2, PROG3, 0  .text  .start  	MOV	R1, R0			; R1 sera notre compteur de programme -BOUCLE:	MOV	R2, PROGS[R0]		; On lit l'adresse du nom du prochain programme +BOUCLE:	MOV	R2, PROGS[R1]		; On lit l'adresse du nom du prochain programme  	JE	R2, R0, FIN		; Si c'est l'adresse nulle, on sort  	MOV,	[0xffffff04], MSG1	; On affiche le premier morceau de la chaîne  	MOV,	[0xffffff06], R1	; On affiche le numéro du programme @@ -23,9 +23,10 @@ BOUCLE:	MOV	R2, PROGS[R0]		; On lit l'adresse du nom du prochain programme  	MOV,	[0xffffff04], MSG3	; On affiche la dernière chaîne  	PUSH	R1			; On sauvegarde R1 avant -	MOV,	[0xffffff0a], R1	; On appelle le miniOS pour lui demander +	MOV,	[0xffffff0a], R2	; On appelle le miniOS pour lui demander  					; de charger un autre programme. -	POP	R1			; Et on récupère R1 +	POP	R1			; On récupère R1, ... +	ADD	R1, 1			; .. et on l'incrémente.  	MOV,	[0xffffff04], MSGTERM	; On affiche la chaîne pour dire que l'on vient de sortir  	JMP	BOUCLE			; et on boucle diff --git a/src/compilo.c b/src/compilo.c index b4c44e9..12a6f05 100644 --- a/src/compilo.c +++ b/src/compilo.c @@ -60,8 +60,9 @@ int main(int argc, char **argv)  {  	invite(); +#ifndef DEBUG  	signal(SIGSEGV, segfaulthand); - +#endif  	if (argc != 3)  		usage(); diff --git a/src/simul.c b/src/simul.c index 7b56ce1..e531150 100644 --- a/src/simul.c +++ b/src/simul.c @@ -18,7 +18,7 @@ void invite(void)  void usage(void)  { -	fprintf(stderr, _("Usage: linker [-q] [-d] binary\n")); +	fprintf(stderr, _("Usage: linker [-s] [-d] binary\n"));  	exit(0);  } @@ -49,12 +49,14 @@ char * readargs(int argc, char ** argv) {  	argc--;  	argv++; +	 +	Rapide = 1;  	while (argc) {  		if (**argv == '-') {  			switch ((*argv)[1]) { -			case 'q': -				Rapide = 1; +			case 's': +				Rapide = 0;  				break;  			case 'd':  				debug = 1; | 
