-
- 이식성
- 특정 시스템의 코드가 얼마나 쉽게 다른 시스템으로 옮겨질 수 있는가를 의미한다.
높은 이식성을 가진다는 것은 많은 추상화 단계를 거친 것이다.
- 장점
- 코드를 다른 아키텍쳐로 비교적 쉽게 옮길 수 있으므로, 코드가 시스템 아키텍쳐에 구애받지 않는다.
- 간단한 추가 작업으로 다른 아키텍쳐로 코드를 이식할 수 있다.
- 코드 유지 보수에 용이하다.
- 코드를 다른 아키텍쳐로 비교적 쉽게 옮길 수 있으므로, 코드가 시스템 아키텍쳐에 구애받지 않는다.
- 단점
- 특정 아키텍쳐에 적합한 설계를 지양하고 일반적인 형태로 추상화하기에 아키텍쳐에 최적화된 코드를 사용할 수 없다.
이식성 <-> 최적화 는 Trade-off 이다
- 이식성
-
- 아키텍쳐 의존적인 연산을 사용하지 않는다.
- 시스템 워드 크기에 영향을 받지 않도록 코드를 일반화한다.
- 데이터 형 크기 불가지론자가 되어야 한다.
- 문자 데이터 형의 부호를 신경써야 한다.
- 항상 SMP, 선점, 상위 메모리를 사용한다고 가정하고 코드를 작성해야 한다.
-
- C언어를 예로 들면,
long형은 시스템의 워드 크기와 같다. 즉, 32비트 시스템에서와 64비트 시스템에서의long형의 크기가 다르다. - 이 점을 무시하고
long형의 데이터 크기를 하나로 확정하는 코드를 작성한다면 워드의 크기가 다른 시스템에서 오류가 발생할 수 있다.
- C언어를 예로 들면,
-
- 빅 엔디안
- 최상위 바이트가 낮은 주소, 즉 처음에 나오는 방식
- 장점
- 사람이 숫자를 읽고 쓰는 방식과 같다.
- 큰 자리수부터 확인하는 숫자 비교 시 유리하다.
- 단점
- 하위 바이트를 사용하려면 포인터 조작이 필요하다.
- 올림수를 고려해야 하는 수치 계산 시 불리하다.
- 활용 아키텍쳐
- PA-RISC, z/Architecture, MIPS, SPARC
- 리틀 엔디안
- 최상위 바이트가 높은 주소, 즉 마지막에 나오는 방식
- 장점
- 하위 바이트를 사용하기 용이하다.
- 올림수를 고려해야 하는 수치 계산 시 유리하다.
- 단점
- 사람이 숫자를 읽고 쓰는 방식과 반대다.
- 큰 자리수부터 확인하는 숫자 대소 비교 시 불리하다.
- 활용 아키텍쳐
- x86, x64, Alpha, Itanium
- 빅 엔디안