69,371
社区成员
发帖
与我相关
我的任务
分享
int __cdecl putchar(int _Ch);
代码:
int a='A';
putchar( a );
64位编译后的汇编:
0x000000000040153d <+13>: mov DWORD PTR [rbp-0x4],0x41
0x0000000000401544 <+20>: mov eax,DWORD PTR [rbp-0x4]
0x0000000000401547 <+23>: mov ecx,eax
0x0000000000401549 <+25>: call 0x402af8 <putchar>
32位:
0x0040150e <+14>: mov DWORD PTR [esp+0x1c],0x41
0x00401516 <+22>: mov eax,DWORD PTR [esp+0x1c]
0x0040151a <+26>: mov DWORD PTR [esp],eax
0x0040151d <+29>: call 0x4025f8 <putchar>
哦,这么看,32位确实用栈了(是吧?),不过为啥没用push?
看了下自定义的函数,32位的确实也用栈了,64位的则没有用栈