IT_Programming/Assembly

[전광성의 어셈블리어 이해하기] 강좌 소개 및 목차

JJun ™ 2007. 7. 2. 10:23
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

    1. 강좌 목차

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

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

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

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

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

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

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

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

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

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

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

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