目录
1 进位与借位
由于ARM是32位的,如果我们 要进行两个64位的数进行计算,那么就需要将数据拆成32位(高位放在一个寄存器,低位放在一个寄存器)高位减高位低位减低位。这时候就可能出现进位或者借位的情况。(这时候要使用带借/进位的减/加法指令)。
这需要CPSR寄存器参与。


1.1进位 ADDS和ADC
如果没有使用ADD和ADC

使用ADDS和ADC

1.2借位 SUB和 SBC
借位的本质R6=R2-R4-'!C'
因为当运算器中进行减法运算且产生符号位借位时该C位自动置0,否则为1

2关于C语言与汇编的讨论
c语言的一条语句可能对应汇编的多条语言
比如加法

对于除法ARM本身是不带除法的C语言编译器会用移位指令来代替除法

a=4
4的二进制为100
2的二进制是10
a=a/2(a=2)相当于a>>1(a=2)
ARM本身是不能计算浮点型的这是要用协处理器或者软件方式来解决,第一种方案硬件成本会增大,第二种方案会降低程序运行效率。
3巩固练习


由于数据是128,而ARM为32位所以每个数要分成4段,结果的后三段都是带进位的
本文探讨了ARM架构下32位处理器处理64位数据的进位借位原理,涉及ADDS和ADC指令,以及SUB和SBC的借位机制。还讨论了C语言与汇编的对应关系,包括移位替代除法和浮点运算的解决方案。通过实例巩固了对这些概念的理解。
&spm=1001.2101.3001.5002&articleId=124483652&d=1&t=3&u=c9f512be452643e5922bc472363d0c76)
258

被折叠的 条评论
为什么被折叠?



