MIPS16e指令执行步骤20100409 二
mips汇编指令手册
MIPS汇编指令手册是一本详细介绍MIPS架构下汇编语言的书籍。
它包含了所有MIPS处理器支持的指令,以及这些指令的具体用法和示例。
首先,我们需要了解什么是MIPS架构。
MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,由斯坦福大学开发。
它的设计理念是简单、清晰和易于实现,这使得它在嵌入式系统和教育领域得到了广泛的应用。
在MIPS汇编指令手册中,我们可以看到各种类型的指令,包括数据传输指令、算术逻辑指令、控制流指令等。
每种指令都有其特定的格式和操作数,例如,数据传输指令通常包括一个源操作数和一个目标操作数,而算术逻辑指令则可能有一个或多个操作数。
在编写MIPS汇编程序时,我们需要遵循一定的规则。
首先,我们需要使用正确的指令格式。
其次,我们需要确保我们的程序没有语法错误。
最后,我们需要确保我们的程序能够正确地执行我们想要的操作。
在实际操作中,我们可以使用MIPS汇编器来编译我们的程序。
MIPS汇编器会将我们的汇编代码转换为机器代码,然后我们可以将这个机器代码加载到MIPS处理器上运行。
总的来说,MIPS汇编指令手册是学习和使用MIPS汇编语言的重要工具。
通过阅读和理解这本书,我们可以掌握MIPS汇编语言的基本知识和技能,从而能够编写出高效、可靠的MIPS 汇编程序。
mips基础指令
mips基础指令MIPS(Microprocessor without Interlocked Pipeline Stages)是一种高性能的RISC(Reduced Instruction Set Computing)指令集架构,其指令集被广泛应用于工业控制、嵌入式系统、服务器等领域。
MIPS指令集的特点是指令精简、寄存器丰富、执行效率高。
本文将主要介绍MIPS基础指令,帮助初学者快速入门。
一、MIPS基础指令结构MIPS指令的格式为“操作码r1,r2,r3”,其中操作码指示了该指令的功能,而r1、r2、r3分别指定了指令所需的操作数,通常为寄存器或常数。
以下是MIPS指令的分类:1.算术指令算术指令主要包括加、减、乘、除等指令,其中最基本的指令为ADD指令,格式为“ADD r1,r2,r3”,表示将r2和r3的值相加,存放到r1中。
其他的算术指令根据功能的不同,指定相应的操作码。
2.逻辑指令逻辑指令主要包括与、或、非、异或等指令,同样地,最基本的指令为AND指令,格式为“AND r1,r2,r3”,表示将r2和r3的值进行与运算,存放到r1中。
其他的逻辑指令根据功能的不同,指定相应的操作码。
3.移位指令移位指令主要包括逻辑左移、逻辑右移以及算术右移等指令,其中最基本的指令为SLL指令,格式为“SLL r1,r2,n”,表示将r2的值向左移动n位,空出的低位用0填充,存放到r1中。
其他的移位指令根据功能的不同,指定相应的操作码。
4.存取指令存取指令主要包括读、写、加载等指令,其中最基本的指令为LOAD指令,格式为“LOAD r1,addr”,表示将存储在addr地址中的数据加载到r1中。
其他的存取指令根据功能的不同,指定相应的操作码。
5.分支指令分支指令主要包括BZ(分支为零)、BC(分支为给定条件)、J(无条件跳转)等指令,其中最基本的指令为JUMP指令,格式为“JUMP addr”,表示将程序的控制跳转到addr地址处。
c语言 mips指令
c语言 mips指令MIPS指令集是一种32位精简指令集(RISC)体系结构,它在计算机体系结构领域具有非常广泛的应用。
在编写C语言程序时,通常需要将高级语言的代码转化为MIPS指令集的汇编代码。
以下是一些关于C语言和MIPS指令集的相关参考内容,其中不包含链接的详细解释:1. C语言的数据类型映射到MIPS指令集的寄存器:- int类型通常映射到整数寄存器($t0-$t9)- float类型通常映射到浮点寄存器($f0-$f31)- char类型通常也映射到整数寄存器,但需要使用指令来执行字节操作2. C语言的条件语句(if-else语句)在MIPS指令集中的实现: - 使用比较指令(比如"slt", "sltu")将两个操作数进行比较- 根据比较的结果,使用分支指令(比如"beq", "bne", "j")跳转到不同的代码块- 可以使用标签(label)来标记不同的代码块,以便跳转3. C语言的循环语句(for循环、while循环)在MIPS指令集中的实现:- 使用比较指令判断循环条件,如果条件满足,则执行循环体内的指令- 在循环体内执行相应的操作,包括更新循环变量的值- 使用分支指令(比如"beq", "bne", "j")跳转到循环开头或循环结束的位置4. C语言的函数调用和参数传递在MIPS指令集中的实现:- 使用特殊的寄存器(比如$ra、$fp、$sp)来保存函数的返回地址、帧指针和栈指针- 将函数参数保存在寄存器或者栈中,并在函数内部使用它们- 使用分支指令跳转到函数的入口,执行函数体内的指令- 使用jr指令返回到调用函数的位置5. C语言中的数组和指针在MIPS指令集中的实现:- 使用基址寄存器(比如$gp)和偏移量来访问数组的元素- 使用la指令加载数组的地址到寄存器,使用lw和sw指令进行读取和存储操作- 使用指针变量保存地址,进行间接寻址操作6. C语言中的结构体和联合体在MIPS指令集中的实现:- 结构体和联合体的成员通常按照顺序在内存中排列- 使用指令来访问结构体和联合体的成员,比如使用lb和sb指令加载和存储字节型成员这些参考内容可以帮助程序员理解在C语言程序中,各种语法和语义对应着MIPS指令集的实现方式。
MIPS常用指令
寄存器的内容到另外一个寄存器
根据地址向量转入管态
从异常中返回到用户态
一个双精度浮点数与单精度浮点数相乘加,
结果为单精度
一个双精度浮点数与单精度浮点数相乘加, 结果为双精度
两个单精度浮点数相乘加,结果为单精度
两个定点寄存器的内容相除,也就是定点除 DDIV R1,R2,R3
不带符号的除法运算
DDIVU R1,R2,R3
一个双精度浮点数除以一个单精度浮点数, DIV.S F1,F2,F3 结果为单精度浮点数
一个双精度浮点数除以一个单精度浮点数, DIV.D F1,F2,F3
结果为双精度浮点数
两个单精度浮点数相除,结果为单精度
把一个数据从定点寄存器复制到浮点寄存器 MFC1 R1,F1
把一个数据从浮点寄存器复制到定点寄存器 MTC1 R1,F1
把一个 16 位的立即数填入到寄存器的高 16 LUI R1,#42
位,低 16 位补零
双字逻辑左移
DSLL R1,R2,#2
双字逻辑右移
DSRL R1,R2,#2
双字算术右移
DSRA R1,R2,#2
结果为双精度浮点数
两个单精度浮点数相乘,结果为单精度浮点 DMUL.PS F1,F2,F3
数
与运算,两个寄存器中的内容相与
ANDR1,R2,R3
一个寄存器中的内容与一个立即数相与
ANDIR1,R2,#3
或运算,两个寄存器中的内容相或
ORR1,R2,R3
一个寄存器中的内容与一个立即数相或
ORIR1,R2,#3
功能与 LB 指令相同,但读出的是不带符号的 LBU R1, 0(R2)
数据
功能与 LH 指令相同,但读出的是不带符号的 LHU R1, 0(R2)
mips基础指令
mips基础指令【最新版】目录1.MIPS 简介2.MIPS 基础指令的分类3.MIPS 基础指令的寻址方式4.MIPS 基础指令的示例与解释正文MIPS(Machine Independent Programming System) 是一种基于RISC(Reduced Instruction Set Computer) 架构的处理器指令集。
与CISC(Complex Instruction Set Computer) 架构相比,RISC 架构的特点是指令集简单、每个指令执行的时间固定、且大部分指令可以在一条时钟周期内完成。
MIPS 基础指令包括以下几类:1.移动指令:将数据从一个寄存器移动到另一个寄存器或者内存地址中。
2.算术指令:包括加法、减法、乘法和除法等基本算术运算。
3.逻辑指令:包括位运算和逻辑运算。
4.跳转指令:用于改变程序的执行流程,包括条件跳转和无条件跳转两种。
5.调用和返回指令:用于实现子程序的调用和返回。
MIPS 基础指令的寻址方式包括以下几种:1.寄存器寻址:直接使用寄存器中的地址。
2.立即数寻址:直接使用指令中的立即数。
3.内存寻址:使用内存地址作为操作数的来源。
4.相对寻址:使用寄存器中的地址与指令中的偏移量相加得到操作数的地址。
5.基址寻址:使用基址寄存器中的地址与指令中的偏移量相加得到操作数的地址。
6.索引寻址:使用寄存器中的地址与指令中的索引值相加得到操作数的地址。
以下是一些 MIPS 基础指令的示例与解释:1.移动指令:将寄存器$t0 中的数据移动到寄存器$t1 中。
指令:move $t1, $t02.算术指令:将寄存器$t0 中的数据加上寄存器$t1 中的数据,并将结果存储在寄存器$t2 中。
指令:add $t2, $t0, $t13.逻辑指令:将寄存器$t0 中的数据与寄存器$t1 中的数据进行按位与运算,并将结果存储在寄存器$t2 中。
指令:and $t2, $t0, $t14.跳转指令:如果寄存器$t0 中的值为 0,则跳转到地址 0x1000 处执行指令;否则继续执行下一条指令。
MIPS指令单周期CPU设计
Data memory
rd rs rt
Register File
PC
执行步骤(3/5)
instruction memory
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory 5. Register Write
– 将结果写入目的寄存器
需要保存的值
– PC、寄存器组、存储器
二、典型指令的数据通路
ADDU and SUBU – addu rd,rs,rt
31 op 6 bits 31 op 6 bits 26 rs 5 bits 26 rs 5 bits 21 rt 5 bits 21 rt 5 bits 16 immediate 16 bits 16 rd 5 bits 11 6 shamt 5 bits funct 6 bits 0 0
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory5. Register Write
Phase 1: Instruction Fetch (IF)
– Fetch 32-bit instruction from memory – Increment PC (PC = PC + 4)
Data memory
rd rs rt
Register File
PC
执行步骤(2/5)
instruction memory
ALU
MUX
MIPS指令学习二
MIPS指令学习⼆1、MIPS寻址⽅式 MIPS架构的寻址模式有寄存器寻址、⽴即数寻址、寄存器相对寻址和PC相对寻址4种,其中寄存器相对寻址、PC相对寻址介绍如下:1.1、寄存器相对寻址 这种寻址模式主要被加载/存储指令使⽤,其对⼀个16位的⽴即数进⾏符号扩展,然后与指定通⽤寄存器的值相加,从⽽得到有效地址。
通⽤寄存器GRP + 16位⽴即数做符号扩展 = 有效地址1.2、PC相对寻址 这种寻址模式主要被转移指令使⽤。
在转移指令中有⼀个16位的⽴即数,将其左移2位并进⾏符号扩展,然后与程序计数器PC的值相加,可得到有效地址。
程序计数器PC + 16位⽴即数左移2位并做符号扩展 = 有效地址2、MIPS指令集2.1、MIPS指令特点MIPS固定4字节指令长度。
内存中的数据访问(load/store)必须严格对齐(⾄少4字节对齐)。
跳转指令只有26位⽬标地址,加上2位对齐位,可寻址28位寻址空间,即256MB。
条件分⽀指令只有16位跳转地址,加上2位对齐位,共18位寻址空间,即256KB。
MIPS默认不把⼦函数的返回地址(就是调⽤函数的受害指令地址)存放到栈中,⽽是存放到$31($ra)寄存器中,这对那些叶⼦函数(在函数中不再调⽤其他函数的函数)有利。
如果遇到嵌套函数,有其他机制处理。
流⽔线效应。
MIPS采⽤了⾼度的流⽔线,其中⼀个最重要的效应就是分⽀延迟效应。
在分⽀跳转语句后⾯的那条语句叫做分⽀延迟槽。
实际上,在程序执⾏到分⽀语句时,当它刚把要跳转到的地址填充好(填充到代码计数器⾥),还没有完成本条指令时,分⽀语句后⾯的那个指令就已经执⾏了,其原因就是流⽔线效应 ---- ⼏条指令同时执⾏,只是处于不同的阶段。
流⽔线效应: mov $a0, $s2 jalr strrchr move $a0, $s0 在执⾏第2⾏跳转分⽀时,第3⾏的move指令已经执⾏完了。
因此,在上⾯指令序列中,strrchr函数的参数来⾃第3⾏的$s0,⽽不是第1⾏的$s2。
MIPS-16指令流程表
WB REG[rz]=C REG[rz]=C T=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C REG[rx]=C T=C T=C REG[rx]=C REG[rx]=C IH=C REG[rx]=C SP=C WB REG[rx]=C REG[rx]=C SP=C REG[rx]=C REG[ry]=DR REG[rx]=DR
REG[rx]=C T=C T=C T=C WB
A=RA A=REG[rx]
PC=A C=PC PC=A
RA=C
0 7
0 6
0 0 5 4 3 imm imm imm imm imm 0 0
imm 2 1
0
IF
IR<MEM[PC] 0 0 0 PC<-PC+1
0
01 1
0 0
1 1
0
0 0 rx
0 1
0 1
1 0
0 0
0 0
0 0
0 0
0 0
ID A=REG[rx],B=REG[ry] A=REG[rx],B=REG[ry] A=REG[rx],B=REG[ry] B=REG[ry] A=REG[rx],B=REG[ry] A=REG[rx],B=REG[ry] B=REG[ry] A=REG[rx],B=REG[ry] B=REG[ry] A=REG[rx],B=REG[ry] B=REG[ry] A=REG[rx],B=REG[ry] B=REG[ry] A=REG[rx],B=REG[ry] A=REG[rx],B=REG[ry] A=REG[rx],B=REG[ry] A=IH A=REG[rx] B=REG[ry] A=REG[rx] ID A=REG[rx] B=REG[ry] A=SP A=SP A=REG[rx] A=SP A=REG[rx] A=SP A=SP A=REG[rx] A=REG[rx] A=REG[rx] ID C=se-imm+PC A=REG[rx] A=REG[rx] C=se-imm+PC C=se-imm+PC C=se-imm+PC A=REG[rx]
MIPS指令系统(2010-4-22)资料
Page
8
加立即数
常数相加指令
g = g + 4; Lw $t0, 0($s3) add $s1,$s1,$t0 # $t0=4 # g=g+4 (in MIPS)
注释
(in C) $s3=Address(4)
立即数相加指令
addi $s3,$s3,4
指令 实例
add $s1,$s2,$s3
32 registers in MIPS
$0, $1, $2, … $30, $31
Page 4
32个MIPS寄存器
寄存器编号 0 1 2~3 4~7 MIPS助记符 $Zero $at $v0~$v1 $a0~$a3 释义 固定值为0 汇编器保留 函数调用返回值 函数调用参数 4个参数 备注 硬件置位
MIPS指令系统
TANZHIHU
汇编语言 CPU主要工作:执行指令
指令是CPU执行最主要的操作
不同类型的CPU执行不同指令集
Instruction Set Architecture (ISA). Intel 80x86 (Pentium 4), IBM/Motorola PowerPC (Macintosh), MIPS, Intel IA64, ...
8~15
16~23 24~25
$t0~$t7
$s0~$s7 $t8~$t9
暂存寄存器
通用寄存器 暂存寄存器
8个参数
调用之前需保存 2个
26~27 28
29 30 31
$k0~$k1 $gp
$sp $fp $ra
操作系统保留 全局指针
堆栈指针 帧指针 函数返回地址
Page
MIPS系统操作规程
MIPS系统操作规程MIPS系统,是分行SWIFT通讯系统,用于总、分行间SW1FT报文交换。
为保证系统运行安全,根据《银行SW1FT 系统运行管理办法》,特制定本操作规程。
一、部门职责(-)分行科技部门负责规划和配置本行MIPS系统运行主机设备、通讯设备,保证通讯畅通,负责本行MIPS系统软件安装、运行维护,实施升级改造,备份和保存业务数据。
(二)分行国际业务部负责本行MIPS系统的应用管理。
二、岗位设置MIPS系统设置系统管理员、系统维护员、业务操作员和密押员四类岗位。
各岗位职责遵照《银行SW1FT系统运行管理办法》相关规定执行。
三、用户管理(-)系统管理员是系统内设的两个专门用于用户和权限管理的超级用户,帐号分别为rOOtO1,rootO2,系统管理员由分行国际业务部总经理书面指定。
(二)MIPS系统用户和权限管理须由两名系统管理员双人复核方可生效。
(三)MIPS系统维护员、业务操作员和密押员由系统管理员根据分行国际业务部主管总经理的书面指令在系统内建立。
(四)分行系统管理员、系统维护员和密押员名单、联系地址和联系方式须上报总行国际业务部,如有变动,应及时通知总行。
(五)用户和权限管理遵照《银行SWIFT系统运行管理办法》相关规定执行。
四、运行管理(-)分行MIPS系统运行管理应遵守省域数据中心安全生产管理规定。
(二)MIPS系统主机要专机专用,由系统维护员负责管理。
MIPS服务器、BIBS进出报文接口的机器等重要主机设备,需设开机密码。
(三)所有工作人员都有责任爱护设备,严禁违反规定操作。
运行中出现异常情况,业务操作员应及时上报,并通知系统维护员进行故障排除。
(四)主机设备原则上7义24小时开通。
如有特殊情况,需要关闭M1PS通讯,业务操作员要及时通知系统维护人员准时关机,以免发生操作事故,并及时上报总行。
(五)应建立运行日志,记录每日系统运行情况和漏报、发报异常、错回执、总行发送至分行却未转入BIBS系统的DaiIyRePort报文情况及其他非正常情况。
mips 指令格式及功能
mips 指令格式及功能
MIPS指令格式分为三种类型:R型、I型和J型,分别用于表示寄存器操作、立即数操作和跳转操作。
R型指令格式为:op rd, rs, rt,其中op为操作码,rd为目标寄存器,rs和rt为源寄存器。
R型指令主要用于寄存器的操作,如加减乘除、逻辑运算等。
I型指令格式为:op rt, rs, imm,其中op为操作码,rt为目标寄存器,rs为源寄存器,imm为立即数。
I型指令主要用于立即数的操作,如加载数据、存储数据、分支、比较等。
J型指令格式为:op addr,其中op为操作码,addr为跳转地址。
J型指令主要用于跳转操作,如无条件跳转、寄存器间接跳转等。
MIPS指令的功能多种多样,包括算术运算、逻辑运算、加载存储操作、分支跳转等。
其中,常用的指令包括:
1. 加减运算指令:add、addu、sub、subu等。
2. 逻辑运算指令:and、or、xor、nor等。
3. 移位指令:sll、srl、sra等。
4. 比较指令:slt、sltu、seq、sne等。
5. 加载存储指令:lw、sw、lb、sb等。
6. 分支指令:beq、bne、blez、bgtz等。
7. 跳转指令:j、jal、jr等。
8. 其他指令:syscall、nop等。
总之,MIPS指令集丰富多彩,可以满足各种计算需求,是计算
机体系结构中重要的一部分。
mips汇编指令手册
mips汇编指令手册摘要:一、概述MIPS汇编指令手册二、MIPS汇编指令的基本结构1.指令格式2.操作码和操作数3.寄存器文件三、数据传输指令1.加载和存储指令2.寄存器间的数据传输四、算术和逻辑指令1.加法和减法指令2.乘法和除法指令3.逻辑指令五、移位和位操作指令1.移位指令2.位操作指令六、条件跳转和分支指令1.无条件跳转指令2.条件跳转指令3.分支指令七、循环指令1.循环开始和结束指令2.循环计数指令八、调用和返回指令1.调用指令2.返回指令九、中断和异常处理指令1.中断指令2.异常处理指令十、系统调用指令1.系统调用指令概述2.常用系统调用举例正文:一、概述MIPS汇编指令手册MIPS(Microprocessor without Interlocking Protection Structures)是一种精简指令集计算机(RISC)架构,广泛应用于嵌入式系统和处理器设计。
MIPS汇编指令手册提供了详细的指令集和编程指南,帮助开发者更好地使用MIPS处理器。
本文将简要介绍MIPS汇编指令的基本结构和分类,以供参考。
二、MIPS汇编指令的基本结构1.指令格式MIPS汇编指令采用固定长度的指令格式,包括操作码和操作数。
操作码表示指令的类型,操作数表示指令处理的数据。
2.操作码和操作数MIPS汇编指令的操作码和操作数分为两类:立即数和寄存器。
立即数直接参与运算,而寄存器表示要从寄存器文件中操作的数据。
3.寄存器文件MIPS处理器具有31个通用寄存器,分为两组:一组是30个32位寄存器(X0-X29),另一组是1个32位通用寄存器(PC)。
三、数据传输指令数据传输指令主要用于在内存和寄存器之间传输数据。
1.加载和存储指令加载指令(LDR)将内存中的数据加载到寄存器中,存储指令(STR)将寄存器中的数据存储到内存中。
2.寄存器间的数据传输寄存器间的数据传输可以通过指令如:MOV、CMP等实现。
mips 取数指令
mips 取数指令MIPS(Microprocessor without Interlocked Pipeline Stages)是一种RISC (Reduced Instruction Set Computer,精简指令集计算机)架构,广泛应用于嵌入式系统和高性能计算领域。
在MIPS架构中,取数指令(Load Instructions)用于从内存中取出数据,供计算和操作使用。
本文将详细介绍MIPS中的取数指令。
一、MIPS取数指令的基本分类在MIPS架构中,取数指令主要分为两类:立即数取数和寄存器取数。
1. 立即数取数立即数取数指令(Immediate Load Instructions)用于将一个立即数加载到寄存器中。
MIPS架构提供了多种立即数取数指令,包括:- LUI(Load Upper Immediate)指令:将一个16位的立即数左移16位后加载到寄存器中。
- ADDI(Add Immediate)指令:将一个16位的立即数与寄存器中的值相加后加载到寄存器中。
- ANDI(And Immediate)指令:将一个16位的立即数与寄存器中的值进行逻辑与操作后加载到寄存器中。
2. 寄存器取数寄存器取数指令(Register Load Instructions)用于将内存中的数据加载到寄存器中。
MIPS架构提供了多种寄存器取数指令,包括:- LW(Load Word)指令:从内存中加载一个字(32位数据)到寄存器中。
- LH(Load Halfword)指令:从内存中加载半字(16位数据)到寄存器中。
- LB(Load Byte)指令:从内存中加载一个字节(8位数据)到寄存器中。
二、MIPS取数指令的使用方法在MIPS汇编语言中,使用取数指令的一般格式如下:指令助记符目标寄存器,偏移量(基址寄存器)其中,指令助记符表示具体的取数指令,目标寄存器表示加载数据后存放数据的寄存器,偏移量表示相对于基址寄存器的偏移地址。
mips汇编指令手册
mips汇编指令手册摘要:1.MIPS 汇编指令手册简介2.MIPS 汇编指令的分类3.MIPS 汇编指令的寻址方式4.MIPS 汇编指令的指令集5.MIPS 汇编指令的应用领域正文:1.MIPS 汇编指令手册简介MIPS 汇编指令手册是一本详细描述MIPS(Microprocessor without Interlocked Pipeline Stages,无锁流水线处理器)指令集的参考书。
MIPS 汇编指令手册包含了MIPS 处理器能够理解和执行的所有指令,以及这些指令的格式、功能和寻址方式等内容。
对于计算机体系结构和汇编语言程序设计等相关领域的研究者和开发者来说,MIPS 汇编指令手册是一本非常重要的参考资料。
2.MIPS 汇编指令的分类MIPS 汇编指令可以分为三类:(1)存储器指令:这类指令主要用于对存储器进行读写操作,包括加载(load)和存储(store)指令。
(2)算术逻辑指令:这类指令主要用于执行各种算术和逻辑运算,包括加法、减法、乘法、除法等运算指令,以及与、或、非等逻辑运算指令。
(3)转移指令:这类指令主要用于控制程序的执行流程,包括条件跳转、无条件跳转、循环等指令。
3.MIPS 汇编指令的寻址方式MIPS 汇编指令的寻址方式主要有以下几种:(1)直接寻址:指令中直接给出操作数的地址。
(2)间接寻址:指令中给出操作数的地址的地址,需要通过两次访问存储器才能获取到操作数。
(3)寄存器寻址:指令中给出操作数在寄存器中的名字。
(4)立即寻址:指令中直接给出操作数,操作数紧跟在指令后面。
4.MIPS 汇编指令的指令集MIPS 汇编指令集包含了大量的指令,这里列举一些常见的指令:(1)加载指令:load(2)存储指令:store(3)算术运算指令:add、sub、mul、div(4)逻辑运算指令:and、or、not(5)转移指令:jmp、jz、jnz、循环指令等5.MIPS 汇编指令的应用领域MIPS 汇编指令广泛应用于计算机体系结构、操作系统、编译原理等领域。
MIPS16e指令执行步骤20100409----二PPT课件
WriteREG
110
rx
选
N1 寄
A
择
存
寄 存
ry
N2 器
器
堆
rz
选 ND REG
择
SP (即R6)
B 寄
REGin
存
器
0123
Immed
扩展
三
0
态
1
ALUsrcB ALUsrcA
PC
1
0
2
0
1 1 0 2
IH
ALUop
A
Z
A L U
B
R
0
比
较
器
T
C 寄 存 器
移 位 电 路
A、B IR_op
sa
运算器由寄存器组REG、算逻单元ALU组成,还用到4个专用寄存器A、B、D、C、H, 分别用于存从REG、MEM取出的数据、 ALU结果、中断编码;SP:堆栈指针,T: 触发器。
整机有主存储器和串口,其地址来自PC 或 C,写入数据来自寄存器B、A 或 RA,读出 的指令存IR,数据存DR;串口采用与主存统一编址方式处理,需要用到片选、读写命令。
立即数类型的指令,有2个寄存器和立即数运算、传送 (含存储器读写) 的指令, 和1个寄存器和立即数运算、比较的指令
ADDIU3 rx ry immed
15~11=08, 4~0=0 immed
ry← rx + S_e(immed)
ADDIU rx immed
15~11=09, 7~0=immed
rx← rx + S_e(immed)
运算器
总线
内部总线 ib
.
clock reset ir time_cyc ( 用于显示 ) mio reg we
自行设计16位MIPS指令集
Immediate[4:0] xxxxxபைடு நூலகம்xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx
批注本地保存成功开通会员云端永久保存去开通
Idealink student's laboratorial Cpu verion 1. Instruction set:MIPS(16 bits amended form) Instruction format: R-Type IC opcode[15:11] rs[10:8] rt[7:5] rd[4:2] 010000 add xxx xxx xxx xxx xxx xxx addu 010000 sub 10000 xxx xxx xxx subu 10000 xxx xxx xxx sll 11000 xxx xxx NULL slt 11000 xxx xxx NULL srl 11000 xxx xxx NULL srt xxx 11000 xxx NULL and xxx xxx xxx 11100 or 11100 xxx xxx xxx nor 11100 xxx xxx xxx xxx xxx xxx xor 11100 I-Type IC opcode[15:11] rs[10:8] rt[7:5] Immediate[ beq 01001 xxx xxx bneq 01010 xxx xxx addiu 01011 xxx xxx subiu 01100 xxx xxx jr 01101 xxx NULL sw 01110 xxx xxx lw 01111 xxx xxx J-Type IC opcode[15:11] address[10:0] HTL 00000 NULL j 00001 xxxxxxxxxxx jal 00010 xxxxxxxxxxx jr 00011 NULL[10:3]:rs[2:0] Register format & adress name address $zero 000 $t0 001 $t1 010 $t2 011 $s0 100 $s1 101 $s2 110 111 $fp\sp NULL $cs NULL $zs $ra NULL
MIPS指令集(共31条)
注意:因为MIPS16只有16个16位的寄存器,所以JAL指令中$31改成$15, 所有立即数均无需扩展,LUI指令直接就是将立即数付给RT寄存器。
$1=0
if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1
sltu
000000
rs
rt
rd
00000
101011
sltu $1,$2,$3
if($2<$3)
$1=1 else
$1=0
if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1
goto PC+4+40
if (rs != rt) PC <- PC+4 + (sign-extend)immediate<<2
slti
001010
rs
rt
immediate
slti $1,$2,10
if($2<10)
$1=1 else
$1=0
if (rs <(sign-extend)immediate) rt=1 else rt=0 ;
PC <- rs
I-type
op
rs
rt
immediate
addi
001000
rs
rt
immediate
addi $1,$2,100
$1=$2+100
rt <- rs + (sign-extend)immediate ;其中rt=$1,rs=$2
addiu
001001
MIPS基本指令和寻址方式
MIPS基本指令和寻址方式MIPS 基本指令和寻址方式:MIPS 是典型的RISC 处理器,采用32位定长指令字,操作码字段也是固定长度,没有专门的寻址方式字段,由指令格式确定各操作数的寻址方式。
MIPS 指令格式一般有三种格式: R-型指令格式 I-型指令格式 J-型指令格式R _Type 指指指指26211611631OP :操作码rs :第一个源操作数寄存器rt :第二个源操作数寄存器(单目原数据)rd :结果寄存器shamt :移位指令的位移量 func :指令的具体操作类型特点:R-型指令是RR 型指令,其操作码OP 字段是特定的“000000”,具体操作类型由func字段给定。
例如:func=“100000”时,表示“加法”运算。
R[rd] ← R[rs] + R[rt]I _Type 指指指指2621163115特点:I-型指令是立即数型指令双目运算: R[rt] R[rs](OP )SignExt(imm16) Load 指令:Addr ← R[rs] + SignExt(imm16) 计算数据地址 (立即数要进行符号扩展) R[rt] ← M[Addr] 从存储器中取出数据,装入到寄存器中Store 指令:Addr ← R[rs] + SignExt(imm16) M[Addr] ← R[rt]J _Type 指令格式26316bit26bit25特点:J-型指令主要是无条件跳转指令,将当前PC 的高4位拼上26位立即数,后补两个“0”,作为跳转目标地址。
j L //goto L 指指指指指指指指指jal L //$ra 指PC+4;goto L 指指指指指指指指指R 型指令:定点运算: add / addu , sub / subu , sra , mult/multu ,div/divu 逻辑运算: and / or / nor , sll / srl 比较分支: beq / bne / slt / sltu 跳转指令: jrI 型指令:定点运算: addi / addiu 逻辑运算: andi / ori 比较分支: slti / sltiu数据传送: lw / sw / lhu / sh / lbu / sb / luiJ 型指令: j / jal设计模块划分,教学安排1、MIPS格式指令系统设计2、存储器设计3、寄存器堆设计4、ALU设计——基本算术、逻辑单元的设计32位超前进位加法器的设计32位桶式移位寄存器的设计5、取指令部件的设计6、单周期处理器设计——R型指令的数据通路设计I型指令的数据通路设计Load/Store指令的数据通路设计分支指令/转移指令的数据通路设计综合12条指令的完整数据通路设计7、控制单元设计8、单周期处理器总体验证9、异常和中断处理及其电路实现10、带有异常和中断处理功能的处理器的设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PC←(PC) + 1
A ←reg [rx] B ←reg [ry] A ←reg [rx] B ←reg [ry]
PC←? (PC)+imm (rx)比较 比较(ry) 比较 或比较 imm, 设置T的值 设置 的值 IH ← (rx) 数据计算、传送、 数据计算、传送、 移位并保存结果 到C 数据计算、传送、 数据计算、传送、 移位等 并保存结果到 C 写内存 或 读内存内容到 D REG ← C
扩展 Immediate 三态门
3
IH
数据总线 Clock
A、B IR_op sa
001
011
010
Sif
Sid
Sexe
其他指令
100
101
Swb lw,lw_sp
cmp,cmpi b, bteqz stl,stlu,slti btnez, jrra sltui,jr,jrjr beqz,bnez
Smem sw,sw_sp,sw_ra
MIPS16e 多周期 CPU 指令执行步骤
reg[rx]←reg[rx] or reg[ry]
RR型指令 (OR):取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 型指令 :取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 取指: 内容送到主存地址 读主存, 接收从主存读出的指令内容 内容送到主存地址, 接收从主存读出的指令内容; 取指:PC内容送到主存地址,读主存,IR接收从主存读出的指令内容; PC←(PC)+1; 读寄存器组并暂存: 编号读出寄存器组中2个数据 个数据, 寄存器; 读寄存器组并暂存:用 rx 和 ry 编号读出寄存器组中 个数据,分别暂存到 A、B寄存器; 、 寄存器 ALU执行计算并暂存结果:A、B 内容送 执行计算并暂存结果: 、 内容送ALU输入端,ALU执行或运算,结果送 C; 输入端, 执行或 执行计算并暂存结果 输入端 执行 运算, ; 结果写回寄存器组: 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。 结果写回寄存器组:C 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。
典型指令的格式、 典型指令的格式、编码与功能汇总表
序号 指令格式 指令编码 指令功能 寄存器类型的指令, 寄存器类型的指令,有3地址、有2地址、有1地址这样3种不同的格式 地址、 地址、 地址这样3 1 2 3 4 5 ADDU rx ry rz OR rx ry 15~11=1c, 1~0=01 15~11=1d, 4~0=0c 15~11=1d, 4~0=0A 15~11=1d, 7~0=40 15~11=06, 1~0=00, 4-2是 sa 是 rz←rx + ry rx← rx | ry if (rx= ry) T=0, 否则 =1 0 1 rx← PC rx← ry<<8 if sa=0 否则 rx← ry<< sa (L)
各类指令在不同周期需要完成的功能
周期 指令类型 转移指令_1 转移指令 取指周期 Sif IR←MEM [PC] 译码周期 Sid
(PC)+imm PC←? 或 RA
执行周期 Sexe
访存周期 Smem
写回周期 Wb
转移指令_2 转移指令 设置T值的 设置 值的 指令 MTIH 指令 R型指令 型指令
MIPS16e 多周期 CPU 系统硬件组成
控制器由程序计数器PC、指令寄存器 、节拍发生器Timing、控制单元 组成,还用 组成, 控制器由程序计数器 、指令寄存器IR、节拍发生器 、控制单元CU组成 保存程序断点) 控制器选用硬连线的、多指令周期方案实现。 到 RA (保存程序断点 。控制器选用硬连线的、多指令周期方案实现。 保存程序断点 运算器由寄存器组REG、算逻单元 组成, 个专用寄存器A、 、 、 、 , 运算器由寄存器组 、算逻单元ALU组成,还用到 个专用寄存器 、B、D、C、H, 组成 还用到4个专用寄存器 分别用于存从REG、MEM取出的数据、 ALU结果、中断编码;SP:堆栈指针,T: 触发器。 取出的数据、 结果、 堆栈指针, 触发器。 分别用于存从 、 取出的数据 结果 中断编码; 堆栈指针 整机有主存储器 串口,其地址来自PC 或 C,写入数据来自寄存器 、A 或 RA,读出 主存储器和 整机有主存储器和串口,其地址来自 ,写入数据来自寄存器B、 , 采用与主存统一编址方式处理, 的指令存IR,数据存DR;串口采用与主存统一编址方式处理 需要用到片选、读写命令。 的指令存 ,数据存 ;串口采用与主存统一编址方式处理,需要用到片选、读写命令。 系统中还有完成数据来源选择、数据长度扩展、数据移位和三态输出控制功能的电路。 系统中还有完成数据来源选择、数据长度扩展、数据移位和三态输出控制功能的电路。
MIPS16e ]+reg[ry]
RRR型指令 (ADDU):取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 型指令 :取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 取指: 内容送到主存地址 读主存, 接收从主存读出的指令内容 内容送到主存地址, 接收从主存读出的指令内容; 取指:PC内容送到主存地址,读主存,IR接收从主存读出的指令内容; PC←(PC)+1; 读寄存器组并暂存: 编号读出寄存器组中2个数据 个数据, 寄存器; 读寄存器组并暂存:用 rx 和 ry 编号读出寄存器组中 个数据,分别暂存到 A、B寄存器; 、 寄存器 ALU执行计算并暂存结果:A、B 内容送 执行计算并暂存结果: 、 内容送ALU输入端,ALU执行加法运算,结果送 C; 输入端, 执行加法运算, 执行计算并暂存结果 输入端 执行加法运算 ; 结果写回寄存器组: 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。 结果写回寄存器组:C 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。
把指令的执行过程划分成5 把指令的执行过程划分成5 个步骤,分别是: 个步骤,分别是:取指周期 Sif, 译码周期 Sid, 执行周期 Sexe, 存储器读写周期 Smem, 数据写 回周期Swb。不同类型的指令 。 回周期 个步骤中完成 在2-5个步骤中完成。 个步骤中完成。
部件之间的信号传递关系 左侧大虚线框内部分在FPGA芯片内部实现, 芯片内部实现, 左侧大虚线框内部分在 芯片内部实现 右侧的3个电路在印制电路板上 个电路在印制电路板上。 右侧的 个电路在印制电路板上。
BNEZ rx immed JR JRRA rx
JRLR rx
MIPS16e 多周期 CPU 系统指令执行步骤
指令地址 节拍发生器 Timing
WritePC ALUop IODR 译码器 电路 WriteIR ALUsrcB
是否转移的条件信号Z
控制部件 CU
WriteREG MEM toREG SE REGds A 寄 存 器
MIPS16e 多周期 CPU 指令执行步骤
reg[ry]←reg[rx] + S-e(immed)
RRI型 (ADDIU3)指令:取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 型 指令: 指令 取指、读寄存器组并暂存、执行计算并暂存结果、结果写回寄存器组。 取指: 内容送到主存地址 读主存, 接收从主存读出的指令内容 内容送到主存地址, 接收从主存读出的指令内容; 取指:PC内容送到主存地址,读主存,IR接收从主存读出的指令内容; PC←(PC)+1; 读寄存器组并暂存: 编号读出寄存器组中2个数据 个数据, 寄存器; 读寄存器组并暂存:用 rx 和 ry 编号读出寄存器组中 个数据,分别暂存到 A、B寄存器; 、 寄存器 ALU执行计算并暂存结果:A、S-e(immed) 送ALU输入端,ALU执行加法运算,结果送 C; 执行计算并暂存结果: 、 输入端, 执行加法运算, 执行计算并暂存结果 输入端 执行加法运算 ; 结果写回寄存器组: 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。 结果写回寄存器组:C 的内容送寄存器组数据写入端,还要提供写入寄存器的编号和写命令。
I型指令 型指令
访存指令
计算内存地址并 保存到 C
REG ←D
MIPS16e 多周期 CPU 指令执行步骤
在Sif周期完成读取指令的功能 Sif周期完成读取指令的功能
1、欲读指令的地址在PC中,PC的内容送存储器地址引脚,读主存,读出的指令内容送 ; 、欲读指令的地址在 中 的内容送存储器地址引脚, 的内容送存储器地址引脚 读主存,读出的指令内容送IR; 2、PC的内容加 ,得到顺序执行时的下一条指令的地址,这是经过 、 的内容加 的内容加1,得到顺序执行时的下一条指令的地址,这是经过ALU部件完成的,计算的 部件完成的, 部件完成的 结果保存回PC中 结果保存回 中。
ALUsrcA
T
IO、MEM 、 控制命令
A
RA 0 1 2
串 行 口
IR
指 令 内 容
PC
1
rx ry
A A L U B
Z C 寄 存 器 R
rz
选 择
寄 存 N2 器 堆 ND REG N1 REGin
0
0
PC
1
存 A 储 D 器
D 寄 存 器
B 寄 存 器
0 1 0 2 1 移 位 电 路
1 2 0
CMP rx ry MFPC rx SLL rx ry sa
立即数类型的指令, 含存储器读写) 立即数类型的指令,有2个寄存器和立即数运算、传送 (含存储器读写 的指令, 个寄存器和立即数运算、 含存储器读写 的指令, 个寄存器和立即数运算、 和1个寄存器和立即数运算、比较的指令 6 7 8 9 10 11 12 13 14 ADDIU3 rx ry immed ADDIU rx immed CMPI rx immed LW rx ry immed 15~11=08, 4~0=0 immed 15~11=09, 7~0=immed 15~11=1e, 7~0=immed 15~11=13, 4~0=immed ry← rx + S_e(immed) rx← rx + S_e(immed) if (rx=immed) T=1,否=0 , ry←Mem(rx+S_eimmed)