이 책에서는 x86 계열의 마이크로프로세서에서 쓰이는 어셈블리어를 다룬다. x86 어셈블리어 프로그래밍을 비롯하여 x86 계열 프로세서의 역사와 기본 아키텍쳐 등을 가르치는 것이 목적이다.

본 책에서 x86은 x86 기반의 프로세서 전범위를 지칭한다. (1978년 발표된 인텔 8086 이후의 것) 여기에는 다음과 같은 것들이 포함된다:

  • IA-32 어셈블리 (인텔 아키텍쳐 32비트, 인텔 80386 이후의 것), x86-32로도 흔히 불린다. 기존의 16비트 인텔 x86 프로세서 아키텍쳐(인텔 8086 - 80286 CPU에서 사용)의 32비트 확장이며, 16비트 x86에 완벽히 호환된다.
  • x86-64. AMD64 또는 AMD 64비트 확장으로도 불리우며, 32비트 코드에 성능 손실 없이 호환된다.
  • 인텔 64. IA-32e 또는 EM64T로도 불리었으며, x86-64와 거의 동일하다.

본 책에서는 위의 용어들을 적절히 혼용하며 사용할 것이다.

목차

들어가기
기초 FAQ

x86 기초

x86 계열
x86 아키텍쳐와 레지스터
코멘트
16, 32, 64비트
기본 자료형

x86 명령어 집합

x86 명령어
데이터 이동 명령어
제어흐름 명령어
산술연산 명령어
논리연산 명령어
시프트연산과 회전연산 명령어
기타 명령어
x86 인터럽트

문법과 어셈블러

x86 어셈블러
GAS 문법
MASM 문법
HLA 문법
FASM 문법
NASM 문법

확장 명령어

확장 명렁어
부동소수점
MMX
SSE
AVX, AVX2, FMA3, FMA4
3DNow!

고급 x86

고급 x86
고급언어
기계어 변환
보호모드
GDT
고급 인터럽트
부트로더
디버그 정보

x86 칩셋

x86 칩셋
직접 메모리 접근
PIC
PIT
프로그래머블 병렬 인터페이스