Quote:
引用第16楼zhd32于2007-11-04 10:22发表的 :
是乱码哈
printf("xxxxxx", YYY, ZZZ)
printf传参的时候是直接把 YYY和ZZZ的值压栈(不考虑优化)
.......
gege对printf的研究源于: ???
printf:
00401080 push ebp
00401081 mov ebp,esp
00401083 sub esp,0Ch
00401086 push ebx
00401087 push esi
00401088 push edi
00401089 lea eax,[ebp+0Ch]
0040108C mov dword ptr [arglist],eax
0040108F cmp dword ptr [format],0
00401093 jne printf+33h (004010b3)
00401095 push offset string "format != NULL" (0042204c)
0040109A push 0
0040109C push 36h
0040109E push offset string "printf.c" (00422040)
004010A3 push 2
004010A5 call _CrtDbgReport (00402680)
004010AA add esp,14h
004010AD cmp eax,1
004010B0 jne printf+33h (004010b3)
004010B2 int 3
004010B3 xor ecx,ecx
004010B5 test ecx,ecx
004010B7 jne printf+0Fh (0040108f)
004010B9 push offset __iob+20h (00424a60)
004010BE call _stbuf (004012d0)
004010C3 add esp,4
004010C6 mov dword ptr [buffing],eax
004010C9 mov edx,dword ptr [arglist]
004010CC push edx
004010CD mov eax,dword ptr [format]
004010D0 push eax
004010D1 push offset __iob+20h (00424a60)
004010D6 call _output (004014f0)
004010DB add esp,0Ch
004010DE mov dword ptr [retval],eax
004010E1 push offset __iob+20h (00424a60)
004010E6 mov ecx,dword ptr [buffing]
004010E9 push ecx
004010EA call _ftbuf (00401430)
004010EF add esp,8
004010F2 mov eax,dword ptr [retval]
004010F5 pop edi
004010F6 pop esi
004010F7 pop ebx
004010F8 mov esp,ebp
004010FA pop ebp
004010FB ret