【ARM64 常见汇编指令学习 18 -- ARM64 TST 指令与 条件标志位 Z】

文章目录

    • 回顾零标志位Z
    • TST 测试指令

上篇文章:ARM64 常见汇编指令学习 17 – ARM64 BFI 指令
下篇文章:ARM64 常见汇编指令学习 19 – ARM64 BEQ与B.EQ的区别

回顾零标志位Z

在ARMv8架构中,标志位Z(Zero)是条件码寄存器(Condition Code Register)中的一位,用来表示最近一次算术或逻辑操作的结果是否为零。

如果操作的结果为零,Z标志位会被设置为1。如果操作的结果不为零,Z标志位会被清零

例如,以下汇编代码进行了一个减法操作:

MOV R0, #5 
MOV R1, #5 
SUB R2, R0, R1

在这个例子中,R0R1中的值都是5,所以它们的差是0,因此Z标志位会被设置为1

Z标志位通常用在条件分支指令中。例如,BEQ(Branch if Equal)指令会检查Z标志位,如果Z标志位1,就跳转到指定的地址。例如:

MOV R0, #5 
MOV R1, #5 
SUB R2, R0, R1 
BEQ is_zero 
// ... is_zero: 
// ...

在这个例子中,如果R0R1中的值相等,SUB指令的结果就是0Z标志位就会被设置为1,然后BEQ指令就会跳转到is_zero标签指定的地址。

TST 测试指令

TST是ARM架构的一个汇编指令,用于测试(Test)两个寄存器中的值。TST指令执行按位与(AND)操作,但并不将结果保存,而是根据结果来设置条件代码寄存器(Condition Code Register)。

在ARMv8架构中,TST指令的格式如下:

TST Rn, Operand2

这条指令会将寄存器Rn中的值和Operand2进行按位与操作,并根据结果设置条件代码寄存器。如果结果为0,则Z(Zero)标志被设置;否则,Z标志被清除。

以下是一个使用TST指令的例子:

MOV x0, #5 
MOV x1, #1 
TST x0, x1
BEQ zero_labelzero_label:
//...

在这个例子中,首先我们将5赋值给寄存器x0,将1赋值给寄存器x1。然后,我们使用TST指令将x0x1中的值进行按位与操作。

由于5的二进制表示是1011的二进制表示是001,所以51的按位与结果是1。因此,Z标志被清除。
如果将x0赋值为4(0b100),那么Z标志将被设置为1

总的来说,TST指令在你需要根据两个值的按位与结果来改变程序流程时非常有用,如在条件分支或循环中。

上篇文章:ARM64 常见汇编指令学习 17 – ARM64 BFI 指令
下篇文章:ARM64 常见汇编指令学习 19 – ARM64 BEQ与B.EQ的区别

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

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

相关文章

PSP - 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132334671 Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization Open…

制作电商网站帮助中心,节省60%的咨询工作量

随着电子商务的快速发展,越来越多的企业选择在网上建立自己的电商平台。然而,一旦电商网站上线,就会面临一系列的问题和挑战。其中一个重要问题是如何有效管理和解答大量用户的咨询和问题,这对于提高用户体验和促进销售至关重要。…

day1:前端缓存问题

❝ 「目标」: 持续输出!每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。篇幅不会过长,方便理解和记忆。 ❞ ❝ 「主要面向群体:」前端开发工程师(初、中、高级)、应届、转行、培训等同学 ❞ Day…

【数据治理】WKC+Minio+Airflow --20230821(链接)

https://blog.csdn.net/m0_46629123/article/details/132413616

docker安装es8.x及elasticSearch8部分api使用

docker中安装es8 1、es8的tar下载地址: tar包下载地址) 2、docker load -i es-name 3、docker run -d --name elasticsearch-8.6.2 -e ES_JAVA_OPTS“-Xms256m -Xmx256m” -p 9200:9200 -p 9300:9300 -e “discovery.typesingle-node” elasticsearch:8.6.2 4、8开始以后不支持…

YOLOv5、v8改进:引入SKAttention注意力机制

目录 1.简介 2.YOLOv5改进 2.1增加以下SKAttention.yaml文件 2.2common.py配置 2.3yolo.py配置 1.简介 论文链接:https://arxiv.org/pdf/1903.06586.pdf 最近对卷积神经网络中的“自适应调整感受野”这样的操作很感兴趣,从字面的意思可以理解&…

Spring练习---28 (用户表和角色表分析,角色列表展示,角色层和Dao层的设置,页面展示操作)

84、下面进入我们的业务层面,进入我们的业务层面我们先分析一个东西,我们要分析用户和角色的关系,因为我们只有在分析完用户和角色之间的关系后,我们才知道表的关系,实体的关系 85、现在我们先画一张表,分析…

从FLIR热像仪图像中读取温度和原始照片: Python处理与应用的深入解析

第一部分:FLIR热像仪图像简介与Python环境准备 热像仪是一种可以检测辐射热量的设备,并将其转换为可视图像。FLIR(Forward Looking Infrared)热像仪是市面上的主导品牌之一,被广泛应用于各种场景,例如医学、军事和消费电子产品。其输出的图像不仅仅是我们看到的彩色或灰…

cUrl的介绍和基本使用

cURL 如果你在开发接口的时候,需要调试。那么cUrl将是你必备的技能。也许你用过postman,但这个未免太重量级了。curl将会是你最佳轻量级,调试接口的工具😀 1.Curl函数的基本选项✨ 1.1 --request和 -x —request 和 -X 指定与HTTP服务器通信…

Apache Doris IP变更问题详解

Apache Doris IP变更问题详解 一、背景二、环境硬件信息软件信息 三、FE恢复3.1 异常日志3.2 获取当前ip3.3 重置ip信息3.4 重置元数据记录3.5 元数据模式恢复3.6 重置fe集群节点3.7 关闭元数据模式重启fe 四、BE恢复4.1 获取当前ip4.2 重置ip信息4.3 重置be集群节点 一、背景 …

vue3 基础知识

vue3创建一个项目 PS D:\code> npm init vuelatestVue.js - The Progressive JavaScript Framework√ Add TypeScript? ... No / Yes √ Add JSX Support? ... No / Yes √ Add Vue Router for Single Page Application development? ... No / Yes √ Add Pinia for sta…

WordPress用于您的企业网站的优点和缺点

如今,WordPress 被广泛认为是一个可靠、可扩展且安全的平台,能够为商业网站提供支持。然而,许多人质疑 WordPress 是否是适合企业的平台。 这就是我们创建本指南的原因。通过探索 WordPress 的优点和缺点,您可以确定世界上最受欢…

linux部署kafka3.5.1(单机)

一、下载jdk17 kafka3.x版本需要jdk11以上版本才能更好的兼容,jdk11、jdk17都是LTS长期维护版本,而且jdk17支持springboot3.x,所以我选择了openjdk17。 下载地址: Archived OpenJDK GA Releaseshttps://jdk.java.net/archive/ 二、上传jdk安装包解压 …

PHP加密与安全的最佳实践

PHP加密与安全的最佳实践 概述 在当今信息时代,数据安全是非常重要的。对于开发人员而言,掌握加密和安全的最佳实践是必不可少的。PHP作为一种常用的后端开发语言,提供了许多功能强大且易于使用的加密和安全性相关函数和类。本文将介绍一些P…

软件测试-测试策略

版本1 测试策略 目录 版本1​​​​​​​测试策略 版本2测试策略 一、版本分析 测试-----6天 预发----2天 1、XXX业务1 2、XXX业务2 3、XXX业务3 二、测试策略 测试类型分析方向测试目标及用例参考是否需要测试测试结论备注功能测试对比测试用例和策划文档,评估…

【目标检测中对IoU的改进】GIoU,DIoU,CIoU的详细介绍

文章目录 1、IoU2、GIoU(Generalized Intersection over Union)3、DIoU4、CIoU 1、IoU IoU为交并比,即对于pred和Ground Truth:交集/并集 1、IoU可以作为评价指标使用,也可以用于构建IoU loss 1 - IoU 缺点: 2、对于pred和GT相…

数据库设计规范

数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。 一、数据库设…

Android Studio导入项目需要做的一些配置

点击项目结构 选择本地安装的SDK、NDK目录 选择java版本 重新加载项目 Clean Project Rebuild Project 选择要构建的版本 可选debug和release 打包apk安装包 打包完成,就可以安装到安卓手机了

【2023最新爬虫】用python爬取知乎任意问题下的全部回答

老规矩,先上结果: 爬取了前200多页,每页5条数据,共1000多条回答。(程序设置的自动判断结束页,我是手动break的) 共爬到13个字段,包含: 问题id,页码,答主昵称,答主性别,…

Restful架构简单了解

Restful Rest全称representational status transfer 表述性状态转移。 原则 资源与URI URI既可以看成是资源的地址,也可以看成是资源的名称。如果某些信息没有使用URI来表示,那它就不能算是一个资源, 只能算是资源的一些信息而已。URI的设计…