PC리버싱/(구)기초정리 by ME

세그먼트레지스터

Lamed_Dhhd 2020. 4. 1. 11:34
반응형

세그먼트 레지스터(segment register)는

현재 세그먼트라고 하는 메모리의 한 영역에 대한 주소지정을 제공한다.

PC 계열에서 사용되고 있는 인텔 프로세서들은 자신의 주소지정 능력을 제공한다.

CS,DS,SS,ES,FS,GS등이있다

 

CS레지스터

 

CS레지스터는 프로그램의 코드 세그먼트의 시작 주소를 포함한다.

이 세그먼트 주소에 명령어 포인터(instruction pointer, IP) 레지스터의 오프셋 값을 더하면, 실행하기 위해 메모리로부터 가져와야 할 명령어의 주소가 된다.

일반적인 프로그래밍에서는 이 레지스터를 직접 참조할 필요가 없다.

 

DS레지스터

 

DS 레지스터는 프로그램의 데이터 세그먼트의 시작 주소를 포함함다.

명령어는 이 주소를 사용하여 테이터의 위치를 알아낸다.

이 주소에 명령어의 오프셋 값을 더하면 데이터 세그먼트에 속한 특정 바이트 위치에 대한 참조가 생성된다.

 

SS 레지스터

 

SS 레지스터는 메모리 상에 스택의 구현을 가능하게 한다.

프로그램은 주소와 데이터의 임시 저장 목적으로 스택을 사용한다. 시스템은 프로그램의 스택 세그먼트의 시작 주소를 SS 레지스터에 저장한다.

이 세그먼트 주소에 스택 포인터(stack pointer, SP) 레지스터의 오프셋 값을 더하면, 참조되고 있는 스택의 현재 워드를 가리킨다. 일반적인 프로그래밍에서는 이 레지스터를 직접 참조할 필요가 없다.

 

ES 레지스터

 

ES 레지스터는 메모리 주소지정을 다루는 스트링(문자 데이터) 연산에서 사용된다.

이 경우 ES 레지스터는 DI(인덱스) 레지스터와 연관된다.

프로그램이 ES 레지스터를 사용할 경우에, 이 레지스터를 적절한 세그먼트 주소로 초기화해야 한다.

 

FS와 GS레지스터

 

이 레지스터는 기억장소 요구사항을 다루기 위해서 80386에서 추가로 도입된 여분의 세그먼트 레지스터이다. 

 

REF(출처및 참고한서적들)

https://karfn84.tistory.com/entry/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0%EC%9D%98-%EA%B8%B0%EB%8A%A5

반응형