MIPS汇编指令集
MIPS有三种指令格式:
R型
| 6 | 5 | 5 | 5 | 5 | 6 |
| op | rs | rt | rd | shamt | funct |
功能:寄存器-寄存器ALU操作 (算术运算,逻辑运算)
I型
| 6 | 5 | 5 | 16 |
| op | rs | rt | 立即数操作 |
功能:条件分支,跳转
J型
| 6 | 26 |
| op | 跳转地址 |
功能:跳转
MIPS常用指令集
lb / lh / lw : 从存储器中读取一个byte/half word/word的数据到寄存器中.
sb/sh/sw: 把一个byte/half word/word的数据从寄存器存储到存储器中
mov/movz/movn: 复制,n为负,z为零。mov $1,$2; movz $1,$2,$3($3为零则复制$2到$1)。
trap: 根据地址向量转入管态。
eret: 从异常中返回到用户态。
算术类:
add/addu: 把两个定点寄存器的内容相加;u为不带符号加,如 rd = rs + rt
addi/addiu: 把一个寄存器的内容加上一个立即数;u为不带符号加。 rd = rs + im
sub/subu: 把两个定点寄存器的内容相减。 rd = rs - rt
div/divu: 两个定点寄存器的内容相除。
mul/mulu: 两个定点寄存器的内容相乘。
slt/slti/sltui: 如果rs的值小于rt,那么设置rd的值为1,否则设置rd的值为0。 rd = (rs < rt) ? 1 : 0 ; rd = (rs < im) ? 1 : 0
逻辑类:
and/andi: 与运算,两个寄存器中的内容相与 ;i为立即数。 rd = rs & rt ; rd = rs & im
or/ori: 或运算。 rd = rs | rt ; rd = rs | im
xor/xori: 异或运算。 rd = rs ^ rt ;rd = rs ^ im
nor/nori: 取反运算。 rd = !(rs | rt)
跳转类:
j/jr/jal/jalr: j直接跳转 PC = { (PC+4) [31,28] , addr, 00};jr使用寄存器跳转 PC = rs; jal $31 = PC;PC = {(PC+4) [31,28],addr,00}
beq/beqz/benz/bne: 条件转移eq相等,z零,ne不等。 beq , PC = (rs == rt) ? PC+4+im << 2 : PC ; bne , PC = (rs != rt) ? PC+4+im << 2 : PC
载入类:
lui: 把一个16位的立即数填入到寄存器的高16位,低16位补零。 rt = im * 65536(2^16)
lw: rt = memory[ rs + im]
sw: memory[ rs + im] = rt
位移类:
sll/srl: 逻辑左移/右移。 rd = rs << shamt ; rd = rs >> shamt
32个通用寄存器
MIPS下一共有32个通用寄存器 ;在汇编中,寄存器标志由$符开头。寄存器表示可以有两种方式:直接使用该寄存器对应的编号,例如:从$0到$31;使用对应的寄存器名称,例如:$t1, $sp。
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汇编指令集的更多相关文章
- MIPS汇编及模拟器下载
1. 简述汇编语言发展 在计算机发展初期,人们用0-1序列来表示每一条语言,亦即二进制的机器指令 由于机器指令过于繁琐,程序员们开发出了一种新的语言,这种用符号表示的计算机语言被称为汇编语言 计算机继 ...
- MIPS汇编学习
MIPS汇编学习 mips汇编不同于x86汇编,属于精简指令集,常见于路由器等一些嵌入式设备中. mips汇编没有对堆栈的直接操作,也就是没有push和pop指令,mips汇编中保留了32个通用寄存器 ...
- 计算机系统6-> 计组与体系结构3 | MIPS指令集(中)| MIPS汇编指令与机器表示
上一篇计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统从顶层讲解了一个指令集 / 指令系统应当具备哪些特征和工作原理.这一篇就聚焦MIPS指令集(MIPS32),看看其汇 ...
- iot漏洞mips汇编基础
1 基础概念 MIPS(Microprocessor without Interlocked Piped Stages architecture),是一种采取精简指令集(RISC)的处理架构,由MIP ...
- ARM汇编指令集_学习笔记(1)
一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...
- MIPS 汇编指令学习
MIPS 寄存器 MIPS comes with 32 general purpose registers named $0. . . $31Registers also have symbolic ...
- x86汇编指令集大全(带注释)
X86和X87汇编指令大全(有注释) PUSH 压栈.POP 来说是出栈.入栈(push):---------- 一.数据传输指令 ---------------------------------- ...
- 汇编 | x86汇编指令集大全(带注释)
做mit-6.828的时候遇到了很多汇编知识,但是无奈学校还没学汇编,只能狠心啃啃硬骨头,在网上查到了很多的资料,归档!方便查看 ----------------------------------- ...
- ARM汇编指令集
一.跳转指令.跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转. Ⅰ.使用专门的跳转指令.Ⅱ.直接向程序计数器PC写入跳转地址值. 通过向程序计数器PC写入跳转地址值 ...
随机推荐
- 深度学习项目——基于循环神经网络(RNN)的智能聊天机器人系统
基于循环神经网络(RNN)的智能聊天机器人系统 本设计研究智能聊天机器人技术,基于循环神经网络构建了一套智能聊天机器人系统,系统将由以下几个部分构成:制作问答聊天数据集.RNN神经网络搭建.seq2s ...
- redis设置密码
1.初始化Redis密码: 在redis.conf配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数: 比如 requirepass test123: (Ps:需重启 ...
- Mac终端中输入ps aux显示全部进程
ps命令是Process Status的缩写. ps aux命令用来列出系统中当前运行的那些进程. ps aux | grep chrome 表示查询关于chrome的所有程序(grep可作为文件内的 ...
- 4-20arget 属性和hover
1.target 属性 定义和用法 target 属性规定在何处打开 action URL. 值 描述 _blank 在新窗口中打开. _self 默认.在相同的框架中打开. _parent 在父框架 ...
- blender基础操作
旋转:鼠标中键 左右移动:鼠标中键+左shift 放大缩小:鼠标滚轮滚动 blender旋转以锁定物件作为中心点旋转 blender选取物件用鼠标右键, 选中物件之后,利用数字键盘中的点(Del) 来 ...
- jq实现前端文件上传
FormData FormData是XMLHttpRequest Level 2 新增的一个接口. 使用FormData可以实现各种文件上传. 使用 // 创建FormData的实例 var form ...
- JAVA常用注解
摘自:https://www.cnblogs.com/guobm/p/10611900.html 摘要:java引入注解后,编码节省了很多需要写代码的时间,而且精简了代码,本文主要罗列项目中常用注解. ...
- Intel 处理器架构演进 转
Intel 处理器架构演进 Posted on 2018-02-13 | Edited on 2018-09-23 | In Computer Architecture | Comments: ...
- 1,fiddler的工作原理和安装
1,工作原理就是通过设置代理监控客户端和服务端的协议 2,fiddler的安装 1,官方的下载地址:https://www.telerik.com/download/fiddler 一步步安装即可 2 ...
- Itreatot接口实现类中modCount的作用
modCount只有在本数据结构对应迭代器中才使用,以HashMap为例: private abstract class HashIterator implements Iterator { Entr ...