计算机体系结构实验报告——实验二

上传人:第*** 文档编号:55704523 上传时间:2018-10-04 格式:PDF 页数:12 大小:722.96KB
返回 下载 相关 举报
计算机体系结构实验报告——实验二_第1页
第1页 / 共12页
计算机体系结构实验报告——实验二_第2页
第2页 / 共12页
计算机体系结构实验报告——实验二_第3页
第3页 / 共12页
计算机体系结构实验报告——实验二_第4页
第4页 / 共12页
计算机体系结构实验报告——实验二_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《计算机体系结构实验报告——实验二》由会员分享,可在线阅读,更多相关《计算机体系结构实验报告——实验二(12页珍藏版)》请在金锄头文库上搜索。

1、1计算机体系结构实验报告实验二1.实验目的:计算机体系结构实验报告实验二1.实验目的:通过本实验,熟练掌握 WinDLX 模拟器的操作和使用,清楚 WinDLX 五段流水线在执行具体程序时的流水情况,熟悉 DLX 指令集结构及其特点。2.实验内容:2.实验内容:(1) 用 WinDLX 模拟器执行程序 gcm.s 。该程序从标准输入读入两个整数,求他们的 greatest common measure,然后将结果写到标准输出。 该程序中调用了 input.s 中的输入子程序。(2).给出两组数6、 3和6、 1, 分别在main+0x8(add r2,r1,r0)、 gcm.loop(seg

2、r3,r1,r2)和 result+0xc(trap 0x0)设断点,采用单步和连续混合执行的方法完成程序,注意中间过程和寄存器的变化情况,然后单击主菜单 execute/display dlx-i/0,观察结果。3.实验程序3.实验程序求最大公约数程序: gcm.sgcm.s;* WINDLX Ex.1: Greatest common measure *;-; Program begins at symbol main; requires module INPUT; Read two positive integer numbers from stdin, calculate the gc

3、m; and write the result to stdout;-.data;* Prompts for inputPrompt1: .asciiz “First Number:”Prompt2: .asciiz “Second Number: “;* Data for printf-TrapPrintfFormat: .asciiz “gcM=%dnn”.align 22PrintfPar: .word PrintfFormatPrintfValue: .space 4.text.global mainmain:;* Read two positive integer numbers i

4、nto 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: ;* subtract r2 from r1sub r1,r1,r2j LoopResult: ;* Write the result (R1)sw PrintfValue,r1addi r14,r0,PrintfPartrap 53;* endtr

5、ap 0该程序中调用了 input.s 中的输入子程序。;* WINDLX Ex.1: Read a positive integer number *;-;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-TrapReadBuffer: .space

6、 80ReadPar: .word 0,ReadBuffer,80;* Data for Printf-TrapPrintfPar: .space 4SaveR2: .space 4SaveR3: .space 4SaveR4: .space 4SaveR5: .space 4.text.global InputUnsignedInputUnsigned:;* save register contents4sw SaveR2,r2sw SaveR3,r3sw SaveR4,r4sw SaveR5,r5;* Promptsw PrintfPar,r1addi r14,r0,PrintfPartr

7、ap 5;* call Trap-3 to read lineaddi r14,r0,ReadPartrap 3;* determine valueaddi r2,r0,ReadBufferaddi r1,r0,0addi r4,r0,10 ;Decimal systemLoop: ;* reads digits to end of linelbu r3,0(r2)seqi r5,r3,10 ;LF - Exitbnez r5,Finishsubi r3,r3,48 ;?multu r1,r1,r4 ;Shift decimaladd r1,r1,r3addi r2,r2,1 ;increme

8、nt pointerj LoopFinish: ;* restore old register contentslw r2,SaveR2lw r3,SaveR35lw r4,SaveR4lw r5,SaveR5jr r31 ; Retur4.实验流程图4.实验流程图5、实验步骤及结果5、实验步骤及结果首先按照实验要求载入 gcm.s 和 input.s。5.1 不设置任何断点运行不设置任何断点运行(1)不采用重新定向技术,输入 6、3 得到的结果:6(2)采用定向输入 6、3,得到的结果7分析:在定向技术存在的情况下 Statistics 窗口中的各种统计数字: 总的周期数 (121)和暂停数

9、 (Raw stalls:23, Control stalls:10, Trapstalls:18, Total:21)在定向技术不存在时候,控制暂停和 Trap 暂停仍然是同样的值,而 RAW 暂停从 23 变成了 34,总的模拟周期数增加到 136。所以使用定向技术可以较明显减少周期暂停, 提高系统执行效率。3.2 设置断点运行设置断点运行首先分别在8main+0x8(add r2,r1,r0)gcm.loop(seg r3,r1,r2)result+0xc(trap 0x0)处设断点。点击 F5 执行程序, 在弹出的 I/O 窗口中输入第一个数字 6。 程序运行到第一个断点处。观察寄存器的变化,发现第一个数据已经存入 R1 中。9再按 F5 继续执行程序,在弹出的窗口中输入第二个数字 3,程序运行到第二个断点处。观察寄存器的变化。第一个数字存入了 R2,第二个数字存入 R1。再按 F5 继续执行,开始循环,一直按 F5 执行下去。R2 中值一直减去 R1 中值,直至二者相等。寄存器变化如下所示:10程序结束。最后结果存储在 R2 中。实验的结果:11(2)输入 6、1寄存器变化:实验的结果:12

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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