将C函数转换为ARM汇编语言

时间:2017-09-16 06:35:21

标签: c assembly

我如何将此C程序转换为汇编代码?我很难理解unsigned int操作。

unsigned int sum(unsigned int n){
     if(n==0) return 0;
     else return n+sum(n-1);
   }

如果我考虑 int ,我就这样做了。如何考虑 unsigned int

sum:
SUB sp, sp, #8
STR lr, [sp,#4]
STR r0, [sp,#0]
CMP r0,#0
BGE L1
MOV r0, #0
ADD sp, sp, #8
MOV pc, lr
L1: SUB r0, r0, #1
BL sum
MOV r12, r0
LDR r0, [sp,#0]
LDR lr, [sp,#4]
ADD sp, sp, #8
ADD r0, r0, r12
MOV pc, lr

1 个答案:

答案 0 :(得分:1)

对于unsigned int,无关紧要,因为ADD和SUB在两者中都表现正确。

有些ISA提供无符号ADD和SUB(ADDU和SUBU)作为MIPS,只有溢出行为不同。

相关问题