IA-32 Register
** 읽어주세요 ** 이 내용은 '리버싱 핵심 원리'책에서 대부분 참고했습니다. 이 글보다는 직접 책을 읽으시는 것을 추천드립니다. 책에 대한 자세한 정보를 얻고 싶으시다면 여기로 레지스터는 CPU 내부에 존재하는 다목적 저장 공간이다 . 우리가 일반적으로 메모리라고 얘기하는 RAM(Random Access Memory) 와는 그 성격이 다르다 . CPU 가 RAM 에 있는 데이터를 액세스하기 위해서는 물리적으로 먼 길을 돌아가야 하기 때문에 시간이 오래 걸린다 . 어셈블리 명령어의 대부분은 레지스터를 조작하고 그 내용을 검사하는 것들이다 . 하지만 , 정작 레지스터를 모르면 명령어 자체도 이해하기 힘들다 . IA-32 는 지원하는 기능도 무척 많고 , 그만큼 레지스터의 수도 많다 . 애플리케이션 디버깅의 초급 단계에서는 Basic program execution register 에 대해서 알아두어야 한다 . 디버깅을 할 때 가장 많이 보게 될 레지스터이기 때문이다 . Basic program executeion registers 는 다시 4 개의 그룹으로 나눌 수 있다 . 범용 레지스터 (General Purpose Registers) (32bit – 8 개 ) 세그먼트 레지스터 (Segment Registers) (16bit – 6 개 ) 프로그램 상태와 컨트롤 레지스터 (Program Status and Control Register) (32bit – 1 개 ) Instruction Pointer (32 비트 – 1 개 ) 먼저 범용 레지스터에 대해서 설명하겠다 . 범용 레지스터는 이름처럼 범용적으로 사용되는 레지스터들이다 . IA-32 에서 범용 레지스터들의 크기는 각각 32 비트 (4 바이트 ) 이다 . 특정 어셈블리 명령어에서는 특정 레지스터를 조작하기도 하고 , 또한 어떤 레지스터들은 특수한 용도로 사용되기...