计算机组成原理实验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 :$r8,$r0,128    ADDIU是GPR和立即数做无符号加法操作,但立即数字段是有符号的,所以需要做符号扩展。r8=r0+124}

 

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

  1. 单步执行一条指令(F7)。

  1. 查看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指令,其测试条件是 >>=0     ,目标地址为   0x00000058        

 8) 单步执行1条指令。

    9) 查看PC的值,[PC]=   0x00000058        ,表明分支 成功    (成功,失败)。

10) 下一条指令是一条BGEZAL指令,其测试条件是 >>=0    ,目标地址为  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 :$r8,$r0,124   ADDIU是GPR和立即数做无符号加法操作,但立即数字段是有符号的,所以需要做符号扩展。r8=r0+124

LB $r1,0($r8) 从存储器中r8读取一个字节的数据(带符号)到寄存器中r1

LW $r1,0($r8) 从存储器中r8读取一个字的数据(不带符号)到寄存器中r1

LBU $r1,0($r8) 从存储器中r8读取一个字节的数据(不带符号)到寄存器中r1

ADDIU :$r8,$r0,128    ADDIU是GPR和立即数做无符号加法操作,但立即数字段是有符号的,所以需要做符号扩展。r8=r0+128

SW $r1,0($r8):把一个字的数据从寄存器存储到存储器中

BEQ ,$r0, $r0,PROG2条件转移指令,当两个寄存器内容相等时转移发生

-》》》跳转到PROG2

DADD $r3 $r1 $r2 把两个定点寄存器的内容相加,也就是定点加$r3 =$r1+ $r2 =128

DMULT $r1 $r2  两个定点寄存器的内容相乘,也就是定点乘r1=128 r2 =0

BEQ ,$r0, $r0,PROG3条件转移指令,当两个寄存器内容相等时转移发生

-》》》跳转到PROG3

AND $r3 $r1 $r2 与运算,两个寄存器中的内容相与($r3=$r1 & $r2) r1=128 r2=0 r3=0 两位同时为“1”,结果才为“1”,否则为0

ANDI   $r3 $r1 0 一个寄存器中的内容与一个立即数相与

BEQ ,$r0, $r0,PROG4:条件转移指令,当两个寄存器内容相等时转移发生

-》》》跳转到PROG4

BEQ $r1 $r2 2 条件转移指令,当两个寄存器内容相等时转移发生,$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,等简单的指令的含义进行了分析;但是仍然存在部分的寄存器值的变化未清楚其详细步骤;在接下来的继续环节中需要弄懂;

发布了21 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40662239/article/details/103256006