AH (8Bit) , AL (8Bit),
AX (Accumulator Register, 16Bit), EAX(Extended AX, 32Bit), RAX(64Bit)
덧셈, 뺄셈, 곱셈과 나눗셈 등과 같은 연산 명령에서 자동으로 사용되고 함수의 리턴 값이 저장되는 용도로 사용된다.

BH (8Bit) , BL (8Bit),
BX (Base Register, 16Bit) , EBX(Extended BX, 32Bit), RBX(64Bit)
ESI나 EDI와 결합하여 인덱스에 사용되며 주로 보조적인 역할로 많이 사용된다.

CH (8Bit) , CL (8Bit),
CX (Counter Register, 16Bit) , ECX(Extended CX, 32Bit), RCX(64Bit)
반복 명령어 사용하는 경우, 반복 카운터로 사용된다.

DH (8Bit) , DL (8Bit),
DX (Data Register, 16Bit), EDX(Extended DX, 32Bit), RDX(64Bit)
AX와 같이 쓰이며 부호 확장 명령 등에사용되며 주로 부동 소수점 연산에 많이 이용되며, 문자열을 출력할 때도 사용된다.

SI (Source Index,16Bit), ESI  (Extended SI, 32Bit), RSI(64Bit)
주로 문자열 복사이나 데이터를 복사하는데 많이 사용되며 복사 출발지를 담당한다.

DI (Source Index,16Bit), EDI  (Extended DI, 32Bit), RDI(64Bit)
주로 문자열 복사이나 데이터를 복사하는데 많이 사용되며 복사 목적지를 담당한다.

SP (Stack Pointer, 16Bit), ESP (Extended SP, 32Bit), RSP(64Bit)
주로 스택에서 현재 위치를 나타내는데 사용되며 스택에서 저장된 값을 꺼낼 때 해당 포인터의 위치를 참조한다.

BP (Base Pointer, 16Bit), EBP (Extended BP, 32Bit), RBP(64Bit)
주로 스택에서 현재 함수의 시작 위치를 나타내는데 사용되며 스택에서 저장된 각 함수에 대한 변수 값의 메모리 상의 범위를 나타날 때 사용되며 이 값을 기준으로 한 범위를 스택 프레임이라고 한다.
(리눅스에서는 Stack Frame Pointer, SFP라고 불린다.)

IP (Instruction Pointer, 16Bit), EIP (Extended IP, 32Bit), RIP(64Bit)
다음 실행될 명령어의 위치를 가리키는 포인터로 함수가 호출된 이후 반환될 때, 다음 명령어를 실행되는 위치는 RET 값을 참조한다.

WRITTEN BY
흉내지빠귀

트랙백  0 , 댓글  0개가 달렸습니다.
secret