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

【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】

文章目录

    • ARM64 无符号位域提取指令

上篇文章:ARM 常见汇编指令学习 2 – 存储指令 STP 与 LDP
下篇文章:ARM 常见汇编指令学习 4 – ARM64 比较指令 cbnz 与 b.ne 区别

ARM64 无符号位域提取指令

在代码中如何监控寄存器的某1bit, 或者某几bit
ARM 提供了一个汇编指令:UBFX 就可以用于该功能。

UBFX 有2种语法分别是对32bit 寄存器和64bit寄存器。

UBFX Wd, Wn, #lsb, #width ; 32-bit
UBFX Xd, Xn, #lsb, #width ; 64-bit

指令作用:从Wn寄存器的第lsb位开始,提取width位到Wd寄存器,剩余高位用0填充。

下面分析代码:

wait_rd:ldr x7,=0x18ac0000ldr w9, [x7, #0x0]ubfx w9, w9, #0, #1cmp w9, #0x1b.ne wait_rddsb syisb

该段代码的意思是读取某个地址为0x18ac0000的32bit 寄存器,并判断该寄存器的bit0是否置位(0x1),如果没有置位则跳到标签 wait_rd继续查询。

其 C 代码实现如下:

void wait_rd(void)
{uint32_t addr = 0x18ac0000;while (read32(addr) & 0x1 == 0x0);
}

上篇文章:ARM 常见汇编指令学习 2 – 存储指令 STP 与 LDP
下篇文章:ARM 常见汇编指令学习 4 – ARM64 比较指令 cbnz 与 b.ne 区别

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

相关文章:

  • 求分享如何批量压缩视频的容量的方法
  • ChatGPT 是如何工作的:从预训练到 RLHF
  • KafKa脚本操作
  • 【自动化运维】playbook剧本
  • java中双引号和单引号的区别
  • jenkinsfile指定jenkins流水线的构建号
  • 微信小程序:实现提示窗确定,取消执行不同操作(消息提示确认取消)showModal
  • 深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现
  • 解读随机森林的决策树:揭示模型背后的奥秘
  • OceanMind海睿思获评中国信通院“内审数字化产品评测”卓越级(最高级)!
  • TPlink云路由器界面端口映射设置方法?快解析内网穿透能实现吗?
  • css3的filter图片滤镜使用
  • ❤️创意网页:打造炫酷网页 - 旋转彩虹背景中的星星动画
  • react常用知识点
  • iOS开发-QLPreviewController与UIDocumentInteractionController显示文档
  • 八、用 ChatGPT 帮助排查生产事故
  • WPF实战学习笔记25-首页汇总
  • FreeRTOS源码分析-7 消息队列
  • 机器学习深度学习——权重衰减
  • 【Linux】线程互斥 -- 互斥锁 | 死锁 | 线程安全
  • 【vue-pdf】PDF文件预览插件
  • Flink集群运行模式--Standalone运行模式
  • Spring整合JUnit实现单元测试
  • Spring Boot学习路线1
  • 管理类联考——写作——论说文——实战篇——标题篇
  • idea中设置maven本地仓库和自动下载依赖jar包
  • 前缀和差分
  • Golang GORM 模型定义
  • 微服务的各种边界在架构演进中的作用
  • 使用 docker-compose 一键部署多个 redis 实例