arm addcs指令
在 ARM 汇编语言中,ADDC{S} 指令是一条用于带进位加法的指令。下面是详细解释:
-
指令名称:
ADDC- Add with Carry (带进位加法){S}是一个可选的条件码后缀(如EQ,NE,LT,GT等),表示该指令仅在满足特定条件(由之前的指令设置的状态标志决定)时才会执行。如果省略{S},指令将无条件执行。- 另一个更重要的后缀
S(紧跟在指令助记符后面且没有下划线,例如ADCS)用于指示指令执行后更新处理器的状态标志(APSR中的N(负),Z(零),C(进位),V(溢出)位)。
-
核心功能:
ADDC指令执行的操作数是:目标寄存器 = 操作数1 + 操作数2 + 进位标志(C)- 它将两个源操作数(
Operand1和Operand2)的值相加,再加上当前处理器状态寄存器 (APSR) 中的进位标志 (C) 的值(进位标志C通常为 0 或 1)。 - 计算结果存储到目标寄存器中。
- 如果指令助记符中包含了独立的
S后缀(即写成ADCS或ADDEQS等形式),那么在计算结果后,还会根据结果更新APSR的标志位 (Nzcv):- N (Negative): 结果为负时置位(最高位为1)。
- Z (Zero): 结果为零时置位。
- C (Carry): 当加法产生进位(无符号溢出)时置位。
- V (oVerflow): 当加法产生有符号溢出时置位。
-
语法:
ADC{S}{cond} Rd, Rn, Operand2 ADDC{S}{cond} Rd, Rn, Operand2 ; 注意:有些汇编器可能接受 `ADDC` 作为 `ADC` 的别名{S}:可选,表示更新标志位。指令助记符本身包含S才生效(如ADCS)。指令后面的{S}是条件码后缀,需要区分。{cond}:可选,条件码后缀(如EQ,NE,CS/HS,CC/LO,MI,PL,VS,VC,HI,LS,GE,LT,GT,LE,AL)。Rd: 目标寄存器,用于存放结果。Rn: 第一个源操作数寄存器。Operand2: 第二个源操作数。它可以是一个:- 寄存器(例如
Rm) - 寄存器移位后的值(例如
Rm, LSL #2) - 立即数(通常受限制,需要符合特定编码规则)。
- 寄存器(例如
-
用途:
ADDC(或ADC) 指令的主要用途是实现多精度(多字)算术运算,特别是处理大于单个寄存器宽度的整数加法。- 例如,计算两个 64 位数的和(在 32 位 ARM 处理器上):
- 先用
ADDS R0, R2, R4计算低 32 位之和 (R0 = R2 + R4),这会根据结果设置进位标志C。 - 再用
ADC R1, R3, R5计算高 32 位之和,并加上低位的进位 (R1 = R3 + R5 + C)。这里R1:R0保存 64 位结果,R3:R2和R5:R4是两个 64 位操作数(高-低寄存器对)。
- 先用
- 它也可以用于其他需要将前一个操作产生的进位纳入计算的场景。
- 例如,计算两个 64 位数的和(在 32 位 ARM 处理器上):
-
关键点总结:
- 带进位加:
Rd = Rn + Operand2 + C(C 是 APSR 中的进位标志位)。 - 条件执行: 可由
{cond}后缀控制是否执行。 - 标志位更新: 由独立的
S后缀(即指令写为ADCS或ADDEQS)控制。如果加了S,指令会根据结果更新N,Z,C,V标志位。指令后面的{S}是条件码后缀(如ADDEQS),不是更新标志位的S。
- 带进位加:
简单来说:ADDC{S} (ADC{S}) 指令用于做加法时把上一次操作产生的进位(保存在 C 标志位)也一起加进去,常用于大数(多字节/多字)运算。指令助记符中的 S 决定了它是否更新状态标志。指令后缀中的 S 是条件码后缀(如 EQ,NE等)。
讲讲ARM指令集格式以及常用的ARM汇编指令
对于搞嵌入式驱动或者操作系统的人来说,掌握汇编语言的使用还是比较重要的,毕竟有时候在分析定位问题的时候,多多少少都会有汇编的身影。本文主要讲讲ARM指令集格式以及常用的
2023-11-08 12:34:22
ARM汇编指令(6)——批量数据加载/存储指令资料下载
电子发烧友网为你提供ARM汇编指令(6)——批量数据加载/存储指令资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文
资料下载
h1654155275.3301
2021-04-23 08:46:23
ARM MOV和LDR的指令关系是怎么样的
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令比如想把数据从内存中某处读取到寄存器中,只能
资料下载
佚名
2019-05-16 18:05:00
常用的ARM汇编指令
第一次写博客,请各路大神多多关照。本人从事软件开发相关的工作,平时主要用c语言撸代码,前段时间因工作需要,接触到了ARM架构下的汇编指令,之前学过51单片机的汇编
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机