반응형

출처 : 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이 붙었는지의 여부로 결정된다.

반응형

+ Recent posts