For application developers, the major difference between the Solaris 64-bit and 32-bit operating environments is the C data type model used. The 64–bit version uses the LP64 model where longs and pointers are 64–bits. All other fundamental data types remain the same as in the 32-bit implementation, which is based on the ILP32 model. In the ILP32 model, ints, longs, and pointers are 32-bit quantities. These models are explained in greater detail in Chapter 3, Comparing 32-bit Interfaces and 64-bit Interfaces.
Few applications really require conversion. Most applications can remain as 32-bit applications and still run on the 64-bit operating system without requiring any code changes or recompilation. In fact, 32-bit applications that do not require 64-bit capabilities should probably remain 32-bit to maximize portability.
You might want to convert applications with the following characteristics:
Can benefit from more than 4 gigabytes of virtual address space
Are restricted by 32–bit interface limitations
Can benefit from full 64-bit registers to do efficient 64-bit arithmetic
Can benefit from the performance improvement that the 64–bit instruction set provides
You might need to convert applications with these characteristics:
Read and interpret kernel memory through the use of libkvm, /dev/mem, or /dev/kmem
Use /proc to debug 64-bit processes
Use a library that has only a 64-bit version
Some specific interoperability issues require code changes. Similarly, if your application uses files that are larger than 2 gigabytes, consider conversion to a 64-bit application instead of using the large file APIs directly.
These items are explained further in the sections that follow.