mips汇编指令集(代码片段)

逆水东流 逆水东流     2022-12-13     596

关键词:

MIPS汇编

MIPS指令集

MIPS指令集属于精简指令集

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

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

MIPS有32个通用寄存器REG,为什么是32个而不是更多呢?
因为更多的寄存器需要更多的指令空间对寄存器编码,也会增加上下文切换的负担。

MIPS指令格式

R格式

655556
oprsrtrdshamtfunct

用处:
寄存器-寄存器ALU操作
读写专用寄存器

I格式

65516
oprsrt立即数操作

用处:
加载/存储字节,半字,字,双字
条件分支,跳转,跳转并链接寄存器

J格式

626
op跳转地址

用处:
跳转,跳转并链接
陷阱和从异常中返回

各字段含义:
op:指令基本操作,称为操作码。
rs:第一个源操作数寄存器。
rt:第二个源操作数寄存器。
rd:存放操作结果的目的操作数。
shamt:位移量;
funct:函数,这个字段选择op操作的某个特定变体。

例:

add $t0,$s0,$s1  

表示$t0=$s0+$s1,即16号寄存器(s0)的内容和17号寄存器(s1)的内容相加,结果放到8号寄存器(t0)。
指令各字段的十进制表示为:

016178032

op=0和funct=32表示这是加法,
16= s0(rs)1617= s1表示第二个源操作数(rt)在17号寄存器里,
8=$t0表示目的操作数(rd)在8号寄存器里。
把各字段写成二进制,为:

00000010000100010100000000100000

这就是上述指令的机器码(machine code),可以看出是很有规则性的。

MIPS指令

MIPS没有栈操作指令 ,调用子程序时没有自动压栈的call指令,只能用jal。

MIPS的内存映射、中断等功能都做到了协处理器0(cp0)中,浮点运算做到了协处理器1(cp1)中。

MIPS的寻址方式最简单,仅有寄存器加偏移寻址方式。

MIPS常用指令集

lb/lh/lw: 从存储器中读取一个byte/half word/word的数据到寄存器中.如 lb 1,0( 2)
sb/sh/sw: 把一个byte/half word/word的数据从寄存器存储到存储器中.如 sb 1,0( 2)
add/addu:把两个定点寄存器的内容相加add 1, 2, 3( 1= 2+ 3);u为不带符号加。 addi/addiu:把一个寄存器的内容加上一个立即数add 1, 2,#3( 1= 2+3);u为不带符号加。
sub/subu:把两个定点寄存器的内容相减。
div/divu:两个定点寄存器的内容相除。
mul/mulu:两个定点寄存器的内容相乘。
and/andi:与运算,两个寄存器中的内容相与and 1, 2, 3( 1=2 &3);i为立即数。
or/ori:或运算。
xor/xori:异或运算。
beq/beqz/benz/bne:条件转移eq相等,z零,ne不等。
j/jr/jal/jalr:j直接跳转;jr使用寄存器跳转;
lui:把一个16位的立即数填入到寄存器的高16位,低16位补零。
sll/srl:逻辑左移/右移sll 1, 2,#2。
slt/slti/sltui:如果 2 3,那么设置 11 1的值为0。slt 1, 2,$3。
mov/movz/movn:复制,n为负,z为零。mov 1, 2; movz 1, 2, 3( 3为零则复制 2 1)。
trap:根据地址向量转入管态。
eret:从异常中返回到用户态。

32个通用寄存器

0($zero): 永远返回值为0
1($at): 用做汇编器的暂时变量
2-3( v0 v1): 子函数调用返回结果
4-7( a0 a3): 子函数调用的参数
8-15( t0 t7): 暂时变量,子函数使用时不需要保存与恢复
16-23( s0 s7): 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返回之前,从而调用函数知道这些寄存器的值没有变化。
24-25( t8 t9): 暂时变量,子函数使用时不需要保存与恢复
26-27( k0 k1): 通常被中断或异常处理程序使用作为保存一些系统参数
28($gp): 全局指针。一些运行系统维护这个指针来更方便的存取“static“和”extern”变量。
29($sp): 堆栈指针
30( s8/ fp): 第9个寄存器变量。子函数可以用来做桢指针
31($ra): 子函数的返回地
cp0:协处理器0,MIPS对CPU的控制用cp0完成

mips简单入门(代码片段)

What‘stheMIPS?汇编语言汇编语言是一类语言的总称,因处理器不同,而对应的不同机器的指令集也不同,产生了很多种汇编语言。目前最流行的是ARM,MIPS,x86。ARM用于大量的移动手机和嵌入式系统。MIPS流行于IBMCPUs。x86用在InterPCs。... 查看详情

计算机组成原理与接口技术笔记(代码片段)

...数运算(难点)6.计算机中的信息存储第二章MIPS汇编语言1.计算机语言2.计算机指令架构CISC(复杂指令集计算机)RISC(精简指令集计算机)两种架构的对比3.MIPS汇编指令概述MIPS指令结构MIPS操作数类型MIPS指... 查看详情

mipsel汇编指令学习

MIPS汇编语言基础  MIPS的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系MIPSI、MIPSII、MIPSIII、MIPSIV、MIPSV,以及嵌入式指令体系MIPS16、MIPS32到MIPS64的发展。  MIPS32的架构是一种基于固定长度的定期编码指... 查看详情

mips汇编及模拟器下载

1.简述汇编语言发展在计算机发展初期,人们用0-1序列来表示每一条语言,亦即二进制的机器指令由于机器指令过于繁琐,程序员们开发出了一种新的语言,这种用符号表示的计算机语言被称为汇编语言计算机继续发展则生成了... 查看详情

汇编程序基本指令集(代码片段)

...形式的序列(包含字符串形式的操作码以及操作数助记符)汇编语言基本指令集总说明(所有的指令都要遵守的)对于双操作数指令(如:MOV,A 查看详情

国产化系列龙芯平台指令集简介及现有处理器的支持特性(代码片段)

DATE:2021.10.27文章目录1、转载参考2、龙芯平台指令集简介3、编译参数4、查找热点函数进行代码优化1、转载参考龙芯平台指令集简介及现有处理器的支持特性2、龙芯平台指令集简介LoongISA里包括MIPS部分指令集,其中有MIPS64Rele... 查看详情

国产化系列龙芯平台指令集简介及现有处理器的支持特性(代码片段)

DATE:2021.10.27文章目录1、转载参考2、龙芯平台指令集简介3、编译参数4、查找热点函数进行代码优化1、转载参考龙芯平台指令集简介及现有处理器的支持特性2、龙芯平台指令集简介LoongISA里包括MIPS部分指令集,其中有MIPS64Rele... 查看详情

mips汇编程序设计——四则运算计算器(代码片段)

实验目的运用简单的MIPS实现一个能够整数加减乘除的计算器,同时使自己更加熟悉这些指令吧MIPS代码#https://blog.csdn.net/oncoding/article/details/4346531#sampleexample‘asmallcalculater’#datasection.datavalue:.word0,0,0,0,0#0:firstnum,4:secondnum,8: 查看详情

计基2—riscv指令集介绍与汇编(代码片段)

和学校里学的x86架构不同,RISC-V指令格式的设计十分简洁、高效。为了在下一节课能够更好地理解如何搭建CPU,首先需要对RISC-V指令集有基本的了解。该文章大部分图片来自彭东老师的计算机基础实战。什么是指令集ÿ... 查看详情

计基2—riscv指令集介绍与汇编(代码片段)

和学校里学的x86架构不同,RISC-V指令格式的设计十分简洁、高效。为了在下一节课能够更好地理解如何搭建CPU,首先需要对RISC-V指令集有基本的了解。该文章大部分图片来自彭东老师的计算机基础实战。什么是指令集ÿ... 查看详情

idaproarm指令集和thumb指令集的切换(代码片段)

在动态调试android的ndk程序的时候,发现很多程序都会反汇编错误,原来是ARM反汇编的模式没搞对。因为在动态调试的时候,idaPro并没有去解析elf模块中的一些信息,造成了模块信息丢失,有时候反汇编就会错误。 类似下面... 查看详情

arm体系结构和汇编指令(代码片段)

...司)定义的,本质上是一串由1和0组成的数字。这就是CPU的汇编指令集2.从源代码到cpu执行过程第二节指令集对cpu的意义1.汇编语言与C等高级语言的差异汇编无移植性,c语言有一定可移植性,jave等更高级的语言移植性更强汇编语... 查看详情

mips指令集将在近期开源,risc-v阵营慌吗?

消息称,MIPS指令集即将开源。eetimes17日报导,WaveComputing公司表示,在明年第一季度发布最新MIPS指令集体系和MIPS最新内核 R6的时候将开源MIPS。MIPS目前属于WaveComputing,MIPSTechnologies已于今年6月份被WaveComputing收购。MIPS是一种... 查看详情

实验报告实验一mips指令系统和mips体系结构(代码片段)

文章目录实验一MIPS指令系统和MIPS体系结构实验目的实验要求实验内容实验平台实验步骤拓展内容(选做)实验结果心得体会参考资料实验一MIPS指令系统和MIPS体系结构实验目的了解和熟悉指令级模拟器;熟练掌握MIPSs... 查看详情

arm汇编基础上(代码片段)

...集处理器,其指令集的设计是定长的,也就是其汇编对应的机器码是定长的(2字节或者4字节)。那么对于定长而言,其优点就是更快的被执行,因为这样CPU取指令译码的速度相对x86的CPU会快一些,但... 查看详情

计算机系统5-;计组与体系结构2|mips指令集(上)|指令系统

介绍指令集的指令格式、寻址方式、指令类型,介绍了一些著名的指令集。介绍指令集的指令格式、寻址方式、指令类型,介绍了一些著名的指令集。 查看详情

lc-3汇编语言指令集(代码片段)

LC-3汇编语言指令集LC-3汇编语言运算类指令ADD(addition)AND(Bit-wiselogicalAND)NOT(Bit-wisecomplement)LD(load)ST(store)LDI(loadindirect)STI(storeindirect)LDR(loadbase+offset)STR(storebase+offset)LEA(loadeffectiveaddress)BR(conditionalbranch)JMP(jump)RET(return)JSR(jumptos... 查看详情

从 C 编译器理解 MIPS 汇编代码

】从C编译器理解MIPS汇编代码【英文标题】:UnderstandingMIPSassemblycodefromCcompiler【发布时间】:2018-10-2220:57:59【问题描述】:我将C代码转换为MIPS,但我无法理解MIPS指令的一部分:#include<inttypes.h>#include<stdint.h>uint16_tchksum(ui... 查看详情