实验2:MIPS指令系统和MIPS体系结构

一.实验目的

  • (1)了解和熟悉指令级模拟器
  • (2)熟悉掌握MIPSsim模拟器的操作和使用方法
  • (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解
  • (4)熟悉MIPS体系结构

二. 实验内容和步骤

首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统。
(1)、启动MIPSsim。
(2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。
(3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。
(4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置。
(5)、查看“寄存器”窗口PC寄存器的值:[PC]= 0x00000000 。

(6)、执行load和store指令,步骤如下:
1)单步执行一条指令(F7)。

{,立即数用补码形式存放; ADDIU : r 8 , r8, r8,r0,128
ADDIU是GPR和立即数做无符号加法操作,但立即数字段是有符号的,所以需要做符号扩展。r8=r0+124}


2)下一条指令地址为 0x00000004 ,是一条 有 (有,无)符号载入 字节 (字节,半字,字)指令(LB从存储器中读取一个字节的数据到寄存器中,读出的是带符号的数据)
3)单步执行一条指令(F7)。

4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 (十进制为:-128) 。

{一个字节的范围带符号的就是
-128到+127,16进制的80转换成十进制为+128,一个字节的范围为-128~+127;16进制的80转换成二进制为10000000,补码表示法得知
10000000 就是-128的补码咯 }

5)下一条指令地址为 0x00000008 ,是一条 无 (有,无)符号载入 字 (字节,半字,字)指令。{LW:从存储器中读取一个字的数据到寄存器中}
6)单步执行1条指令。

7)查看R1的值,[R1]= 0x0000000000000080 (二进制的值为:128) 。
8)下一条指令地址为 0x0000000C ,是一条 无 (有,无)符号载入 字节 (字节,半字,字)指令。
{LBU功能与LB指令相同,但读出的是不带符号的数据}
9)单步执行1条指令。

10)查看R1的值,[R1]= 128(十进制) /0x0000000000000080 (十六进制) 。
11)单步执行1条指令。

12)下一条指令地址为 0x00000014 ,是一条保存 字 (字节,半字,字)指令。
13)单步执行一条指令。
14)查看内存BUFFER处字的值,值为 0X00000080 。

(7)、执行算术运算类指令。步骤如下:
1)双击“寄存器”窗口中的R1,将其值修改为2。
2)双击“寄存器”窗口中的R2,将其值修改为3。
3)单步执行一条指令。
4)下一条指令地址为 0x00000020 ,是一条加法指令。
5)单步执行一条指令。

6)查看R3的值,[R3]= 5

7)下一条指令地址为 0x00000024 ,是一条乘法指令。
8)单步执行一条指令。

9)查看LO、HI的值,[LO]= 0x0000000000000006 ,[HI]= 0x0000000000000000 。
(8)、执行逻辑运算类指令。步骤如下:
1)双击“寄存器”窗口中的R1,将其值修改为0xFFFF0000。
2)双击“寄存器”窗口中的R2,将其值修改为0xFF00FF00。
3)单步执行一条指令。

4)下一条指令地址为 0x00000030 ,是一条逻辑与运算指令,第二个操作数寻址方式是 寄存器直接寻址 (寄存器直接寻址,立即数寻址)。
5)单步执行一条指令。
6)查看R3的值,[R3]= 0x00000000FF000000 。
7)下一条指令地址为 0x00000034 ,是一条逻辑或指令,第二个操作数寻址方式是 立即数寻址 (寄存器直接寻址,立即数寻址)。
8)单步执行一条指令。
9)查看R3的值,[R3]= 0x0000000000000000 。
(9)、执行控制转移类指令。步骤如下:
1)双击“寄存器”窗口中R1,将其值修改为2。
2)双击“寄存器”窗口中R2,将其值修改为2。
3)单步执行一条指令。

4)下一条指令地址为 0x00000040 ,是一条BEQ指令,其测试条件是 两个操作数相等 。
5) 单步执行1条指令。
6) 查看PC的值,[PC]= 0x0000004C ,表明分支 成功 (成功,失败)。
7) 一条指令是一条BGEZ指令,其测试条件是 大于等于零转移 ,目标地址为 0x00000058 。
8) 单步执行1条指令。
9) 查看PC的值,[PC]= 0x00000058 ,表明分支 成功 (成功,失败)。
10) 下一条指令是一条BGEZAL指令,其测试条件是 大于等于零转移并链接 ,目标地址为 0x00000064 。
11) 单步执行1条指令。

12) 查看PC的值,[PC]= 0x00000068 ,表明分支 成功 (成功,失败);查看R31的值,[R31]= 92 。
13) 单步执行1条指令。
14)查看R1的值,[R1]= 116 。
15)下一条指令地址为 0x00000068 ,是一条JALR指令,保存目标地址的寄存器为R1 ,保存返回地址的目标寄存器为R3。
16)单步执行1条指令。

17)查看PC和R3的值,[PC]= 0x00000074 ,[R3]=108 。

三、实验结果分析

实验结果分析
ADDIU : r 8 , r8, r8,r0,124 ADDIU是GPR和立即数做无符号加法操作,但立即数字段是有符号的,所以需要做符号扩展。r8=r0+124
LB r 1 , 0 ( r1,0( r1,0(r8) 从存储器中r8读取一个字节的数据(带符号)到寄存器中r1
LW r 1 , 0 ( r1,0( r1,0(r8) 从存储器中r8读取一个字的数据(不带符号)到寄存器中r1
LBU r 1 , 0 ( r1,0( r1,0(r8) 从存储器中r8读取一个字节的数据(不带符号)到寄存器中r1
ADDIU : r 8 , r8, r8,r0,128 ADDIU是GPR和立即数做无符号加法操作,但立即数字段是有符号的,所以需要做符号扩展。r8=r0+128
SW r 1 , 0 ( r1,0( r1,0(r8):把一个字的数据从寄存器存储到存储器中
BEQ ,$r0, $r0,PROG2:条件转移指令,当两个寄存器内容相等时转移发生
-》》》跳转到PROG2
DADD $r3 $r1 r 2 把 两 个 定 点 寄 存 器 的 内 容 相 加 , 也 就 是 定 点 加 r2 把两个定点寄存器的内容相加,也就是定点加 r2把两个定点寄存器的内容相加,也就是定点加r3 =$r1+ $r2 =128
DMULT $r1 r 2 两 个 定 点 寄 存 器 的 内 容 相 乘 , 也 就 是 定 点 乘 r 1 = 128 r 2 = 0 B E Q , r2 两个定点寄存器的内容相乘,也就是定点乘r1=128 r2 =0 BEQ , r2两个定点寄存器的内容相乘,也就是定点乘r1=128r2=0BEQ,r0, $r0,PROG3:条件转移指令,当两个寄存器内容相等时转移发生
-》》》跳转到PROG3
AND $r3 $r1 r 2 与 运 算 , 两 个 寄 存 器 中 的 内 容 相 与 ( r2 与运算,两个寄存器中的内容相与( r2与运算,两个寄存器中的内容相与(r3=$r1 & $r2) r1=128 r2=0 r3=0 两位同时为“1”,结果才为“1”,否则为0
ANDI $r3 r 10 一 个 寄 存 器 中 的 内 容 与 一 个 立 即 数 相 与 B E Q , r1 0 一个寄存器中的内容与一个立即数相与 BEQ , r10一个寄存器中的内容与一个立即数相与BEQ,r0, $r0,PROG4:条件转移指令,当两个寄存器内容相等时转移发生
-》》》跳转到PROG4
BEQ $r1 r 22 条 件 转 移 指 令 , 当 两 个 寄 存 器 内 容 相 等 时 转 移 发 生 , r2 2 条件转移指令,当两个寄存器内容相等时转移发生, r22条件转移指令,当两个寄存器内容相等时转移发生,r1不等于$r2不发生
SLL $r0 $r0 0 逻辑左移
SLL $r0 $r0 0 逻辑左移
BGEZ $r1 2 跳转指令
-》》》跳转到label2
BGEZAL $r1 2 条件转移指令
-》》》跳转到label3
ADDIU $r1 $r0 116 r1=r0+116=116
JALR $r3 $r1 使用寄存器的跳转指令,并且带有链接功能,指令的跳转地址在寄存器中,跳转发生时指令的放回地址放在R31这个寄存器中
Teq :异常相关指令

四.实验心得

MIPSsim模拟器的基础操作以及使用方法;单步执行,程序的载入,以及配置方式中的流水;熟悉MIPS指令系统;加深对MIPS指令操作语义的理解;并对代码区,寄存器进行了剖析,但是对时钟周期内存这部分理解的还不是很清晰;在以后的实验中解决;思考了LB,字节,字,双字,以及无符号如何查看,以及buffer如何查看内容;然后通过对对代码区中的符号指令进行了自我学习;以及对ARM进行了很好的温习;认识LW,LB,LU,ADDU,ADDIU,SLL,MUL,BEQ,等简单的指令的含义进行了分析;但是仍然存在部分的寄存器值的变化未清楚其详细步骤;在接下来的继续环节中需要弄懂;

实验2:MIPS指令系统和MIPS体系结构相关推荐

  1. 【实验报告】实验一 MIPS指令系统和MIPS体系结构

    文章目录 实验一 MIPS指令系统和MIPS体系结构 实验目的 实验要求 实验内容 实验平台 实验步骤 拓展内容(选做) 实验结果 心得体会 参考资料 实验一 MIPS指令系统和MIPS体系结构 实验 ...

  2. 计算机组成原理mips与arm,计算机组成原理之MIPS指令系统和MIPS体系结构

    一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 模拟器 ...

  3. 计算机组成原理 mips指令,计算机组成原理--MIPS指令的表示

    计算机组成原理--10.5 1.计算机中指令的表示 前言: 指令在计算机内部是用高低电平表示的,并且看上去和数的表示是一样的.实际上,指令的各个部分都可以看成数,将这些数拼在一起就构成了指令.(实际上 ...

  4. MIPS指令以及数据通路

    MIPS指令以及数据通路 MIPS 1字=4字节 1字节=8位 即:1字=32位 每一个时钟周期:IM取指令->译码->ALU执行->DM访存->回写Reg ADDI addi ...

  5. 计算机组成原理学习笔记第5章指令系统 5.5——MIPS指令概述

    有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.MIPS ...

  6. 【Computer Organization笔记10】单周期CPU设计:基于7条MIPS指令的数据通路

    本次笔记内容: P19 计算机组成原理(19) P20 计算机组成原理(20) 本节课对应幻灯片: 组成原理24 singlecycle.pptx 基于上节课的7条MIPS指令的数据通路,分别针对7条 ...

  7. 3.6 MIPS指令简介

    计算机组成 3 指令系统体系结构 3.6 MIPS指令简介 MIPS秉承着指令数量少,指令功能简单的设计理念.那这样的设计理念是如何实现的呢?在这一节,我们就将来分析MIPS指令的特点. 相比于X86 ...

  8. mips的旁路_64位MIPS指令处理器的流水线设计

    1 引言 随着集成电路设计和工艺技术的发展,嵌入式系统(SOC)已经在PDA.机顶盒.手机等信息终端中被广泛应用.他不仅减小了电路尺寸,而且具有成本低廉,可靠性高,功耗低等优点.可以说嵌入式系统是未来 ...

  9. mips j指令_MIPS处理器 MIPS指令集(上)

    目录 引言 MIPS指令集有固定的MIPS指令格式和MIPS指令类型,还有固定的MIPS寄存器,它们是了解MIPS指令必不可少的前提. 其中,寄存器是MIPS处理器高效的临时存储工具,其存取速度极快, ...

最新文章

  1. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)
  2. InfluxDB基本使用说明
  3. 要是不会用数据,算什么IT产品经理?
  4. web.xml详细配置
  5. php7 错误处理,PHP7升级-异常错误处理
  6. php有哪些debug方式,Console有哪些Debug方法
  7. delphi 多个checkbox只能勾选一个_CAD加选无效?不可连续选择多个对象?按下这个键就正常了...
  8. lightning接口_苹果、安卓充电接口有望统一,欧盟重压下,苹果将不得不妥协
  9. 拒绝LOW ---青鸟影院购票系统
  10. 支付宝小程序框架分析
  11. ArcGIS_重分类
  12. C# WinForm中NotifyICon控件的用法
  13. 各国家分析之加拿大安道尔
  14. amd apu战略_添加内存如何显着提高AMD APU的游戏性能?
  15. Codeforces Round #741 (Div. 2) A. The Miracle and the Sleeper
  16. R语言函数-tolower
  17. python中nums[:]和nums
  18. 数据结构之三元组的实现
  19. PHP脚本中的两种换行符的区别
  20. 【CSDN软件工程师能力认证学习精选】Python可视化库

热门文章

  1. 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数
  2. 指向结构体的指针和指向结构体指针的指针
  3. 今日头条用户文章标题及详情页爬取
  4. RTL8370N 8口千兆交换机 PCB图纸方案资料 和芯片的datasheet
  5. 【区块链 | Solidity】Solidity开发教程:用Web3.js构建第一个Dapp
  6. 微信小程序---验证码倒计时
  7. Docker容器——重命名镜像的TAG
  8. linux系统vi替换命令,linux:vi 替换命令
  9. 分享几张大佬程序员常用壁纸,你值得拥有!
  10. Arcgis desktop 10及Arcgis Engine 10破解