From 58dbd2ed918bb9e6f93aed076f8f3de92d41d2f9 Mon Sep 17 00:00:00 2001 From: Pixel <> Date: Tue, 17 Apr 2001 02:20:40 +0000 Subject: Grou --- samples/Makefile.am | 2 +- samples/Makefile.samples | 4 ++-- samples/instructions.txt | 26 ++++++++++++++++++++------ samples/testtout.s | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 samples/testtout.s (limited to 'samples') diff --git a/samples/Makefile.am b/samples/Makefile.am index 2e54d6a..2427d6a 100644 --- a/samples/Makefile.am +++ b/samples/Makefile.am @@ -1,3 +1,3 @@ -EXTRA_DIST = rechcara.s recherche.s sommeentiers.s Makefile.samples instructions.txt +EXTRA_DIST = rechcara.s recherche.s sommeentiers.s testtout.s Makefile.samples instructions.txt TESTS = make -f Makefile.samples diff --git a/samples/Makefile.samples b/samples/Makefile.samples index 4b1f8f3..35913b2 100644 --- a/samples/Makefile.samples +++ b/samples/Makefile.samples @@ -9,7 +9,7 @@ ../src/linker tmp.o $@ rm tmp.o -all: recherche rechcara sommeentiers +all: recherche rechcara sommeentiers testtout clean: - rm -f recherche rechcara sommeenters *.o + rm -f recherche rechcara sommeenters testtout *.o diff --git a/samples/instructions.txt b/samples/instructions.txt index 9b70685..6034e0d 100644 --- a/samples/instructions.txt +++ b/samples/instructions.txt @@ -33,6 +33,10 @@ I:ADD c1=.Pr,c2=.Pr,c3=.Pr;op=0x0;e=0x0 I:ADD c1=.Pr,c2=.Pr,.I=.C;op=0x0;e=0x1 I:ADU c1=.Pr,c2=.Pr,c3=.Pr;op=0x0;e=0x2 I:ADU c1=.Pr,c2=.Pr,.I=.C;op=0x0;e=0x3 +I:ADD c2=.Pr,c3=.Pr;op=0x0;e=0x0;c1=c2 +I:ADD c2=.Pr,.I=.C;op=0x0;e=0x1;c1=c2 +I:ADU c2=.Pr,c3=.Pr;op=0x0;c1=c2;e=0x2 +I:ADU c2=.Pr,.I=.C;op=0x0;c1=c2;e=0x3 p:ADS=ADD @@ -40,6 +44,10 @@ I:SUB c1=.Pr,c2=.Pr,c3=.Pr;op=0x1;e=0x0 I:SUB c1=.Pr,c2=.Pr,.I=.C;op=0x1;e=0x1 I:SBU c1=.Pr,c2=.Pr,c3=.Pr;op=0x1;e=0x2 I:SBU c1=.Pr,c2=.Pr,.I=.C;op=0x1;e=0x3 +I:SUB c2=.Pr,c3=.Pr;op=0x1;e=0x0;c1=c2 +I:SUB c2=.Pr,.I=.C;op=0x1;e=0x1;c1=c2 +I:SBU c2=.Pr,c3=.Pr;op=0x1;e=0x2;c1=c2 +I:SBU c2=.Pr,.I=.C;op=0x1;e=0x3;c1=c2 p:SBS=SUB @@ -64,11 +72,11 @@ I:SHR c1=.Pr,c2=.Pr,.I=.C;op=0x7;e=0x1 # Transferts -I:MOV c1=.Pr,rm=.Pm;op=8;e=0;c2=.Fa;c3=regop -I:MOV c1=.Pr,c3=.Pr;op=8;e=0;c2=0 -I:MOV c1=.Pr,.I=.C;op=8;e=1 -I:MOV rm=.Pm,c2=.Pr;op=8;e=2;c1=.Fa;c3=regop -I:MOV rm=.Pm,.I=.C;op=8;e=3;c1=.Fa;c3=regop +I:MOV c2=.Pr,rm=.Pm;op=8;e=2;c1=.Fa;c3=regop +I:MOV c2=.Pr,c3=.Pr;op=8;e=2 +I:MOV c3=.Pr,.I=.C;op=8;e=1 +I:MOV rm=.Pm,c2=.Pr;op=8;e=0;c1=.Fa;c3=regop +I:MOV rm=.Pm,.I=.C;op=8;e=1;c1=.Fa;c3=regop p:MV=MOV @@ -111,10 +119,16 @@ I:JNZ .I=.O;op=0xa;e=0x34 I:JNS .I=.O;op=0xa;e=0x38 I:JNP .I=.O;op=0xa;e=0x3c -I:JMP .I=.O;op=0x0c;e=0x2 +I:JMP .I=.O;op=0xa;e=0x0 I:HALT;op=0x7f I:RESET;op=0x7f;e=1 I:RET;op=0xc I:RET c1=.C;op=0xc + +I:CALL .I=.O;op=0xc;e=3 + +I:PUSH c1=.Pr;op=0xe +I:PUSH .I=.C;op=0xe;e=1 +I:POP c1=.Pr;op=0xf diff --git a/samples/testtout.s b/samples/testtout.s new file mode 100644 index 0000000..0c1350e --- /dev/null +++ b/samples/testtout.s @@ -0,0 +1,33 @@ +.data +PROG1 DS "sommeentiers" +PROG2 DS "rechcara" +PROG3 DS "recherche" + +MSG1 DS "Exécution du programme numéro " +MSG2 DS " appelé " +MSG3 DS "...\n" +MSGTERM DS "Le programme s'est terminé!\n" +MSGFIN DS "Tout est terminé, bye!\n" + +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 + 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 + MOV, [0xffffff04], MSG2 ; On affiche le deuxième morceau de la chaîne + MOV, [0xffffff04], R2 ; On affiche le nom du programe + 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 + ; de charger un autre programme. + POP R1 ; Et on récupère R1 + + MOV, [0xffffff04], MSGTERM ; On affiche la chaîne pour dire que l'on vient de sortir + JMP BOUCLE ; et on boucle +FIN: MOV, [0xffffff04], MSGFIN ; On affiche en dernier le message de fin. + HALT -- cgit v1.2.3