<Tr> <Th> ILP64 </Th> <Td> 16 </Td> <Td> 64 </Td> <Td> 64 </Td> <Td> 64 </Td> <Td> 64 </Td> <Td> HAL Computer Systems port of Solaris to the SPARC64 </Td> </Tr> <Tr> <Th> SILP64 </Th> <Td> 64 </Td> <Td> 64 </Td> <Td> 64 </Td> <Td> 64 </Td> <Td> 64 </Td> <Td> Classic UNICOS (versus UNICOS / mp, etc .) </Td> </Tr> <P> Many 64 - bit platforms today use an LP64 model (including Solaris, AIX, HP - UX, Linux, macOS, BSD, and IBM z / OS). Microsoft Windows uses an LLP64 model . The disadvantage of the LP64 model is that storing a long into an int may overflow . On the other hand, converting a pointer to a long will "work" in LP64 . In the LLP64 model, the reverse is true . These are not problems which affect fully standard - compliant code, but code is often written with implicit assumptions about the widths of data types . C code should prefer (u) intptr_t instead of long when casting pointers into integer objects . </P> <P> A programming model is a choice made to suit a given compiler, and several can coexist on the same OS . However, the programming model chosen as the primary model for the OS application programming interface (API) typically dominates . </P>

Most pc and server processors today run on how many bits at a time