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

20150821-20번-엄민웅-일일업무일지 - windbg 어셈블리

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



pdf파일 p.67(교재 p.54) 컴파일 명령어

ml /c /coff /Zi example.asm

obj 파일 생성됨.


pdf파일 p.68(교재 p.55) 링크 명령어

link /debug /subsystem:console /entry:start /out:example.exe example.obj io.obj kernel32.lib

exe 파일, ilk 파일, pdb 파일 생성됨.






windbg 파일 실행.  교재p55. 이하 (pdf p68.)

File 에서 Open Executable... 을 클릭한 후 링크 한후 만들어진 exe파일을 실행한다. 

다음 이렇게 생긴 아이콘을 클릭(메세지창 뜨고 확인 후 한 두번 더 클릭) 하면 작성했던 소스 코드가 등장하다.

View 에 memory, Registers를 통해 메모리와 레지스터의 값의 변화를 알 수 있다.  

Registers 부분에 레지스터 안에 값이 들어가거나 값이 변동 될시 글자색이 빨갛게 변함.




listing 파일pdf p.73, 교재 p.60 

컴파일 명령어. ml /c /coff /Fl example1.asm 

lst파일 생성.



constant operands pdf p.81 교재 p.68

cf. 어셈블리에선 대문자 소문자 구분 X



메모리모드에 값을 직접 넣는 direct 방식과 (C에서 '=' 대입 연산자 같은), 간접적으로 넣는 indirect (C에서 포인터 같은) 방식이 있다. indirect 방식 사용방법은 '[]'로 감싸서 사용한다. (어셈블리에선 대괄호 배열 아님. 어셈블리에선 배열(데이터) 계념 없다 하신걸로 기억합니다. 메모리의 '크기'만 존제함)



number of Byte, 컴파일 후 생성되는 명령어의 길이(?)크기(?)



mov 사용 되어지는 Destination, Source에 들어가는 값들에 따라 정해지는 명령어 길이와 컴퓨터 코드 

mov number1 eax 가 사용 될시 (기계어)명령어 코드는 A3 

mov eax iNum 이 사용 될시 (기계어)명령어 코드는 A1

많이 공부하고 많이 눈에 익혀 놓다 보면 기계어 코드만 봐도 어떤 명령어에 어떤 레지스터 변수들이 위치되어져서 사용 됬는지 역추적 할 수 있다고 함.




수업에 대한 이해도가 크게 부족해서 잘 모르겠는 부분이 많네요 ㅠ 설명 첨가 해주실 부분 있으면 설명 부탁드립니다



-----------------------------------------------------------


http://wowcat.tistory.com/1878 [전 년도 선배님이 작성하신 업무일지.]

728x90