【发布时间】:2017-09-16 06:35:21
【问题描述】:
如何将这个 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
【问题讨论】:
-
好吧,你拿一个编译器,并把它传递给这个带有一些标志的程序。对于clang,它类似于
clang -march arm -S yourprogram.c。 -
@arrowd
clang -target arm -S yourprogram.c是正确的。