ARM base instruction -- adc

Add with Carry adds two register values and the Carry flag value, and writes the result to the destination register.

带进位加法将两个寄存器值和进位标志值相加,并将结果写入目标寄存器。

32-bit variant

Applies when sf == 0.

ADC <Wd>, <Wn>, <Wm>

64-bit variant

Applies when sf == 1.

ADC <Xd>, <Xn>, <Xm>

Decode for all variants of this encoding

integer d = UInt(Rd);

integer n = UInt(Rn);

integer m = UInt(Rm);

integer datasize = if sf == '1' then 64 else 32;

Operation

bits(datasize) result;

bits(datasize) operand1 = X[n];

bits(datasize) operand2 = X[m];

(result, -) = AddWithCarry(operand1, operand2, PSTATE.C);

X[d] = result;

做比 32 位大的加法, 加两个 128 位的数。

128 位结果: 寄存器 0、1、2、和 3

第一个 128 位数: 寄存器 4、5、6、和 7

第二个 128 位数: 寄存器 8、9、10、和 11。

ADDS R0, R4, R8 ; 加低端的字

ADCS R1, R5, R9 ; 加下一个字,带进位

ADCS R2, R6, R10 ; 加第三个字,带进位

ADCS R3, R7, R11 ; 加高端的字,带进位

相关推荐
188号安全攻城狮20 小时前
【PWN】HappyNewYearCTF_2_栈上变量覆写1
linux·运维·汇编·安全·网络安全
草莓熊Lotso21 小时前
Linux 进程创建与终止全解析:fork 原理 + 退出机制实战
linux·运维·服务器·开发语言·汇编·c++·人工智能
爱编码的小八嘎1 天前
汇编语言全接触-105.Natas 幽灵王病毒的分析
汇编
老鱼说AI2 天前
深入理解计算机系统1.5:抽象的重要性:操作系统与虚拟机
c语言·开发语言·汇编
猫猫的小茶馆3 天前
【Linux 驱动开发】一. 搭建开发环境
linux·汇编·arm开发·驱动开发·stm32·嵌入式硬件·mcu
猫猫的小茶馆3 天前
【Linux 驱动开发】二. linux内核模块
linux·汇编·arm开发·驱动开发·stm32·嵌入式硬件·架构
切糕师学AI4 天前
ARM 中的 SVC 监管调用(Supervisor Call)
linux·c语言·汇编·arm开发
ベadvance courageouslyミ4 天前
硬件基础中断
汇编·硬件·中断
你爱写程序吗(新H)4 天前
基于单片机的洗衣机控制系统设计 单片机洗衣机控制(设计+文档)
c语言·汇编·单片机·嵌入式硬件·matlab
VekiSon5 天前
ARM架构——用汇编语言点亮 LED
汇编·arm开发·嵌入式硬件