MIPS32 指令架构

指令格式

R 类型

在这里插入图片描述

说明: 用于寄存器和寄存器操作

参数说明:

  • Op: 指令操作码
  • Rs: 第一个源操作数寄存器号,参与运算使用
  • Rd: 目的操作数寄存器号,保存结果使用
  • Shamt: 位偏移量,仅在位移指令使用,在此直接置0
  • Func: 指令函数码,用于选择Op操作中的具体函数

例子:

  • 比如加法运算,在指令操作码中,指出它是算术运算;在指令函数码中,指出它是算术运算中的加法运算
  • $Rd = $Rs + $Rt

I类型

在这里插入图片描述

说明:

  • 用于短立即数和内存载入指令load操作
  • 立即数,顾名思义,就是可以立即使用的数,即在指令中就给了具体的数据,而不用先给出寄存器号到寄存器中去找

参数说明:

  • Op: 指令操作码
  • Rs: 第一个源操作数寄存器号,参与运算使用
  • Rt: 第二个源操作数寄存器号,参与运算使用
  • 16位立即数: 作为数据,参与运算使用

J型指令

在这里插入图片描述

说明: 用于无条件跳转

参数说明:

  • Op: 指令操作码
  • 26位地址数: 作为地址,参与寻址使用

and、or、xor、nor(R类型)

图例

在这里插入图片描述

and 例子

当功能码是6’b100100时,表示是and指令,逻辑"与"运算

指令用法: add rd, rs, rt

指令作用:

  • rd <- rs AND rt 。将地址为rs 的通用寄存器的值与地址为rt的通用寄存器的值进行逻辑"与"运算
  • 运算结果保存到地址为rd的通用寄存器中

or 例子

当功能码是 6’b100101时,表示是or指令,逻辑"或"运算

指令用法: or rd, rs, st

指令作用:

  • rd <- rs OR rt, 将地址为rs的通用寄存器的值与地址为rt的通用寄存器的值进行逻辑"或"运算
  • 运算结果保存到地址为rd的通用寄存器中

xor 例子

当功能码是6’b100110,表示是xor指令,异或运算

指令用法: xor rd, rs, rt

指令作用:

  • rd <- rs XOR rt, 将地址为rs的通用寄存器的值与地址为rt的通用寄存器的值进行逻辑"异或"运算
  • 运算结果保存到地址为rd的通用寄存器中

nor 例子

当功能码是6’b100111时,表示是nor指令,或非运算

指令用法: nor rd, rs, rt

指令作用:

  • rs <- rs NOR rt,将地址为rs的通用寄存器的值,与地址为rt的通用寄存器的值进行逻辑"或非"运算
  • 运算结果保存到地址为rd的通用寄存器中

andi、xori指令 (I类型)

图例

在这里插入图片描述

andi 例子

当指令码是 6’b001100,表示是andi指令,逻辑"与"运算

指令用法: andi rt,rs, immediate

指令作用:

  • rd <- rs AND zero_extended(immediate)
  • 将地址为rs的通用寄存器的值与指令中立即数进行零扩展后的值与指令中立即数进行零扩展后的值进行逻辑“与”运算
  • 运算结果保存到地址为rt的通用寄存器中

xori 例子

当指令码是6’b001110,表示xori指令,异或运算

指令用法: xori, rt, rs, immediate

指令作用:

  • rs <- rs XOR zero_extended(immediate)
  • 将地址为rs的通用寄存器的值与指令中立即数进行零扩展后的值进行逻辑"异或"运算
  • 运算结果保存到地址为rt的通用寄存器

lui 指令(I类型)

图例

在这里插入图片描述

lui 例子

依据指令中第26 ~ 31bit指令码的值是否为6’b001111,从而判断是否是lui指令

指令用法: lui rt, immediate

指令作用:

  • rt <- immediate || 0 ^ 16
  • 将指令中的16bit立即数保存到地址为rt的通用寄存器的高16位
  • 另外,地址为rt的通用寄存器的低16位使用0填充

sll、sllv、sra、srav、srl、srlv指令(R类型)

图例

在这里插入图片描述

sll 例子

当功能码是6’b000000,表示是sll指令,逻辑左移

指令用法: sll rd, rt, sa

指令作用:

  • rd <- rt << sa(logic), 将地址为rt的通用寄存器的值向左移sa位,空出来的位置使用0填充
  • 结果保存到地址为rd的通用寄存器中

srl 例子

当功能码事 6’b000010, 表示srl指令,逻辑右移

指令用法: srl rd, rt, sa

指令作用:

  • rd <- rt >> sa(login), 将地址为rt的通用寄存器的值向右移sa位,空出来的位置使用0填充
  • 结果保存到地址为rd的通用寄存器中

sra 例子

当功能码是 6’b000022,表示sra指令,算术右移

指令用法: sra rd, rt, sa

指令作用:

  • rd <- rd >> sa(arithmetic) ,将地址为rt的通用寄存器的值向右移sa位,空出来的位置使用rt[31]的值填充
  • 结果保存到地址为rd的通用寄存器中

sllv 例子

当功能码是 6’b000100, 表示sllv指令,逻辑左移

指令用法: sllv rd, rt, rs

指令作用

  • rd <- rt << rs[4:0](logic), 将地址为rt的通用寄存器的值向左移位,空出来的位置使用0填充
  • 结果保存到地址为rd的通用寄存器中
  • 移位位数由地址为rs的寄存器值的第0~4bit确定

srlv 例子

当功能码 6’b000110, 表示是srlv指令,逻辑右移

指令用法: srlv rd, rt, rs

指令作用:

  • rd <- rt >> rs[4:9](logic),将地址为rt的通用寄存器的值向右移位,空出来的位置用0填充
  • 结果保存到地址为rd的通用寄存器中
  • 移位位数由地址为rs的寄存器的第0~4bit

srav 例子

当功能码是 6’b000111,表示是srav,算术右移

指令用法: srav rd, rt, rs

指令作用:

  • rd <- rt >> rs[4:0](arthmetic) ,将地址为rt的通用寄存器的值向右移位,空出来的位置使用rt[31]填充
  • 结果保存到地址为rd的通用寄存器中
  • 移位位数由地址为rs的寄存器值的第0~4bit确定

nop、ssnop、sync、pref指令

图例

在这里插入图片描述

nop、ssnop、sync 这3条指令都是R类型指令,并且 指令码都是 6’b000000,都是SPECIAL 类

pref 属于 J类型指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入 Django 模型层:数据库设计与 ORM 实践指南

title: 深入 Django 模型层&#xff1a;数据库设计与 ORM 实践指南 date: 2024/5/3 18:25:33 updated: 2024/5/3 18:25:33 categories: 后端开发 tags: Django ORM模型设计数据库关系性能优化数据安全查询操作模型继承 第一章&#xff1a;引言 Django是一个基于Python的开源…

【C++】深入剖析C++11中右值引用和左值引用

目录 一、左值引用 && 右值引用 二、左值引用于右值引用的比较 三、 右值引用使用场景和意义 1、函数返回值 ①移动赋值 ②移动构造 2、STL容器插入接口 ​3、完美转发 一、左值引用 && 右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了…

【简单介绍下Lisp的学习历程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Mybatis之Sqlsession、Connection和Transaction三者间的关系

前言 最近在看Mybatis的源码&#xff0c;搜到这篇文章Sqlsession、Connection和Transaction原理与三者间的关系&#xff0c;debug之后发现有不少疑惑&#xff0c;于是按照原文整理了一下&#xff0c;记录下debug中的一些困惑点。 对于我们开发来讲&#xff0c;不管跟任何关系…

django搭建一个AI博客进行YouTube视频自动生成文字博客

文章目录 一、生成Django框架二、项目代码&#xff08;前端&#xff09;1、编写前端代码&#xff08;正文界面&#xff09;1.1、生产html框架1.2、添加live preview扩展1.3、更改title元素中文本1.4、添加CDN&#xff08;CSS&#xff09;样式链接1.5、nav标签1.6、在body标签中…

Python | Leetcode Python题解之第66题加一

题目&#xff1a; 题解&#xff1a; class Solution:def plusOne(self, digits: List[int]) -> List[int]:n len(digits)for i in range(n - 1, -1, -1):if digits[i] ! 9:digits[i] 1for j in range(i 1, n):digits[j] 0return digits# digits 中所有的元素均为 9retu…

手撸Mybatis(三)——收敛SQL操作到SqlSession

本专栏的源码&#xff1a;https://gitee.com/dhi-chen-xiaoyang/yang-mybatis。 引言 在上一章中&#xff0c;我们实现了读取mapper配置并构造相关的mapper代理对象&#xff0c;读取mapper.xml文件中的sql信息等操作&#xff0c;现在&#xff0c;在上一章的基础上&#xff0c…

深度学习:基于TensorFlow、Keras,使用长短期记忆神经网络模型(LSTM)对Microsoft股票进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

分享我的github仓库

这是一个由现代C编写的小型、学习性质的服务器框架&#xff0c;包含压缩&#xff0c;序列化&#xff0c;IO调度&#xff0c;Socket封装&#xff0c;文件配置&#xff0c;日志库等多个完整自研模块&#xff0c;欢迎到我的仓库阅读代码和安装体验&#xff0c;期待任何的建议和反馈…

Docker 加持的安卓手机:随身携带的知识库(一)

这篇文章聊聊&#xff0c;如何借助 Docker &#xff0c;尝试将一台五年前的手机&#xff0c;构建成一个随身携带的、本地化的知识库。 写在前面 本篇文章&#xff0c;我使用了一台去年从二手平台购入的五年前的手机&#xff0c;K20 Pro。 为了让它能够稳定持续的运行&#xf…

如何从Mac电脑恢复任何删除的视频

Microsoft Office是包括Mac用户在内的人们在世界各地创建文档时使用的最佳软件之一。该软件允许您创建任何类型的文件&#xff0c;如演示文稿、帐户文件和书面文件。您可以使用 MS Office 来完成。所有Microsoft文档都可以在Mac上使用。大多数情况下&#xff0c;您处理文档&…

手搓堆(C语言)

Heap.h #pragma once#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> #include <string.h> typedef int HPDataType; typedef struct Heap {HPDataType* a;int size;int capacity; }Heap;//初始化 void Heap…

软件工程习题答案2024最新版

习题一答案 一、选择题 软件的主要特性是(A B C)。 A) **无形 **B) 高成本 C) **包括程序和文档 ** D) 可独立构成计算机系统 软件工程三要素是(B)。 A) 技术、方法和工具 B) 方法、工具和过程 C) 方法、对象和类 D) 过程、模型、方法 包含风险分析的软件工程模型是(A)…

深度学习之基于Matlab BP神经网络烟叶成熟度分类

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 烟叶的成熟度是评估烟叶品质的重要指标之一&#xff0c;它直接影响着烟叶的口感、香气和理化特性。传…

python基础算法题0502

数字反转 无论是字符串反转还是数字反转&#xff0c;其实都一样。 需求 代码 class Solution:def reverse(self, x: int) -> int:if 0 < x < 2 ** 31 - 1:m str(x)[::-1]if int(m)<2**31-1:return int(m)else:return 0if 0 > x > -2 ** 31:y -xn str(y…

uniapp 监听APP切换前台、后台插件 Ba-Lifecycle

监听APP切换前台、后台 Ba-Lifecycle 简介&#xff08;下载地址&#xff09; Ba-Lifecycle 是一款uniapp监听APP切换前台、后台的插件&#xff0c;简单易用。 截图展示 也可关注博客&#xff0c;实时更新最新插件&#xff1a; uniapp 常用原生插件大全 使用方法 在 script…

华为机考入门python3--(19)牛客19- 简单错误记录

分类&#xff1a;字符串 知识点&#xff1a; 分割字符串 my_str.split(\\) 字符串只保留最后16位字符 my_str[-16:] 列表可以作为队列、栈 添加元素到第一个位置 my_list.insert(0, elem) 增加元素到最后一个位置 my_list.append(elem) 删除第一个 my_list.pop(0)…

SAP_SD模块-销售批次策略应用记录

一、销售批次查找策略的重要性 批次查找策略允许企业在销售过程中根据预定义的规则自动选择最适合的产品批次。这种策略的实施&#xff0c;对企业尤其是那些涉及到严格产品质量与安全标准的行业&#xff08;如食品、药品及化工产品&#xff09;具有以下几方面的重要意义&#x…

[方法] Unity 实现仿《原神》第三人称跟随相机 v1.0

参考网址&#xff1a;【Unity中文课堂】RPG战斗系统Plus 在Unity游戏引擎中&#xff0c;实现类似《原神》的第三人称跟随相机并非易事&#xff0c;但幸运的是&#xff0c;Unity为我们提供了强大的工具集&#xff0c;其中Cinemachine插件便是实现这一目标的重要工具。Cinemachi…

从键入网址到网页显示,期间发生了什么?

从键入网址到网页显示&#xff0c;期间发生了什么&#xff1f; 孤单小弟【HTTP】真实地址查询【DNS】指南帮手【协议栈】可靠传输【TCP】远程定位【IP】两点传输【MAC】出口【网卡】送别者【交换机】出境大门【路由器】互相扒皮【服务器与客户端】相关问答 不少小伙伴在面试过程…