본문 바로가기
Ghost의 어셈블리어 Note/Ghost의 어셈블리어 MASM 컴파일

어셈블리어 MASM 컴파일.

by dark ghost 2012. 8. 24.
728x90
반응형

어셈블리어 MASM 컴파일.

  그림 1> MASM으로 컴파일전 필요한 파일들.

1. 이전에는 NASM으로 C 파일과 컴파일을 하였는데 이번에는 MASM으로 컴파일을 하였다. 그림1>에서는 MASM으로 컴파일 하기전에 필요한 파일들이당... 그런데 다른 파일 들은 빨간색인데 색이 다른 하나가 있는 것을 볼 수 있을 것이다. 그 파란색으로 된 windbg 파일은 디버깅을 하는데 필요한 파일이라서 따로 색을 주었고 지금은 신경쓰지 않아도 된당... ^^

 

   그림 2> ml 이라는 명령어로 First.obj 파일 생성하기. 

2. 그림 2>에서는 링크를 걸리 위해 필요한 OBJ 파일을 생성 하기 위해서 ml 이라는 명령어를 썼다. 그러나 보면 알수도 있겠지만 NASM 컴파일과는 명령어가 다른 것을 볼 수 있다. NASM 에서는 nasm -f win32 First.asm 이었지만 MASM에서는 ml /c /coff First.asm 이라고 쓴다. 암튼 ml 로 OBJ 파일을 생성한다.

 

   그림 3> First.obj 생성 확인.

3. 그림 3>에서 First.obj 파일이 생성 된 것을 확인 할 수 있당... 그럼 성공? 당연한 얘기 일 것이당...

 

   그림 4> link 명령어로 컴파일.

4. 그림 4>에서는 실행 파일을 생성하기 위해서 링크를 걸기 위해 link라는 명령어를 사용 하고 있다. 여기서 또 한가지 NASM 에서는 링크를 걸리 위해 cl 이라는 명령어를 사용하는데 cl first.obj io.obj 이렇게 하면 자동 적으로 링크가 걸렸었다. 그러나 MASM은 link라는 명령어를쓰고 아래와 같이 사용 한다. 

link /subsystem:console /entry:start /out:main.exe First.obj io.obj Kernel32.Lib
위 에서 알수 있듯이 컴파일 방식이 다르다는 것을 알 수 있다~~ 그럼 제대로 링크가 걸렸는지를 봐야 것징...ㅎㅎ

 

   그림 5> 실행 파일 생성.

5. 그림 5>에서 원하던 결과가 제대로 나온 것을 확인 할 수 있당.. main.exe 파일이 나올 수 있었던 이유는 out:main.exe 에서 결과가 나올 파일 명을 미리 만들어 주었기 때문에 main.exe가 나온 것이당.. 그럼 이참에 결과도 테스틑 해보겠슴돵..

 

   그림 6> 실행 파일 실행 결과.

6. 그림 6>에서 실행파일을 실행 시켜본 결과 되는 것을 확인 했습니당...ㅎㅎ 

728x90
반응형

댓글