使用冒泡排序进行测试:

.org 0x0
.global _start
.set noat
_start:ori $t1,$zero,0x0010        # 起始地址为16 aori $6,$0,0x0050            # 用来标志获取数据的地址ori $t2,$zero,0x0002        # 源操作数,20210627sw $t2,0x0($t1)ori $t2,$zero,0x0000sw $t2,0x4($t1)ori $t2,$zero,0x0002sw $t2,0x8($t1)ori $t2,$zero,0x0001sw $t2,0xc($t1)ori $t2,$zero,0x0000sw $t2,0x10($t1)ori $t2,$zero,0x0006sw $t2,0x14($t1)ori $t2,$zero,0x0002sw $t2,0x18($t1)ori $t2,$zero,0x0007sw $t2,0x1c($t1)ori $s2,$zero,0x0001        # 用于相减的常量ori $t2,$zero,0x0008        # 数组大小 $t2 为 nori $1,$zero,0x0000         # 赋初值 i = 0loop_i:ori $2,$zero,0x0000         # 赋值为 j = 0subu $s1,$t2,$1             # 每次j的范围为 n - i - 1subu $s1,$s1,$s2            # $a1 = n-i-1loop_j:syncsll $t5,$2,2            # 使 i 左移两位,得 $t5 = j * 4add $t3,$t5,$t1         # 得 $t3 为 相对$t1 偏移后的地址,为第 j 个数据的地址lw $3,0x0($t3)          # $3 = a[i]lw $4,0x4($t3)          # $4 = a[j+1]sub $t7,$3,$4           # $t7 = a[j] - a[j+1] ,当$t7大于0时,说明a>b,则转移bgtz $t7,ifs            # 当a<b时,$t7=0(默认的),a>b时则转移sync
back:ori $5,$0,0x0000sw $5,0x0($6)           # 当地址为 0x0050时,表示完成了一轮运算addi $2,$2,0x0001       # j = j + 1subu $t5,$s1,$2         # $t5存放的是 n-i-1-jbgtz $t5,loop_j         # n > j 则回到loop_jsyncaddi $1,$1,0x0001           # i = i + 1subu $t5,$t2,$1             # $t5存放是 n - ibgtz $t5,loop_i             # n > i 则回到loop_isyncj resualtsync
ifs:sw $3,0x4($t3)              # 将a[j]存放到原本a[j+1]的地址中sw $4,0x0($t3)ori $t7,$0,0x0000           # 将$t7恢复为0ori $5,$0,0x0001            # 当$5为1时,则表示进行了转移j back                      # 返回到循环继续执行syncresualt:j resualtsync

输入数据,依次读入20210627,sort.data文件

34090010
34060050
340a0002
ad2a0000
340a0000
ad2a0004
340a0002
ad2a0008
340a0001
ad2a000c
340a0000
ad2a0010
340a0006
ad2a0014
340a0002
ad2a0018
340a0007
ad2a001c
34120001
340a0008
34010000
34020000
01418823
02328823
0000000f
00026880
01a95820
8d630000
8d640004
00647822
1de00011
00000000
0000000f
34050000
acc50000
20420001
02226823
1da0fff2
00000000
0000000f
20210001
01416823
1da0ffea
00000000
0000000f
08000036
00000000
0000000f
ad630004
ad640000
340f0000
08000021
34050001
0000000f
08000036
00000000
0000000f

读入:

排序结果保存到数据存储器里

【五级流水线CPU】—— 8. 测试结果相关推荐

  1. 用scala写一个基本五级流水线CPU(二)解决数据冒险

    用scala写一个基本五级流水线CPU(二)解决数据冒险 ctime:2020-06-27 10:17:34 +0900|1593220654 标签(空格分隔): 技术 硬件 所谓数据冒险,即后面的指 ...

  2. 用scala写一个基本五级流水线CPU

    用scala写一个基本五级流水线CPU ctime:2020-06-26 20:09:48 +0900|1593169788 标签(空格分隔): 技术 硬件 最近学SpinaHDL,一直想写个什么东西 ...

  3. [SystemVerilog] MIPS架构下的五级流水线CPU设计

    完整代码已上传 github 众所周知,MIPS体系的五级流水线CPU分为五个阶段:取指(IF).译码(ID).执行(EX).存储器(MEM).写回(WB).所以这根本算不上"设计" ...

  4. 五级流水线CPU的实现与改进

    实验报告二  流水线CPU 张涵诺 2019301894 实验三 流水线CPU(不考虑冒险) 实验要求: 在单周期CPU的基础上增加流水线寄存器,在不考虑冒险的前提下,实现一个能够执行下列指令集的流水 ...

  5. 【五级流水线CPU】—— 5. 转移指令(14条)

    转移指令(14) 一共14条指令,分为两类: 跳转指令(绝对转移):jr.jalr.j.jal 分支指令(相对转移):b.bal.beq.bgez.bgezal.bgtz.blez.bltzal.bn ...

  6. 【五级流水线CPU】—— 3. 逻辑、移位与空指令 + 数据冒险RAM解决

    文章目录 1. 数据冒险RAM解决 分析 解决 2. 实现逻辑.移位指令 2.1 修改ID模块 2.2 修改EX模块 3. 测试 3.2 测试3 逻辑操作指令 3.2 测试4 移位操作指令 1. 数据 ...

  7. 【五级流水线CPU】—— 7. 协处理器访问指令(2条)

    文章目录 1. 协处理器CP0 2. CP0的实现 1. 协处理器CP0 对于MIPS32架构的4个协处理器,只进行CP0的实现 CP0内部只实现比较有用的7个寄存器 count(Register9) ...

  8. 【五级流水线CPU】—— 6. 加载存储指令(14)

    文章目录 1. 初步 12条 1.1 分析 1.2 添加数据存储器RAM 1.3 修改最小SOPC 2.3 测试9 加载存储指令 2. load-use数据冒险 测试10 load-use数据冒险的解 ...

  9. 【五级流水线CPU】—— 4. 移动操作指令(6条)

    文章目录 1. 分析 1.1 指令 1.2 数据通路图和系统结构图的改变 2. 代码修改 2.1 HI.LO寄存器的实现 2.2 修改译码阶段-ID模块 2.3 修改执行阶段-EX模块.EX/MEM模 ...

最新文章

  1. 途牛网站无线架构变迁实践
  2. SharePoint:扩展DVWP - 第3部分:把DVWP的功能链接放在同一行中
  3. 【ArcGIS风暴】缓冲区分析、叠置分析综合实验案例:购房区域的选择
  4. 华为正式开源数据虚拟化引擎 openLooKeng
  5. 移动开发day4_京东移动页面
  6. 修改现有用户帐户的 Microsoft Lync Server 2010 属性
  7. Python源码剖析笔记3-Python执行原理初探
  8. 【Scratch案例实操】scratch变魔术 scratch编程案例教学 scratch创意编程 少儿编程教案
  9. 漫过花园洋房里的浓烟
  10. abap 日期格式转换
  11. 利用VS软件生成可执行的文件(.exe文件)
  12. LED跑马灯-位操作
  13. 史上最详细Multi-grained Spatio-Temporal Features Perceived Network for Event-based Lip-Reading文章记录
  14. OpenGL入门学习
  15. ubuntu18.04双系统解决进入桌面后鼠标和键盘失灵问题
  16. 使用Excel打造一款个人日志系统
  17. Java图形化界面编程超详细知识点(9)——Swing_树
  18. 【细胞分割】原子力显微镜图像分析【含GUI Matlab源码 1371期】
  19. 53 张图详解防火墙的 55 个知识点
  20. BERT模型为什么这么强?

热门文章

  1. microsoft visual studio遇到了问题,需要关闭
  2. mysql 中ak_数据库ak
  3. Mock(模拟后端接口数据)配合Vuex的使用
  4. 你不努力,就是你的错!
  5. 良好的开端是成功的第一步———构建程序
  6. Hbuilder开发HTML5 APP之图标和启动页制作
  7. PHP笔记-PHP中Web Service.
  8. Android-JNI编程-图文解析
  9. python爬虫【2021.02.01】
  10. SqlServer数据库 性能监视器 打开路径、添加监控参数 等详解