Programming/Assembly(어셈블리)
ia32 어셈블리 언어
구차니
2013. 12. 12. 11:43
visual studio 에서 디버깅하면 디스어셈블러에서 이상한게 나오는데
알고보니 일종의 포인터 연산 이런거 였다는게 함정..
rep stos dword ptr es:[edi]
머.. 자세한건 다시 읽어 봐야겠다.
[링크 : https://www.cs.umd.edu/users/meesh/webpages/cmsc311/links/handouts/ia32.pdf]
알고보니 일종의 포인터 연산 이런거 였다는게 함정..
int _tmain(int argc, _TCHAR* argv[]) { 004113A0 push ebp 004113A1 mov ebp,esp 004113A3 sub esp,0CCh 004113A9 push ebx 004113AA push esi 004113AB push edi 004113AC lea edi,[ebp-0CCh] 004113B2 mov ecx,33h 004113B7 mov eax,0CCCCCCCCh 004113BC rep stos dword ptr es:[edi] int a = 0; 004113BE mov dword ptr [a],0 a++; 004113C5 mov eax,dword ptr [a] 004113C8 add eax,1 004113CB mov dword ptr [a],eax printf("hello world %d\n", a); 004113CE mov esi,esp 004113D0 mov eax,dword ptr [a] 004113D3 push eax 004113D4 push offset string "hello world %d\n" (41573Ch) 004113D9 call dword ptr [__imp__printf (4182BCh)] 004113DF add esp,8 004113E2 cmp esi,esp 004113E4 call @ILT+320(__RTC_CheckEsp) (411145h) return 0; 004113E9 xor eax,eax } |
rep stos dword ptr es:[edi]
mov dword ptr [a],0
mov eax,dword ptr [a]
mov eax,dword ptr [a]
머.. 자세한건 다시 읽어 봐야겠다.