目录
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段,结果的后三段都是带进位的