【ARM64 常见汇编指令学习 15 -- ARM 标志位的学习】

文章目录

    • ARM 标志位介绍
      • Zero Condition flag(零标志位)
      • 零标志位判断实例

上篇文章:ARM64 常见汇编指令学习 14 – ARM 汇编 .balign,.balignw,.balign 伪指令学习
下篇文章:ARM64 常见汇编指令学习 16 – ARM64 SMC 指令

ARM 标志位介绍

在这里插入图片描述
在ARM架构中,处理器的状态寄存器(例如CPSR)有一些标志位,用于表示特定的状态或结果。以下是这些标志位的含义:

  • N(Negative):负标志位。如果操作的结果是负数,那么N位将被设置为1。
  • Z(Zero):零标志位。如果操作的结果是零,那么Z位将被设置为1
  • C(Carry):进位标志位。如果操作导致了进位或借位,那么C位将被设置为1。
  • V(Overflow):溢出标志位。如果操作的结果导致了算术溢出,那么V位将被设置为1。

这些标志位主要用于条件指令,如CMP(比较)、ADD(加法)、SUB(减法)等,以及条件跳转指令,如BEQ(等于时跳转)、BNE(不等于时跳转)、BGT(大于时跳转)、BLT(小于时跳转)等。

例如:

  • 使用CMP指令比较两个值后,可以通过检查Z位是否被设置来判断这两个值是否相等。
  • 使用ADD指令进行加法操作后,可以通过检查C位是否被设置来判断是否发生了进位。
  • 使用SUB指令进行减法操作后,可以通过检查N位是否被设置来判断结果是否为负数。
  • 使用任何可以导致溢出的算术操作(如加法或乘法)后,可以通过检查V位是否被设置来判断是否发生了溢出。

总的来说,这些标志位为ARM处理器提供了一种检查和响应各种操作结果的机制,这对于许多编程任务来说是非常重要的。

Zero Condition flag(零标志位)

在ARM架构中,有许多指令在执行后会影响零标志位(Z),或者根据零标志位(Z)的状态来决定其行为。以下是一些常见的例子:

  • CMP(Compare):这条指令用于比较两个寄存器的值。它会执行一个减法操作,并根据结果设置条件标志,包括零标志位。如果两个值相等,那么结果为零,零标志位会被设置

  • TST(Test):这条指令用于测试两个寄存器的值。它会执行一个位与(AND)操作,并根据结果设置条件标志,包括零标志位。如果两个值的AND结果为零,那么零标志位会被设置

  • ANDS(Bitwise AND with Set Flags):这条指令执行一个位与操作,并根据结果设置条件标志,包括零标志位。

  • BEQ(Branch if Equal)和BNE(Branch if Not Equal):这两条指令都会根据零标志位的状态决定是否跳转如果零标志位被设置(表示最后一次比较或测试的结果为零),BEQ会导致处理器跳转到指定的位置,BNE不会跳转;如果零标志位被清除,BEQ不会跳转,BNE会跳转。

这只是零标志位在ARM中的一些用途。在实际编程中,零标志位的状态通常用于判断某个操作的结果是否为零,或者两个值是否相等。

零标志位判断实例

tst r0 , #0x2         //进行and运算,如果bit2为1,zero==0,如果bit2为0,则zero==1,即该指令测试bit2是否为0
bne led_blink         //非零则跳转,若zero==1,跳转到led_blink处执行;若zero==0,则继续执行下一步指令
sub r1 , r1 , #1      //r1=r1-1
cmp r1 , #0            //r1是否等于0,并更改标志位     
bne led_blink          //zero==1时跳转至led_blink处,zero==0时则继续执行

上篇文章:ARM64 常见汇编指令学习 14 – ARM 汇编 .balign,.balignw,.balign 伪指令学习
下篇文章:ARM64 常见汇编指令学习 16 – ARM64 SMC 指令

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

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

相关文章

深度对话|如何设计合适的网络经济激励措施

近日,我们与Mysten Labs的首席经济学家Alonso de Gortari进行了对话,讨论了如何在网络运营商和参与者之间找到激励措施的平衡,以及Sui的经济如何不断发展。 是什么让您选择将自己的经济学背景应用于区块链和Web3领域? 起初&…

YOLO相关原理(文件结构、视频检测等)

超参数进化(hyperparameter evolution) 超参数进化是一种使用了genetic algorithm(GA)遗传算法进行超参数优化的一种方法。 YOLOv5的文件结构 images文件夹内的文件和labels中的文件存在一一对应关系 激活函数:非线性处理单元 activation f…

爬虫014_文件操作_打开关闭_读写_序列化_反序列化---python工作笔记033

报错,没有指定路径,没有指定路径无法创建文件 这样可以在当前目录下创建一个可写的文件 可以看到找到刚才生成的文件,看看内容

探讨uniapp的navigator 页面跳转问题

navigator 页面跳转。该组件类似HTML中的<a>组件&#xff0c;但只能跳转本地页面。目标页面必须在pages.json中注册。 "tabBar": {"color": "#7A7E83","selectedColor": "#3cc51f","borderStyle": "bl…

SpringMVC的架构有什么优势?——控制器(三)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

走进知识图谱(二)【世界知识图谱篇】知识表示的经典模型与平移模型及基于复杂关系建模的知识表示学习

上篇文章提到&#xff0c;该系列文章将主要围绕世界知识图谱和语言知识图谱这两大类知识图谱进行展开&#xff0c;并且提到知识图谱的主要研究包括了知识表示学习、知识自动获取和知识的推理与应用三大部分。今天主要介绍世界知识图谱的知识表示学习&#xff0c;其中包括经典的…

uniapp 左右滑动切换页面并切换tab

实现效果如图 要实现底部内部的左右滑动切换带动上方tab栏的切换&#xff0c;并且下方内容要实现纵向滚动 &#xff0c;所以需要swiper&#xff0c;swiper-item,scroll-view组合使用 tab栏部分 <view class"tabs"><view class"tab_item" v-for&…

完成图像反差处理

bmp图像的前54字节为图像头&#xff0c;第19个字节开始4字节为图像宽&#xff0c;第23字节开始4字节为图像高&#xff0c;图像大小为&#xff1a;972*720*3542099574&#xff0c;为宽*高*像素点头&#xff0c;如下&#xff1a; 图像的反差处理

⌈算法进阶⌋图论::并查集——快速理解到熟练运用

目录 一、原理 1. 初始化Init 2. 查询 find 3. 合并 union 二、代码模板 三、练习 1、 990.等式方程的可满足性&#x1f7e2; 2、 1061. 按字典序排列最小的等效字符串&#x1f7e2; 3、721.账户合并 &#x1f7e1; 4、 839.相似字符串组&#x1f7e1; 5、 2812.找出最安全…

智能优化算法:猎豹优化算法-附代码

智能优化算法&#xff1a;猎豹优化算法 文章目录 智能优化算法&#xff1a;猎豹优化算法1.猎豹优化算法1.1 初始化1.2 搜索策略1.3坐等策略1.4攻击策略 2.实验结果3.参考文献4.Matlab5.python 摘要&#xff1a;CO算法是Mohammad AminAkbari等人于2022年受自然界猎豹狩猎启发而提…

JUL 日志 - 最简单易用的Java日志框架

在正式的生产环境下是不能使用 System.out 进行日志记录的 因为 System.out 不能提供时间、线程、执行过程 等信息&#xff0c;如果要手动打印输出则会非常麻烦 而日志就帮我们把这些事给干了 接下来我们学一个最简单的日志框架 JUL JUL全称Java util Logging是java原生的日志框…

支付整体架构

5.4 支付的技术架构 架构即未来&#xff0c;只有建立在技术架构设计良好的体系上&#xff0c;支付机构才能有美好的未来。如果支付的技术体系在架构上存在问题&#xff0c;那么就没有办法实现高可用性、高安全性、高效率和水平可扩展性。 总结多年来在海内外支付机构主持和参与…

Nginx负载均衡以及keepalived高可用实验

Vip 10.1.122 Keepalived-master 10.1.1.132Keepalied-backup 10.1.1.133Realserver_1 10.1.1.136Realserver_2 10.1.1.137 四台机器上安装nginx&#xff0c;编译安装的话需要另外安装pcre包支持&#xff0c;安装在/usr/local/nginx Keepalived-master 和backu…

Vue+SpringBoot后台管理系统:Vue3+TypeScript项目搭建(一)

写在开始:一个搬砖程序员的随缘记录文章目录 一、Node安装二、Vue CLI安装三、相关的版本四、创建Vue3TypeScript项目五、Vue项目初始化六、项目启动 一、Node安装 查看Note版本 node -v查看npm版本 npm -v然后将npm升级至最新版本 npm -g install npm将npm下载源换至http:…

项目中使用git vscode GitHubDesktopSetup-x64

一、使用git bash 1.使用git bash拉取gitee项目 1.在本地新建一个文件夹&#xff08;这个文件夹是用来存放从gitee上拉下来的项目的&#xff09; 2.在这个文件夹右键选择 git bash here 3.输入命令 git init (创建/初始化一个新的仓库) 4.输入命令 git remote add origin …

生成式人工智能模型:提升营销分析用户体验

使用生成式人工智能来改善分析体验&#xff0c;使业务用户能够询问有关我们数据平台中可用数据的任何信息。 在本文中&#xff0c;我们将解释如何使用新的生成式人工智能模型 ( LLM ) 来改善业务用户在我们的分析平台上的体验。假设我们为零售销售经理提供 Web 应用程序或移动应…

【问题解决】Git命令行常见error及其解决方法

以下是我一段时间没有使用xshell&#xff0c;然后用git命令行遇到的一些系列错误和他们的解决方法 遇到了这个报错&#xff1a; fatal: Not a git repository (or any of the parent directories): .git 我查阅一些博客和资料&#xff0c;可以解决的方式&#xff1a; git in…

迅镭激光PL12050重载型激光切管机中标国内知名企业美的集团!

近日&#xff0c;迅镭激光重型激光切管机中标国内知名企业——美的集团! 成立于2002年的菱王电梯&#xff0c;是美的集团暖通与楼宇事业部旗下的专业电梯品牌 &#xff0c;业务覆盖电(扶)梯的研发、设计、制造、销售、安装和维保&#xff0c;自主研发的8m/s超高速电梯和8吨超重…

题34(在排序数组中查找元素的第一个和最后一个位置)

使用二分查找 此题的关键在于找到左端点和右端点 找中点 两种操作 左端点用第一个方式 右端点用第二种&#xff0c;避免死循环 二分模板 class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size()0) return{-…

Hadoop理论及实践-HDFS读写数据流程(参考Hadoop官网)

NameNode与DataNode回顾 主节点和副本节点通常指的是Hadoop分布式文件系统&#xff08;HDFS&#xff09;中的NameNode和DataNode。 NameNode&#xff08;主节点&#xff09;&#xff1a;NameNode是Hadoop集群中的一个核心组件&#xff0c;它负责管理文件系统的命名空间和元数据…