더북(TheBook)

빅 엔디언 플랫폼으로는 IBM PowerPC가 대표적인 빅 엔디언 아키텍처이며, Xbox 360, Playstation 3도 빅 엔디언이다.4

Tip

단일 플랫폼만 지원하거나 싱글 플레이어 게임을 만들 때는 엔디언 순서가 큰 문제는 되지 않지만, 엔디언이 다른 플랫폼으로 데이터를 전송해야 하거나 포팅할 때는 반드시 고려해야 할 중요한 사항이다. 스트림으로 데이터를 전송할 때 좋은 전략 중 하나는 스트림 자체에서 엔디언 검사를 하는 것이다. 미리 검사해 두고 나중에 여러 바이트에 걸친 자료형을 기록할 때, 플랫폼 엔디언이 스트림의 엔디언과 맞지 않으면 스트림에 기록하는 바이트 순서를 뒤집어 기록하면 된다. 마찬가지로 스트림에서 데이터를 읽을 때도 엔디언이 맞지 않으면 읽어 들인 바이트의 순서를 뒤집어 주면 된다.

 

대부분 플랫폼에 바이트 스와핑(byte swapping), 즉 순서 뒤집기용 알고리즘이 제공되며 전용 어셈블리 명령이 있는 경우도 있다. 직접 작성해야 한다면 코드 4-3의 바이트 스와핑 함수가 효율적이므로 참고하자.5

 


 

4  역주 Xbox One, Playstation 4에 와서는 모두 리틀 엔디언을 채택했다. 더불어 대부분 ARM 계열 안드로이드 디바이스도 리틀 엔디언을 채택하고 있다. 그러나 일부 플랫폼의 경우 CPU는 리틀 엔디언이나, 그래픽 API에서 텍스처를 다룰 때는 빅 엔디언을 쓰는 식으로 혼용하는 것도 있으니 잘 파악해 두자.

 

5  역주 또는 3장에서 다룬 htonl, ntohl 등도 활용할 수 있다. 다만 플랫폼이 네트워크 바이트 순서인지 반대인지를 알아두어야 할 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.