计算机组成与结构——cpu课程设计报告

计算机组成与结构——cpu课程设计报告

ID:11147938

大小:447.98 KB

页数:25页

时间:2018-07-10

计算机组成与结构——cpu课程设计报告_第1页
计算机组成与结构——cpu课程设计报告_第2页
计算机组成与结构——cpu课程设计报告_第3页
计算机组成与结构——cpu课程设计报告_第4页
计算机组成与结构——cpu课程设计报告_第5页
资源描述:

《计算机组成与结构——cpu课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、面向对象程序设计课程设计《CPU设计与仿真》课程设计报告学号:2012班级序号:姓名:指导教师:成绩:dida信息工程学院2012年6月24-24-面向对象程序设计课程设计实习题目一【需求规格说明】一、题目:以下文件:sim.cpp, computer.h, computer.cpp, proj1.cpp and proj1.h 组成了MIPS仿真器的一个框架. 通过在文件proj1.cpp中增加代码来完成整个程序。你的仿真器必须能仿真以下MIPS机器指令:       addu   Rdest,Rsrc1,Rsrc2       addiu  Rdest,Rsrc1,imm       

2、subu   Rdest,Rsrc1,Rsrc2       sll    Rdest,Rsrc,shamt       srl    Rdest,Rsrc,shamt       and    Rdest,Rsrc1,Rsrc2       andi   Rdest,Rsrc,imm       or     Rdest,Rsrc1,Rsrc2       ori    Rdest,Rsrc,imm       lui    Rdest,imm       slt    Rdest,Rsrc1,Rsrc2       beq    Rsrc1,Rsrc2,raddr       bne 

3、   Rsrc1,Rsrc2,raddr       j      address       jal    address       jr     Rsrc       lw     Rdest,offset(Radd)二、问题描述:题目已经给出程序代码的基本框架,我们只需要在proj1.cpp中实现反汇编函数和指令仿真函数,在两个函数中完成以上指令。我们需要参考opcode和func的值对应表,通过分情况讨论,区分并实现指令。三、问题分析:我们要真正理解并解决问题,我们必须大概看懂现成的代码框架,参考opcode与func和指令的对应表,根据对应数值使用if,else语句和switc

4、h分支实现区分实现指令。【算法设计】(1)设计思想:1、分割指令:使用移位运算的方法实现分割指令,如:opcode=instr>>26;rs=(instr<<6)>>27;2、提取符号位:也是使用移位运算取立即数的最高位,若s=1,则执行“immediate-=65536;”2^16=65536。当最高位为1时,即立即数为负,可是此时立即数由补码转化成十进制数24-24-面向对象程序设计课程设计并不是负数,所以需要执行此立即数减2的16次方得到一个正确的负数。3、反汇编显示转化后指令:使用C语言的表示法sprintf_s(ch,"addu$%d,$%d,$%d",rd,rs,rt);pri

5、ntf(ch);4、指令仿真实现:一方面是pc的变化,另一方面是寄存器和内存的值变化,另外由*changedReg和*changedMem记录变化情况。若无变化,则赋(-1)值如下:(1)mips->pc=mips->pc+4;(2)mips->registers[rd]=mips->registers[rt]+mips->registers[rs];(3)if(rd==0)*changedReg=-1;else*changedReg=rd;*changedMem=-1;(2)设计表示:1、分割指令://从底层数据分割指令opcode=instr>>26;rs=(instr<<6)>>27

6、;rt=(instr<<11)>>27;rd=(instr<<16)>>27;shamt=(instr<<21)>>27;funct=(instr<<26)>>26;immediate=(instr<<16)>>16;target_addr=(instr<<6)>>6;2、立即数处理:s=immediate>>15;//s=1,即符号位为1,立即数为负数if(s==1){immediate-=65536;}24-24-面向对象程序设计课程设计3、指令分情况实现,使用do_instruction()包含反汇编函数实现和指令仿真函数内容。利用pc是否为零判断情况//比较指令charch[50]

7、;//R格式if(opcode==0){switch(funct){case33://addu//pc!=0->被反汇编函数调用if(pc!=0){sprintf_s(ch,"addu$%d,$%d,$%d",rd,rs,rt);printf(ch);}//pc=0->被指令仿真函数调用else{mips->pc=mips->pc+4;mips->registers[rd]=mips->registers[rt]+mip

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。