当前位置: 首页 > news >正文

【ARM64 常见汇编指令学习 19.3 -- ARMv8 三目运算指令 csel 详细介绍】


请阅读【嵌入式开发学习必备专栏】


文章目录

    • 三目运算指令 csel
      • 地址获取
      • 条件选择
      • 用途

三目运算指令 csel

本篇文章以下面汇编代码介绍三目运算指令csel

adr     x0, pass_messageadr     x1, fail_messagecsel    x1, x0, x1, pl

下面是对这几行代码的详解:

地址获取

adr x0, pass_message
adr x1, fail_message
  • adr x0, pass_message:该指令用于获取相对当前指令地址(PC)的偏移位置上的 pass_message 标签的地址,并将其放入寄存器 x0 中。adr 指令通常用于获取小范围内的标签或变量地址。
  • adr x1, fail_message:同样地,这条指令获取 fail_message 标签的地址,并将其放入寄存器 x1 中。

条件选择

csel x1, x0, x1, pl
  • csel x1, x0, x1, pl:这是一个条件选择(Conditional SELect)指令。它根据最后一个参数 pl(表示 Plus 或 Positive,N flag 未设置时满足)来选择 x0x1 的值,并将所选值存入第一个参数指定的寄存器中,这里是 x1
    • 如果条件 pl 成立(即,之前的操作导致状态寄存器的 N(Negative)标志位未被设置,表示结果为正数或零),则 x1 被赋值为 x0 的值,即 pass_message 的地址。
    • 如果条件 pl 不成立(即,N 标志位被设置,表示结果为负数),x1 保持不变,即仍为 fail_message 的地址。

用途

这组指令的用途通常是在基于某个条件(通常是之前的计算结果)来决定程序的下一步行动,比如输出不同的消息。在这个场景中,根据某个条件的结果,选择 pass_messagefail_message 的地址,最终可能用于后续的打印或日志记录操作。

例如,在执行了某些操作后,程序通过检查标志位来决定是显示“通过”消息还是“失败”消息。这种模式是低级编程中常见的条件逻辑处理方式,能有效地利用 ARM 架构提供的条件执行特性,以实现更紧凑和高效的代码。

http://www.lryc.cn/news/372260.html

相关文章:

  • Docker 安装部署(CentOS 8)
  • Python自动化
  • 自然语言处理领域的重大挑战:解码器 Transformer 的局限性
  • 【机器学习】机器学习赋能医疗健康:从诊断到治疗的智能化革命
  • Elasticsearch6.7版本,内网中其他电脑无法连接
  • 交友系统定制版源码 相亲交友小程序源码全开源可二开 打造独特的社交交友系统
  • 数据结构笔记39-48
  • 2-3 基于matlab的NSCT-PCNN融合和创新算法(NSCT-ML-PCNN )图像融合
  • 机器学习笔记 - LoRA:大型语言模型的低秩适应
  • 基于python实现视频和音频长度对齐合成并添加字幕
  • 爬虫-模拟登陆博客
  • 【深度学习】【NLP】Bert理论,代码
  • element table 点击某一行中按钮加载
  • Linux开机自启/etc/init.d和/etc/rc.d/rc.local
  • DP:两个数组的dp问题
  • 嵌入式Linux:格式化I/O
  • 【elementui源码解析】如何实现自动渲染md文档-第二篇
  • 热门开源项目OpenHarmony
  • NewspaceAi之GPT使用新体验
  • 详解红黑树
  • 探索JavaScript逆向工程与风控等级
  • C++ 22 之 立方体案例
  • vue2使用antv/g6-editor实现可拖拽流程图
  • springboot学习小结
  • vue聊天发送Emoji表情
  • 360数字安全:2024年4月勒索软件流行态势分析报告
  • 【MySQL】日志详解
  • MyBatis 延迟加载,一级缓存,二级缓存设置
  • Linux 基本指令2
  • 联邦学习的基本流程,联邦学习权重聚合,联邦学习权重更新