본문 바로가기
코스웨어/13년 스마트컨트롤러

visual studio로 disassembly하기

by 알 수 없는 사용자 2013. 8. 21.
728x90
반응형

소스 코드 작성 후 디버깅 모드로 진입한 후

Debug > Windows > Disassembly 메뉴를 선택하면 

자신이 작성한 소스코드를 어셈블리어로 번역한 코드를 볼 수 있다.



디스어셈블리 창을 띄운 모습


* 명령어 설명

mov     피연산자1, 피연산자2    -> 피연산자1에 피연산자2의 값을 읽어와서 저장함

예) mov    dword prt [a], 64h    -> 16진수 64를 4byte크기의(dword) 메모리 a에 값을 저장함


add     피연산자1, 피연산자2     -> 피연산자 1과 2를 더함. 

add 명령어를 수행시 메모리끼리 값을 더할 수 없음.

반드시 메모리에서 값을 불러와서 덧셈한 후 다시 메모리로 넣어주는 절차를 거쳐야 한다.


a = b + a;

00412F57  mov         eax,dword ptr [b]  

00412F5A  add         eax,dword ptr [a]  

00412F5D  mov         dword ptr [a],eax  


위의 a = b + a;의 어셈블리 코드를 보면 

메모리로부터 각 변수의 값을 레지스터 eax로 불러와서 연산을 마친 후 다시 메모리로 옮겨주는 작업을 하는것을 알 수 있다.



728x90