精简指令集(MIPS为例)常用指令特点及其格式

article/2025/10/10 23:39:38

精简指令集(MIPS为例)常用指令特点及其格式

一、指令集

指令集是指一台计算机的全部指令;不同的计算机有不同的指令集,但是在许多方面都有共同之处。早期的计算机有非常简单的指令集:实现简单,许多现代计算机也有简单的指令集。因此,指令集具有精简指令集(RISC)与复杂指令集(CISC)之分,本文主要介绍精简指令集,并以其中的MIPS为例展开。

二、设计原则

设计原则1: 简单源于规整
规整使得实现更简单
简单使得以较低成本实现更高性能成为可能
设计原则2: 越小越快
设计原则3: 加速执行常用操作

小常数出现频率高
立即数操作避免load指令
设计原则4:优秀的设计需要适宜的折中方案
不同的指令格式使译码变得复杂, 但是允许所有指令统一32-bit 字长
使格式尽可能相似

三、常用指令

常用指令汇总

	add rd,rs,rtrd=rs+rt;sub rd,rs,rtrd=rs-rt;addi rt,rs,constantrt=rs+constant;lw rt,rs,constantrt=Address(rs+constant/4);//Address(rs+constant/4)表示:rs对应的数组,索引为constant/4的取值lw rt,rs,constantAddress(rs+constant/4)=rt;sll rt,rs,constantrt=rs<<4;srl rt,rs,constantrt=rs>>4;and rd,rs,rtrd=rs&rt;//按位与,还有andior rd,rs,rtrd=rs|rt;//按位或,还有orinor rd,rs,rt//rt取$zerord=rs~rt;//按位取反beq rs,rt,L1if (rs == rt) 分支跳转到指令L1;bne rs, rt, L1if (rs != rt) 分支跳转到指令L1;j L1无条件跳转到指令 L1slt rd,rs,rtif (rs<rt) rd=1; else rd=0;slti rt,rs,constantif (rs<constant) rt=1; else rt=0;带符号数比较:slt, slti无符号数比较:sltu, sltiu例如:$s0 = 1111 1111 1111 1111 1111 1111 1111 1111$s1 = 0000 0000 0000 0000 0000 0000 0000 0001slt $t0,$s0,$s1  # signed1 < +1 ===> $t0 = 1sltu $t0,$s0,$s1  # unsigned+4,294,967,295 > +1 ===> $t0 = 0jal 过程标签l跳转到目标地址jr $ra复制 $ra的内容到程序计数器PClb rt, offset(rs)     lh rt, offset(rs)在 rt中用符号位扩展到32 bitslbu rt, offset(rs)    lhu rt, offset(rs)在 rt中用0扩展到32 bitssb rt, offset(rs)     sh rt, offset(rs)只存储最右边的字节/半字lui rt, constant复制16-bit 常数值 到rt的高16位,将rt 的低16位清为 0链接取数:ll rt, offset(rs)条件存数:sc rt, offset(rs)

在这里插入图片描述

寄存器用法

$a0 – $a3:参数寄存器 (reg’s 4 – 7)
$v0, $v1:结果值寄存器(reg’s 2 and 3)
$t0 – $t9:临时寄存器,用于存储临时值,可以由被调用者重写
$s0 – $s7:保留寄存器,用于存储变量,必须由被调用者保存/恢复
$gp:静态数据的全局指针(reg 28)
$sp:栈指针(reg 29)
$fp:帧指针(reg 30)
$ra:返回地址(reg 31)

过程调用步骤

1.将参数放在寄存器中
2.将控制转移给过程
3.获得过程所需的存储资源
4.执行过程的操作
5.将结果放在调用者可以访问到的寄存器
6.返回调用点

四、32位指令格式

R-格式指令
在这里插入图片描述
op:操作码(opcode)
rs:第一源操寄存器号
rt:第二源操寄存器号
rd:目的寄存器号
shamt:移位的位数(其它指令为00000)
funct:功能码(扩展操作码)

I-格式指令
在这里插入图片描述
立即数运算和load/store指令
rt:源寄存器号(store指令)或目的寄存器号(立即数运算和load指令)
立即数:–215 — +215 – 1
地址:rs中的基地址加上偏移量

J-格式指令
在这里插入图片描述
跳转 (j和jal) 目标地址可以是代码段的任意位置


http://chatgpt.dhexx.cn/article/unmBArcX.shtml

相关文章

精简指令集

精简指令集编辑risc&#xff08;精简指令集&#xff09;一般指精简指令集 本词条缺少 信息栏&#xff0c;补充相关内容使词条更完整&#xff0c;还能快速升级&#xff0c;赶紧来 编辑吧&#xff01; RISC的英文全称是Reduced Instruction Set Computer&#xff0c;中文是精简指…

Centos7 连接wifi (PEAP)

1 注意连接的wifi 2 安全中的设置&#xff0c;按照下图 3 有问题&#xff0c;记得reboot重启一下&#xff01;

802.1x EAP(证书)、PEAP(证书、EAP-MSCHAP v2)认证配置(NPS、组策略)

802.1x EAP(证书) NPS 组策略 PEAP&#xff08;证书、EAP-MSCHAP v2&#xff09; NPS 组策略按需配置&#xff0c;下图是PEAP证书

Android Wifi连接 (PEAP)

Wifi PEAP方式的连接与Android的版本有很大关系&#xff0c;三个大的差别对应的版本分别是4.3以下&#xff0c;4.3到6.0之间&#xff0c;以及6.0以上&#xff0c;现在就基于版本分析。 如果要连接wifi&#xff0c;那么得创建WifiConfiguration 版本4.3以下&#xff0c;需要采…

AP与mAP的详解

AP和mAP是图像分类任务中的评价方法。 mAP的计算方法&#xff1a; 1、首先使用训练好的模型获得所有测试样本的confideutnce score&#xff0c;每个类别&#xff08;如person、car等&#xff09;都会获得一组confidence score&#xff0c;假设现在共有20个测试样本&#xff0…

AP,mAP

AP&#xff08;Average Precision&#xff09; AP (Average precision)是主流的目标检测模型的评价指标。 定义&#xff1a;平均精度&#xff0c;就是对PR曲线上的Precision值求均值&#xff0c;即PR曲线下的面积。 由于IoU有三种计算方式&#xff0c;对应地&#xff0c;AP也…

RADIUS 服务器之 hostapd 配置说明

RADIUS 服务器之 hostapd 配置说明 本文提供了企业级加密的 RADIUS 服务器配置环境搭建&#xff0c;供读者参考。 一. 安装 hostapd $ sudo apt-get install libnl1 libnl-dev libnl-doc $ sudo apt-get install libssl-dev $ sudo apt-get install bridge-utils $ sudo ap…

EAP-TLS/EAP-TTLS/EAP-PEAP

原文&#xff1a;http://blog.chinaunix.net/uid-26422163-id-3457357.html IEEE的802.1X使用了EAP认证框架&#xff0c;因为EAP提供了可扩展的认证方法&#xff0c;但是这些认证方法的安全性完全取决于具体的认证方法&#xff0c;比如EAP-MD5、EAP-LEAP、EAP-GTC等&#xff0c…

peaks

文章目录 语法说明示例 peaks:包含两个变量的示例函数 语法 Z peaks; Z peaks(n); Z peaks(V); Z peaks(X,Y); peaks(...) [X,Y,Z] peaks(...);说明 peaks 是从高斯分布转换和缩放得来的包含两个变量的函数&#xff0c;在演示 mesh、surf、pcolor、contour 等函数中很有…

Radius协议、EAP协议、EAP-MSCHAPv2、EAP-TLS、EAP-TTLS和EAP-PEAP

1. Radius协议 Radius协议是目前AAA服务中所使用的最广泛的协议&#xff0c;它对认证&#xff0c;授权以及计费的功能都提供支持。Radius服务器通过建立一个唯一的用户数据库&#xff0c;存储用户名&#xff0c;用户密码等一系列信息&#xff0c;接入用户通过发送自己的用户名…

使用 freeradius 搭建 EAP PEAP MS-CHAPv2 验证环境

企业级 Wi-Fi 搭建起来有点小复杂&#xff0c;我们知道自己家使用的 Wi-Fi 非常简单&#xff0c;几乎只需要配置一下热点的 SSID 和密码就可以了&#xff0c;实际上这是两种 Wi-Fi 认证类型。想要快速部署企业级 Wi-Fi 验证环境&#xff0c;首先要理解企业级 Wi-Fi 部署的一些核…

IEEE 802.1X-PEAP认证过程分析(抓包)

IEEE 802.1X-PEAP认证过程分析&#xff08;抓包&#xff09; 本文介绍IEEE802.1X认证的PEAP认证方式&#xff0c;是带有radius服务器的EAP中继认证。 IEEE802.1X认证是使用EAP报文格式在申请者和认证者之间交换信息。带有radius服务器&#xff0c;即认证者不对申请者发送的数据…

PEP是什么

转载 &#xff1a;https://www.cnblogs.com/abella/p/10056875.html PEP是什么&#xff1f; PEP的全称是Python Enhancement Proposals&#xff0c;其中Enhancement是增强改进的意思&#xff0c;Proposals则可译为提案或建议书&#xff0c;所以合起来&#xff0c;比较常见的翻…

企业级无线渗透之PEAP

0x00 前言 上月&#xff0c;受邀在C-SEC上海快递行业安全会议上做了关于无线安全威胁的议题分享。介绍了家庭级的无线网络薄弱环节及攻击方法&#xff0c;同时列举了乌云上因无线边界被突破&#xff0c;造成内网沦陷的诸多例子。后半部分&#xff0c;简要的介绍了企业级无线网络…

深度讲解linux中fputc()函数

字符写入fputc函数 int fputc(int char, FILE *stream) 返回值 如果没有发生错误&#xff0c;则返回被写入的字符。如果发生错误&#xff0c;则返回 EOF&#xff0c;并设置错误标识符。 ch 为要写入的字符&#xff0c;fp 为文件指针。fputc() 写入成功时返回写入的字符&…

文件操作之函数fputc(),fgetc()

目录 引言 一、fputc()与putchar()的联系 二、fgetc()与getchar()的联系 总结 引言 引用自《C程序设计-清华大学出版社 (2017)》 一、fputc()与putchar()的联系 fputc(ch,fp)是将ch输出到fp所指的文件里面putchar(ch)是将ch输出到屏幕 FILE*fpfopen("text.txt",…

文件操作:fgetc与fputc函数的使用

在成功打开文件后&#xff0c;我们便可以对文件进行操作&#xff0c;以下是字符输入函数fgetc和字符输出函数fputc的简单使用说明。 如果还不知道如何打开文件的可以看看我的另一篇文章。 点我 fputc函数的使用 当我们以读的形式打开文件的时候&#xff0c;便可以使用fputc函数…

c语言中fputc函数的作用是,C语言中fputc函数的用法_后端开发

Python画ROC曲线和AUC值计算(附代码)_后端开发 ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器的优劣。这篇文章将先简单的介绍ROC和AUC&#xff0c;而后用实例演示如何python作出ROC曲线图以及计算AUC。 C语言中fputc函数的用法 C语言中fputc函数…

C语言文件操作入门:fopen、fclose、fputc、fgetc、fputs、fgets、fprintf、fscanf、fwrite、fread详解

本篇文章主要讲解4组函数&#xff1a; 字符读写&#xff1a;fputc和fgetc。文本行读写&#xff1a;fputs和fgets。格式化读写&#xff1a;fprintf和fscanf。二进制读写&#xff1a;fwrite和fread。 预备知识&#xff1a;fopen和fclose 如果我们要读写一个文件&#xff0c;就必…

linux fputc fgetc fseek rewind 函数

目录 前言fputc 函数fgetc 函数fseek函数rewind函数 前言 <sprintf fprintf 函数 > 前一节讲了 sprintf fprintf 函数 的缓存问题 在他们的基础上加了一个while&#xff08;1&#xff09;&#xff1b; 来验证 结果都是输出的 不管怎么样 都会写入到内核态 内核态在输出…