实验一 熟悉windlx的使用

上传人:mg****85 文档编号:34053613 上传时间:2018-02-20 格式:DOC 页数:13 大小:477.24KB
返回 下载 相关 举报
实验一  熟悉windlx的使用_第1页
第1页 / 共13页
实验一  熟悉windlx的使用_第2页
第2页 / 共13页
实验一  熟悉windlx的使用_第3页
第3页 / 共13页
实验一  熟悉windlx的使用_第4页
第4页 / 共13页
实验一  熟悉windlx的使用_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《实验一 熟悉windlx的使用》由会员分享,可在线阅读,更多相关《实验一 熟悉windlx的使用(13页珍藏版)》请在金锄头文库上搜索。

1、HUNAN UNIVERSITY实验一 熟悉 WinDLX 的使用学生班级:计科 2 班学生姓名:杨凌霄一实验目的:通过本实验,熟练掌握 WinDLX模拟器的操作和使用,熟悉 DLX指令集结构及其特点。二实验内容:(一)WinDLX 的安装:1. WinDLX是一个基于 Windows的模拟器, 能够演示 DLX流水线是如何工作的。WinDLX 包含 windlx.exe和 windlx.hlp文件。同时,还需要一些扩展名为.s 的汇编代码文件。按以下步骤在 Windows下安装 WinDLX:1 WinDLX创建目录,例如 D:WINDLX2 解压 WinDLX软件包或拷贝所有的 WinDL

2、X文件(至少包含 windlx.exe, windlx.hlp)到这个 WinDLX 目录。2. 启动和配置 WinDLX:双击 WinDLX图标,将出现一个带有六个图标的主窗口,双击这些图标会弹出子窗口.为了初始化模拟器, 点击 File 菜单中的 Reset all 菜单项,弹出一个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。(二)程序介绍1. 求阶乘程序 fact.s这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。该程序中调用了 input.s中的输入子程序,这个子程序用于读入正整数。2. 程序 gcm.sgcm.s程序从标准输入读入

3、两个整数,求他们的 greatest common measure,然后将结果写到标准输出。3. 求素数程序 prim.sprim.s程序计算若干个整数的素数。三、实验程序1求阶乘程序 Fact.s:;-; 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;- .dataPrompt: .asciiz An integer value 1

4、: PrintfFormat: .asciiz Factorial = %gnn.align 2PrintfPar: .word PrintfFormatPrintfValue: .space 8.text.global mainmain:;* Read value from stdin into R1addi r1,r0,Promptjal InputUnsigned;* init valuesmovi2fp f10,r1 ;R1 - D0 D0.Count registercvti2d f0,f10addi r2,r0,1 ;1 - D2 D2.resultmovi2fp f11,r2cv

5、ti2d f2,f11movd f4,f2 ;1- D4 D4.Constant 1;* Break loop if D0 = 1Loop: led f0,f4 ;D0 Exitbnez r5,Finishsubi r3,r3,48 ;?multu r1,r1,r4 ;Shift decimaladd r1,r1,r3addi r2,r2,1 ;increment pointerj LoopFinish: ;* restore old register contentslw r2,SaveR2lw r3,SaveR3lw r4,SaveR4lw r5,SaveR5jr r31 ; Retur3

6、求最大公约数程序:gcm.s;-; 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 inputPrompt1: .asciiz First Number:Prompt2: .asciiz Second Number: ;* Data for printf-TrapPrintfFormat: .asciiz

7、 gcM=%dnn.align 2PrintfPar: .word PrintfFormatPrintfValue: .space 4.text.global mainmain:;* Read two positive integer numbers into R1 and R2addi r1,r0,Prompt1jal InputUnsigned ;read uns.-integer into R1add r2,r1,r0 ;R2 R2 ?bnez r3,r1Greaterr2Greater: ;* subtract r1 from r2sub r2,r2,r1j Loopr1Greater

8、: ;* subtract r2 from r1sub r1,r1,r2j LoopResult: ;* Write the result (R1)sw PrintfValue,r1addi r14,r0,PrintfPartrap 5;* endtrap 04求素数程序 prim.s:;-; Program begins at symbol main; generates a table with the first Count prime numbers from Table;-.data;* size of table.global CountCount: .word 10.global

9、 TableTable: .space Count*4.text.global mainmain:;* Initializationaddi r1,r0,0 ;Index in Tableaddi r2,r0,2 ;Current value;* Determine, if R2 can be divided by a value in tableNextValue: addi r3,r0,0 ;Helpindex in TableLoop: seq r4,r1,r3 ;End of Table?bnez r4,IsPrim ;R2 is a prime numberlw r5,Table(R

10、3)divu r6,r2,r5multu r7,r6,r5subu r8,r2,r7beqz r8,IsNoPrimaddi r3,r3,4j LoopIsPrim: ;* Write value into Table and increment indexsw Table(r1),r2addi r1,r1,4;* Count reached?lw r9,Countsrli r10,r1,2sge r11,r10,r9bnez r11,FinishIsNoPrim: ;* Check next valueaddi r2,r2,1 ;increment R2j NextValueFinish:

11、;* endtrap 0四窗口介绍第一次打开 WINDLX模拟器,我们可以看到如下六个小窗口。1 Register 窗口Register窗口显示寄存器中的内容。为此,双击 主窗口中的 Register 图标。Register 窗口会显示各个寄存器中的内容。看一下 R1到 R5的值。按 F5使模拟继续运行到下一个断点处,有些值将发生改变。2 Code 窗口该窗口代表存储器内容的三栏信息,从左到右依次为:地址 (符号或数字)、命令的十六进制机器代码和汇编命令。 点击 主窗口中的 Execution开始模拟。在出现的下拉式菜单中,点击 Single Cycle或按 F7键。这时,窗口中带有地址“$T

12、EXT ”的第一行变成黄色。按下 F7 键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色.。这些不同颜色指明命令处于流水线的哪一段。3 Pipeline 窗口Pipeline窗口显示 DLX处理器的内部结构。窗口中用图表形式显示了 DLX的五段流水线。你应尽可能地扩大此窗口,以便处于不同流水段的指令都能够在图表中显示。 4 Clock Cycle Diagram 窗口该窗口使所有子窗口图标化,然后打开 Clock Cycle Diagram 窗口。它显示流水线的时空图。该时空图中显示了每一个时隙内的运行情况。对准 Clock cycle diagram窗口中相应命令所在行,然后双

13、击它,弹出一个新窗口。窗口中会详细显示每一个流水段处理器内部的执行动5 Statistics 窗口该窗口是对运行程序中数据的分析。Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和 traps。窗口中给出事件发生的次数和百分比。在静态窗口中我们可以比较一下不同配置对模拟的影响。6 Breakpoint 窗口通过 Code 窗口可以观察代码 (如果未打开,双击图标 Code),可以通过 Breakpoint 来观察代码运行的情况。单击 Set Breakpoint ,将弹出一个新的Set Breakpoint 窗口。通过

14、此窗口,可以选择命令运行到流水线的哪一阶段时,程序停止执行。缺省为 ID段。点击 OK 关闭窗口。在 Code 窗口中,相应行上出现 了BID ,它表示当本指令在译码段时,程序中止执行。如果想查看已定义的断点,你只要单击图标 Reakpoints,将弹出一个小窗口,其中显示了所有断点。重新使窗口图标化。点击 Execution / Run 或按 F5,模拟就继续运行。会出现一个对话框提示ID-Stage: reached at Breakpoint #1,按“确认”按钮关闭。五、实验过程(1) 通过双击 WinDLX 图标 启动 WinDLX,将出现一个带有六个图标的主窗口: (2)进行初始化模拟器, 点击 File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮即可。(3)在开始模拟之前,至少应装入一个程序到主存。为此,选择 File / Load Code or Data,窗口中会列出目录中所有汇编程序。fact.s 计算一个整型值的阶乘; input.s中包含一个子程序,它读标准输入(键盘)并将值存入 DLX处理器的通用寄存器 R1中。按如下步骤操作,把 fact.s和 input.s加载入主存。 点击 fact.s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号