MIPS Instruction Set (MIPS指令集)

合集下载

mips lwl用法

mips lwl用法

mips lwl用法MIPS LWL用法MIPS指令集架构(MIPS Instruction Set Architecture)是一种被广泛应用于嵌入式系统和计算机体系结构教学的RISC指令集架构。

其中,MIPS的LWL指令可以在特定的内存地址中加载一个16位的字,同时在寄存器中存储32位的字。

以下是LWL指令的用法及详细讲解。

LWL指令的基本形式LWL指令的基本形式如下:LWL Rt, offset(base)•LWL:指令操作码,表示进行加载一个字(32位)的操作。

•Rt:目标寄存器,用于存储加载的32位字。

•offset:偏移量,表示要加载的字在base寄存器所指向的内存地址的偏移量。

•base:基址寄存器,用于存储要加载的字所在的内存地址。

LWL指令的功能LWL指令将指定内存地址中的一个16位字与目标寄存器中的相应字节进行合并。

具体而言,LWL指令将加载的16位字的高字节填充到目标寄存器的低字节位置,而目标寄存器的高字节则保持不变。

LWL指令的示例下面是一些LWL指令的示例,以帮助理解其用法:1.加载内存地址为$s1 + 8的16位字,存储到$t1寄存器中:LWL $t1, 8($s1)这条指令将从内存地址为$s1 + 8的字中加载一个16位的字并扩展为32位,然后将其保存到$t1寄存器中。

2.加载内存地址为$a0 + 4的16位字,存储到$s2寄存器中:LWL $s2, 4($a0)这条指令将从内存地址为$a0 + 4的字中加载一个16位的字并扩展为32位,然后将其保存到$s2寄存器中。

3.加载内存地址为$t2 + 12的16位字,存储到$a1寄存器中:LWL $a1, 12($t2)这条指令将从内存地址为$t2 + 12的字中加载一个16位的字并扩展为32位,然后将其保存到$a1寄存器中。

总结LWL指令是MIPS指令集架构中的一条重要指令,用于在特定的内存地址中加载一个16位的字并存储到寄存器中。

mips指令集指的是什么

mips指令集指的是什么

mips指令集指的是什么MIPS是高效精简指令集计算机(RISC)体系结构中最优雅的一种;即使连MIPS的竞争对手也这样认为,这可以从MIPS对于后来研制的新型体系结构比如DEC的Alpha和HP的Precision产生的强烈影响看出来。

虽然自身的优雅设计并不能保证在充满竞争的市场上长盛不衰,但是MIPS微处理器却经常能在处理器的每个技术发展阶段保持速度最快的同时保持设计的简洁。

MIPS与MIPS指令集指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。

拥有这些指令集,CPU就可以更高效地运行。

MIPS指令集属于精简指令集,MIPS 的所有指令都是32位,指令格式简单,而X86的指令长度不是固定的。

简单的指令和格式易于译码和流水线操作,但是代码密度不高,导致二进制文件大。

低端的CPU物理面积只有1.5平方毫米(在SOC系统里面肉眼很难找到)。

而高端的R10000处理器,第一次投放市场时可能是世界上最快的CPU,它的物理面积几乎有1平方英寸,发热近30瓦特。

虽然MIPS看起来没什么优势,但是足够的销售量使其能健康发展:1997年面市的44M的MIPS CPU,绝大多数使用于嵌入式应用领域。

MIPS(Million InstrucTIons Per Second):单字长定点指令平均执行速度Million InstrucTIons Per Second的缩写,每秒处理的百万级的机器语言指令数。

这是衡量CPU速度的一个指标。

像是一个Intel80386 电脑可以每秒处理3百万到5百万机器语言指令,即我们可以说80386是3到5MIPS的CPU。

MIPS只是衡量CPU性能的指标。

MIPS是世界上很流行的一种RISC处理器。

MIPS的意思无内部互锁流水级的微处理器(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。

计算机体系结构:MIPS指令集 北大计算机系

计算机体系结构:MIPS指令集 北大计算机系
32 bits of data 32 bits of data 32 bits of data 32 bits of data
Registers hold 32 bits of data
°232 bytes with byte addresses from 0 to 232-1 °230 words with byte addresses 0, 4, 8, ... 232-4 °Words are aligned i.e., what are the least 2 significant bits of a word address?
北京大学计算机科学技术系
北京大学微处理器研究开发中心
Our First Example
°Can we figure out the code?
swap(int v[], int k); { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp; }
Assume:
bne $t0, $t1, Label beq $t0, $t1, Label °Example: if (i==j) h = i + j;
bne $s0, $s1, Label add $s3, $s0, $s1 Label: ....
$s1 = $s2 + $s3 $s1 = $s2 - $s3 $s1 = Memory[$s2+100] Memory[$s2+100] = $s1
北京大学计算机科学技术系
北京大学微处理器研究开发中心
Machine Language
°Instructions, like registers and words of data, are also 32 bits long • Example: add $t0, $s1, $s2 • registers have numbers, $t0=9, $s1=17, $s2=18 °Instruction Format:

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地址处。

基于MIPS的嵌入式实时控制系统开发

基于MIPS的嵌入式实时控制系统开发

基于MIPS的嵌入式实时控制系统开发本文将探讨一种基于MIPS的嵌入式实时控制系统开发的方法。

MIPS指指令集架构(MIPS Instruction Set Architecture),是一种经典的RISC (Reduced Instruction Set Computing,精简指令集计算) CPU架构。

在本文中,我们将介绍如何利用MIPS架构来开发一个满足实时控制需求的嵌入式系统。

1. 总体设计思路嵌入式实时控制系统的主要任务是控制外部设备的状态,同时确保一个严格的实时响应时间。

由于嵌入式设备的资源有限,我们需要考虑如何在有限的资源下实现高效的实时控制。

在本文中,我们将使用MIPS架构的处理器作为嵌入式系统的核心,并采用Linux操作系统作为基础。

我们将利用Linux的实时扩展模块,在保证系统实时性的前提下,提高系统的可扩展性和可维护性。

我们还将采用一些优秀的外设控制器,并使用硬件加速技术来提高系统的响应速度。

2. 选择MIPS架构处理器在嵌入式系统的处理器选择上,MIPS架构是一个不错的选择。

MIPS架构采用精简指令集,指令单元的长度固定为32位,这些特性使得MIPS处理器的运算速度非常快。

此外,MIPS架构设计非常精简,可以在有限的资源下实现高效的系统开发。

3. 选择Linux操作系统Linux操作系统是一个非常成熟的开源操作系统,它具有可定制性高、易维护、性能优异等优势。

除此之外,Linux还具有丰富的内核库、文件系统和驱动程序,这些都为实时控制系统的开发提供了很好的基础。

4. 利用Linux实时扩展模块提高系统响应速度要使嵌入式实时控制系统具备实时性,我们需要实时响应硬件设备状态的变化。

由于Linux是一个非实时操作系统,因此我们需要利用实时扩展模块来提高系统的响应速度。

实时扩展模块一般通过在内核中添加可动态加载的模块来实现。

对于处理实时应用程序的需求,通常会使用实时内核补丁或者实时Linux系统。

mips-instrction

mips-instrction

MIPS 指令集(共31条)助记符指令格式示例示例含义操作及其解释Bit # 31..26 25..21 20..16 15..11 10..6 5..0R-type op rs rt rd shamt funcadd 000000 rs rt rd 00000 100000 add$1,$2,$3$1=$2+$3rd <- rs + rt ;其中rs=$2,rt=$3, rd=$1addu 000000 rs rt rd 00000 100001 addu$1,$2,$3$1=$2+$3rd <- rs + rt ;其中rs=$2,rt=$3, rd=$1,无符号数sub 000000 rs rt rd 00000 100010 sub$1,$2,$3$1=$2-$3rd <- rs - rt ;其中rs=$2,rt=$3, rd=$1subu 000000 rs rt rd 00000 100011 subu$1,$2,$3$1=$2-$3rd <- rs - rt ;其中rs=$2,rt=$3, rd=$1,无符号数and 000000 rs rt rd 00000 100100 and$1,$2,$3$1=$2 & $3rd <- rs & rt ;其中rs=$2,rt=$3, rd=$1or 000000 rs rt rd 00000 100101 or$1,$2,$3$1=$2 | $3rd <- rs | rt ;其中rs=$2,rt=$3, rd=$1xor 000000 rs rt rd 00000 100110 xor$1,$2,$3$1=$2 ^ $3rd <- rs xor rt ;其中rs=$2,rt=$3, rd=$1(异或)nor 000000 rs rt rd 00000 100111 nor$1,$2,$3$1=~($2 |$3)rd <- not(rs | rt) ;其中rs=$2,rt=$3, rd=$1(或非)slt 000000 rs rt rd 00000 101010 slt$1,$2,$3if($2<$3)$1=1 else$1=0if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1sltu 000000 rs rt rd 00000 101011 sltu$1,$2,$3if($2<$3)$1=1 else$1=0if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1(无符号数)sll 000000 00000 rt rd shamt 000000 sll$1,$2,10$1=$2<<1rd <- rt << shamt ;shamt存放移位的位数,也就是指令中的立即数,其中rt=$2, rd=$1srl 000000 00000rtrd shamt 000010srl $1,$2,10 $1=$2>>10 rd <- rt >> shamt ;(logical) ,其中rt=$2, rd=$1sra 000000 00000 rtrd shamt 000011 sra $1,$2,10 $1=$2>>1rd <- rt >> shamt ;(arithmetic) 注意符号位保留其中rt=$2, rd=$1 sllv 000000 rs rtrd 00000 000100sllv $1,$2,$3 $1=$2<<$3 rd <- rt << rs ;其中rs =$3,rt=$2, rd=$1 srlv 000000 rs rt rd 00000 000110srlv $1,$2,$3 $1=$2>>$3 rd <- rt >> rs ;(logical)其中rs =$3,rt=$2, rd=$1srav 000000 rs rtrd 00000 000111 srav $1,$2,$3 $1=$2>>$3rd <- rt >> rs ;(arithmetic) 注意符号位保留其中rs =$3,rt=$2, rd=$1jr 000000 rs 00000 00000 00000 001000 jr $31 goto $31 PC <- rs I-typeoprsrtimmediateaddi 001000 rs rt immediateaddi $1,$2,100 $1=$2+10rt <- rs + (sign-extend)immediate ;其中rt=$1,rs=$2 addiu 001001 rs rt immediateaddiu $1,$2,100 $1=$2+10rt <- rs + (zero-extend)immediate ;其中rt=$1,rs=$2 andi 001100 rs rt immediateandi $1,$2,10 $1=$2 & 10rt <- rs & (zero-extend)immediate ;其中rt=$1,rs=$2ori 001101 rs rt immediateandi $1,$2,10$1=$2 | 10 rt <- rs | (zero-extend)immediate ;其中rt=$1,rs=$2 xori 001110 rs rt immediateandi $1,$2,10$1=$2 ^ 10 rt <- rs xor (zero-extend)immediate ;其中rt=$1,rs=$2 lui 001111 00000 rt immediatelui $1,100$1=100*65536 rt <- immediate*65536 ;将16位立即数放到目标寄存器高16位,目标寄存器的低16位填0lw 100011 rs rt immediate lw $1,10($2)$1=memory[$2+10]rt <- memory[rs + (sign-extend)immediate] ;rt=$1,rs=$2sw 101011 rs rt immediate sw $1,10($2)memory[$2+10]=$1memory[rs + (sign-extend)immediate] <- rt ;rt=$1,rs=$2beq 000100 rs rt immediate beq $1,$2,10if($1==$2)goto PC+4+40if (rs == rt) PC <- PC+4 +(sign-extend)immediate<<2bne 000101 rs rt immediate bne $1,$2,10if($1!=$2)goto PC+4+40if (rs != rt) PC <- PC+4 +(sign-extend)immediate<<2slti 001010 rs rt immediate slti$1,$2,10if($2<10)$1=1 else$1=0if (rs <(sign-extend)immediate)rt=1 else rt=0 ;其中rs=$2,rt=$1sltiu 001011 rs rt immediate sltiu$1,$2,10if($2<10)$1=1 else$1=0if (rs <(zero-extend)immediate)rt=1 else rt=0 ;其中rs=$2,rt=$1J-type op addressj 000010 address j 10000 goto 10000 PC <-(PC+4)[31..28],address,0,0 ;address=10000/4jal 000011 address jal 10000 $31<-PC+4;goto 10000$31<-PC+4;PC <-(PC+4)[31..28],address,0,0;address=10000/4。

MIPS指令系统和汇编语言

MIPS指令系统和汇编语言

MIPS指令系统和汇编语言MIPS(Microprocessor without Interlocked Pipeline Stages)指令系统,是一种以RISC(Reduced Instruction Set Computer,精简指令集计算机)为基础的处理器架构。

作为一种广泛应用于嵌入式系统和计算机组成的指令集架构,MIPS指令系统以其简洁高效的特性而受到广泛关注和应用。

一、MIPS指令系统概述MIPS指令系统的设计目标之一是提高处理器的性能,并降低设计的复杂性。

它采用了统一的指令格式,包括操作码、源操作数以及目的操作数等字段,使得指令的译码和执行过程更加高效。

此外,MIPS的指令集还支持延迟槽、流水线和分支延迟等特性,以进一步提升指令执行的效率。

二、MIPS指令格式MIPS指令格式遵循统一的规则,包括三种基本类型的指令格式:R 型、I型和J型指令。

R型指令主要用于寄存器之间的操作,包括算术运算、逻辑运算等;I型指令用于立即数和寄存器之间的操作,涵盖了数据传输、分支跳转等功能;J型指令主要用于无条件跳转。

三、MIPS指令编码和寻址方式MIPS指令采用固定长度的指令编码格式,使得指令的解析和处理更加高效。

在寻址方面,MIPS支持多种寻址方式,包括立即寻址、寄存器寻址和间接寻址等。

这些灵活的寻址方式使得MIPS指令更加适用于不同的计算需求。

四、MIPS汇编语言MIPS汇编语言是一种用于编写MIPS指令的低级语言。

它是一种基于文本的表示形式,使用助记符来表示不同的指令和操作。

MIPS汇编语言具有简单易学的特性,更加接近底层硬件的工作原理,使得程序员可以更加精准地控制和优化程序的执行过程。

五、MIPS指令系统的应用由于MIPS指令系统的优越性能和灵活性,它被广泛应用于各种领域。

在嵌入式系统中,MIPS处理器可以实现高性能和低功耗的设计,广泛应用于智能手机、路由器、电视机等设备中。

在计算机组成和操作系统领域,MIPS指令系统被用于讲解和研究计算机的工作原理和底层机制。

自行设计16位MIPS指令集

自行设计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 Instruction Set (MIPS指令集)

MIPS Instruction Set (MIPS指令集)

MIPS InstructionsNote: You can have this handout on both exams.Instruction Formats : Instruction formats: all 32 bits wide (one word):6 5 5 5 5 6+--------+--------+-------+-------+------+--------+ R-type format| Op-code| R s | R t | R d | SA |Funct-code | +--------+--------+-------+-------+------+--------+ 6 5 5 16 +--------+--------+-------+------------------------+ I-type format|Op-code | R s | R t | 2’s complement constant| +--------+--------+-------+------------------------+ 6 26 +--------+-----------------------------------------+ J-type format| Op-code| jump_target | +--------+-----------------------------------------+ ^ ^ | | bit 31 bit 0 Instructions and their formatsGeneral notes: a. R s , R t , and R d specify general purpose registers b. Square brackets ([]) indicate “the contents of” c. [PC] specifies the address of the instruction in execution d. I specifies part of instruction and its subscripts indicate bit positions of sub-fields e. || indicates concatenation of bit fields f. Superscripts indicate repetition of a binary value g. M{i} is a value (contents) of the word beginning at the memory address i h. m{i} is a value (contents) of the byte at the memory address i i. all integers are in 2’s complement representation if not indicated as unsigned 1. addition with overflow: add instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] + [R t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add R d ,R s ,R t2. add without overflow: addu instructionIdentical as add instruction, except: - funct=33dec - overflow ignored 3. subtract with overflow: sub instruction+--------+-------+------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100010 | +--------+-------+------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] - [R t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: sub R d ,R s ,R t 4. subtract without overflow: subu instructionIdentical as sub instruction, except: - funct=35dec - overflow ignored 5. multiply: mul instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | 00000 | 00000 | 011000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction:Hi||Lo <-- [R s ] * [R t ]; PC <-- [PC] + 4 Assembly format: mult R s ,R t 6. unsigned multiply: mulu instructionIdentical as mut instruction, except: - funct = 25dec - contents of R s and R t are considered as unsigned integers 7. divide: div instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | 00000| 00000 | 011010 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: Lo <-- [R s ] / [R t ]; Hi <-- [R s ]mod[R t ] PC <-- [PC] + 4 Assembly format: div R s ,R t 8. unsigned divide: divu instructionIdentical as div instruction, except: - funct = 27dec - contents of R s and R t are considered as unsigned integers9. set less than: slt instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 101010 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: if [R s ] < [R t ] then R d <-- 031 || 1 else R d <-- 032; PC <-- [PC] + 4 Assembly format: slt R d ,R s ,R t 10. set less than unsigned: sltu instructionIdentical as slt instruction, except: - funct = 43dec - contents of R s and R t are considered as unsigned integers. 11. logical and: and instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100100 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] AND [R t ]; PC <-- [PC] + 4 Assembly format: and R d ,R s ,R t 12 - 14. logical or, n or & exclusive or: or , nor , & xor instructions Identical as and instruction, except: - funct=37dec for or instruction - funct=39dec for nor instruction - funct=40dec for xor instruction - appropriate logical function performed instead of logical and 15. addition immediate with overflow: addi instruction+--------+-------+-------+-----------------------+ I-type format:| 001000 | R s | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- [R s ] + ([I 15]16 || [I 15..0]); PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: addi R t ,R s ,immediate 16. addition immediate without overflow: addiu instruction Identical as addi instruction, except: - op-code=9dec - overflow ignored17. set less than immediate: slti instruction+--------+-------+-------+-----------------------+ I-type format: | 001010 | R s | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] < ([I 15]16 || [I 15..0]) then R t <-- 031|| 1 else R t <-- 032 PC <-- [PC] + 4 Assembly format: slti R t ,R s ,immediate 18. set less than immediate unsigned: sltiu instructionIdentical as slti instruction, except: - op-code = 11dec - contents in the comparison are considered as unsigned integers. 19. logical and immediate: andi instruction+--------+-------+-------+-----------------------+ I-type format:| 001100 | R s | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- [R s ] AND (016 || [I 15..0]); PC <-- [PC] + 4 Assembly format: andi R t ,R s ,immediate 20-21. logical or immediate & xor immediate: ori , & xori instr. Identical as andi instruction, except: - op-code=13dec for ori instruction - op-code=14dec for xori instruction - appropriate logical function performed instead of logical and 22. load word : lw instruction+--------+-------+-------+-----------------------+ I-type format: | 100011 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- M{[R s ] + [I 15]16 || [I 15..0]} PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: lw R t ,offset(R s ) 23. store word : sw instruction+--------+-------+-------+-----------------------+ I-type format: | 101011 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: M{[R s ] + [I 15]16 || [I 15..0]} <-- [R t ] PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: sw R t ,offset(R s )24. load unsigned byte : lbu instruction+--------+-------+-------+-----------------------+ I-type format: | 100100 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- 024 || m{[R s ] + [I 15]16 || [I 15..0]} PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: lbu R t ,offset(R s ) 25. load byte : lb instructionIdentical as lbu instruction, except: - leftmost 24 bits of R t are loaded by a value of leftmost bit of the byte instead of zeros - op-code =32dec 26. store byte : sb instruction+--------+-------+-------+-----------------------+ I-type format: | 101000 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: m{[R s ] + [I 15]16 || [I 15..0]} <-- [R t ]7..0 PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: sb R t ,offset(R s ) 27. load upper immediate: lui instruction+--------+-------+-------+-----------------------+ I-type format: | 001111 | 00000 | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- [I 15-0] || 016; PC <-- [PC] + 4 Assembly format: lui R t ,immediate 28. branch on equal: beq instruction+--------+-------+-------+-----------------------+ I-type format: | 000100 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] = [R t ] then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) (i.e. PC <-- [PC] + 4 + 4*offset) else PC <-- [PC] + 4 Assembly format: beq R s ,R t ,offset29. branch on not equal: bne instruction+--------+-------+-------+-----------------------+ I-type format: | 000101 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] <> [R t ] then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) else PC <-- [PC] + 4 Assembly format: bne R s ,R t ,offset 30. branch on less than or equal zero: blez instruction+--------+-------+-------+-----------------------+ I-type format: | 000110 | R s | 00000 | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] < 0 then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) Assembly format: blez R s ,offset 31. branch on greater than zero: bgtz instruction+--------+-------+-------+-----------------------+ I-type format: |000111 | R s | 00000 | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] > 0 then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) else PC <-- [PC] + 4 Assembly format: bgtz R s ,offset 32. branch on less than zero: bltz instruction+--------+-------+-------+-----------------------+ I-type format: |000001 | R s | 00000 | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] < 0 then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) else PC <-- [PC] + 4 Assembly format: bltz R s ,offset 33. jump: j instruction+--------+-----------------------------------------+ J-type format|000010 | jump_target | +--------+-----------------------------------------+ Effects of the instruction: PC <-- [PC 31..28] || [I 25..0] || 02Assembly format: j jump_target34. jump and link: jal instruction+--------+-----------------------------------------+ J-type format|000011 | jump_target | +--------+-----------------------------------------+ Effects of the instruction: R 31 <-- [PC] + 4 PC <-- [PC 31..28] || [I 25..0] || 02Assembly format: jal jump_target 35. jump register: jr instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | 00000 | 00000 | 00000 | 001000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: PC <-- [R s ] Assembly format: jr R s 36. jump and link register: jalr instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | 00000 | R d | 00000 | 001001 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [PC] + 4; PC <-- [R s ] Assembly format: jalr R d ,R s 37. no operation: nop instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | 00000 | 00000 | 00000 | 00000 | 000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: PC <-- [PC] + 4 Assembly format: nop (= sll R 0,0 shift logical left 0) 38. move from Hi: mfhi instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | 00000 | 00000 | R d | 00000 | 010000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [Hi]; PC <-- [PC] + 4 Assembly format: mfhi R d39. move from Lo: mflo instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | 00000 | 00000 | R d | 00000 | 010010 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [Lo]; PC <-- [PC] + 4 Assembly format: mflo R dException HandlingWhen a condition for any exception (overflow, illegal op-code, division by zero, etc.) occurs the following hardware exception processing is performed: EPC <-- [PC] / | 028 || 1010 if illegal op-code (10) Cause_Reg <-- | 028 || 1100 if overflow (12) | 029 || 100 if illegal memory address (4) \ …………… etc. PC <-- 80000180hex 40. move from EPC: mfepc instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010000 | 00000 | R t | 01110 | 00000 | 000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [EPC]; PC <-- [PC] + 4 Assembly format: mfepc R t (This is mfc0 Rt,CP0reg14) 41. move from Cause_Reg: mfco instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010000 | 00000 | R d | 01101 | 00000 | 000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [Cause_Reg]; PC <-- [PC] + 4 Assembly format: mfco R t (This is mfc0 Rt,CP0reg13) Floating Point Instructions42. load word into co-processor 1: lwc1 instruction+--------+-------+-------+-----------------------+ I-type format: | 110001 | R s | f t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: f t <-- M{[R s ] + [I 15]16 || [I 15..0]} PC <-- [PC] + 4 Assembly format: lwc1 f t ,offset(R s )43. store word from co-processor 1: swc1 instruction+--------+-------+-------+-----------------------+ I-type format: | 111001 | R s | f t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: M{[R s ] + [I 15]16 || [I 15..0]} <-- [f t ] PC <-- [PC] + 4 Assembly format: swc1 f t ,offset(R s )44. addition single precision: add.s instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010001 | 00000 | f t | f s | f d |000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: f d <-- [f s ] + [f t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add.s R d ,R s ,R t 45. addition double precision: add.d instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010001 | 00001 | f t | f s | f d |0000000| +--------+-------+-------+-------+-------+--------+ Effects of the instruction:f d ||f d+1<-- [f s ]||[f s+1] + [f t ]||[f t+1]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add.d f d ,f s ,f t45. subtract single precision: sub.s instructionSimilar as add.s but with funct=146. subtract double precision: sub.d instruction Similar as add.d but with funct=147. multiply single precision: mul.s instruction Similar as add.s but with funct=248. multiply double precision: mul.d instruction Similar as add.d but with funct=249. divide single precision: div.s instruction Similar as add.s but with funct=3 50. divide double precision: div.d instructionSimilar as add.d but with funct=3。

对mips指令集进行一下简单的介绍。

对mips指令集进行一下简单的介绍。

对mips指令集进行一下简单的介绍。

MIPS指令集是一种经典的计算机指令集架构(ISA),广泛应用于许多处理器和嵌入式系统中。

本文将对MIPS指令集进行简单介绍,包括其基本特点、指令格式、常用指令和应用领域等方面。

一、基本特点MIPS指令集最早由斯坦福大学的约翰·亨尼西(John Hennessy)教授等人于1981年提出,其特点主要有以下几个方面:1. 简洁性:MIPS指令集采用精简的指令集,指令数量相对较少,指令格式统一,易于理解和编程。

2. 低功耗:MIPS指令集的指令长度固定为32位,简化了指令译码和执行过程,降低了功耗。

3. 高性能:MIPS指令集采用流水线执行方式,减少了数据冲突和指令冲突,提高了指令执行效率。

4. 易于硬件实现:MIPS指令集的指令格式规范且简单,易于硬件实现,适合于嵌入式系统和高性能计算机。

二、指令格式MIPS指令集的指令格式一般包括操作码(opcode)、源操作数(source operand)、目标操作数(target operand)和立即数(immediate)等字段。

常见的指令格式有以下几种:1. R型指令格式:用于寄存器之间的操作,包括操作码、源寄存器、目标寄存器和功能码等字段。

2. I型指令格式:用于寄存器和立即数之间的操作,包括操作码、源寄存器、目标寄存器和立即数等字段。

3. J型指令格式:用于无条件跳转和函数调用等操作,包括操作码和目标地址等字段。

三、常用指令MIPS指令集包含了丰富的指令,涵盖了数据传输、算术运算、逻辑运算、分支跳转、存储访问和异常处理等功能。

以下是一些常用的MIPS指令示例:1. 数据传输指令:包括加载指令(lw)、存储指令(sw)等,用于将数据从内存加载到寄存器或将数据从寄存器存储到内存。

2. 算术运算指令:包括加法指令(add)、减法指令(sub)、乘法指令(mul)等,用于进行基本的算术运算。

3. 逻辑运算指令:包括与指令(and)、或指令(or)、非指令(not)等,用于进行逻辑运算。

mips是什么意思

mips是什么意思

mips是什么意思MIPS是什么意思?摘要:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种流行的指令集架构(ISA),被广泛用于早期计算机和嵌入式系统。

本文将探讨MIPS的意思、历史及用途,以及与其他指令集架构的比较和优势。

第一部分:引言MIPS是一种指令集架构,它定义了计算机对应使用的机器语言,以及处理器执行这些指令的方式。

MIPS最初于1981年由美国加州大学伯克利分校的研究人员推出,并逐渐成为广泛采用的指令集架构之一。

第二部分:MIPS的历史MIPS最初是作为一种基于RISC(Reduced Instruction Set Computing)原则的指令集架构而设计的。

RISC架构的设计思想是将指令集精简,提高处理器性能。

在第一版MIPS架构中,只有32个指令,相较于当时主流的复杂指令集计算机(CISC)而言,MIPS具备了更高的效率和性能。

不久后,MIPS架构迅速得到了业界的认可,多家计算机厂商开始采用MIPS架构设计和生产处理器。

许多首个商用RISC处理器都基于MIPS架构。

其简单而高效的设计理念,使得MIPS成为当时最受欢迎的指令集架构之一。

2000年,MIPS Technologies成为一家独立的半导体公司,并推出了更多适用于嵌入式系统的MIPS处理器。

如今,MIPS架构已成为广泛使用于各种嵌入式领域的首选架构。

第三部分:MIPS的应用领域MIPS架构最常见的应用领域是嵌入式系统。

例如,路由器、智能手机、数字电视和无线通信设备等都经常采用MIPS架构的处理器。

与其他指令集架构相比,MIPS的简洁和高效率使得其在这些领域中表现出色。

此外,MIPS也被广泛应用于教育和研究领域。

因为MIPS指令集相对简单且易于理解,学生和研究人员常常使用MIPS作为教学和研究的工具。

许多计算机体系结构的课程都会涵盖MIPS。

第四部分:MIPS与其他指令集架构的比较与CISC指令集架构相比,MIPS具有以下优势:1. 简单性:MIPS指令集非常简洁,只有少量的指令类型,易于理解和实现。

解释mips子集实现的功能单元

解释mips子集实现的功能单元

解释mips子集实现的功能单元MIPS是一种指令集架构(Instruction Set Architecture),它是由MIPS小组开发的。

MIPS子集是在MIPS架构之上的一个分支,它包含了一些额外的指令集,提供了更多的功能和灵活性,使得编写更加复杂的程序变得更容易。

以下是MIPS子集实现的一些功能单元:1. MIPS子集中的扩展指令:扩展指令是MIPS指令集的一部分,增加了一些指令,如乘法、除法、取模、位操作等,使得程序可以更加高效地处理数据。

2. MIPS子集中的分支指令:分支指令是程序调试和优化的重要工具。

MIPS子集中的分支指令提供了更多的选项,如条件分支、循环分支等,使得编写更加灵活的程序变得更加容易。

3. MIPS子集中的寄存器指令:寄存器指令是处理数据的重要工具。

MIPS子集中的寄存器指令提供了更多的寄存器选项,如AX、BX、CS、DS等,使得程序可以更加灵活地处理数据。

4. MIPS子集中的算术运算指令:算术运算指令是处理数字的重要工具。

MIPS子集中的算术运算指令提供了更多的选项,如加法、减法、乘法、除法等,使得程序可以更加高效地处理数字。

5. MIPS子集中的传送指令:传送指令是传递数据的重要工具。

MIPS子集中的传送指令提供了更多的选项,如传送到寄存器、传送到内存等,使得程序可以更加灵活地处理数据。

6. MIPS子集中的地址操作指令:地址操作指令是处理内存的重要工具。

MIPS子集中的地址操作指令提供了更多的选项,如读写内存、移动内存等,使得程序可以更加高效地处理内存。

以上是MIPS子集实现的一些功能单元,这些指令集提供了更多的功能和灵活性,使得编写更加复杂的程序变得更加容易。

(完整word版)MIPS 指令集

(完整word版)MIPS 指令集
00000
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

mips指令jalr

mips指令jalr

mips指令jalrMIPS指令jalr详解MIPS指令集架构(MIPS Instruction Set Architecture)是一种基于RISC(Reduced Instruction Set Computer)的计算机指令集架构。

在MIPS指令集中,有一条非常重要的指令,那就是jalr指令。

jalr指令是MIPS指令集中的一种跳转指令,其全称为Jump And Link Register。

这条指令的功能是将当前指令的下一条指令的地址存储到寄存器中,并跳转到指定地址执行。

该指令的操作数包括源寄存器rs和目的寄存器rd,以及偏移量offset。

其中,源寄存器rs用于存储跳转的目标地址,目的寄存器rd用于存储下一条指令的地址。

偏移量offset用于指定源寄存器rs的偏移量,即跳转的目标地址与当前指令的地址之间的差值。

下面我们详细解释jalr指令的执行过程:1. 首先,从源寄存器rs中读取目标地址,并将其存储到目的寄存器rd中。

同时,将当前指令的下一条指令的地址存储到寄存器ra 中。

这样,目的寄存器rd中存储了下一条指令的地址,而寄存器ra中存储了跳转的目标地址。

2. 接下来,将源寄存器rs的值与偏移量offset相加,得到跳转的目标地址。

这里需要注意的是,偏移量offset是一个有符号数,因此在相加之前需要进行符号扩展。

3. 最后,将跳转的目标地址存储到程序计数器PC中,从而实现跳转到指定地址执行。

需要注意的是,跳转的目标地址必须是一个有效的地址,否则程序将无法正常执行。

此外,由于jalr指令会修改寄存器rd和程序计数器PC的值,因此在使用该指令时需要特别小心,确保跳转的目标地址正确,并且保存了原始的寄存器rd的值。

除了上述的基本功能外,jalr指令还可以用于实现函数调用和返回。

在函数调用时,可以使用jalr指令将函数的入口地址存储到目的寄存器rd中,并跳转到函数执行的起始地址。

而在函数返回时,可以使用jr指令将目的寄存器rd中保存的地址存储到程序计数器PC中,从而返回到函数调用的位置继续执行。

mips的指令集

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汇编语言指令MIPS(Microprocessor without Interlocked Pipelined Stages)是一种常见的RISC(Reduced Instruction Set Computer)体系结构,广泛用于许多计算机体系结构和嵌入式系统中。

本文将对MIPS汇编语言指令进行详细介绍和解析。

一、MIPS汇编语言概述MIPS汇编语言是一种低级语言,用于直接操作计算机硬件。

其指令集由一系列操作码(Opcode)和操作数组成。

MIPS指令集基于三个基本原则:简单性、固定的指令长度和规则对齐。

MIPS指令主要包括算术操作指令、逻辑操作指令、控制类指令和数据传输指令等。

二、MIPS汇编语言的基本指令1. 算术操作指令MIPS提供了一系列算术操作指令,如add(加法)、sub(减法)、mul(乘法)和div(除法)等。

这些指令用于对寄存器中的数据进行算术运算,并将结果保存在目标寄存器中。

示例:add $t0, $s1, $s2 # 将$s1和$s2中的值相加,结果保存在$t0中2. 逻辑操作指令逻辑操作指令用于对寄存器中的数据进行逻辑运算,如and(逻辑与)、or(逻辑或)和not(逻辑非)等。

示例:and $t0, $s1, $s2 # 将$s1和$s2中的值进行逻辑与运算,并将结果保存在$t0中3. 控制类指令MIPS提供了一系列控制类指令,如beq(条件分支)、j(无条件跳转)和jr(函数返回)等。

这些指令用于改变程序执行的流程。

示例:beq $t0, $t1, label # 如果$t0和$t1中的值相等,则跳转到label处继续执行4. 数据传输指令数据传输指令用于在寄存器和存储器之间传输数据,如lw(从存储器中加载数据)和sw(将数据存储到存储器中)等。

示例:lw $t0, 0($s1) # 从地址$s1+0处加载数据,并保存到$t0中三、MIPS汇编语言的特点与优势1. 简洁性MIPS汇编语言指令集相对较为简单,指令数目较少,易于理解和学习。

MIPS指令集

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
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MIPS InstructionsNote: You can have this handout on both exams.Instruction Formats : Instruction formats: all 32 bits wide (one word):6 5 5 5 5 6+--------+--------+-------+-------+------+--------+ R-type format| Op-code| R s | R t | R d | SA |Funct-code | +--------+--------+-------+-------+------+--------+ 6 5 5 16 +--------+--------+-------+------------------------+ I-type format|Op-code | R s | R t | 2’s complement constant| +--------+--------+-------+------------------------+ 6 26 +--------+-----------------------------------------+ J-type format| Op-code| jump_target | +--------+-----------------------------------------+ ^ ^ | | bit 31 bit 0 Instructions and their formatsGeneral notes: a. R s , R t , and R d specify general purpose registers b. Square brackets ([]) indicate “the contents of” c. [PC] specifies the address of the instruction in execution d. I specifies part of instruction and its subscripts indicate bit positions of sub-fields e. || indicates concatenation of bit fields f. Superscripts indicate repetition of a binary value g. M{i} is a value (contents) of the word beginning at the memory address i h. m{i} is a value (contents) of the byte at the memory address i i. all integers are in 2’s complement representation if not indicated as unsigned 1. addition with overflow: add instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] + [R t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add R d ,R s ,R t2. add without overflow: addu instructionIdentical as add instruction, except: - funct=33dec - overflow ignored 3. subtract with overflow: sub instruction+--------+-------+------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100010 | +--------+-------+------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] - [R t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: sub R d ,R s ,R t 4. subtract without overflow: subu instructionIdentical as sub instruction, except: - funct=35dec - overflow ignored 5. multiply: mul instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | 00000 | 00000 | 011000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction:Hi||Lo <-- [R s ] * [R t ]; PC <-- [PC] + 4 Assembly format: mult R s ,R t 6. unsigned multiply: mulu instructionIdentical as mut instruction, except: - funct = 25dec - contents of R s and R t are considered as unsigned integers 7. divide: div instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | 00000| 00000 | 011010 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: Lo <-- [R s ] / [R t ]; Hi <-- [R s ]mod[R t ] PC <-- [PC] + 4 Assembly format: div R s ,R t 8. unsigned divide: divu instructionIdentical as div instruction, except: - funct = 27dec - contents of R s and R t are considered as unsigned integers9. set less than: slt instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 101010 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: if [R s ] < [R t ] then R d <-- 031 || 1 else R d <-- 032; PC <-- [PC] + 4 Assembly format: slt R d ,R s ,R t 10. set less than unsigned: sltu instructionIdentical as slt instruction, except: - funct = 43dec - contents of R s and R t are considered as unsigned integers. 11. logical and: and instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100100 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] AND [R t ]; PC <-- [PC] + 4 Assembly format: and R d ,R s ,R t 12 - 14. logical or, n or & exclusive or: or , nor , & xor instructions Identical as and instruction, except: - funct=37dec for or instruction - funct=39dec for nor instruction - funct=40dec for xor instruction - appropriate logical function performed instead of logical and 15. addition immediate with overflow: addi instruction+--------+-------+-------+-----------------------+ I-type format:| 001000 | R s | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- [R s ] + ([I 15]16 || [I 15..0]); PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: addi R t ,R s ,immediate 16. addition immediate without overflow: addiu instruction Identical as addi instruction, except: - op-code=9dec - overflow ignored17. set less than immediate: slti instruction+--------+-------+-------+-----------------------+ I-type format: | 001010 | R s | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] < ([I 15]16 || [I 15..0]) then R t <-- 031|| 1 else R t <-- 032 PC <-- [PC] + 4 Assembly format: slti R t ,R s ,immediate 18. set less than immediate unsigned: sltiu instructionIdentical as slti instruction, except: - op-code = 11dec - contents in the comparison are considered as unsigned integers. 19. logical and immediate: andi instruction+--------+-------+-------+-----------------------+ I-type format:| 001100 | R s | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- [R s ] AND (016 || [I 15..0]); PC <-- [PC] + 4 Assembly format: andi R t ,R s ,immediate 20-21. logical or immediate & xor immediate: ori , & xori instr. Identical as andi instruction, except: - op-code=13dec for ori instruction - op-code=14dec for xori instruction - appropriate logical function performed instead of logical and 22. load word : lw instruction+--------+-------+-------+-----------------------+ I-type format: | 100011 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- M{[R s ] + [I 15]16 || [I 15..0]} PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: lw R t ,offset(R s ) 23. store word : sw instruction+--------+-------+-------+-----------------------+ I-type format: | 101011 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: M{[R s ] + [I 15]16 || [I 15..0]} <-- [R t ] PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: sw R t ,offset(R s )24. load unsigned byte : lbu instruction+--------+-------+-------+-----------------------+ I-type format: | 100100 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- 024 || m{[R s ] + [I 15]16 || [I 15..0]} PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: lbu R t ,offset(R s ) 25. load byte : lb instructionIdentical as lbu instruction, except: - leftmost 24 bits of R t are loaded by a value of leftmost bit of the byte instead of zeros - op-code =32dec 26. store byte : sb instruction+--------+-------+-------+-----------------------+ I-type format: | 101000 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: m{[R s ] + [I 15]16 || [I 15..0]} <-- [R t ]7..0 PC <-- [PC] + 4 (If an illegal memory address then exception processing) Assembly format: sb R t ,offset(R s ) 27. load upper immediate: lui instruction+--------+-------+-------+-----------------------+ I-type format: | 001111 | 00000 | R t | immediate | +--------+-------+-------+-----------------------+ Effects of the instruction: R t <-- [I 15-0] || 016; PC <-- [PC] + 4 Assembly format: lui R t ,immediate 28. branch on equal: beq instruction+--------+-------+-------+-----------------------+ I-type format: | 000100 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] = [R t ] then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) (i.e. PC <-- [PC] + 4 + 4*offset) else PC <-- [PC] + 4 Assembly format: beq R s ,R t ,offset29. branch on not equal: bne instruction+--------+-------+-------+-----------------------+ I-type format: | 000101 | R s | R t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] <> [R t ] then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) else PC <-- [PC] + 4 Assembly format: bne R s ,R t ,offset 30. branch on less than or equal zero: blez instruction+--------+-------+-------+-----------------------+ I-type format: | 000110 | R s | 00000 | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] < 0 then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) Assembly format: blez R s ,offset 31. branch on greater than zero: bgtz instruction+--------+-------+-------+-----------------------+ I-type format: |000111 | R s | 00000 | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] > 0 then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) else PC <-- [PC] + 4 Assembly format: bgtz R s ,offset 32. branch on less than zero: bltz instruction+--------+-------+-------+-----------------------+ I-type format: |000001 | R s | 00000 | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: if [R s ] < 0 then PC <-- [PC] + 4 + ([I 15]14 || [I 15..0] || 02) else PC <-- [PC] + 4 Assembly format: bltz R s ,offset 33. jump: j instruction+--------+-----------------------------------------+ J-type format|000010 | jump_target | +--------+-----------------------------------------+ Effects of the instruction: PC <-- [PC 31..28] || [I 25..0] || 02Assembly format: j jump_target34. jump and link: jal instruction+--------+-----------------------------------------+ J-type format|000011 | jump_target | +--------+-----------------------------------------+ Effects of the instruction: R 31 <-- [PC] + 4 PC <-- [PC 31..28] || [I 25..0] || 02Assembly format: jal jump_target 35. jump register: jr instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | 00000 | 00000 | 00000 | 001000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: PC <-- [R s ] Assembly format: jr R s 36. jump and link register: jalr instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | 00000 | R d | 00000 | 001001 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [PC] + 4; PC <-- [R s ] Assembly format: jalr R d ,R s 37. no operation: nop instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | 00000 | 00000 | 00000 | 00000 | 000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: PC <-- [PC] + 4 Assembly format: nop (= sll R 0,0 shift logical left 0) 38. move from Hi: mfhi instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | 00000 | 00000 | R d | 00000 | 010000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [Hi]; PC <-- [PC] + 4 Assembly format: mfhi R d39. move from Lo: mflo instruction+--------+-------+-------+-------+-------+--------+ R-type format | 000000 | 00000 | 00000 | R d | 00000 | 010010 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [Lo]; PC <-- [PC] + 4 Assembly format: mflo R dException HandlingWhen a condition for any exception (overflow, illegal op-code, division by zero, etc.) occurs the following hardware exception processing is performed: EPC <-- [PC] / | 028 || 1010 if illegal op-code (10) Cause_Reg <-- | 028 || 1100 if overflow (12) | 029 || 100 if illegal memory address (4) \ …………… etc. PC <-- 80000180hex 40. move from EPC: mfepc instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010000 | 00000 | R t | 01110 | 00000 | 000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [EPC]; PC <-- [PC] + 4 Assembly format: mfepc R t (This is mfc0 Rt,CP0reg14) 41. move from Cause_Reg: mfco instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010000 | 00000 | R d | 01101 | 00000 | 000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [Cause_Reg]; PC <-- [PC] + 4 Assembly format: mfco R t (This is mfc0 Rt,CP0reg13) Floating Point Instructions42. load word into co-processor 1: lwc1 instruction+--------+-------+-------+-----------------------+ I-type format: | 110001 | R s | f t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: f t <-- M{[R s ] + [I 15]16 || [I 15..0]} PC <-- [PC] + 4 Assembly format: lwc1 f t ,offset(R s )43. store word from co-processor 1: swc1 instruction+--------+-------+-------+-----------------------+ I-type format: | 111001 | R s | f t | offset | +--------+-------+-------+-----------------------+ Effects of the instruction: M{[R s ] + [I 15]16 || [I 15..0]} <-- [f t ] PC <-- [PC] + 4 Assembly format: swc1 f t ,offset(R s )44. addition single precision: add.s instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010001 | 00000 | f t | f s | f d |000000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: f d <-- [f s ] + [f t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add.s R d ,R s ,R t 45. addition double precision: add.d instruction+--------+-------+-------+-------+-------+--------+ R-type format | 010001 | 00001 | f t | f s | f d |0000000| +--------+-------+-------+-------+-------+--------+ Effects of the instruction:f d ||f d+1<-- [f s ]||[f s+1] + [f t ]||[f t+1]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add.d f d ,f s ,f t45. subtract single precision: sub.s instructionSimilar as add.s but with funct=146. subtract double precision: sub.d instruction Similar as add.d but with funct=147. multiply single precision: mul.s instruction Similar as add.s but with funct=248. multiply double precision: mul.d instruction Similar as add.d but with funct=249. divide single precision: div.s instruction Similar as add.s but with funct=3 50. divide double precision: div.d instructionSimilar as add.d but with funct=3。

相关文档
最新文档