티스토리 뷰

레지스터는 cpu에서 사용하는 고속 기억장치이다. 


간단한 명령어는 외워두자고 생각했지만 생각보다 익숙하지 않고 용어가 거의 비슷해서 포스팅함. 



인텔 x86 cpu의 아키텍쳐(IA-32)에서는 9개의 범용 레지스터를 제공한다. 



이것을 두가지로 분류 할 수 있는데,


프로그램에서 사용하는 것 EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP

OS에서 사용하는 것 EIP


물론 다른 레지스터들이 존재하지만 추후에 알아둬야 할 레지스터가 있다면 추가로 올려두겠다. 


위의 9가지는 기본이니 알아두는게 좋다. 




EAX(Extended Accumulator Register)

--> 곱셈, 나눗셈 명령에 사용, 함수의 리턴값 저장


EBX(Extended Base Register)

--> ESI, EDI 둘중하나의 레지스터와 결합해서 인덱싱에 사용함


ECX(Extended Counter Resister)

--> 반복을 사용할 때 반복 count를 저장하는 용도. 


EDX(Extended Data Register)

--> EAX 와 같이 사용되고 부호 확장 명령 등에 쓰임.


ESI(Extended Source Index)

--> 데이터 복사, 데이터 조작을 하는 경우 소스 데이터 주소가 저장. ESI 레지스터가 가리키는 주소에 있는 데이터를 

     EDI 레지스터가 가리키는 주소로 복사하는 용도로 주로 사용된다고 함


EDI(Extended Destination Index)

--> 복사 작업 시 목적지 주소가 저장됨. 주로 ESI 레지스터가 가리키는 주소의 데이터를 복사함


EBP(Extended Base Pointer)

--> 하나의 스택 프레임 시작 주소가 저장됨. (이건 아마 자주 봐서 좀 익숙하다) 현재 사용하고 있는 스택프레임이 존재하는 

     동안 불변하는 값이다. 이게 있어야 스택 프레임이 날라갔을 때 되돌아올 곳을 알 수 있으니까.


ESP(Extended Stack Pointer)

--> 하나의 스택 프레임의 끝 지점 주소 저장 PUSH, POP 에 따라서 ESP 값이 변한다. 




EIP(Extended Instruction Pointer)

--> 다음에 실행할 명령어가 저장된 메모리 주소가 저장됨. 











공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함