출처 : Developing_C_C++_Application_on_AIX_AIX_DIY(SE)
AIX에서는 2가지의 프로그래밍 모델을 제공한다.
- ILP32
- LP64
ILP32는 integer/long/pointer가 32bit임을 의미하며 AIX의 32bit 프로그래밍 환경을 사용하게 된다.
이는 32bit 주소 공간을 사용하는 것을 의미하며 이론적으로 4GB 까지 메모리 제한이 있다.
LP64는 long/pointer가 64bit임을 의미하며 AIX의 64bit 프로그래밍 환경을 사용하게 된다. 64bit 주소공간을 사용하게 되므로 참조할 수 있는 메모리는 4GB를 넘어가게 된다. 일반적으로 데이터 타입 크기와 얼라인먼트 차이를 제외하고, LP64는 ILP32모델 프로그래밍 모델을 지원하며 널리 사용되는 int 데이터 타입에 대해서는 소급하여 호환성을 유지하게 된다.
C/C++ 표준에 의하면 int, short는 적어도 16bit여야 하며 long은 적어도 int와 같거나 그 이상의 크기여야 하고 32bit보다는 작아야 한다. 이 표준은 LP64모델에도 적용된다.
sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long)
LP64 데이터 모델은 대부분의 주요 벤더의 UNIX기반 시스템에서 지원되는 사실상의 표준이다. 따라서 LP64 모델을 따르는 어플리케이션은 다른 벤더로 포팅하는 작업이 매우 쉽다.
다음 테이블 2-1은 AIX의 ILP32, LP64 모델에서 기본 C/C++ 데이터 타입에 해당하는 크기를 보여주고 있다. (단위 비트)
데이터 타입 | IP32 | LP64 |
char | 8 | 8 |
short | 16 | 16 |
int | 32 | 32 |
long | 32 | 64 |
long long | 64 | 64 |
pointer | 32 | 64 |
float | 32 | 32 |
double | 64 | 64 |
long double | 64/128 | 64/128 |
* long double의 크기는 -qlongdouble옵션이나 cc128, cc128_r 등 컴파일러 드라이버 이름에 128이 붙었는지의 여부로 결정된다.
'OS > AIX::' 카테고리의 다른 글
AIX ar 아카이브를 이용하여 정적 라이브러리 컴파일 방법 (static, *.a) (0) | 2014.01.09 |
---|---|
AIX xlc 컴파일러 비트 설정 (0) | 2014.01.09 |
AIX 컴파일 정보 2 (0) | 2012.12.05 |
AIX Thread Dump 분석 방법 (0) | 2012.08.22 |
AIX 라이브러리 버전 확인 (0) | 2012.07.12 |