RISC-V基础指令之逻辑指令 and、or、xor、not

news2024/10/1 3:34:20

RISC-V的逻辑指令是用于对两个寄存器或一个寄存器和一个立即数进行按位的逻辑运算,并将结果存放在另一个寄存器中的指令。按位的逻辑运算就是把两个操作数的每一位分别进行相应的逻辑运算,得到一个新的位。RISC-V的逻辑指令有以下几种:

  • and:按位与运算,只有当两个操作数的对应位都为1时,结果位才为1,否则为0。
  • or:按位或运算,只有当两个操作数的对应位都为0时,结果位才为0,否则为1。
  • xor:按位异或运算,只有当两个操作数的对应位不相同时,结果位才为1,否则为0。
  • not:按位非运算,将一个操作数的每一位取反,即0变为1,1变为0。

这些逻辑指令都有两种格式,一种是R-Format,用于对两个寄存器进行逻辑运算;另一种是I-Format,用于对一个寄存器和一个立即数进行逻辑运算。R-Format的指令格式如下:

类型opcoderdfunct3rs1rs2funct7
R-Format01100115位3位5位5位7位

其中,opcode是指令的操作码,rd是目的寄存器,funct3是功能码,rs1和rs2是源寄存器,funct7是扩展功能码。不同的逻辑指令有不同的功能码和扩展功能码。例如,and指令的funct3和funct7都是0000000;or指令的funct3是0010000,funct7是0000000;xor指令的funct3是0100000,funct7是0000000。

I-Format的指令格式如下:

类型opcoderdfunct3rs1imm
I-Format00100115位3位5位12位

其中,opcode是指令的操作码,rd是目的寄存器,funct3是功能码,rs1是源寄存器,imm是立即数。不同的逻辑指令有不同的功能码。例如,andi指令的funct3是111;ori指令的funct3是110;xori指令的funct3是100。

下面给出一些使用RISC-V逻辑指令的案例:

  • and指令可以用于清除或屏蔽某些位,即将某些位强制为0。例如,要清除x5寄存器中低8位,并将结果放在x6中,可以使用andi x6,x5,0xFF00。这里的立即数0xFF00是一个12位的二进制数,其低8位为0,高4位为1。
  • or指令可以用于合并两个寄存器中的位域。例如,要将x7寄存器中高16位和x8寄存器中低16位合并,并将结果放在x9中,可以使用slli x10,x7,16; ori x9,x10,x8。这里先将x7左移16位得到x10,再将x10和x8按位或得到x9。
  • xor指令可以用于判断两个寄存器中是否有相同的位。例如,要检查x11和x12是否有相同的第4位,并将结果放在x13中(如果相同则为1,否则为0),可以使用xor x13,x11,x12; srai x13,x13,3; andi x13,x13,1。这里先将x11和x12按位异或得到x13,再将x13右移3位得到第4位,再将x13和1按位与得到结果。
  • not指令可以用于取反一个寄存器中的所有位。例如,要将x14中的所有位取反,并将结果放在x15中,可以使用xori x15,x14,-1。这里的立即数-1是一个12位的二进制数,其所有位都为1。与所有1进行异或操作就相当于取反。

 在下图中给出部分案例供参考 :

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

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

相关文章

c++高性能多进程 cuda编程:GPU结构和通信速度+tiling的代码实现

根据c高性能多进程 cuda编程:GPU结构和通信速度tiling的分析,依靠pytorch的JIT进行了实现,所以在安装pytorch的环境中,直接执行test.py就能直接运行。 代码结构如下,地址 mm.h void function_mm(float *c,const float *a,cons…

一文辨析,性能分析top命令中进程NI和PR

分析 Linux 服务器性能,首先想到的命令肯定是 top, 通过它,我们可以看到当前服务器资源使用情况和进程运行资源占用情况。 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程&…

网络安全【黑客】自学

1.什么是网络安全? 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有…

MySql UNION 一行转多列

背景:DataEase饼图有特定格式,并且报表要求全部使用SQL语句获取数据 原先数据格式如下,需要行转换列 转换后结果: 原理 字段1,target作为一个不存在的字段,用于命名。 字段2,count字段是关键,…

Centos更换网卡名称为eth0

Centos更换网卡名称为eth0 已安装好系统后需要修改网卡名称为eth0 编辑配置文件将ens33信息替换为eth0,可在vim命令模式输入%s/ens33/eth0/g替换相关内容 修改内核文件,添加内容:net.ifnames=0 biosdevname=0 [root@nova3 ~]# vim /etc/default/grub 使用命令重新生成g…

高级IO:五种IO模型

五种IO模型 阻塞IO 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式. 非阻塞IO 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EAGAIN/EWOULDBLOCK错误码. 非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这…

无人驾驶实战-第六课(动态环境感知与Tracking)

跟踪是在连续帧中根据物体信息关联(确定)同一物体 运动模型(motion model):根据历史的位置和速度 ( 大小和方向) 建立模型,预测当前帧中物体的大致位置 外观模型(appearance model):根据历史外观(颜色 尺寸 2D/3D框 轮廓等&#…

开发运营监控

DevOps 监控使管理员能够实时了解生产环境中的元素,并有助于确保应用程序平稳运行,同时提供最高的业务价值,对于采用 DevOps 文化和方法的公司来说,这一点至关重要。 什么是开发运营监控 DevOps 通过持续开发、集成、测试、监控…

如何将超大文件传输给别人,超大文件如何传输呢?

我们在日常生活和工作中,经常会遇到需要把超大文件发送给别人的情况。但是,在互联网发展如此迅速的今天,我们还有哪些方法可以快速地传输超大文件呢?超大文件应该怎样传输才能保证效率和安全呢?这些问题一直困扰着我们…

利用PostGIS自带工具导入shp数据

一、shapefile导入PostGIS 1、利用PostGIS自带工具导入 开始程序搜索如下工具 打开工具界面如下图,点击View conncetion details进行数据库连接,点击Add File进行Shapefile所在路径加载,点击Option进行编码设置,设置完成后点击Im…

mac录屏怎么打开?很简单,让我来教你!

mac电脑作为一款广受欢迎的电脑系统,提供了多种方式来满足用户录屏的需求。无论您是要录制教学视频、制作演示文稿,还是记录游戏精彩瞬间,mac电脑都能帮助您实现这些目标。本文将为您介绍两种mac录屏的方法。通过本文的指导,您将能…

8.4一日总结

1.远程仓库的提交方式(免密提交) a.ssh:隧道加密传输协议,一般用来登录远程服务器 b.使用 git clone 仓库名 配置(生成公私钥对) ssh-Keygen [-t rsa -C 邮箱地址] 通过执行上述命令,全程回车,就会在~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),私钥是必须要保存好的,并不能…

明白均线信号的投资者就知道如何交易

在Forexclub上的交易的投资者,都在使用5、25和50周期的均线来分析收盘价。其中,5周期的均线为红色,25和50周期的均线为黄色。同时使用抛物面SAR指标,保留其默认参数。 开立多头头寸的条件是:5周期的红色均线从下方突破…

身体原来是一份宝贵的“情绪地图”, 疾病都在教导我们如何与世界相处

当我们生病时 很多时候,是一个契机 让我们来倾听自己内心的压抑的真实 聆听身体的声音 身体能够教会我们如何对待情绪 进而教导我们如何与世界相处 -1- 身体上,有你的情绪地图 皮肤是身体的镜子,身体则是心灵的镜子。生病&#xff0c…

亿欧智库:2023中国功效型护肤产品成分解析研究报告(附下载

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 消费端:“纯净美妆〞概念火热,消费驱动因素向成分来源硬核转变 新冠疫情过后,消费者对于生活健康:自然,可持续的关注度持续上升。在消费者…

【小吉带你学Git】idea操作(1)_配置环境并进行基本操作

🎊专栏【Git】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔环境准备⭐配置Git忽略文件🎄方法🌺创…

【音视频】edge与chrome在性能上的比较

目录 结论先说 实验 结论 实验机器的cpu配置 用EDGE拉九路​编辑 google拉五路就拉不出来了 资源使用情况 edge报错​编辑 结论先说 实验 用chrome先拉九路,再想用edge拉九路,发现拉五路后怎么也拉不出; 后面发现cpu爆满;切…

Intellij IDEA运行报Command line is too long的解决办法

想哭,vue前端运行起来,对应的后端也得起服务。 后端出的这个bug,下面的博客写的第二种方法,完整截图是下面这个。 ​​​​​​​​​​​​​​​​​​​​Intellij IDEA运行报Command line is too long的解决办法 - 知乎 (zh…

中小企业的数字化营销应该如何着手?数字化营销到底要怎么做?

从侠义角度讲,数字化营销就是在数字化的媒体上做营销。传播本质上是一种营销的形式 从广义角度讲,我们不仅可以将营销数字化,也可以数字化很多事物,甚至行业,比如数字化制造业、数字化工厂、数字化商会等等 ​而这个…

致远A8+数据库账密信息泄露

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…