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 |