MIPS有三种命令格式。
r型
6
5
5
5
5
6
OPP
rs
rt
rd
沙姆托
函数
功能:寄存器-寄存器ALU操作(算术运算、逻辑运算) )。
I型
6
5
5
16
OPP
rs
rt
马上清点操作
功能:条件分支、跳跃
j型
6
26
OPP
跳转到
功能:跳跃
MIPS的一般指令集
lb/lh/lw:从存储器读取一个字节/半字符/字符的数据到寄存器。
sb/sh/sw:将一个字节/半字符/字符的数据从寄存器存储到存储器中
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:的值小于rt,则将rd的值设置为1,否则将rd的值设置为0。 rd=(RSrt )? 1 : 0; rd=(RSim )? 1 : 0
逻辑类:
and/长情蝴蝶:和运算,两个寄存器的内容相和; 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={ { pc4 } [ 31,28 ],addr,00}; jr使用寄存器跳跃PC=rs; jal $31=PC; PC={ { pc4 } [ 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的方法两种,如$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完成
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写入跳转地址值 ...
ARM汇编指令集3
常用ARM指令1:数据处理指令 •数据传输指令 mov mvn mov r1, r0 @两个寄存器之间数据传递 mov r1, #0xff ...
ARM汇编指令集1
(汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行. (汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译 ...
MIPS汇编程序设计——四则运算计算器
实验目的 运用简单的MIPS实现一个能够整数加减乘除的计算器,同时使自己更加熟悉这些指令吧 MIPS代码 #sample example 'a small calculater’ # data sec ...
PowerPC汇编指令集
PowerPC 体系结构规范(PowerPC Architecture Specification)公布于 1993 年,它是一个 64位规范 ( 也包括 32 位子集 ).差点儿全部常规可用的 Po ...
随机推荐
数据库密码爆破HexorBase
数据库密码爆破HexorBase 数据库服务是服务器上最常见的一类服务.由于数据库保存大量的敏感信息,所以它的安全非常重要.测试数据库服务安全的重要方式,就是检查口令的强壮度. Kali Li ...
Java性能优化权威指南-读书笔记(三)-JVM性能调优-内存占用
zddbks代.老年代.永久代的概念不多说,这三个空间中任何一个不能满足内存分配请求时,就会发生垃圾收集. zddbks代不满足内存分配请求时,发生Minor GC,老年代.永久代不满足内存分配请求时,发生Full ...
Zipper_DP
Description Given three strings, you are to determine whether the third string can be formed by comb ...
poj City Horizon (线段树+二分离散)
http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
SAP 使用SQL Trace(ST05)
SAP 使用SQL Trace(ST05) SAP R/3 提供标准ABAP SQL 跟踪工具.使用T-Code:ST05 可以进入追踪设定画面: 在Trace Modes 区域中选 ...
NicEdit - WYSIWYG Content Editor, Inline Rich Text Application
NicEdit - WYSIWYG Content Editor, Inline Rich Text Application By calling the nicEditors.allTextarea ...
Java进阶(三十) 判断字符串编码类型
java 判断字符串编码类型 public static String getEncoding(String str) { String encode = "GB2312"; tr ...
mysql安装问题(一)
mysql安装问题 mysql安装一直未响应 问题: 原因: 解决方案: 登录mysql时提示密码错误 问题: 解决方案: mysql安装问题 Author:母虎忠 日期:April 26, 2019 ...
《Web安全深度剖析》
书名 图片 时间 2018-11月 总结 算是我安全的启蒙书 前五章都是工具 看完差不多算个脚本小子 后面的实战感觉很空洞没什么实战
SpringBoot2.0 redis生成组建和读写配置文件
@Component 生成组建 @ConfigurationProperties(prefix="redis") 读写redis配置文件 application.propertie ...