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 ; 加高端的字,带进位

相关推荐
cch89183 小时前
Java vs 汇编:高级与低级的终极对决
java·开发语言·汇编
2301_789015623 小时前
C++:智能指针
c语言·开发语言·汇编·c++·智能指针
独小乐1 天前
007.GNU C内联汇编杂谈|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·汇编·单片机·嵌入式硬件·arm·gnu
Lzh编程小栈4 天前
数据结构与算法之队列深度解析:循环队列+C 语言硬核实现 + 面试考点全梳理
c语言·开发语言·汇编·数据结构·后端·算法·面试
cch89185 天前
汇编与C语言:底层对话VS高效指挥
c语言·开发语言·汇编
jwn9995 天前
PHP vs 汇编:编程语言的两极对决
开发语言·汇编·php
cch89186 天前
汇编vs易语言:底层与中文编程终极对决
汇编
cch89187 天前
汇编VS高级语言:从硬件操控到高效开发
汇编
cch89187 天前
汇编与Java:底层与高层的编程对决
java·开发语言·汇编
cch89187 天前
汇编 vs Python:编程世界的两极对决
开发语言·汇编·python