Post

Register

Register





범용 레지스터



1
2
3
4
5
6
7
8
9
10
11
12
연산에 사용되는 레지스터

EAX : 연산과 함수 반환 값에 사용되는 레지스터
      산술, 논리 연산에 사용되는 레지스터, 함수 리턴 값 전달용도로도 사용.

EBX : 간접 주소 지정 시 사용되는 레지스터
      ESI, EDI와 결합해 인덱스에 사용되는 레지스터

ECX : 루프문에서 반복 명령 수행 시 반복 횟수를 저장하기 위해 사용하는 레지스터

EDX : 부호확장에 사용되는 레지스터
      간접 주소 지정에서 사용되는 레지스터이고 곱셈, 나눗셈 시 보조 연산 레지스터



인덱스 레지스터



1
2
3
4
5
6
7
8
연산과 간접 주소 지정에 사용되는 레지스터


ESI : 데이터 복사 작업, 조작을 할 때 Source data address가 저장되는 레지스터
      복사, 비교에 사용되는 Source string을 가리킴

EDI : 데이터 복사 작업을 할 때 Destination address가 저장되는 레지스터
      복사, 비교에 사용되는 Destination string을 가리킴



포인터 레지스터



1
2
3
4
5
6
7
8
주소를 가리키는 포인터 용도로 사용되는 레지스터


EBP : 스택 프레임 사용 시 실행 중인 함수 스택 프레임의 시작 주소를 가리키는 레지스터
      (스택 프레임이 소멸되면 이전에 사용되던 스택 프레임을 가리킴)

ESP : 가장 최근에 스택에 들어온 Data를 가리키는 레지스터
      (PUSH, POP 연산에 의해 4byte씩 바뀐다.)



인스트럭션 레지스터(인스트럭션 포인터)



1
9) EIP : 다음으로 실행할 명령어의 주소가 저장되는 레지스터



세그먼트 레지스터



1
2
3
4
5
6
7
8
1) CS(Code Segment) : Code Segment의 시작 주소를 가리키고 EIP 레지스터가 가지고 있는 
                      offset과 더해져 실행을 위한 명령어 주소 참조

2) DS(Data Segment) : Data Segment의 시작 주소를 가리키고 범용 레지스터가 가지고 있는  
                      offset과 더해져 데이터 영역 주소 참조

3) SS(Stack Segment) : Stack Segment의 시작 주소를 가리키고 포인터 레지스터가 
                       가지고 있는 offset과 더해져 스택 영역 주소 참소






Flags



1
2
3
4
5
6
7
8
9
10
산술, 논리 연산을 통한 결과 값으로 Flag값이 변함.


CF(Carry Flag) : 부호 없는 값의 연산 결과가 피연산자의 범위를 벗어났을 때 설정됨.

ZF(Zero Flag) : 연산 결과가 0일 때 1로 설정됨.

SF(Sign Flag) : 연산 결과의 최상위 비트가 음수이면 1로 설정되고 양수이면 0으로 설정됨.

OF(Overflow Flag) : 부호 있는 숫자의 연산 결과가 피연산자의 범위를 벗어났을 때 설정됨.






출처



Link
dongdd.tistory.com/86?category=779916



This post is licensed under CC BY 4.0 by the author.