2
Comment convertir ce programme C en code d'assemblage? J'ai du mal à comprendre la manipulation int non signée.Conversion de la fonction C en langage ARM
unsigned int sum(unsigned int n){
if(n==0) return 0;
else return n+sum(n-1);
}
Je l'ai fait si je considère int .Comment penser pour 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
Eh bien, vous prenez un compilateur et passez ce programme avec quelques drapeaux. Pour clang, c'est quelque chose comme "clang -march arm -S yourprogram.c". – arrowd
@arrowd 'clang -target arm -S votreprogramme.c' est correct. – fuz