 
                            ...
- Standard programming model for current (Intel family) PC processors is ILP32.
- One issue with longin C was that there are both code bases that expect pointer andlongto have the same size, while there are also large code bases that expectintand long to be the same size. The compatibility model LLP64 was designed to preservelongandintcompatibility by introducing a new type to remain compatible with pointer (long long)
- LLP64 is the only data model that defines a size for the long longtype.
- LP32 is used as model for the win-16 APIs of Windows 3.1.
- Most Unixe Unix versions use LP64, primarily to conserve memory space compared to ILP64, including: 64-bit Linux, FreeBSD, NetBSD, and OpenBSD.
- Win64 uses the LLP64 model (also known as P64). This model conserves type compatibility between longandint, but loses type compatibility betweenlongand pointer types. Any cast between a pointer and an existing type requires modification.
- ILP64 is the easiest model to work with, because it retains compatibility with the ubiquitous ILP32 model, except specific assumptions that the core types are 32-bit. However this model requires significant memory, and both code and data size significantly increase.
...