Endian - 메모리 저장 순서를 규정




cpu마다 메모리에 데이터를 저장시킬 때 방식이 다르다.
Intel x86 같은 경우에는 Little-endian 방식을 채택, Sun, 모토로라계열은 Big-endian 방식을 채택하였다.

Little/Big-Endian의 차이는 논리적 메모리 공간에 그 메모리 폭(어떤 메모리건 논리적 메모리 공간의 폭은 모두 1 Byte)을 넘어서는 Data를 저장할 때 발생한다. 예를들어 0A0B라는 Word Size의 Hexadecimal 데이터를 11000H의 메모리에 저장한다고 해보자.
위에 그림에서 알 수 있듯이 1 Byte 단위로 끊었을 때,

하위 데이터인 0B가 하위 메모리 공간인 11000H에 저장된다. 하나의 메모리 공간(1 Byte)을 다 채웠으므로 다음 주소로 넘어가서,
상위 데이터인 0A가 상위 메모리 공간인 11001H에 저장된다.

이것이 Little-endian이다.

Big-endian은 반대로

상위 데이터인 0A가 하위 메모리 공간인 11000H에 저장된다. 하나의 메모리 공간(1 Byte)을 다 채웠으므로 다음 주소로 넘어가서,
하위 데이터인 0B가 상위 메모리 공간인 11001H에 저장된다.

한마디로 말하자면, 위와 같은 방식으로 논리적 메모리 공간에 저장되는 데이터의 순서 차이일 뿐이다.

- Little Endian : 가독성이 좋고, 대소 비교가 빠르다.
- Big Endian : 산술연산이 빠르다

사족으로 이 방식이나 CPU의 종류에 따라 stack에 push, pop하는 방식(Stack Pointer를 증가시키고 감소시키고하는 방식) 또한 다르다
논리적 메모리 공간 / 물리적 메모리 공간에 대해서 정리할 것.

 

출처 : http://micol.tistory.com/

+ Recent posts