물마중
[MASM] VisualStudio2010에서 어셈블리 프로그래밍 하자... 본문
nasm 공부를 대충 훑어보고, masm으로 넘어오면서 어셈프로그램 환경설정 때문에 시간이 많이 소모됐다. 비쥬얼로 하려는데 관련자료가 엉망진창...;;
영어문서 보고 대충대충 하긴했는데... 정리해놔야 겠다.
1. irvine 라이브러리 다운...
http://kipirvine.com/asm/gettingStartedVS2010/index.htm#batch
irvine 라이브러리를 제공하는 사이트에 들어가서 다운받는다. 일단은 C드라이브에 Irvine 폴더 하나 만들어 놓고 압축풀었다.
뭐 대충 관련 라이브러리와 이에 따른 예제 폴더가 들어있다. 관련 자료를 받았으니 이제부터 masm 프로젝트를 생성한다.
2. VisualStudio 2010을 실행하여 새로운 프로젝트를 생성한다.
프로젝트 생성은 [Win32 콘솔 응용 프로그램] -> [빈 프로젝트] 단계로 원하는 프로젝트名을 지정한 뒤, 하나 만든다.
3. [솔루션 탐색기]에 마우스 버튼을 올려둔 후, 오른쪽 버튼을 클릭하면 아래와 같은 메뉴들이 뜬다. [사용자 지정 빌드(B)]를 이용하여 현재 프로젝트가 masm을 이용한 어셈블링을 할 수 있도록 지정한다.
4. 프로젝트에 [소스 파일]을 추가한다. 새 항목을 만들어도 되고 기존 파일을 불러와도 된다. 파일 확장자는 [.asm]이어야 한다.
5. 처음 설치한 라이브러리의 경로를 VisualStudio 2010 프로그램에 알려주어, 해당 라이브러리를 잘 가져올 수 있도록 설정한다.
메뉴에서 [(해당 프로젝트名) 속성]을 선택하든, [Alt키 + F7키]를 눌러준다.
ㄱ. [구성 속성] -> [링커] -> [일반]
[추가 라이브러리 디렉터리] 부분에 irvine 라이브러리가 있는 폴더경로를 추가한다.
ㄴ. [구성 속성] -> [링커] -> [입력]
[추가 종속성]에 위에서 입력한 폴더에서 가져올 라이브러리 이름을 추가한다.
ㄷ. [구성 속성] -> [Microsoft Macro Assembler]
[include Paths]에 라이브러리가 존재하는 폴더의 경로를 추가하는 것으로 마무리한다.
masm 프로그래밍을 위한 환경설정 및 프로젝트 생성이 끝났다.
간단한 예제프로그램을 이용하여 빌드가 되는지 확인한다.
처음 eax 레지스터에 0x10000값을 넣는다. (mov eax, 10000h)
eax 레지스터에 40000h값을 더한 후, 결과 값을 eax에 집어 넣는다. (add eax, 40000h)
eax 레지스터에 20000h값을 뺀 후, 결과 값을 eax에 집어 넣는다. (sub eax, 20000h)
빌드 후 결과를 확인한다.
참고로 DumpRegs 프로시저는 프로그램 실행 중 레지스터들의 값을 화면에 뿌린다.
프로그램이 잘 실행되었으며, 정확한 결과 갑 eax=30000을 확인한다.
ps. 끝~~!!
'Programming > Windows System' 카테고리의 다른 글
[Windows System] Win32 실행파일(PE)의 구조 (0) | 2011.09.09 |
---|---|
[Windows System] 메모리 컨트롤 (0) | 2011.03.13 |
[Windows System] 메모리 계층(Memory Hierarchy) (0) | 2011.03.13 |
[Windows System] MMF(Memory Mapped File) (0) | 2011.03.13 |
[Windows System] 라이브러리 (0) | 2011.03.13 |