<div> <div> <div><font face="맑은 고딕" size="2"><span style="line-height:normal;"><a target="_blank" href="http://blog.naver.com/asmpro/220202500784">http://blog.naver.com/asmpro/220202500784</a> - 네이버 블로그</span></font></div> <div style="line-height:normal;"><font size="2" face="맑은 고딕"><br></font></div> <div style="line-height:normal;"><font size="2" face="맑은 고딕">어셈블리 프로그래밍에 관심이 있는 사람이 워낙 적어 얼마나 도움이 될지는 모르겠지만 최소한 어셈블리 프로그래밍에 대한 막연한 두려움은 없애줄 수 있을 것 같아 FASM 어셈블리 프로그래밍 관련글을 연재할까 합니다.</font></div> <div style="line-height:normal;"><font size="2" face="맑은 고딕"><br></font></div> <div style="line-height:normal;"><u><font size="2" face="맑은 고딕">어셈블리 프로그래밍은 자료도 질문할 곳도 거의 없기 때문에 이 글은 C와 Windows API 프로그래밍에 익숙한 사람을 대상으로 합니다.</font></u></div> <div style="line-height:normal;"><u><font size="2" face="맑은 고딕">영문으로된 기본 매뉴얼이나 소수의 영문으로 된 자료를 참고하여 개발할 수 있는 사람에게 적합하다는 점을 주의하기 바랍니다.</font></u></div> <div style="line-height:normal;"><b><font size="2" face="맑은 고딕"><br></font></b></div> <div style="line-height:normal;"> <div> <hr></div> <div><b><font size="2" face="맑은 고딕">개발도구</font></b></div> <div><b><font size="2" face="맑은 고딕"><br></font></b></div> <div><font size="2" face="맑은 고딕">- Language : FASM - <a target="_blank" href="http://board.flatassembler.net/" target="_blank">http://board.flatassembler.net/</a></font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> 인텔 계열 CPU 크로스 플랫폼 어셈블러 입니다.</font></div> <div><font size="2" face="맑은 고딕"> 배포 파일이 1MB 수준으로 매우 작지만 컴파일러, IDE, 예제, include 파일들이 포함되어 있으며 심지어 컴파일러와 IDE의 어셈블리 소스까지 포함되어 있습니다.</font></div> <div><font size="2" face="맑은 고딕"> 순수 어셈블리 언어로 제작된 어셈블러인 만큼 컴파일 속도가 매우 빠르고 매크로 또한 매우 파워풀해 FASM으로 만들어진 GUI OS나 Pure Basic 같은 언어도 있습니다.</font></div> <div><font size="2" face="맑은 고딕"> 단점이라면 MASM 같은 대중적인 어셈블러에 비해 도움말, 강좌, 예제, 소스 등 자료가 턱없이 부족합니다.</font></div> <div><font size="2" face="맑은 고딕"> 특히 한글로 된 자료는 소개 수준의 글을 제외하고는 전무하기에 영어로 된 자료를 보는데 문제가 있다면 FASM은 사용하지 말아야 합니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> <b>장점: 크로스 플랫폼 지원, 작고 가볍고 빠르다, 모든 소스가 공개되어 있다.</b></font></div> <div><b><font size="2" face="맑은 고딕"> 단점: 사용자가 적어 자료가 매우 적다. (한글은 소개외에 전무)</font></b></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕">- Code Editor : Notepad++ - <a target="_blank" href="http://notepad-plus-plus.org/" target="_blank">http://notepad-plus-plus.org/</a></font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> 오픈 소스 에디터 입니다.</font></div> <div><font size="2" face="맑은 고딕"> 오픈 소스의 장점이 극대화된 에디터로 타 에디터가 제공하는 기능은 거의 대부분 지원하며 플러그인 기능이 있어 수많은 플러그인으로 기능을 확장할 수 있습니다.</font></div> <div><font size="2" face="맑은 고딕"> 개인적으로 무료 텍스트 에디터 중 최고라고 생각합니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> <b>장점: 타에디터의 기능들을 대부분 지원</b></font></div> <div><b><font size="2" face="맑은 고딕"> 단점: 없음</font></b></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕">- Resource Editor : ResEdit - <a target="_blank" href="http://www.resedit.net/" target="_blank">http://www.resedit.net/</a></font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> 무료 리소스 에디터입니다.</font></div> <div><font size="2" face="맑은 고딕"> Visual C++의 리소스도 편집이 되며 include 경로를 지정하면 자동으로 WinAPI 상수들을 읽어오고 .rc파일로 저장시 resource.h파일 또한 자동생성합니다.</font></div> <div><font size="2" face="맑은 고딕"> rc, exe, dll, ocx, res 등 모든 종류의 리소스들을 읽고 저장 포맷 또한 마음대로 변경할 수 있으나 res로 컴파일 할 경우 타 컴파일러와 호환이 안되는 경우가 있습니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> <b>장점: 가볍고 빠르며 리소스 에디터가 할 수 있는 모든 것을 할 수 있다.</b></font></div> <div><b><font size="2" face="맑은 고딕"> 단점: res파일 생성시 타 컴파일러와 호환이 되지 않는 경우가 있다.</font></b></div> <div><font size="2" face="맑은 고딕"><br>- Resource Compiler : GoRC - <a target="_blank" href="http://www.godevtool.com/" target="_blank">http://www.godevtool.com/</a></font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕"> 무료 리소스 컴파일러입니다.</font></div> <div><font size="2" face="맑은 고딕"> 무료 컴파일러의 종류에 따라 Path에 설정되어 있는 include 파일들을 못읽는 경우가 있는데 이 컴파일러는 제대로 작동합니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div> <hr></div> <div><b><font size="2" face="맑은 고딕">Notepad++ 설정</font></b></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕">- Winhlp32 -k $(CURRENT_WORD) path\win32.hlp</font></div> <div><font size="2" face="맑은 고딕"> 실행에 WinAPI 도움말을 등록합니다. 단축키는 정보의 F1을 제거하고 F1로 설정합니다.</font></div> <div><font size="2" face="맑은 고딕"> 단축키를 누르면 현재 커서위치의 단어의 WinAPI 도움말을 보여줍니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕">- path\FASMW.EXE "$(FULL_CURRENT_PATH)"</font></div> <div><font size="2" face="맑은 고딕"> 실행에 FASMW를 등록합니다. 단축키는 Ctrl+F9로 설정합니다.</font></div> <div><font size="2" face="맑은 고딕"> 컴파일 하려는 어셈블리 파일에서 단축키를 누르면 해당파일을 FASMW에서 보여줍니다.</font></div> <div><font size="2" face="맑은 고딕"> 다시 한번 F9를 눌러 컴파일 및 실행을 합니다.</font></div> <div><font size="2" face="맑은 고딕"> FASM을 직접 호출하지 않고 IDE인 FASMW를 호출하는 이유는 FASM은 include 파일의 경로를 인식하지 못해 FASMW로 컴파일 해야 하기 때문입니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div><font size="2" face="맑은 고딕">- cd "$(FULL_CURRENT_PATH)"</font></div><font size="2" face="맑은 고딕"> path\GoRC.exe -r "$(FULL_CURRENT_PATH)"</font> <div><font size="2" face="맑은 고딕"> 플러그인에 NppExec를 설치한 후 F6을 눌러 입력하고 Resource Compiler명명하고 저장합니다.</font></div> <div><font size="2" face="맑은 고딕"> 컴파일 하려는 리소스 파일(.rc)에서 F6을 누른 후 실행하면 .res 파일이 생성됩니다.</font></div> <div><font size="2" face="맑은 고딕"><br></font></div> <div> <hr></div> <div><b><font size="2" face="맑은 고딕">컴파일 순서</font></b></div> <div> <ol><li><font size="2" face="맑은 고딕">Notepad++와 ResEdit를 이용하여 개발합니다.</font></li> <li><font size="2" face="맑은 고딕">리소스를 Notepad++로 불러온 후 F6으로 GoRC를 실행하여 컴파일 합니다.</font></li> <li><font size="2" face="맑은 고딕">Ctrl+F9를 눌러 FASMW를 실행한 후 F9로 컴파일 합니다.</font></li></ol></div></div> <div style="line-height:normal;"><font size="2" face="맑은 고딕"><br></font></div> <div style="line-height:normal;"><font size="2" face="맑은 고딕">위의 설정은 어디까지나 제가 FASM을 제외한 나머지 것들을 다양한 프로그램들을 조합하면서 얻은 저만의 최적화된 세팅으로 이게 최선의 설정이라 얘기하는 것이 아니니 <b>참고하여 자신에게 편한 환경을 설정</b>하기 바랍니다.</font></div><br></div></div>