본문 바로가기

reversing

바이트 오더링(Byte Ordering)

Byte Ordering


 

Byte Ordering이란 데이터가 저장되는 순서를 의미한다.

 

Byte Ordering의 방식에는 크게 빅 엔디언(Big Endian)리틀 엔디언(Little Endian) 방식이 있다.

 

예를 들어, data = 0x12345678, char str[] = “abcde” 라고 가정했을 때,

 

 

Name

SIZE

Big Endian

Little Endian

BYTE

b

1Byte

[12]

[12]

WORD

w

2Byte

[12][34]

[34][12]

DWORD

dw

4Byte

[12][34][56][78]

[78][56][34][12]

CHAR

str

6Byte

[61][62][63][64][00]

[61][62][63][64][00]

 

 

빅 엔디언과 리틀 엔디언 방식은 2Byte 이상의 크기를 가진 자료형을 저장할 때부터 차이가 난다.

 

 

 

Big Endian Little Endian 방식의 장단점

 

 

Big Endian

 

· Big Endian 방식은 데이터를 저장할 때 사람이 보는 방식과 동일하게 순차적으로 저장된다.

 

· 비교 연산 시 높은 비트열을 먼저 비교하므로 유리하다.

 

· 연산속도가 Little Endian 방식에 비해 느리다.

 

 

Little Endian

 

· Little Endian 방식은 데이터를 저장할 때 역순으로 저장한다. , 저장되는 바이트 순서가 뒤집어져 있다.

 

· 낮은 비트열이 먼저 들어와서 연산이 바로 가능하다.

 

· 비교 연산을 할 때는 불리하다.

 

'reversing' 카테고리의 다른 글

assembly jump instruction  (0) 2016.01.19
프롤로그(prolog), 에필로그(epilog)  (0) 2016.01.03
IsDebuggerPresent() 우회  (0) 2015.12.23
Intel Architecture 32bit Register  (0) 2015.12.19
함수 호출 규약(Calling Convention)  (0) 2015.12.19