Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
WinDLX/Copy of INPUT.S ;*********** WINDLX Ex.1: Read a positive integer number ************* ;*********** (c) 1991 Günther Raidl ************* ;*********** Modified 1992 Maziar Khosravipour ************* ;----------------------------------------------------------------------------- ;Subprogram call by symbol "InputUnsigned" ;expect the address of a zero-terminated prompt string in R1 ;returns the read value in R1 ;changes the contents of registers R1,R13,R14 ;----------------------------------------------------------------------------- .data ;*** Data for Read-Trap ReadBuffer: .space 80 ReadPar: .word 0,ReadBuffer,80 ;*** Data for Printf-Trap PrintfPar: .space 4 SaveR2: .space 4 SaveR3: .space 4 SaveR4: .space 4 SaveR5: .space 4 .text .global InputUnsigned InputUnsigned: ;*** save register contents sw SaveR2,r2 sw SaveR3,r3 sw SaveR4,r4 sw SaveR5,r5 ;*** Prompt sw PrintfPar,r1 addi r14,r0,PrintfPar trap 5 ;*** call Trap-3 to read line addi r14,r0,ReadPar trap 3 ;*** determine value addi r2,r0,ReadBuffer addi r1,r0,0 addi r4,r0,10 ;Decimal system Loop: ;*** reads digits to end of line lbu r3,0(r2) seqi r5,r3,10 ;LF -> Exit bnez r5,Finish subi r3,r3,48 ;´0´ multu r1,r1,r4 ;Shift decimal add r1,r1,r3 addi r2,r2,1 ;increment pointer j Loop Finish: ;*** restore old register contents lw r2,SaveR2 lw r3,SaveR3 lw r4,SaveR4 lw r5,SaveR5 jr r31 ; Return WinDLX/FACT.S ;*********** WINDLX Ex.3: Factorial ************* ;*********** (c) 1991 Günther Raidl ************* ;*********** Modified: 1992 Maziar Khosravipour ************* ;-------------------------------------------------------------------------- ; Program begin at symbol main ; requires module INPUT ; read a number from stdin and calculate the factorial (type: double) ; the result is written to stdout ;-------------------------------------------------------------------------- .data Prompt: .asciiz "An integer value >1 : " PrintfFormat: .asciiz "Factorial = %g\n\n" .align 2 PrintfPar: .word PrintfFormat PrintfValue: .space 8 .text .global main main: ;*** Read value from stdin into R1 addi r1,r0,Prompt jal InputUnsigned ;*** init values movi2fp f10,r1 ;R1 -> D0 D0..Count register cvti2d f0,f10 addi r2,r0,1 ;1 -> D2 D2..result movi2fp f11,r2 cvti2d f2,f11 movd f4,f2 ;1-> D4 D4..Constant 1 ;*** Break loop if D0 = 1 Loop: led f0,f4 ;D0<=1 ? bfpt Finish ;*** Multiplication and next loop multd f2,f2,f0 subd f0,f0,f4 j Loop Finish: ;*** write result to stdout sd PrintfValue,f2 addi r14,r0,PrintfPar trap 5 ;*** end trap 0 WinDLX/GCM.S ;*********** WINDLX Ex.1: Greatest common measure ************* ;*********** (c) 1991 Günther Raidl ************* ;*********** Modified 1992 Maziar Khosravipour ************* ;------------------------------------------------------------------------ ; Program begins at symbol main ; requires module INPUT ; Read two positive integer numbers from stdin, calculate the gcm ; and write the result to stdout ;------------------------------------------------------------------------ .data ;*** Prompts for input Prompt1: .asciiz "First Number:" Prompt2: .asciiz "Second Number: " ;*** Data for printf-Trap PrintfFormat: .asciiz "gcM=%d\n\n" .align 2 PrintfPar: .word PrintfFormat PrintfValue: .space 4 .text .global main main: ;*** Read two positive integer numbers into R1 and R2 addi r1,r0,Prompt1 jal InputUnsigned ;read uns.-integer into R1 add r2,r1,r0 ;R2 <- R1 addi r1,r0,Prompt2 jal InputUnsigned ;read uns.-integer into R1 Loop: ;*** Compare R1 and R2 seq r3,r1,r2 ;R1 == R2 ? bnez r3,Result sgt r3,r1,r2 ;R1 > R2 ? bnez r3,r1Greater r2Greater: ;*** subtract r1 from r2 sub r2,r2,r1 j Loop r1Greater: ;*** subtract r2 from r1 sub r1,r1,r2 j Loop Result: ;*** Write the result (R1) sw PrintfValue,r1 addi r14,r0,PrintfPar trap 5 ;*** end trap 0 WinDLX/INPUT.S ;*********** WINDLX Ex.1: Read a positive integer number ************* ;*********** (c) 1991 Günther Raidl ************* ;*********** Modified 1992 Maziar Khosravipour ************* ;----------------------------------------------------------------------------- ;Subprogram call by symbol "InputUnsigned" ;expect the address of a zero-terminated prompt string in R1 ;returns the read value in R1 ;changes the contents of registers R1,R13,R14 ;----------------------------------------------------------------------------- .data ;*** Data for Read-Trap ReadBuffer: .space 80 ReadPar: .word 0,ReadBuffer,80 ;*** Data for Printf-Trap PrintfPar: .space 4 SaveR2: .space 4 SaveR3: .space 4 SaveR4: .space 4 SaveR5: .space 4 .text .global InputUnsigned InputUnsigned: ;*** save register contents sw SaveR2,r2 sw SaveR3,r3 sw SaveR4,r4 sw SaveR5,r5 ;*** Prompt sw PrintfPar,r1 addi r14,r0,PrintfPar trap 5 ;*** call Trap-3 to read line addi r14,r0,ReadPar trap 3 ;*** determine value addi r2,r0,ReadBuffer addi r1,r0,0 addi r4,r0,10 ;Decimal system Loop: ;*** reads digits to end of line lbu r3,0(r2) seqi r5,r3,10 ;LF -> Exit bnez r5,Finish subi r3,r3,48 ;´0´ multu r1,r1,r4 ;Shift decimal add r1,r1,r3 addi r2,r2,1 ;increment pointer j Loop Finish: ;*** restore old register contents lw r2,SaveR2 lw r3,SaveR3 lw r4,SaveR4 lw r5,SaveR5 jr r31 ; Return WinDLX/PRIM.S ;*********** WINDLX Exp.2: Generate prime number table ************* ;*********** (c) 1991 Günther Raidl ************* ;*********** Modified 1992 Maziar Khosravipour ************* ;------------------------------------------------------------------- ; Program begins at symbol main ; generates a table with the first 'Count' prime numbers from 'Table' ;------------------------------------------------------------------- .data ;*** size of table .global Count Count: .word 10 .global Table Table: .space Count*4 .text .global main main: ;*** Initialization addi r1,r0,0 ;Index in Table addi r2,r0,2 ;Current value ;*** Determine, if R2 can be divided by a value in table NextValue: addi r3,r0,0 ;Helpindex in Table Loop: seq r4,r1,r3 ;End of Table? bnez r4,IsPrim ;R2 is a prime number lw r5,Table(R3) divu r6,r2,r5 multu r7,r6,r5 subu r8,r2,r7 beqz r8,IsNoPrim addi r3,r3,4 j Loop IsPrim: ;*** Write value into Table and increment index sw Table(r1),r2 addi r1,r1,4 ;*** 'Count' reached? lw r9,Count srli r10,r1,2 sge r11,r10,r9 bnez r11,Finish IsNoPrim: ;*** Check next value addi r2,r2,1 ;increment R2 j NextValue Finish: ;*** end trap 0 WinDLX/README WinDLX DLX-Pipeline Simulator (c) Copyright 1992 by by TU Vienna, Inst. f�r Technische Informatik DLX simulator (c) Copyright 1989 by Regents of the University of California This README contains information for the first-time installation of WinDLX as it is distributed on this diskette. What is WinDLX? --------------- WinDLX is a pipeline simulator for the DLX processor as described in D.A. Patterson / J.L. Hennessy: Computer Architecture - A Quantitative Approach Morgan Kaufmann Publishers, San Mateo, California It is a MS-Windows based frontend for the text-only DLX simulator available by the above authors. After loading a symbolic DLX assembler code, most of the information relevant to the CPU (pipeline, registers, I/O, memory, ...) can be viewed and modified while executing the code step-by-step or continuously. WinDLX offers statistics about pipeline behavior in time. This program greatly helps people in understanding pipelining concepts as well as other architectural specifics of RISC processors. System prerequisites -------------------- IBM personal computer or lookalike with DOS 3.3 or later and Microsoft Windows 3.0 or newer. Installation ------------ The file WINDLX_D.EXE on this diskette is a self-extracting archive. To unpack it, follow these steps: 1.) create a directory "WINDLX" somewhere on your harddisk and make this directory your current. 2.) type in the following line: A:\WINDLX\WINDLX_D This will unpack the files in the archive and install them on the harddisk. The following files will be created: WINDLX.EXE -- the WinDLX executable WINDLX.HLP -- Windows helpfile *.S -- sample assembler input files README -- this file ..... 3.) Install the program into the Program Manager and click on the symbol to start it. The help facility is very extensive and covers almost everything we could think of. Feel free to create your own assembler files and experiment with different CPU configurations. WinDLX/readme.txt THIS SOFTWARE IS MADE AVAILABLE WITH PERMISSION FROM TECHNISCHE UNIVERSITAT WIEN, INSTITUTE FOR TECHNISCHE INFORMATIK. MORGAN KAUFMANN PUBLISHERS ACCEPTS NO RESPONSIBILITY AND MAKES NO GUARANTEES FOR THIS SOFTWARE. ANY DAMAGES WHICH MAY RESULT FROM INSTALLING AND/OR USING THIS SOFTWARE ARE THE RESPONSIBILITY OF THE SOFTWARE USER ONLY. MORGAN KAUFMANN PERSONNEL ARE NOT QUALIFIED TO PROVIDE HELP OR ANSWER QUESTIONS REGARDING THE INSTALLATION AND/OR USE OF THIS SOFTWARE. ================================================================= WinDLX DLX-Pipeline Simulator (c) Copyright 1992 by by TU Vienna, Inst. for Technische Informatik DLX simulator (c) Copyright 1989 by Regents of the University of California This README contains information for the first-time installation of WinDLX. What is WinDLX? --------------- WinDLX is a pipeline simulator for the DLX processor as described in Computer Architecture: A Quantitative Approach, Second Edition by John Hennessy and Dave Patterson Morgan Kaufmann Publishers, San Francisco, California It is a MS-Windows based front-end for the text-only DLX simulator available via anonymous FTP from Stanford (max.stanford.edu). After loading a symbolic DLX assembler code, most of the information relevant to the CPU (pipeline, registers, I/O, memory, ...) can be viewed and modified while executing the code step-by-step or continuously. WinDLX offers statistics about pipeline behavior in time. This program is designed to help people understand pipelining concepts as well as other architectural specifics of RISC processors. System prerequisites -------------------- IBM personal computer or compatible with DOS 3.3 or later and Microsoft Windows 3.0 or newer. Installation ------------ The file WINDLX_D.EXE on this diskette is a self-extracting archive. To unpack it, follow these steps: 1.) create a directory "WINDLX" somewhere on your hard drive and make this directory your current. 2.) type in the following line: A:\WINDLX\WINDLX_D This will unpack the files in the archive and install them on the hard drive. The following files will be created: WINDLX.EXE -- the WinDLX executable WINDLX.HLP -- Windows helpfile *.S -- sample assembler input files README -- this file ..... 3.) Install the program into the Program Manager and click on the symbol to start it. The help facility is very extensive and covers almost everything we could think of. Feel free to create your own assembler files and experiment with different CPU configurations. WinDLX/test.s ;*********** WINDLX Ex.3: JZ Test ;-------------------------------------------------------------------------- .data buffer: .space 8 .text .global main main: xor r0,r0,r0 addi r1,r0,1 addi r2,r0,2 addi r4,r2,5 sw buffer,r1 addi r2,r0,2 j Finish Finish: ;*** end trap 0 WinDLX/wdlxtut.doc WinDLX/windlx.exe WinDLX/windlx.hlp WinDLX/windlx_d.exe
Compartilhar