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

文章目录

三目运算指令 csel

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

c 复制代码
adr     x0, pass_message
                adr     x1, fail_message
                csel    x1, x0, x1, pl

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

地址获取

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

条件选择

assembly 复制代码
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 架构提供的条件执行特性,以实现更紧凑和高效的代码。

相关推荐
AI科技星17 小时前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
千寻girling18 小时前
记录第一次学习 Docker
学习·docker·容器
Kobebryant-Manba19 小时前
学习RNN(简洁实现)
人工智能·rnn·学习
知南x19 小时前
【DPDK例程学习】(4) l2fwd
学习·word
努力努力再努力FFF19 小时前
大学四年AI能力规划:从入门学习到简历表达
人工智能·学习
Litluecat20 小时前
配合多角色提示语3,学习AI漫剧(刚开始学)
人工智能·学习·ai·提示词·短剧·漫剧
三品吉他手会点灯20 小时前
STM32F103 学习笔记-24-I2C-读写EEPROM(第1节)-I2C物理层介绍
笔记·stm32·学习
MartinYeung520 小时前
[论文学习]大型语言模型中个人可识别资讯(PII)的机器遗忘技术:UnlearnPII 基准与 PERMU_tok 方法的深度分析
人工智能·学习·语言模型
fanged20 小时前
Linux内核学习21--V4L2学习3(应用)(TODO)
学习
GHL2842710901 天前
PowerShell快捷键学习
学习