L2 Info - 2014-2015 Architecture Matérielle et Logicielle L. Gonnord & N. Louvet http://laure.gonnord.org/pro/teaching/archiL2.html TP5 - Introduction à l’archi LC3, jouons avec le simulateur Objectifs — Utiliser le simulateur de l’architecture LC3 pour comprendre le jeu d’instructions. — Écrire des programmes simples en langage machine LC3, puis en assembleur LC3. Ce tp s’inspire fortement des “lab 6” et “lab 7” http://castle.eiu.edu/∼mathcs/mat3670/index/ index.html, avec l’aimable permission de leurs auteurs . . . Nous allons utiliser le simulateur LC3 nommé PennSim dont la documentation est disponible à l’adresse (ou à partir de la page du cours) : http://castle.eiu.edu/∼mathcs/mat3670/index/Webview/pennsim-guide.html Nous vous fournissons une archive tgz sur la page du cours. Cette archive contient : — le logiciel sous la forme d’un .jar. — les fichiers : lc3os.asm : OS simple (implémentation des entrées/sorties et lancement d’autres programmes), le fichier de test p0.asm, ainsi que les programmes du TP. 1 Jouons avec le simulateur de LC3 Exercice 1 (Installation, documentation). Après avoir désarchivé le .tgz fourni, 1. Lire attentivement la documentation du logiciel. 2. Assembler et exécuter l’OS et le programme de test. Exercice 2 (Exécution du programme traité en DM). Vous avez en DM réalisé le décodage d’un programme LC3 écrit en langage machine. Une correction se trouve Figure 1. Parcourir rapidement cette correction, puis assembler et lancer la simulation pas à pas sur le fichier tp5b.asm. Bien comprendre toutes les étapes avant de passer à l’exercice suivant. On remarquera que le simulateur LC3 donne l’équivalent en language d’assemblage des instructions machine considérées. Exercice 3 (I/0). Écrire un programme en language machine LC3 qui écrit 10 fois le caractère ’Z’ sur l’écran. On utilisera l’instruction TRAP avec le code x22=PUTS, et on se reportera à la documentation (table A.2) pour l’utiliser. 2 Écriture et simulation de programmes en assembleur LC3 Jusqu’à présent nous avons écrit des programmes en remplissant la mémoire directement avec les codages des instructions. Nous allons maintenant écrire des programmes de manière plus simple, en écrivant les instructions en assembleur LC3. Exercice 4. Exécution, modification 1. Prévoir le comportement des fichiers tp5c.asm et tp5d.asm. Vérifier avec le simulateur. 2. Écrire un programme assembleur LC3 qui calcule le min et le max de deux entiers, et stocke le résultat à un endroit précis en mémoire, de label min. Tester avec différentes valeurs. TP5 Archi, L2 Info - 2014-2015, L. Gonnord & N. Louvet 1/4 Mathematics 3670: Lab 6 3 %ZIGPEMQEFPITIVQMWWMSRHIWEYXIYVW;MPPMEQ7PSYKLIX%RHVI[1IVX^YRMZ)WXIVR-PPMRSMW Address Content x3000 x5020 x3001 Content (binary) 0101 000 000 1 0 0000 Instruction details AND DR = R0 SR = R0 imm = 1 imm5 = x00 R0 = R0 AND SEXT(x00) setcc() 6 %(( (6!6 76!6 MQQ ! x1221 6 %(( 6 6 x3002 0)% (6 ! 6 xE404 S½WIX !\ 6 \ $¾R 6 ! 4' x3003 0(6 (6!6 FEWI6!6 S½WIX !\ x6681 6 PSST x3004 QIQ?\ 6 A %(( (6!6 76!6 MQQ !\ x1262 6 %(( 6 6 x3005 \ %(( (6!6 76!6 MQQ ! x16FF 6 %(( 6 6 x3006 &6T x03FD 4' ¾R x3007 xF025 x3008 x0006 6 1111 0000 0010 0101 S½WIX! 4' TRAP trapvect8 = x25 halt execution WM 6 " KSXS PSST ,%08 data word HSRR¬I Figure 2: A sequence of machine instructions for the LC-3 computer. Compare with lab6b.asm. 84%VGLM 6 Codes fournis Listing 1 – ’tp5b.asm’ ; ; Author : B i l l S l o u g h f o r MAT 3670 ; ; t p 5 b pour LIF6 − Laure Gonnord Oct 2014 . ; ; This program i s i n t e n t i o n a l l y l a c k i n g comments , s i n c e p a r t o f t h e g o a l ; ; f o r t h i s l a b i s t o i n v e s t i g a t e t h e i n s t r u c t i o n s e t o f t h e LC−3 computer .ORIG X3000 ; s p e c i f y t h e ” o r i g i n ” ; i . e . , where t o l o a d i n memory ; machine i n s t r u c t i o n s + d a t a .FILL x5020 .FILL x1221 .FILL xE404 .FILL x6681 .FILL x1262 .FILL x16FF .FILL x03FD .FILL xF025 .FILL x0006 ; d a t a word .END Listing 2 – ’tp5c.asm’ ; ; Author : B i l l S l o u g h MAT 3670 ; ; A f i r s t asse mbly −l a n g u a g e LC−3 program ; ; This i s a v a r i a t i o n on t h e world−famous ” H e l l o , w o r l d ” program ; ; known t o many programmers. −− ; ; Adapted f o r LIF6/ Univ Lyon1 by Laure Gonnord , o c t 2014 . ; ; Notes : ; ; 1 . HALT i s e q u i v a l e n t t o TRAP x25 ( s e e Ta b le A.2 , page 543) ; ; 2 . PUTS i s e q u i v a l e n t t o TRAP x22 ; ; 3 . LEA ( Load E f f e c t i v e Address ) u s e s t h e IMMEDIATE a d d r e s s i n g mode ; ; 4 . \n r e p r e s e n t s t h e ” n e w l i n e ” c h a r a c t e r .ORIG x3000 ; s p e c i f y t h e ” o r i g i n ” ; i . e . , where t o l o a d i n memory LEA R0 ,HELLO ; R0 = a d d r e s s o f o u t p u t s t r i n g PUTS ; w r i t e (” H e l l o , w o r l d ! \ n ”) LEA R0 ,COURSE ; R0 = a d d r e s s o f o u t p u t s t r i n g PUTS ; w r i t e (” LIF6 ”) LEA R0 , UNIV ; R0 = a d d r e s s o f o u t p u t s t r i n g PUTS ; w r i t e (” Univ Lyon1 ”) HALT ; HELLO .STRINGZ ” H e l l o , world ! \ n” COURSE .STRINGZ ” LIF6 \n” UNIV .STRINGZ ” Univ Lyon1\n” .END TP5 Archi, L2 Info - 2014-2015, L. Gonnord & N. Louvet 3/4 Listing 3 – ’tp5d.asm’ ; ; Author : B i l l S l o u g h f o r MAT 3670 ; ; M o d i f i e d by Laure Gonnord f o r LIF6 u n i v l y o n 1 . ; ; Example a s s e m b l y l a n g u a g e program w i t h a s i m p l e l o o p ;; ; ; D i s p l a y s a l i n e o f N a s t e r i s k s , where N i s a g i v e n v a l u e i n memory. .ORIG x3000 ; s p e c i f y t h e ” o r i g i n ” ; i . e . , where t o l o a d i n memory LD R1 ,N ; NOT R1 , R1 ; ADD R1 , R1,#1 ; R1 = −N LOOP AND R2 , R2,#0 ; R2 = 0 ; ADD R3 , R2 , R1 ; w h i l e (R2 < N) BRzp ELOOP ; LD R0 ,STAR ; R0 = ’ ∗ ’ OUT ; w r i t e ( ’ ∗ ’ ) ADD R2 , R2,#1 ; R2 = R2 + 1 BRnzp LOOP ; end w h i l e ELOOP LEA R0 ,NEWLN ; PUTS ; w r i t e ( ’ \ n ’ ) STOP HALT N .FILL 6 ; how many c h a r a c t e r s t o d i s p l a y ? STAR .FILL x2A ; t h e c h a r a c t e r t o d i s p l a y NEWLN .STRINGZ ”\n” .END TP5 Archi, L2 Info - 2014-2015, L. Gonnord & N. Louvet 4/4