32비트 80x86 어셈블리 언어 프로그래밍
양희재 | 퍼플
10,500원 | 20171001 | 9788924050288
C와 C++, 자바, C#, 파이썬 등 최신의 고급 프로그래밍 언어를 사용하는 현대에도 저급언어인 어셈블리어에 대한 지식은 여전히 필요하다. 특히 컴퓨터구조, 운영체제, 서버 보안, 임베디드 시스템, 사물 인터넷 등 컴퓨터 시스템 또는 시스템 소프트웨어를 전공으로 선택한 학생들에게 어셈블리 언어 프로그래밍은 필수과목이라고 할 수 있다.
이 책에서는 보호 모드(protected mode)에서 동착하는 32비트 80x86 프로세서의 어셈블리어를 사용한다. 64비트 시대인 현대에도 정수형 데이터인 int 형식은 여전히 32비트이며, 이 책의 내용은 64비트 컴퓨터 상에서도 완벽히 유효하다. 인텔의 80386, 80486, 펜티엄 Pentium, 셀러론 Celeron, 제온 Xeon, 코어 Core, 아톰 Atom 등 프로세서에 대해 이 책의 내용을 적용할 수 있다.
이 책의 내용은 PC나 리눅스 컴퓨터 등에서 실습을 통해 더욱 자세히 배울 수 있다. 사용한 어셈블러는 공개 소프트웨어인 nasm 이며, C 컴파일러 역시 공개 소프트웨어인 gcc 이다. 이 프로그램들은 리눅스 운영체제에서는 기본적으로 제공되고 있으며, MinGW 등 소프트웨어를 설치하면 윈도우즈 10 운영체제에서도 문제없이 사용할 수 있다. 이 책의 내용은 윈도우즈 10 64비트 운영체제를 기반으로 작성했다.
책의 전반부에서는 컴퓨터에 대한 배경지식, 자료 형식, 80x86의 구조와 대표적인 어셈블리 언어 명령들에 대해 다루었고, 후반부에서는 전역변수, 함수, 스택 사용, 파라미터 전달, 지역변수, 반복과 재귀, 배열, 구조체, 포인터 등 C언어와의 연동에 대해 설명했다. 이런 지식을 바탕으로 버퍼 오버플로우 등 프로그램의 취약점을 알 수 있게 했다.
이 책은 대학의 컴퓨터공학 또는 유사 전공의 어셈블리 언어 프로그래밍, 시스템 프로그래밍 등의 교재로 사용할 수 있다. 저자는 오래 동안 대학에서 이 책의 내용들을 강의해 왔으며 그간의 자료들을 정리하여 이 책을 발간하게 되었다. C언어를 알고 있는 상태에서 이 책의 내용을 공부하는 것으로 가정하였으며, 컴퓨터구조 등에 대한 사전지식이 있다면 더욱 쉽게 공부할 수 있다. 독자들이 컴퓨터의 내부, 즉 프로세서와 메모리에서 일어나는 동작들의 깊은 내용을 이해하는데 이 책이 조금이나마 도움이 될 수 있기를 바란다.