首页 > 代码库 > 自己动手写CPU之第七阶段(12)——检验除法指令实现效果
自己动手写CPU之第七阶段(12)——检验除法指令实现效果
将陆续上传本人写的新书《自己动手写CPU》,今天是第33篇,我尽量每周四篇
感兴趣的朋友可以在亚马逊、当当、京东等查找。
7.13 测试除法指令实现效果
本节将通过一个测试程序验证为OpenMIPS添加的除法指令是否实现正确,测试程序如下,源文件是本书附带光盘Code\Chapter7_3\AsmTest目录下的inst_rom.S文件。.org 0x0 .global _start _start: ori $2,$0,0xffff sll $2,$2,16 ori $2,$2,0xfff1 # $2 = -15 为寄存器$2赋初值 ori $3,$0,0x11 # $3 = 17 为寄存器$3赋初值 div $zero,$2,$3 # hi = 0xfffffff1 # lo = 0x0 divu $zero,$2,$3 # hi = 0x00000003 # lo = 0x0f0f0f0e div $zero,$3,$2 # hi = 2 # lo = 0xffffffff
给寄存器$2赋初值-15,寄存器$3赋初值17,然后分别使用div、divu、div指令进行运算,结果保存在HI、LO寄存器,程序的注释给出了预期执行结果。ModelSim仿真如图7-20所示,从中可知OpenMIPS正确实现了除法指令,并且可以观察到,除法指令需要多个时钟周期才能完成。
7.14 数据流图的修改
通过本章的工作,我们的OpenMIPS处理器可以执行所有的算术操作指令了,此时的数据流图如图7-21所示。
相比第6章的图6-4,主要变化是:增加了一个选择器,用来确定PC的值。PC在下一个时钟周期的值可以是PC+4,也可以保持当前的值不变,后者对应的就是流水线暂停时的情况。
可以在下面的地址下载添加实现了除法指令的OpenMIPS代码
http://download.csdn.net/detail/leishangwen/7902625
好了,MIPS32指令集中的算术操作指令已经全部实现了,下一次将开始实现转移指令了,敬请关注!
自己动手写CPU之第七阶段(12)——检验除法指令实现效果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。