登录/注册

arm addcs指令

更多

在 ARM 汇编语言中,ADDC{S} 指令是一条用于带进位加法的指令。下面是详细解释:

  1. 指令名称: ADDC - Add with Carry (带进位加法)

    • {S} 是一个可选的条件码后缀(如 EQ, NE, LT, GT 等),表示该指令仅在满足特定条件(由之前的指令设置的状态标志决定)时才会执行。如果省略 {S},指令将无条件执行。
    • 另一个更重要的后缀 S(紧跟在指令助记符后面且没有下划线,例如 ADCS)用于指示指令执行后更新处理器的状态标志APSR中的 N(负), Z(零), C(进位), V(溢出)位)。
  2. 核心功能:

    • ADDC 指令执行的操作数是:目标寄存器 = 操作数1 + 操作数2 + 进位标志(C)
    • 它将两个源操作数(Operand1Operand2)的值相加,再加上当前处理器状态寄存器 (APSR) 中的进位标志 (C) 的值(进位标志 C 通常为 0 或 1)。
    • 计算结果存储到目标寄存器中。
    • 如果指令助记符中包含了独立的 S 后缀(即写成 ADCSADDEQS 等形式),那么在计算结果后,还会根据结果更新 APSR 的标志位 (Nzcv):
      • N (Negative): 结果为负时置位(最高位为1)。
      • Z (Zero): 结果为零时置位。
      • C (Carry): 当加法产生进位(无符号溢出)时置位。
      • V (oVerflow): 当加法产生有符号溢出时置位。
  3. 语法:

    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
      • 立即数(通常受限制,需要符合特定编码规则)。
  4. 用途: 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:R2R5:R4 是两个 64 位操作数(高-低寄存器对)。
    • 它也可以用于其他需要将前一个操作产生的进位纳入计算的场景。
  5. 关键点总结:

    • 带进位加: Rd = Rn + Operand2 + C (C 是 APSR 中的进位标志位)。
    • 条件执行: 可由 {cond} 后缀控制是否执行。
    • 标志位更新:独立的 S 后缀(即指令写为 ADCSADDEQS)控制。如果加了 S,指令会根据结果更新 N, Z, C, V 标志位。指令后面的 {S} 是条件码后缀(如 ADDEQS),不是更新标志位的 S

简单来说:ADDC{S} (ADC{S}) 指令用于做加法时把上一次操作产生的进位(保存在 C 标志位)也一起加进去,常用于大数(多字节/多字)运算。指令助记符中的 S 决定了它是否更新状态标志。指令后缀中的 S 是条件码后缀(如 EQNE等)。

讲讲ARM指令集格式以及常用的ARM汇编指令

对于搞嵌入式驱动或者操作系统的人来说,掌握汇编语言的使用还是比较重要的,毕竟有时候在分析定位问题的时候,多多少少都会有汇编的身影。本文主要讲讲ARM指令集格式以及常用的

2023-11-08 12:34:22

一文详解Arm Cortex-M处理器指令

Arm处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单,具有32位

2022-05-17 09:31:25

ARM指令分类与汇编指令格式简析

一. ARM指令长度及数据类型ARM微处理器的指令长度可以是32位(

2022-04-14 09:25:07

ARM汇编指令(6)——批量数据加载/存储指令资料下载

电子发烧友网为你提供ARM汇编指令(6)——批量数据加载/存储指令资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文

资料下载 h1654155275.3301 2021-04-23 08:46:23

一文读懂ARM微处理器指令系统

一文叫你如何读懂ARM微处理器指令系统。

资料下载 姚小熊27 2021-03-26 14:30:58

ARM处理器的寻址方式和指令集介绍

ARM处理器是基于精简指令集计算机(RISC原理设计的,指令集和相关峄码机制较为简单。

资料下载 佚名 2020-11-24 17:24:00

ARM9指令系统的详细教程说明

本文档的主要内容详细介绍的是ARM9指令系统的详细教程说明

资料下载 佚名 2020-09-16 17:50:36

ARM MOV和LDR的指令关系是怎么样的

ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令比如想把数据从内存中某处读取到寄存器中,只能

资料下载 佚名 2019-05-16 18:05:00

ARM指令和Thumb指令有哪些区别

ARM处理器有哪几种工作状态?ARM指令和Thumb指令有哪些区别?

2021-12-24 07:36:15

谈一谈ARM指令分类

1、ARM指令(注意!并不包含Thumb指令)指令分类: 分支

2021-12-20 07:21:24

ARM汇编指令集与伪指令说明

嵌入式知识-学习笔记(2):ARM汇编指令集与伪指令首先说明一下指令和伪

2021-12-14 06:50:36

常用的ARM汇编指令

第一次写博客,请各路大神多多关照。本人从事软件开发相关的工作,平时主要用c语言撸代码,前段时间因工作需要,接触到了ARM架构下的汇编指令,之前学过51单片机的汇编

2021-07-01 11:06:12

ARM指令集文章集合

三、指令集如果你想要集中学习一下关于ARM指令集方面的知识(比如下面几个知识点),可以看下下面的文章1、机器码2、运算

2020-09-07 22:06:37

ARM指令:adr和ldr的用法区别

同学们在学习ARM指令时,多数都会对adr和ldr这两个命令产生疑惑,那他们究竟有什么区别呢?

2020-06-20 10:20:38

ARM架构及ARM指令集 Thumb指令集你了解多少?

ARM架构及ARM指令集、Thumb指令集你了解多少?

2020-02-26 16:09:01

7天热门专题 换一换
相关标签