具体如何将这个C程序转换成汇编代码?我很难理解未签名的int操作。
unsigned int sum(unsigned int n){
if(n==0) return 0;
else return n+sum(n-1);
}如果我认为int.How考虑了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发布于 2017-09-16 07:56:46
对于未签名的int,作为ADD和SUB的指令在这两种情况下的行为都是正确的。
一些ISAs提供无符号的ADD和Sub(ADDU和SUBU)作为MIPS,这只是溢出行为的不同。
https://stackoverflow.com/questions/46250884
复制相似问题