MIPS系统指令系统超详细
mips指令集(24条指令)的字段和功能描述
MIPS指令集(24条指令)的字段和功能描述指令集概述M I PS(M ic ro pr oc es s or wi th ou tI nt erl o ck ed Pi pe li ne dSt a ge s)指令集是一种精简指令集(R IS C)体系结构,广泛应用于计算机体系结构的教学和实践中。
本文将介绍M IP S指令集中的24条常用指令,并对它们的字段和功能进行详细描述。
加载和存储指令1.l w指令字段描述:-指令格式:lw$r t,o f fs et($rs)-r s(源寄存器):指定存储单元的基址寄存器-r t(目标寄存器):指定目标寄存器,用于存储从存储单元中加载的数据-o ff se t:用于指定存储单元的偏移量,计算出实际地址功能描述:l w指令用于从存储单元中加载数据到目标寄存器。
它通过基址寄存器和偏移量计算出实际地址,并将存储单元中的数据加载到目标寄存器中。
2.s w指令字段描述:-指令格式:sw$r t,o f fs et($rs)-r s(源寄存器):指定存储单元的基址寄存器-r t(目标寄存器):指定源寄存器,用于存储到存储单元中的数据-o ff se t:用于指定存储单元的偏移量,计算出实际地址功能描述:s w指令用于将源寄存器中的数据存储到指定的存储单元中。
它通过基址寄存器和偏移量计算出实际地址,并将源寄存器中的数据存储到该地址对应的存储单元中。
算术和逻辑指令3.a d d指令字段描述:-指令格式:ad d$rd,$rs,$rt-r s(源寄存器1):参与运算的第一个源寄存器-r t(源寄存器2):参与运算的第二个源寄存器-r d(目标寄存器):用于存储运算结果功能描述:a d d指令用于将两个源寄存器中的数据相加,并将结果存储到目标寄存器中。
4.s u b指令字段描述:-指令格式:su b$rd,$rs,$rt-r s(源寄存器1):参与运算的第一个源寄存器-r t(源寄存器2):参与运算的第二个源寄存器-r d(目标寄存器):用于存储运算结果功能描述:s u b指令用于将源寄存器2中的数据从源寄存器1中的数据减去,并将结果存储到目标寄存器中。
MIPS 指令系统和汇编语言
其中 A1 为目的操作数地址,A2 为源操作数地址。 指令的含义:(A1)OP(A2)→A1。 (3)一地址指令 一地址指令顾名思义只有一个显地址,它的指令格式为: OP A1
一地址指令只有一个地址, 那么另一个操作数来自何方呢?指令中虽未明显给出,但按事 先约定,这个隐含的操作数就放在一个专门的寄存器中。因为这个寄存器在连续性运算时,保 存着多条指令连续操作的累计结果,故称为累加寄存器(AC) 。 指令的含义:(AC)OP(A1)→AC (4)零地址指令 零地址指令格式中只有操作码字段,没有地址码字段,其格式为: OP 零地址的运算类指令仅用在堆栈计算机中的。 堆栈计算机没有一般计算机中必备的通用寄 存器,因此堆栈就成为提供操作数和保存运算结果的唯一场所。通常,参加运算的两个操作数 隐含地从堆栈顶部(栈顶和次栈顶单元)弹出,送到运算器中进行运算,运算的结果再隐含地 压入堆栈中。对于同一个问题,用三地址指令编写的程序最短,但指令长度(程序存储量)最 长;而用二、一、零地址指令来编写程序,程序的长度一个比一个长,但指令的长度一个比一 个短。
作码结构等,是一个很复杂的问题,它与计算机系统结构、数据表示方法、指令功能设计等都 密切相关。
指令的基本格式
一条指令就是机器语言的一个语句, 它是一组有意义的二进制代码, 指令的基本格式如下: 操作码字段 地址码字段
其中操作码指明了指令的操作性质及功能,地址码则给出了操作数的地址。 指令的长度是指一条指令中所包含的二进制代码的位数, 指令长度与机器字长没有固定的 关系,它可以等于机器字长,也可以大于或小于机器字长。通常,把指令长度等于机器字长的 指令称为单字长指令; 指令长度等于半个机器字长的指令称为半字长指令;指令长度等于两个 机器字长的指令称为双字长指令。 在一个指令系统中,若所有指令的长度都是相等的,称为定长指令字结构。定长结构指令 系统控制简单,但不够灵活。若各种指令的长度随指令功能而异,就称为变长指令字结构。现 代计算机广泛采用变长指令字结构,变长结构指令系统灵活,但指令的控制较复杂。 计算机执行一条指令所需要的全部信息都必须包含在指令中。 对于一般的双操作数运算类 指令来说,除去操作码之外,地址码字段中应包含以下信息: 第一操作数地址。 第二操作数地址。 操作结果存放地址。 这些信息可以在指令中明显的给出,称为显地址;也可以依照某种事先的约定,用隐含的 方式给出,称为隐地址。所以,从地址结构的角度可以分为三地址指令、二地址指令、一地址 指令和零地址指令。 (1)三地址指令 三地址指令格式为: OP A1 A2 A3
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)
04MIPS指令系统(1)_447408859
微机原理(计算机原理)第4讲MIPS指令系统(1)1MIPS体系结构概述数据处理指令数据传送指令分支与跳转指令MIPS指令格式第4讲MIPS指令系统(1)MIPS诞生于1980年代,是最早的RISC处理器之一,也是目前销量最好的RISC处理器之一,从游戏机到路由器,再到SGI的超级计算机,都可以看到MIPS CPU 的应用MIPS起源于Stanford大学John Hennessy教授的研究成果。
Hennessy于1984年在硅谷创立了MIPS公司()John L. Hennessy出版了两本著名的教科书:Computer Organization and Design : TheHardware/Software Interface(计算机组成与设计:硬件/软件接口)Computer Architecture : A QuantitativeApproach(计算机体系结构:量化方法)MIPS=Microprocessor without InterlockedPipeline Stages,无互锁流水级的微处理器MIPS的另一个含义是每秒百万条指令——Millions of instructions per secondMIPS体系结构的发展MIPS体系结构经历了以下几代MIPS I——该指令集用于最初的32位处理器,至今仍然很流行,R2000、R3000都是MIPS I的实现MIPS II——MIPS I的升级,最初为R6000定义,失败MIPS III——应用于R4000的64位指令集MIPS IV——MIPS III的升级,应用于R5000和R1000032个通用寄存器可供编程使用:$0~$31,其中$0无论写入什么永远返回0$31被子程序调用指令(“跳转与链接指令”)用来保存返回地址除此以外,所有寄存器都可以在任何指令中以相同方式使用——真正通用通用寄存器的习惯用法和命名寄存器编号助记符用法0zero永远为01at用做汇编器的临时变量2-3v0, v1用于过程调用时返回结果4-7a0-a3用于过程调用时传递参数8-15t0-t7临时寄存器。
MIPS指令系统和MIPS体系结构
ID/EX.IR:_________0x8CC4003C____________________
EX/MEM.ALUo:______0X0000000000000019_____________________
EX/MEM.IR:________0x20030019 _____________________
4)当执行到第13个时钟周期时,各段分别正在处理的指令是:
IF:__BEQ $r1 $r0 ret______________________________
ID:_____LW $r4 60 ($r6)___________________________
EX:______ ADDI $R3 $R0 25__________________________
实验步骤
1)选择MIPSsim的“文件”—>“载入程序”选项来加载pipeline.s(在模拟器所在文件夹下的“样例程序”文件夹中)。
2)关闭定向功能。这是通过“配置”—>“定向”(使该项前面没有√号)来实现的。
3)用单步执行一个周期的方式(在“执行”菜单中)或按F7键执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的Байду номын сангаас行情况(“代码”窗口)以及时钟周期图。
MEM/WB.LMD:____0X000000000000000______
MEM/WB.ALUo:____0X000000000000004______
MEM/WB.IR:______0x2021FFFF________________________
(7)观察和分析结构冲突对CPU性能的影响,步骤如下:
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指令详解
计算机组成原理第五章指令系统5.6 MIPS指令详解1R 型指令000000R s R t shamt R d 6bits funct5bits 5bits 5bits 5bits 6bits R 型指令操作数和保存结果均通过寄存器进行;◆op :操作码,所有R 型指令中都全为0;◆rs :寄存器编号,对应第1个源操作数;◆rt :寄存器编号,对应第2个源操作数;◆rd :寄存器编号,据此保存结果;◆shamt :常数,在移位指令中使用;◆funct :功能码,指定指令的具体功能;1R型指令3寄存器R 型指令■R 型指令存在3种不同类型指令功能:$rd ← $rs op $rt指令[31:26][25:21][20:16][15:11][10:6][5:0]指令功能add 000000rs rt rd 00000100000寄存器加sub 000000rs rt rd 00000100010寄存器减and 000000rs rt rd 00000100100寄存器与or 000000rs rt rd 00000100101寄存器或xor000000rsrtrd00000100110寄存器异或1R 型指令1R型指令2寄存器R型指令指令[31:26][25:21][20:16][15:11][10:6][5:0]指令功能sll00000000000rt rd sa000000逻辑左移srl00000000000rt rd sa000010逻辑右移sra00000000000rt rd sa000011算术右移指令功能:$rd ← $rt shift sajr rs;1寄存器R 型指令指令[31:26][25:21][20:16][15:11][10:6][5:0]指令功能jr000000rs000000000000000001000寄存器跳转1R 型指令PC ← rs◆op :标识指令的操作功能;◆rs :第1个源操作数,是寄存器操作数;◆rt :目的寄存器编号,用来保存运算结果;◆imm :第2个源操作数,立即数;操作数中涉及立即数,结果保存到寄存器;OPRs R t6bits 立即数5bits 5bits 16bitsI 型指令2I 型指令指令[31:26][25:21][20:16][15:0]指令功能addi001000rs rt imm 寄存器和立即数“加”andi 001100rs rt imm 寄存器和立即数“与”ori 001101rs rt imm 寄存器和立即数“或”xori 001110rs rt imm 寄存器和立即数“异或”lw 100011rs rt imm 从存储器中读取数据sw 101011rs rt imm 把数据保存到存储器beq 000100rs rt imm 寄存器相等则转移bne 000101rsrt imm 寄存器不等则转移lui00111100000rt imm设置寄存器的高16位2I 型指令■I 型指令存在4种不同类型 面向运算的I 型指令指令[31:26][25:21][20:16][15:0]指令功能addi 001000rs rt imm 寄存器和立即数“加”andi 001100rs rt imm 寄存器和立即数“与”ori 001101rs rt imm 寄存器和立即数“或”xori001110rsrtimm寄存器和立即数“异或”addi/andi/ori/xorirt, rs, imm; # $rt ← $rs op E(imm)2I 型指令第一条指令是进行符号扩展,其余是0扩展面向访存的I 型指令指令[31:26][25:21][20:16][15:0]指令功能lw 100011rs rt imm 从存储器中读取数据sw 101011rs rt imm 把数据保存到存储器lw rt, imm(rs) # $rt ← mem[$rs+E(imm)]sw rt, imm(rs) # mem[$rs+E(imm)] ←$rtMIPS32中唯一两条访问存储器的指令(RISC)2I 型指令面向数位设置的I 型指令指令[31:26][25:21][20:16][15:0]指令功能lui 00111100000rt imm 设置寄存器的高16位lui rt, imm # $rt ← imm<<16(空位补0)2I 型指令面向条件转移(分支)的I 型指令指令[31:26][25:21][20:16][15:0]指令功能beq000100rs rt imm 寄存器相等则转移bne 000101rs rt imm 寄存器不等则转移beq rs, rt, immbne rs, rt, imm #if($rs==$rt) PC←PC+E(imm)<<2是标准的PC 相对寻址方式其中imm 要先“带符号扩展”成32位,再左移2位。
MIPS指令集及汇编
和R12000(1997年)等型号。 z 随后,MIPS公司把重点放在嵌入式系统。
{ 1999年发布MIPS32和MIPS64架构标准,集成了所有原 来MIPS指令集,并且增加了许多更强大的功能。陆续开发 了高性能、低功耗的32位处理器内核(core)MIPS324Kc 与高性能64位处理器内核MIPS64 5Kc。
{ 应用广泛的32位MIPS CPU包括R2000,R3000 其ISA都是MIPS I,另一个广泛使用的、含有许多 重要改进的64位MIPS CPU R4000及其后续产 品,其ISA版本为MIPS III
一、 MIPS简介
{ 1984年,MIPS计算机公司成立。1992年,SGI收购了 MIPS计算机公司。1998年,MIPS脱离SGI,成为MIPS 技术公司。
龙芯2E笔记本电脑运行 OpenOffice打开Word文档
ቤተ መጻሕፍቲ ባይዱ
二、MIPS体系结构
{ 指令集体系结构类型:寄存器——寄存器型
(1)寄存器的特点 (2)整数乘法单元和寄存器 (3)寻址方式 (4)存储器和寄存器中的数据类型 (5)流水线冒险
二、 MIPS体系结构——(1)寄存器
{ MIPS 包含32个通用寄存器
{ 2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及 64位MIPS 64 20Kc处理器内核。
一、 MIPS简介
{ 基于龙芯2E处理器的千元的PC、1999元的笔记本电脑、 意法半导体3000万元购买龙芯2E 5年的生产和销售权, 国产操作系统内核在龙芯2E上测试成功。
mips的指令集
mips的指令集MIPS指令集是一种常见的计算机指令集架构,广泛应用于大多数工作站、服务器和嵌入式系统中。
本文将介绍MIPS指令集的基本特点、主要指令和应用领域。
一、MIPS指令集的基本特点MIPS指令集采用精简指令集计算机(RISC)的设计理念,以简洁、高效的指令集为特点。
其基本特点包括:1. 定长指令格式:MIPS指令集采用定长指令格式,每条指令占据32位,简化了指令解码过程,提高了指令的执行速度。
2. 加载/存储架构:MIPS指令集采用了加载/存储架构,只有专门的加载和存储指令可以访问内存,其他指令只能对寄存器进行操作,这样可以减少存储器的访问时间,提高了指令的执行效率。
3. 三地址指令格式:MIPS指令集的大多数指令都采用三地址指令格式,即指令中包含三个操作数的寄存器地址,使得指令的操作更加灵活。
二、MIPS指令集的主要指令1. 数据传输指令MIPS指令集提供了一系列数据传输指令,包括加载指令(例如lw、lb等)和存储指令(例如sw、sb等),用于将数据从内存加载到寄存器或将数据从寄存器存储到内存中。
2. 算术逻辑指令MIPS指令集提供了一系列算术逻辑指令,包括加法指令(例如add、addi等)、减法指令(例如sub、subi等)、乘法指令(例如mul、muli等)和逻辑运算指令(例如and、or等),用于进行基本的算术和逻辑运算。
3. 控制指令MIPS指令集提供了一系列控制指令,包括无条件跳转指令(例如j、jr等)、条件跳转指令(例如beq、bne等)和函数调用指令(例如jal、jalr等),用于实现程序的控制流程。
4. 浮点运算指令MIPS指令集还提供了一系列浮点运算指令,包括浮点加法指令(例如add.s)、浮点乘法指令(例如mul.s)和浮点比较指令(例如c.eq.s),用于进行浮点数的运算和比较。
三、MIPS指令集的应用领域由于MIPS指令集具有精简、高效的特点,因此在许多领域得到了广泛的应用,包括:1. 嵌入式系统:MIPS指令集在嵌入式系统中应用广泛,例如智能手机、路由器、数字电视等,这些系统对指令的执行效率和功耗有较高的要求,MIPS指令集正好满足了这些需求。
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中sb指令 -回复
mips中sb指令-回复MIPS,即为“Microprocessor without Interlocked Pipeline Stages”的缩写,是一种常见的32位处理器指令集架构(ISA)。
在MIPS架构中,sb指令是用于将数据存储到内存中的一种重要指令。
在本篇文章中,我们将深入探讨sb指令的功能、使用方法以及它在计算机系统中的作用。
首先,让我们来了解一下sb指令的基本功能。
sb是存储字节(store byte)的缩写。
它用于将一个字节的数据写入内存的指定地址处。
这意味着sb 指令可以通过MIPS处理器将数据存储到内存中的特定位置。
以下是sb 指令的通用格式:sb rt, offset(base)在这个格式中,rt表示一个寄存器,包含要存储的字节数据;offset是基地址寄存器加上一个16位的有符号立即数;而base则是一个寄存器,包含了要存储的内存地址的基址。
最终,sb指令会将rt中的字节数据存储到(base + offset)所确定的内存地址上。
要更好地理解sb指令,让我们通过一个具体的例子来演示其用法。
假设我们有以下MIPS代码:.databyte_data: .byte 0.textmain:li t0, 65sb t0, byte_data在这个例子中,我们首先在.data节中定义了一个字节类型的变量byte_data,并将其初始化为0。
接下来,在.text节中,我们将常数值65加载到寄存器t0中,并指定使用sb指令将寄存器t0中的字节数据存储到字节数据变量byte_data所对应的内存地址上。
要更好地理解sb指令的执行过程,我们需要清楚其内部实现原理。
当MIPS 处理器执行sb指令时,首先它会将寄存器t0中的字节数据复制到内部的数据总线上。
然后,处理器会将内部数据总线上的数据传输到内存中的地址(base + offset)所指定的位置上。
最后,内存单元会将数据写入到目标地址上,并返回一个确认信号给处理器,表示数据已成功存储。
(完整word版)MIPS 指令集
000100
sllv $1,$2,$3
$1=$2<<$3
rdrt << rs;其中rs=$3,rt=$2, rd=$1
srlv
000000
rs
rt
rd
00000
000110
srlv $1,$2,$3
$1=$2>>$3
rdrt >> rs;(logical)其中rs=$3,rt=$2, rd=$1
if($2<10)
$1=1 else
$1=0
if (rs<(zero-extend)immediate) rt=1 else rt=0;其中rs=$2,rt=$1
J-type
op
address
j
000010
address
j 10000
goto 10000
PC(PC+4)[31..28],address,0,0;address=10000/4
andi $1,$2,10
$1=$2 | 10
rtrs | (zero-extend)immediate;其中rt=$1,rs=$2
xori
001110
rs
rt
immediate
andi $1,$2,10
$1=$2 ^ 10
rtrs xor (zero-extend)immediate;其中rt=$1,rs=$2
or
000000
rs
rt
rd
00000
100101
or $1,$2,$3
$1=$2 | $3
rdrs | rt;其中rs=$2,rt=$3, rd=$1
mips32指令格式 -回复
mips32指令格式-回复MIPS,即Microprocessor without Interlocked Pipeline Stages(没有内部互锁流水线级别的微处理器),是一种精简指令集(RISC)体系结构。
MIPS指令格式是指MIPS32指令集中指令的结构和编码规则。
本文将详细介绍MIPS32指令格式,并逐步回答相关问题。
一、MIPS32指令格式概述MIPS32指令格式包括六种基本类型:R类型、I类型、J类型、JAL类型、B类型和Pseudo类型。
每种类型都有其特定的编码格式和使用规则。
1.R类型指令格式R类型指令主要用于寄存器间的操作,如加法、减法和逻辑运算等。
其指令格式如下所示:[opcode] [rs] [rt] [rd] [shamt] [funct]其中,opcode代表操作码,rs代表源寄存器1的编号,rt代表源寄存器2的编号,rd代表目标寄存器的编号,shamt代表位移量,funct代表功能码。
2.I类型指令格式I类型指令主要用于寄存器和立即数之间的操作,如加载、存储和分支等。
其指令格式如下所示:[opcode] [rs] [rt] [immediate]其中,opcode代表操作码,rs代表源寄存器的编号,rt代表目标寄存器的编号,immediate代表立即数。
3.J类型指令格式J类型指令主要用于无条件跳转。
其指令格式如下所示:[opcode] [address]其中,opcode代表操作码,address代表目标地址。
4.JAL类型指令格式JAL类型指令用于有返回地址的跳转。
其指令格式如下所示:[opcode] [address]其中,opcode代表操作码,address代表目标地址。
5.B类型指令格式B类型指令用于条件分支。
其指令格式如下所示:[opcode] [rs] [rt] [offset]其中,opcode代表操作码,rs代表源寄存器1的编号,rt代表源寄存器2的编号,offset代表偏移量。
mips 取数指令
mips 取数指令
MIPS(Microprocessor without Interlocked Pipeline Stages)是
一种经典的计算机指令集架构(ISA),其包含了一些常见的
取数指令。
以下是一些常用的MIPS取数指令:
1. `LW`: 从内存中加载一个字(32位)到寄存器中。
指令格式:LW $rd, $rs, offset。
其中,$rd 是目标寄存器,$rs 是基地址寄
存器,offset 是基地址寄存器的偏移量。
2. `LH`: 从内存中加载一个半字(16位)到寄存器中。
指令格式:LH $rd, $rs, offset。
3. `LB`: 从内存中加载一个字节(8位)到寄存器中。
指令格式:LB $rd, $rs, offset。
4. `LBU`: 从内存中加载一个字节(8位)的无符号数到寄存器中。
指令格式:LBU $rd, $rs, offset。
5. `LUI`: 加载一个立即数到寄存器的高16位,并将低16位置零。
指令格式:LUI $rd, immediate。
其中,$rd 是目标寄存器,immediate 是立即数。
6. `LI`: 将一个32位的立即数加载到寄存器中。
指令格式:LI $rd, immediate。
7. `LA`: 将一个地址加载到寄存器中。
指令格式:LA $rd, label。
其中,$rd 是目标寄存器,label 是要加载的地址标签。
以上是一些常见的MIPS取数指令,可以根据具体的需求选择适合的指令来实现相应的数据加载操作。
01-MIPS指令手册
2、寄存器/寄存器传送: move: 通常用跟$zero 寄存器的 or 来实现,或者用 addu。 movf, movt, movn, movz: 条件传送。
3、常数加载: dla、la: 用来加载程序中某些带标号的位置或者变量的地址的宏指令; dli、li: 装入立即数常数,这是一个宏指令; lui: 把立即数加载到寄存器高位。
(sign-extend)immediate] <- rt ;
=$1
rt=$1,rs=$2
00010
beq
rs rt immediate
0
00010 bne 1 rs rt immediate
00101
slti
rs rt immediate
0
00101 sltiu 1 rs rt immediate
sll、srl、sra:移位。
5、条件设置指令: slt、slti、sltiu、sltu、seq、sge、sle、sne:条件设置。
6、整数乘法、除法和求余数: div、mul、rem 等等。
7、整数乘加(累加): mad 等。
8、加载和存储: lb、ld、ldl、ldr、sdl、sdr、lh、lhu、ll、sc、pref、sb 等操作。
srl $1,$2,10 $1=$2>>10 中 rt=$2, rd=$1
00000 0000
sra
rt
00
rd
sham 00001
t1
sra $1,$2,10 $1=$2>>10
rd <- rt >> shamt ;(arithmetic) 注 意符号位保留 其中 rt=$2, rd=$1
00000
MIPS指令集
$1=0
其中 rs=$2,rt=$1
sltiu $1,$2,10
if($2<10) $1=1 else $1=0
if (rs <(zero-extend)immediate) rt=1 else rt=0 ;
其中 rs=$2,rt=$1
PC
<-
j 10000
goto 10000 (PC+4)[31..28],address,0,0
$1=$2+100
00
其中 rt=$1,rs=$2
00100
addiu
rs rt immediate
1
rt
<-
rs
+
addiu $1,$2,1
$1=$2+100 (zero-extend)immediate ; 其 中
00
rt=$1,rs=$2
00110
andi
rs rt immediate
0
rt
<-
xor
rs rt rd
xor $1,$2,$3 $1=$2 ^ $3
0
00
rt=$3, rd=$1(异或)
00000
0000 10011
rd <- not(rs | rt) ;其中 rs=$2,
nor
rs rt rd
nor $1,$2,$3 $1=~($2 | $3)
0
01
rt=$3, rd=$1(或非)
and
rs rt rd
and $1,$2,$3 $1=$2 & $3
0
00
rd=$1
00000
0000 10010
自-MIPS32指令集(多来源格式整齐)
MIPS32指令集MIPS指令可以分成以下各类:空操作no-op;寄存器/寄存器传输:用得很广,包括条件传输在内;常数加载:作为数值和地址的整型立即数;算术/逻辑指令;整数乘法、除法和求余数;整数乘加;加载和存储;跳转、子程序调用和分支;断点和自陷;CP0功能:CPU控制指令浮点;用户态的受限访问:rdhwr和synci注:64位版本开头以“d”表示,无符号数以“u”结尾,立即数通常以“i”结尾,字节操作以“b”结尾,双字操作以“d”结尾,字操作以“w”结尾1、空操作:nop:相当于sll zero,zero,o,ssnop: equals sll zero,zero,1.这个指令不得与其它指令同时发送,这样就保证了其运行要花费至少一个时钟周期。
这在简单的流水线的CPU上无关紧要,但在复杂些的实现上对于实现强制的延时很有用。
2、寄存器/寄存器传送:move: 通常用跟$zero寄存器的or来实现,或者用addu。
movf, movt, movn, movz: 条件传送。
3、常数加载:dla、la: 用来加载程序中某些带标号的位置或者变量的地址的宏指令;dli、li: 装入立即数常数,这是一个宏指令;lui: 把立即数加载到寄存器高位。
4、算术/逻辑运算:add、addi、dadd、daddi、addu、addiu、daddu、daddiu、dsub、sub、subu:加法指令和减法指令;abs,dabs:绝对值;dneg、neg、negu:取相反数;and、andi、or、ori、xor、nor:逐位逻辑操作指令;drol、rol、ror:循环移位指令;sll、srl、sra:移位。
5、条件设置指令:slt、slti、sltiu、sltu、seq、sge、sle、sne:条件设置。
6、整数乘法、除法和求余数:div、mul、rem等等。
7、整数乘加(累加):mad等。
8、加载和存储:lb、ld、ldl、ldr、sdl、sdr、lh、lhu、ll、sc、pref、sb等操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、指令系统的发展
1、CISC---复杂指令系统计算机 Complex Instruction Set Computer,20世纪60年代后期,随 着IC、LSI、VLSI的出现和发展,计算机硬件成本不断下降,人们热 衷于在指令系统真增加更多的指令和复杂的指令,来提高操作系统的 效率,促使指令系统越来越复杂,这一时期的计算机称为CISC。 2、RISC---精简指令系统计算机 Reduced Instruction Set Computer ,1975年IBM公司开始研 究指令系统的合理性问题,IBM的John Cocke提出精简指令的想法, 本书作者David A. Patterson创造了RISC一词,并定义了其含义,后 来John L. Hennessy带领他在斯坦福的研究小组研制成功MIPS机, 精简指令系统计算机从此诞生并发展起来。
第三章
3.1 概述
指令系统
3.2
3.3 3.4 3.5 3.6
计算机硬件的操作
计算机硬件的操作数 指令的计算机内部表示 决策指令 计算机硬件对过程的支持
3.7
3.8
计算机对字符的处理(略去)
MIPS的其他寻址方式
3.1
概述
Байду номын сангаас
要给计算机硬件直接下命令,就必须使用机器 的语言。机器语言中的“单词”称为指令,其“词 汇表”称为指令集。本章将介绍现实中计算机所使 用的指令集系统。 通过学习机器指令,你会了解到计算机中的 一个重要概念:存储程序(stored-rogram) 着重介绍的是MIPS指令集 ,涉及到MIPS指令的操 作数、指令格式及指令类别
一、指令的基本格式
指令格式,是指令用二进制代码表示的结构形式,通常有 操作码字段和地址码字段组成。操作码表示指令的操作特性和 功能,而地址码通常指定参与操作的操作数的地址,故指令基 本格式如下:
OP A
1、操作码
操作码字段的位数取决于指令系统的规模,例如,只有8条 指令的指令系统,OP字段有3位就够了,如果系统包含32条指令, 则OP字段需要5位操作码。一般来说一个包含n位的操作码能够 表示2n条指令。
指令中---立即数
有些操作数直接与指令存放在一起,称为立即数,而 MIPS中专门设置有一些立即数指令,如addi,slti等。
一、MIPS的寄存器 在MIPS体系结构中,一个寄存器的长度是32位;又称 32位为字长。MIPS体系中的数据字、指令字都是32位。
MIPS寄存器汇编符号记为$s0、$s1、 $s2、$s3 …$s7, 对应编码为:16、17、… 23; 以及$t0、$t1、 $t2、 $t3 …$t7,对应编码为:8、9、… 15。 寄存器和编程语言的变量的一个主要区别是,寄存器数 量有限,现在的计算机中一般是32个。MIPS也只有32个寄 存器。为什么限于32个寄存器? 原因可以从硬件设计的第二条原则找到:
sub
rd, rs, rt
#注释
例3.1 把两个C语言赋值语句编译成MIPS汇编指令 下面这段C语言代码包含5个变量a, b, c, d, e: a = b + c; d = a – e;
【解答】 add a, b, c sub d, a, e
# a=b+c #d=a–e
例 3.2
把一个复杂的 C 语言赋值语句编译成 MIPS 汇 编指令
2、地址码 根据一条指令中有几个操作数地址,可将该指令称为几地 址指令,一般有三地址指令、二地址指令、一地址指令和零地 址指令格式:
OP
OP
A
OP
A1
A2
OP
A1
A2
A3
三、MIPS算术运算指令
1、加法指令 add rd, rs, rt
#注释
①每条指令只执行一个操作,并且有且只有三个变量 ②书写时,每一行只有一条指令,注释放在行尾,由#号引出 ③该指令执行rd=rs+rt的操作 例如:add a, b, c # b + c的和存放在a中
f = (g + h) – (i + j);
【解答】 add t0, g, h # 临时变量t0=g + h的和 add t1, i, j # 临时变量t1=i + j的和 最后做减法,把差放在f中: sub f, t0, t1 # f=t0 - t1的值 完成一个类似于加法的操作需要3个操作数:2个数参与 运算,1个数存放结果。每条指令刚好包含3个操作数,不多 也不少,这是遵循简化硬件的原则,因为操作数的个数不定 的硬件实现比个数固定的硬件实现复杂得多。这就是硬件设 计要考虑的第一条原则: 设计原则1:简单性来自规则性。(Simplicity favors regularity. )
3.3
计算机硬件的操作数
计算机硬件的操作数放在什么地方? cpu的寄存器(register) 中---寄存器操作数
寄存器是建造计算机的基石,因为它们是硬件设计中用到 的基本单元,对于程序员也是可见的,但其数量有限。
存储器中---存储器操作数
复杂数据结构,如数组、结构体等包含大量数据元素,不 可能映射到数量有限的寄存器上,只能存储到存储器中。
其中 add称操作符, 表示加运算;紧跟add的a是目的操作 数, 即为结果,其余b、c表示源操作数。每条指令中由 “#” 号领头的部分是注释。
例如: 计算 a=b+c+d+e;
add a,b,c add a,a,d add a,a,e 2、减法指令 # b + c的和存放在a中 # b + c + d的和已存放在a中 # b + c + d + e的和已存放在a中
三、MIPS简介
1、处理器的缩写 ① Million Instruction Per Second,泛指每秒能执行百万条指令的处理器 ② Microprocessor without Interlocking Pipeline Stage, 一种无内锁的流水线微处理器 2、MIPS公司
3.2
计算机硬件的操作指令
二、RISC的特点
1、优先选取一些使用频率最高的简单指令,以及一些很有用但不 复杂的指令,避免复杂指令。 2、指令长度固定,指令格式种类少,寻址方式种类少,指令各字 段的划分比较一致,各字段功能较规整。
3、只有存数、取数指令访问存储器,其余指令的操作都在寄存器 之间进行。
4、CPU中通用寄存器数量较多。