1. 강좌 소개

본 강좌에서는 어셈블리어(Intel-based Assembly Language)를 배울 것이다. 고급언어 중에서도 특히 객체지향언어를 활용하는 지금, 굳이 어셈블리어를 배워보려는 이유는 무엇일까?

첫 번째 이유는 어셈블리어가 여전히 하드웨어 컨트롤과 커널 개발 등에 쓰인다는 것이고, 두번째 이유는 이것을 배움으로써 CPU가 어떤 일을 하는지, 컴퓨터가 어떻게 프로그램을 수행하는지 알 수 있다는 것이다. 프로그래밍 언어를 한번이라도 접해본 사람이라면 쉽게 이해할 수 있도록 설명할 예정이다.

어셈블러로는 매크로어셈블러(masm)6.15을 사용할 것이며, 아래 참고자료에 있는 라이브러리를 이용하여 예제를 보여줄 것이다. C에서 처음에 printf()함수를 이용해서 기초를 쌓듯, 우린 이 라이브러리를 이용해서 차근차근 배워갈 것이다.

  • 참고자료 소개     * http://www.intel.com - IA-32 Architecture
        * ASSEMBLY LANGUAGE FOR INTER-BASED COMPUTERS
        written by KIP R. IRVINE, Prentice Hall

     

    2. 강좌 목차

    1회 : 어셈블리어를 배우기 위한 기본 개념
    어셈블리어가 대체 무엇을 하는 놈인지 알아본다. 또 기본적인 컴퓨터의 자료 표현방법과 불린 연산에 대해 쉽게 알려준다.

    2회 : IA-32 프로세서 아키텍쳐(Processor Architecture)란?
    과연 저 복잡한 단어는 무엇을 의미할까? 그 해답을 얻기 위해서는 우선 CPU에 대한 지식이 필요할 것이다. 또, 앞으로 눈에 박히도록 나올 레지스터 메모리에 대해 자세한 설명을 덧붙인다.

    3회 : 어셈블리 언어 기초
    어셈블리어를 이용해 뭔가 결과물을 보여줌으로써 시작한다. 기초적인 어셈블리 문법을 배우기 시작할 텐데, 어셈블리의 자료형에 대한 언급도 빠질 수 없을 것이다.

    4회 : 기본 명령어
    이제부터는 앞의 내용을 모르면 보기 힘들다. 덧셈과 뺄셈, 배열과 문자열의 간단한 사용에 대해 알아본다. 또 프로그래밍 언어에서 빠질 수 없는 루프에 대해 살펴본다.

    5회 : 프로시져(Procedure)
    이제 프로그램을 구조적으로 짤 수 있게 해주는 프로시져를 배운다. 프로시져가 성립되기 위해서는 런타임 스택이라는 것에 대한 언급이 필요하다.

    6회 : 조건 처리
    CPU가 숫자를 비교하는 방법에 대해 살펴본다. 이를 토대로 조건에 따라 점프하기, 조건에 따라 루프돌기 등의 명령어를 알아본다.

    7회 : 정수 산술연산(이진연산)
    쉬프트 연산에 대해 살펴볼 것이다. 또 덧셈보다 복잡한 곱하기, 나누기에 대해 알아본다.

    8회 : 고급 프로시져
    프로시져를 좀더 멋있게 호출하기 위해 지역변수개념과 스택 파라미터등에 대해 파헤쳐 본다. 또 그 유명한 재귀호출도 설명한다.

    9회 : 스트링과 배열
    스트링을 정밀하게 다룰 때 쓰이는 명령들에 대해 공부한다. 또 이차원 배열과 문자열 소팅에 대해서 살펴본다.

    10회 : 구조체와 매크로.
    어셈블리어에서 구조체를 어떻게 구현할지에 대해 고민해보자. 또 어셈블리어를 좀더 멋지게 꾸밀 수 있는 매크로와 조건-어셈블리 지시자들에 대해서도 공부해본다.

    11회 : 32비트 윈도우즈 프로그래밍
    윈도우에서의 콘솔프로그래밍에 대해 공부한다. 그 다음, 그래피컬 윈도우 어플리케이션을 어떻게 하는지, 메모리 매니지먼트는 어떻게 되는지 자세히 살펴본다.

    12회 : 고급언어 인터페이스
    고급언어와의 연계를 목표로 한다. 다른 언어에서 사용할 수 있는 inline-assembly코드에 대한 공부를 한다. 특히, C++과의 연계에 대해 살펴본다.

    [출처] 어셈블리어 이해하기 < 강좌 소개 및 목차 >|작성자 멋쟁이