用高级语言VC++仿真指令流程和微命令序列 课程设计报告_第1页
用高级语言VC++仿真指令流程和微命令序列 课程设计报告_第2页
用高级语言VC++仿真指令流程和微命令序列 课程设计报告_第3页
用高级语言VC++仿真指令流程和微命令序列 课程设计报告_第4页
用高级语言VC++仿真指令流程和微命令序列 课程设计报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与工程学院课程设计报告题目全称: 用高级语言vc+仿真指令流程和微命令序列 课程名称: 计算机组成原理 指导老师: 职称: 序号学生姓名学号班号成绩1李镜儒2806005027280600502郭晓楠280600502528060050345678910(注:学生姓名填写按学生对该课程设计的贡献及工作量由高到底排列,分数按排名依次递减。序号排位为“1”的学生成绩最高,排位为“10”的学生成绩最低。)指导老师评语: 指导签字: 正 文一、 课题背景1.1工作目的在vc+环境下,开发软件以仿真模型机指令按工作周期执行时的处理流程和相应的微命令,能对模型机的任意指令进行正确仿真。模型机中的

2、指令包括:传送指令:mov双操作数指令:加法指令add,减法指令sub,按位与指令and,按位或指令or,按位异或指令eor;单操作数指令:按位求反指令com,求补指令neg,自增指令inc,自减指令dec,左移指令sl,右移指令sr;转移类指令: 转移指令jmp, 转子指令jsr, 返回指令rst;1.2 工作意义本课程设计目的在于用vc+实现一个可以仿真模型机任意指令的微命令操作时间表的教学软件。由于目前尚未有计算机组成原理微命令仿真教学软件投入教学使用中,所以老师上课讲讲解cpu控制器微命令产生方式以及指令的操作时间表时,都是采用课件与习题结合的方式。但由于课程时间有限,不可能为学生讲解

3、所有指令操作时间表的生成过程。因此,为了使学生能够更加深入和详细地理解各指令按工作周期执行时的处理流程和相应的微命令,也为了方便老师为同学展示相关过程,故设计此仿真教学软件,以丰富教学手段。二、 课题的需求分析2.1 模型机指令分析模型机指令类型如下表2-1所示:操作码含义操作码含义mov传送inc加1add加dec减1sub减sl左移and按位与sr右移or按位或jmp转移eor按位异或rst返回com按位取反jsr转子neg求补表2-1 模型机指令类型大体上来说,每个指令的工作周期都是由取指周期(ft),源周期(st),目的周期(dt),执行周期(et)组成的,而在每个指令中,取指周期负责

4、的操作都是相同的,即实现“m-ir,pc+1-pc”的操作,那么只需结合具体指令分析他们的st,dt,et的特点即可。以此为出发点,再结合表中信息,可将模型机指令大致分为以下几类:2.1.1传送指令 传送周期的源周期st,就是根据源操作数的寻址方式找到源操作数;而目的周期dt,也是根据目的操作数寻址方式找到目的操作数;在执行周期et中,实现将源操作数送目的。因此可看作是特殊的一类双操作数指令。2.1.2双操作数指令双操作数指令主要是实现各种运算,在源周期取源操作数,目的周期取目的操作数,执行周期中,根据指令的不同来执行不同的算术运算或者位运算,故这类指令有相同的源周期和目的周期,而和传送指令比

5、较,源周期st都只是负责取到源操作数,故该类指令的源周期操作和传送指令完全相同。2.1.3.单操作数指令单操作数与上两类指令相比,只有一个操作数,且去操作数被安排在目的周期dt进行,而这类指令也是对取到的操作数进行算术运算或者位运算,而这些运算的差异具体又体现在执行周期中,故这类指令具有和双操作数指令完全相同的目的周期。2.1.4.转移类指令转移类指令是一类特殊的指令,它们最终都是要改变pc的值以达到程序跳转的目的,模型机中jmp指令没有源周期和目的周期,但是却可以带不同寻址方式的操作数,来实现跳转的多样化。可以认为,jmp指令是单操作指令,只是去操作数的操作被合并到执行周期et中了。返回指令

6、rst可以看做是特殊的jmp指令,它用于子程序最后返回主程序,也就是到堆栈中取出主程序断点地址并送入pc。因此,它和“jmp -(sp)”完全等效。转子指令特殊性体现在,指令中出现了子程序首地址,且可用不同的寻址方式给出。从这点看,它与单操作数类似。但是,模型机中的转子指令的操作数却是安排在源周期st中的,因此,在具体设计时可考虑做一些技术处理将它们统一起来。2.2 模型机主要寻址方式分析模型机中的主要的寄存器有:通用寄存器r0,r1,r2,r3,程序计数器pc,程序状态字psw,堆栈指针sp。支持的寻址方式主要有:立即数寻址,寄存器寻址,寄存器间接寻址,自增型寄存器间址,自减型寄存器间址,变

7、址/相对寻址,如表2-2所示。模型机寻址功能的灵活性也决定了软件设计时问题的复杂性。寻址方式助记符可用寄存器寄存器寻址rr0,r1,r2,r3,pc,psw寄存器间址(r)r0,r1,r2,r3立即数寻址(pc)+pc自减型寄存器间址-(r),-(sp)r0,r1,r2,r3,sp自增型寄存器间址(r)+,(sp)+r0,r1,r2,r3,sp变址寻址x(r)r0,r1,r2,r3相对寻址x(pc)pc表2-2模型机寻址方式其中比较特殊的有:1.“-(sp)”和“(sp)+”,分别表示出栈和入栈,由栈的操作特性决定了“-(sp)”只能作为源操作数,“(sp)+”只能作为源操作数。且传送指令既可

8、以操作出栈也可以操作入栈;双操作数指令、单操作数指令和转移类指令不能进行堆栈操作。2.程序状态字相关,由于psw反映了当前程序的状态信息和控制信息,因此限定psw只能作为mov指令中的操作数出现。综合分析了各寻址方式的助记符后,可统一为以下5种格式(r代指寄存器):r,(r), (r), (r),+ x(r)。2.3 软件功能分析软件功能比较简单。即在接收用户输入的模型机指令后,生成对应的微命令序列(如图2-1所示),以操作时间表的形式向用户展现。在用户输入指令后,软件需要判断指令的类型,操作数的寻址方式类型,寻址方式中出现的寄存器类型。在格式正确时才能生成操作时间表并展示给用户,否则应具有友

9、好的出错提示,软件工作过程如图2-2所示。图2-1 用户功能用例图图2-2 软件工作流程图三、 课题的设计和实现3.1 课题概要设计3.1.1 软件大致界面设计图 3-1 软件大致界面文本框:用户在文本框中输入模型机指令的字符串生成按钮:用户在输入模型机指令后,点击生成按钮,软件开始解析指令字符串,得到的信息有:指令类型,操作数个数,操作数寻址方式等。空白部分:用于最后呈现出整个操作时间表,以框图的形式,分成个工作周期展示。3.1.2 指令工作流程设计模型机各指令工作周期分为ft,st,dt,et,在每个周期中,操作所需的微命令是由指令和寻址方式共同决定的。因此,当指令类型和寻址方式确定后,能

10、够唯一确定该工作周期中所需的微命令。因此,设计一个指令解析类,对用户输入的字符串进行解析,解析生成的信息可确定微命令序列。在解析完用户输入的指令字符串后,软件按接收到的指令不同,对应的操作也不同,因此,将每个指令分别作为一个对象,且对象之中都包含有对ft,st,dt,et各工作周期的处理方法,从面向对象的角度来看,它们的方法有很多类似之处,所以可以抽象出一个共同的父类,即指令类(cinstruction)。在指令类处理结束后,软件能够得到,各工作周期中所需的全部微命令序列,剩下的工作交给负责展现操作时间表的类来完成。3.1.3 软件所需类设计软件所需类的整体图情况如图3-2所示。图 3-2 软

11、件类整体图ccomorgapp、ccomorgdlg类这两个类是mfc框架生成的对话框相关的类,主要负责向用户展示对话框,控制程序流程。cinstinfo类负责处理用户输入的指令字符串,将处理后得到的有用信息保存在自己的字段中,供其他类调用。cmicrocommandfactory类由于模型机的微命令种类很多,如果不集中管理将会增加软件的复杂度和各个对象之间的耦合程度。因此,设计cmicrocommandfactory类来集中存放模型机的微命令序列,其他类需要微命令时,通过这个类来得到。cinstcycle类即指令工作周期类,用法是为每个指令实例化4个对象,分别标识ft,st,dt,et。其中

12、的字段表明了各工作周期的时钟周期数,以及各时钟周期的寄存器传送语言及对应的微命令序列cinstruction类及各个指令的类cinstruction类是各个指令类的父类,它的方法包含了对ft,st,dt,et的处理,而各指令类根据指令的差异来重写这几个方法。对各工作周期处理完毕后,其相关字段中保存着各工作周期的信息,也是用户最终需要看见的信息。cinstpaintor类cinstpaintor类负责用户所需信息的展示逻辑,得到指令类的消息后,便能完成展示工作。3.2 课题详细设计3.2.1 cinstinfo类字段及方法设计图3-3 cinstinfo类字段和方法主要字段的作用infostri

13、ng:cstring类型,保存用户输入的指令字符串insttype:保存指令类型信息opnum:保存指令操作数个数op1type:保存目的操作数的寻址方式op1cat:保存目的操作数使用的寄存器主要方法的作用instprocess():解析字符串中属于指令的部分,将指令类型信息存入insttype字段op1process():解析字符串中属于目的操作数的部分,寻址方式存入op1type,所用的寄存器存入op1catgenerateinfo():根据指令类型,组织op1process()和op2process(),是对外的接口方法,调用该方法就能生成与指令相关的完整信息。3.2.2 cmicro

14、commandfactory类字段及方法设计图3-4 cmicrocommandfactory类字段和方法主要字段的作用mcmdmap:软件工作过程中,需要根据寄存器级传送语言得到对应的微命令序列,而他们之间存在一一对应关系,即构成映射。故可使用map或hashmap数据结构来完成存放微命令序列,mcmdmap就是保存微命令序列的map类型的字段3.2.3 cinstcycle类字段及方法设计图3-5 cinstcycle类字段和方法主要字段的作用opary:cstringarray类型的字段,存放工作周期中的寄存器传送语言操作。一般情况下,一个时钟周期只执行一条寄存器级传送语言,如果是两条也

15、可以合并为一条,故opary中元素个数指明了工作周期中的时钟周期数。mcmdary:cstringarray类型的字段,存放每个寄存器传送语言对应的微命令序列。主要方法的作用addop():用于添加寄存器传送语言到opary中,同时,依靠cmicrocommandfactory类得到对应的微命令序列,存入mcmdary中。3.2.4 cintruction类字段及方法设计图3-6 cintruction类字段和方法主要字段的作用instinfo:为cinstinfo类型,程序控制部分调用set方法来设置。numft:指明取指周期数,其他几个分别指明源周期数,目的周期数,执行周期数pinstft

16、:为cinstcycle类型指针,标识指令中的取指周期,其他几个分别标识源周期,目的周期,执行周期主要方法的作用processft():对指令取指周期进行处理,得到所有的寄存器传送语句,及对应的微命令序列,其他几个分别对源周期,目的周期,执行周期进行处理,但其他模块不能直接调用这几个方法,只能调用processinst()processinst():用于处理整条指令,方法中调用了processft(), processst(), processdt(),processet()。3.2.5 cinstpaintor类字段及方法设计图3-7 cinstpaintor类字段和方法主要方法的作用pai

17、ntframe():画出操作时间表框图的框架paintinst():画出操作时间表3.2.6 主要的宏定义宏定义值作用宏定义值作用error_inst-1表明错误的指令mov_inst0表明是传送指令add_inst1表明是加指令sub_inst2表明是减指令and_inst3表明是按位与指令or_inst4表明是按位或指令eor_inst5表明是按位异或指令com_inst6表明是按位变反指令neg_inst7表明是求补指令inc_inst8表明是加1指令dec_inst9表明是减1指令sl_inst10表明是左移指令sr_inst11表明是右移指令jmp_inst12表明是转移指令rst_

18、inst13表明是返回指令jsr_inst14表明是转子指令empty-1表明寻址方式错误reg0表明是寄存器寻址reg_ind1表明是寄存器间址reg_mind2表明自减型寄存器间址reg_aind3表明自增型寄存器间址reg_index4表明变址/相对寻址sop1表明是单操作数dop2表明是双操作数is_r00表明寄存器为r0is_r11表明寄存器为r1is_r22表明寄存器为r2is_r33表明寄存器为r3is_sp4表明寄存器为spis_pc5表明寄存器为pcis_psw6表明寄存器为pswsame_t0标识同一时钟周期not_end_t1标识该时钟周期不是工作周期的最后一个时钟end_of_ft2标识该时钟周期是取指周期的结束end_of_st3标识该时钟周期是源周期的结束end_of_dt4标识该时钟周期是目的周期的结束end_of_et5标识该时钟周期是执行周期的结束3.2.7 用户点击按钮的消息处理函数的设计void ccomorgdlg:onbnclickedgenbutton()cstring infostring;/从文本框得到字符串送入infostringcinstinfo instinfo;instinfo.setinfostring(infostring);instinfo.generateinfo();if(insti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论