#2
zklhp2014-07-04 10:12
|
程序代码:
#include <stdio.h>
int power(int m,int n);
int main(void)
{ int k=power(4,5);
printf("%d",k);
return 0;
}
int power(int m,int n)
{
int s=1;
for(;n>0;s*=m,n--);
return s;
}
int power(int m,int n);
int main(void)
{ int k=power(4,5);
printf("%d",k);
return 0;
}
int power(int m,int n)
{
int s=1;
for(;n>0;s*=m,n--);
return s;
}
od反汇编后的代码
程序代码:
00401000 >/$ 68 00040000 PUSH 400 ; /<%d> = 400 (1024.)
00401005 |. 68 F4204000 PUSH OFFSET w5.??_C@_02DPKJAMEF@?$CFd?$A>; |format = "%d"
0040100A |. FF15 A0204000 CALL DWORD PTR DS:[<&MSVCR100.printf>] ; \printf
00401010 |. 83C4 08 ADD ESP,8
00401013 |. 33C0 XOR EAX,EAX
00401015 \. C3 RETN
00401005 |. 68 F4204000 PUSH OFFSET w5.??_C@_02DPKJAMEF@?$CFd?$A>; |format = "%d"
0040100A |. FF15 A0204000 CALL DWORD PTR DS:[<&MSVCR100.printf>] ; \printf
00401010 |. 83C4 08 ADD ESP,8
00401013 |. 33C0 XOR EAX,EAX
00401015 \. C3 RETN
我还想看一下 int k=power(4,5); 这个函数的反汇编代码 可是 它却直接给我翻译成了立即数 (push 400h) 这是为什么呢