我无法理解这是怎么回事:
int fib_iter(int num) {
int a = 1;
int b = 1;
int c = 0;
for (int i = 0; i < num; i++) {
c = a;
b += a;
a = c;
}
return b;
}
在神箭
显示为
fib_iter: # @fib_iter
lea ecx, [rdi + 1]; ecx = rdi + 1
test edi, edi; set registers from edi & edi
mov eax, 1; eax = 1
cmovg eax, ecx; if (ZF AND SF=OF) eax = ecx
ret
没有任何调用或跳转,这是怎么回事?
正如评论者指出的那样,这是一个简单的拼写错误。
int fib_iter(int num) {
int a = 1;
int b = 1;
int c = 0;
for (int i = 0; i < num; i++) {
c = a; // PROBLEM
b += a;
a = c;
}
return b;
}
应该是
int fib_iter(int num) {
int a = 1;
int b = 1;
int c = 0;
for (int i = 0; i < num; i++) {
c = b; // SOLUTION
b += a;
a = c;
}
return b;
}