티스토리 뷰


레지스터란?


레지스터 : CPU 내부에 있는 저장공간


*프로그램 실행 과정

1.보조기억장치인 하드디스크에 실행파일 보관

2.주기억장치인 RAM에 실행파일을 복사함.

3. RAM에 데이터를 중앙처리장치인 CPU 레지스터를 이용하여 복사해와서 처리.






 32bit General-purpose Resgisters(32bit 범용 레지스터)

이름

 명칭

해당 레지스터만의 기능

EAX

 누산기

 함수의 리턴값을 저장 (EDX와 같이쓸땐 하위 4byte)

EBX

 간접주소 지정자

 간접 주소 지정.

ECX

 반복카운터

 0과 같을때까지 하나씩 감소시키면서 반복한다.

ECX값이 감소하면서 0이 될때까지 반복함.

0 < ECX 

0 < 3 

0 < 2

0 < 1

0 < 0

EDX

 EAX 보조 

 4byte 이상의 값을 EAX와 나눠서 해결.(상위4byte)

ex) 0x12127048860F9180

EDX = 12127048 (높은수 저장) 

EAX = 860F9180 (낮은수 저장)

EBP

 Base Point 

 스텍프레임에 기준점 주소를 저장.

ESP

 Stack Point

 스텍프레임에 최상단 주소를 저장.

 함수가 종료되면 EBP 위치로 이동되어 스텍프레임이 해제된다.

ESI

 Source  

 출발지 주소 저장.

EDI

 Destination

 목적지 주소 저장.


상태 레지스터 EFLAGS

EFLAGS

1        SET

   0      CLEAR 

AF

 

 

CF

 

 

OF

 

 

PF

 

 

SF

 

 

ZF

 Zero Flag

 산술연산의 결과가 0일때 SET

 산술연산의 결과가 0이 아닐때 CLEAR

ex) 2 * 2 = 4 ( ZF = CLEAR )

    5 * 0 =0 ( ZF = SET )


EIP  =  다음 실행될 명령어의 주소를 담고 있는 레지스터


스텍프레임 : 어떤 절차(또는 함수)의 호출에 따라서 그와 관계되는 모든 데이터를 저장해 두는 스택 영역


16bit 레지스터: AX, BX,CX,DX  ····

32bit 레지스터: EAX,EBX,ECX ····

64bit 레지스터: RAX,RBX,RCX ····


레지스터 공간을 쪼개서 사용 가능하다.

EAX (4byte) 를 2Byte만 사용할때는 AX로 표현

AX= 2Byte

AH,AL = 1byte

AH = 큰수(1byte)

AL = 작은수(1byte)

EBP, ESP --> 주소를 사용하기 때문에 쪼갤 수 없다.



데이터 형식

데이터 타입 

사용 용도 

BYTE

부호 없는 1 byte

WORD

부호 없는 2 byte 

DWORD

부호 없는 4 byte 

QWORD

부호 없는 8 byte 

SBYTE

부호 있는 1 byte 

SWORD

부호 있는 2 byte 

SDWORD

부호 있는 4 byte 

SQWORD

부호 있는 8 byte 

부호있는(Sign) = S가 붙는다.

D = Double

Q = Quad

C언어와 차이점 : 정수,실수, 문자 개념없이 공간 크기만 맞으면 사용가능.







Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday