11、ARM 汇编中的移位、循环移位及高级乘法指令详解

ARM 汇编中的移位、循环移位及高级乘法指令详解

1. 移位和循环移位基础

ARM 处理器具备一种名为“桶形移位器”的内部机制,它能够对一个字(word)中的位进行左移或右移操作。与大多数微处理器不同,ARM 没有独立的移位指令,而是将移位操作作为其他指令的一部分。这种操作之所以重要,是因为通过位的左移或右移可以快速实现数字的乘法或除法。

1.1 移位类型

主要有三种移位类型:逻辑移位、算术移位和循环移位。其中,循环移位没有明显的算术功能,主要用于位模式的移动。具体的移位指令如下表所示:
| 助记符 | 含义 |
| ---- | ---- |
| LSL | 逻辑左移 |
| LSR | 逻辑右移 |
| ASL | 算术左移 |
| ASR | 算术右移 |
| ROR | 循环右移 |
| RRX | 带扩展的循环右移 |

尽管桶形移位器在移位和循环移位操作中起作用,但对用户来说,其操作是透明的。

1.2 逻辑移位

逻辑移位是指将一个数左移或右移一位,分别会使该数翻倍或减半。通过增加逻辑移位的次数,可以相应地实现数字的乘法和除法。

  • 逻辑左移(LSL) :以单字节二进制值 00010001(十进制为 17)为例,执行一次逻辑左移(LSL #1)后得到 00100010(十进制为 34),相当于将该数乘以 2。在 ARM 中,使用四字节(32 位)数据,最高位(b31)会移出并进入进位标志(Carry flag),最低位(b0)移位后留下的空位用 0 填充。示例

相关推荐

《ARM Cortex-M3与Cortex-M4权威指南》

1.1 什么是ARM Cortex-M处理器1.1.1 Cortex-M3和Cortex-M4处理器1.1.2 Cortex-M处理器家族1.1.3 处理器和微控制器的区别1.1.4 ARM和微控制器供应商1.1.5 选择Cortex-M3和Cortex-M4微控制器1.2 Cortex-M处理器的优势1.2.1 低功耗1.2.2 性能1.2.3 能耗效率1.2.4 代码密度1.2.5 中断1.2.6 易于使用1.2.7 可扩展性1.2.8 调试特性。

qq_40844444的博客 2069

ARM Cortex-M0指令集实战解析:内存访问、数据处理与分支控制

指令集架构是CPU执行计算与控制的基础,它定义了处理器能够理解和执行的操作集合。在嵌入式系统与微控制器领域,精简指令集(RISC)设计哲学通过固定长度编码和精简指令数量,实现了高性能与高代码密度的平衡。其技术价值在于为资源受限的嵌入式设备提供了确定性的实时响应能力与优化的能效比,广泛应用于物联网终端、工业控制、消费电子等场景。本文聚焦于ARM Cortex-M0这一经典ARMv6-M架构内核,深入剖析其内存访问指令(如LDR/STR)、数据处理指令(如ADD/AND)以及分支控制指令(如B/BL)的寻址模式

weixin_30699955的博客 295

想自己设计CPU?从零开始理解RISC-V的模块化指令集(RV32I/GC/B扩展详解)

本文深入解析RISC-V模块化指令集的设计理念与实践应用,从RV32I基础指令集到G、C、B等扩展模块,详细介绍了如何构建自定义CPU。通过具体代码示例和FPGA开发指南,帮助开发者掌握RISC-V的核心技术,实现高性能或低功耗的处理器设计。

weixin_30908941的博客 429

11、ARM处理器的位操作与高级乘法指令解析

本文深入解析了ARM处理器中的位操作和高级乘法指令,包括桶形移位器的工作原理及其在逻辑移位、算术移位和循环移位中的应用。同时详细介绍了ARM的高级乘法指令如SMULL、UMULL、SMLAL等,以及它们在处理长数字乘法和累加运算中的高效性。文中还涵盖了立即常量的范围限制、MOVT指令的使用以及相关代码示例,为开发者提供全面的指令应用指导。

cc789的博客 166

4、ARM 64 位汇编语言中的数据加载与运算

本文详细介绍了ARM 64位汇编语言中的数据加载与运算操作,涵盖移位与循环移位基础、寄存器加载方法(如MOV、MOVK、MOVN指令)、Operand2的灵活使用以及ADD/ADC加法指令等内容。通过示例代码和执行流程分析,帮助开发者理解如何高效地在底层进行数据处理,并提供了性能优化建议,如避免乘法指令、合理使用移位操作等,是学习ARM汇编编程的重要参考资料。

Python的专栏 74

嵌入式ARM汇编与反汇编面试题及参考答案

ARM 指令集是 ARM 架构原生 32 位定长指令集,单条指令占用 4 字节内存空间,全部指令拥有完整 32 位操作码编码域,支持丰富的运算、内存访问、协处理器、条件执行、移位内嵌运算功能,适用于 ARMv4 及更早全部架构,运行在 ARM 处理器 ARM 工作模式,CPU 总线单次读取完整 32 位指令,流水线按 32 位指令分段取指译码。

大模型大数据攻城狮的专栏 456

桶形移位器,8,16,32位及ARM实现

桶形移位器,8位,16位,32位,含ARM桶形移位器。南大计算机系计算机组成原理实验-Barrel shifter, 8, 16, 32, including the ARM barrel shifter. NJU Department of Computer Science Experimental Computer System

spm FMRI 各种小问题合集

预处理 1、预处理结果从normalize之后开始头歪、变形 问题描述:如下图 原因:DICOM2NIfTI时必须检查对应的T1像。下面是两种错误形式,第一种容易发现,第二种容易忽视,大脑失状位左右颠倒。 解决:重新转了一回格式,建议用SPM fmri进行格式转换。之前是用MRIconvert转换的,用了两台电脑,有的T1结果是对的,不确定什么原因产生的错位,操作都是一样的。 2、Check reg大脑图片边缘出边框 问题描述: 原因:应该是图片排版导致的,单独check就会发现大脑是全的。 解决

weixin_44669441的博客 1677

windows10下 iperf3测试带宽

客户端输入:"iperf3.exe -u -c 服务器IP地址 -b 5g" //客户端给服务器发送udp数据包,最大带宽为5g。客户端输入:“iperf3.exe -c 服务器IP地址 -P 10“//表示客户端10路并行给服务器发送TCP包;上图可知:带宽是15Gbps(这里不知道为什么下面测试的UDP会比这里TCP慢 按道理UDP不可能比TCP慢的5.)3. 验证是否下载成功,在打开的窗口中输入“iperf3.exe -v”,会出现安装的版本,表示安装成功了。5. iperf3参数。

xiaoqixiaoguai的博客 5895

关于动态存储器dram中rank,bank,device之间的关系

DEVICE_WIDTH表示设备的带宽(单位bit),每个列(column)包含DEVICE_WIDTH 位(bit),每一行(row)包含NUM_COLS个column。   而每一个bank包含NUM_ROWS个行(row)。所以一个设备(device)的存储容量为PER_DEVICE_STORAGE =NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUM_BANKS (i

wyj7260的专栏 4733

elmos 524系列芯片笔记

芯片的工作工作原理:集成芯片Elmos524.03有发射回路和接收回路,手册有关的内部原理图,大致如下: 芯片会产生固有频率的电压信号,信号通过引脚DRV1、2输出给外部压电陶瓷片,产生固定频率的机械波,也就是所谓的超声波,超声波遇到障碍物时会反射,反射信号经过AINS、D引脚进入芯片,在芯片内部先后经过GAIN放大,滤波然后进入比较器,滤波后的信号(signal)同预先设定的阈值(threshold)比较产生信号输出。此信号最终会连接MCU处理器,需要重点关注。 基于这个内部的工作原

qq_38230916的博客 2492

YOLOv13改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 92

在 SAP BTP 中为 SAP AI Core 创建 Service Instance 和 Service Key 的完整实战指南

摘要:本文详细介绍了在SAP BTP上创建AI Core服务实例和密钥的关键步骤,这是实现ABAP系统与Gen AI大语言模型集成的核心技术环节。文章通过一个制造业财务问答场景的案例,系统梳理了从前提条件准备、架构理解到具体操作的全过程,重点解析了service instance创建、X.509证书配置等关键节点。特别强调了Extended计划选择、证书格式等易错点,为ABAP开发人员实现Gen AI场景提供了实用指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 274

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那就是外界轮廓的边界点获取。这个边界点,可以用来计算长度,也可以用来进行直线、圆的拟合,具体的用途取决于现场的实际使用场景。目前qmacvisual支持对边界点的提取,相关控件可以直接用来提取边界点。

嵌入式-老费,一个分享专业嵌入式知识的blog 884

QEMU理解与分析系列(11):QEMU内存机制

在物理机上,CPU 对于内存的访问在保护模式下通过分段分页的形式实现。在该模式下,CPU 访问时使用的是虚拟地址,通过 MMU 映射到物理地址,将虚拟地址转换为物理地址才能访问实际的物理内存。同样的,虚拟机模拟的物理机同样需要有上述的机制,也需要有从虚拟地址到物理地址的转换。这里需要注意,模拟的物理机的物理地址本质上是 qemu 的虚拟地址。

swh547的博客 50

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 11、栅极工程铁电隧道场效应晶体管的研究
下一篇: 48、机器学习模型监控与公平性保障
人间清醒863
博客等级 码龄3年 33粉丝 1544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值