2007. 2. 21. 18:49
안녕하세요...

서툰 솜씨로 시작하게 된 DevX강좌를 구독해 주신 여러분에게 경의를 표합니다.
어셈블리는 결코 쉬운 학문이 아니란것을 새삼 느끼게 될 것입니다.
하지만, 델파이나 비주얼베이직 혹은 C#같은 언어의 편리함에서 얻지 못하는 무언가
배우고 있다는 느낌은 확실히 받을 것입니다. 실제로 간단한 윈도우의 표준뼈대코드로
구성된 어플리케이션의 경우 가장 강력하다는 비주얼씨++ 로 생성한 것의 크기는 10KB정도
입니다만, DevX의 경우는 1KB입니다. 속도와 용량 효율성의 차이는 궂이 설명안해도 알 수
있을듯 합니다. 거추장 스럽다가 제 의견입니다만, 실제론 예외와 에러처리등의 중요처리를
수행하느라 부피가 커지는 것입니다만, 그또한 내용을 안다면 어셈블러로 처리 할 수 있습니다.

가장 최근의 Visual Studio 2005에서도 어셈블러가 내장되어 있습니다. x86에서는 무조건
어셈블리 언어의 프로세서명령인 니모닉으로 처리되게 되어있습니다. 모든언어는
사람이 이해하는 소스코드를 기계가 이해하는 기계어로 번역해야합니다. 고급언어들은
컴파일 -> 어셈블 과정을 통해 알 수 있듯이 한번더 과정을 거칩니다.

자세한것은 완결편에서 체계적으로 설명하고, 본 DevX강좌를 무턱대고 읽으시면 재미가
없을 것입니다. 도무지 멀 어쩌란건지.............

현재 DevX강좌는 MASM32 Ver 9 의 Qeditor에서 프로젝트를 생성해서 소스파일을 추가하고
리소스파일을 직접 추가해서 작업해야 실행파일을 만들 수 있습니다.

미리 밝혔듯이, 이과정은 상당한 노가다를 요합니다. 또한 비주얼하지도 않습니다.
그래서 WinASM IDE를 소개했습니다.

추후에 이어지는 과정은 바로 WinASM IDE로 본 DevX강좌를 프로젝트로 하나씩 구성해서
실행파일로 만드는 부분과 해당 소스를 업데이트 할 예정입니다. 거기다가 각장의 부연설명을
추가할 까 합니다.  


그러므로, 35강이 완료될때까지는 무조건 이해여부와 상관없이 정독하시기 바랍니다. 간혹
직접 원리를 아시는분은 실행해보셔도 상관없습니다. 눈에 익혀두면 나중에 자신이 약한부분을
파악하기 쉽습니다. 그리고 어셈블리에서는 "왜?" 라는 생각을 잠시 접어두시면 이해하시기
편합니다. 무조건 외우세요.. 라고 권하고 싶습니다. 기본이기 때문입니다. 왜 "ㄱ"을 기역이라
하죠로 파고들면 삼천포로 빠지고 복잡해지니까요.. 기본중의 기본입니다.
그리고 어셈블리를 익혀놓으시면 다른언어를 배우실때 단지 차이점만 익히시게되고, 프로그래머의
마인드가 틀려집니다. 제가보기엔 기본을 제외하고 곧바로 실무만 익혀서 늘 외국에 뒤쳐지는
따라하기 프로그래머만 양상되는게 아닌가 싶습니다. 가끔 C의 고수분들은 알수 없는 내공을
지니신걸 보지만, 그분들 역시 중요모듈에서는 인라인 어셈을 사용하시지만, 속으로는 늘
어셈블리에 대한 갈구를 하실것을 잘 압니다. 그렇다면 어셈블리 하나면 됩니다....
어렵다는 C의 포인터는 어셈블리에서는 늘상 접하고 오히려 변수가 어렵다고 느껴지실겁니다.
전문 컴퓨인이 아니시더라도 기본을 쌓으신다고 생각하시고 학습속도가 나지 않는다고 절대
포기하시지 마시기 바랍니다. 그것이 정상입니다. 운전을 배우실때 엔진을 왜 배워하시지만,
절묘한 드립프팅과 자체수리 혹은 튜닝을 할려면 직접할 수 있으며, 왜하는지를 알게됩니다.
결과물은 같을지 몰라도, 시도는 자체적으로 완전히 틀리답니다.

본인또한 문외한에 가깝습니다. 10년전쯤인가요, 외국 IRC채널에서 대화하던중 카운트스트라이크
개발자한명을 알게됫습니다. 당연히 어셈블리언이였구요. 웃긴게 나이가 17살로 기억합니다.
그때 저는 상당히 쇼크를 받았습니다. 나이떄문이 아니고, 그나이에 벌써 고수준어셈블리를
구사하는 외국쪽의 교육인프라와 마인드에 쇼크를 받은 것입니다. 델파이로 멋지게 어플리케이션을
만드는데는 몇분이면 기본적인 어플이 나옵니다. 그것을 어셈으로 하면 하루종일 걸릴 수도있습니다.
"바보"라고 생각되시는 분들은 델파이보다 더 빠르고 강력한 툴도 있음을 주지하시기 바랍니다.
하지만, 왜쓰는지 절대 모릅니다. 안다손 치더라도, 막연히 아는것입니다. 개발언어는 도구에
해당합니다. 톱과 망치로 옷장을 만들수 있는 사람과, 이미 짜여진 조각으로 조립하는 사람의 차이입니다.

DevX를 읽으시는 여러분은 고객이 아닙니다. 뭔가를 직접해결하고 구조와 원리를 알려고
도전하시는 분들로 압니다. 해킹 크랙킹 은 그후에 선택하는 한 분야일 뿐입니다....
힘내시고, 계속연마하시면 반드시 알수없는 강한 힘을 느끼실것입니다.....

제글의 C언어버전이
http://www.winapi.co.kr에 적혀있습니다. 저는 Win32 API를 C로 처리할때
뭔가 느꼈지만, 뭔가 부족하다는 것을 현재 어셈블리를 하면서 더이상 다른생각이 들지 않고,
오로지 하나씩 배우자라는 생각이 굳혀졌읍니다. 다른언어를 무시하는것이 아니고 순서대로 하쟈는
취지임을 밝힙니다. 다시한번, 관심 가져주시는 모든분에게 경의를 표합니다.