2013. 8. 27. 00:28

어셈블리어 - 레지스터*

레지스터가 뭐죠?

 

 레 지스터 뒤에 * 표시를 한 건 그만큼 중요하단 뜻입니다!

레지스터는 저장공간입니다.

C/C++ 에서는 변수와 같은역활을 하며 메모리에서 연산을 할 때 사용합니다.

기억장치들 중 속도가 가장 빠르며 사용이 편리하지만 이름은 정해져있습니다.

레지스터도 각각의 용도에따라 나뉘어져있는데요.

그 종류를 알아볼거에요

EA(Accumulator)X

흔히 계산용도(사칙연산)로 쓰입니다.

계산할 땐 이 변수를 가장 많이 자주 쓰죠 

ED(Data)X

이것도 EAX와 같은 연산으로 쓰입니다.

EAX를 쓰고있어서 부족할 때 땜빵,덤(?) 으로 쓰인다고 합니닼

EC(Count)X

루프문 반복문 을 사용할 때 카운팅의 역활을 한다고 합니다.

C언어로 예를 들어보면 for문에서 변수 i(Index) 의 역활을 하죠.

하지만 카운팅을 하지않을 땐 EAX EDX 처럼 보통 저장공간으로 연산으로

사용해도 무방하다고 합니다.

EBX

이 레지스터도 별거 없어요 ㅋㅋ

카운트 레지스터(ECX)처럼 특정 목적을 가진게 아니라서

연산으로 사용해도 되고 공간이 좀더 필요할때 사용해도 된답니다~

ESI,EDI

이건 약간 이해가 안가시겠지만 그래도 변수라고 생각하시면 쉽습니다.

다만 EAX~EDX는 주로 연산에 사용되지만

ESI는 문자열이나 반복 데이터 처리, 메모리옮기는데 사용됩니다.

"ESI는 시작지 인덱스"

"EDI는 목적지 인덱스 "

이 말이 재대로 축약된 말인거같습니다.

 

 

 

이처럼 어려운게 전혀 없게 설명을 해놨지만 놓친 부분이 있을 수도 있습니다.

그래도 이 정도로 이해만 했다면 충분히 알고 있는거라고 말할 수 있습니다 ^^