Why so many programs are still 32-bit



Many programs i use on my computer ( steam for example ) are still using 32 bits according to task manager. Why is that ? Why haven’t evertything moved to x86-64 ? According to a quick google search, the last 32-bits cpu was sold in 2002… so it can’t be for compatibility reasons, can it ?

In: Technology

The most important one is likely that there simply aren’t reasons to produce a 64 bit implementation. Nothing’s stopping a 64 bit machine from running 32 bit software. Why eat the cost of rewriting your software if the actual functionality will be, basically, unaffected?

It’s mostly because if your app can work in 32 bit there no reason to update it. A lot of programs don’t need to access more than 4gb of memory so during the years of development they haven’t needed to update it.

There’s still a lot of people running 32 bit systems so many programs that work just fine on 64 bit via a 32 bit architecture aren’t updated as it’s additional work to support 2 versions of the same thing. Or write a from scratch version of a 64 bit.

There are still people who for various reasons are running 32-bit operating systems. By changing to 64-bit you lose this market. And for some applications there simply is no incentive to change it. I am sure some people have spent a bit of effort to try to compile the application for 64-bit. But when this failed or at least could not be verified properly they dropped the idea instead of actually spending the resources required to port it to 64-bit.

32 bit applications run fine on 64 bit systems. The only major difference is that 64 bit systems have a larger address space for memory and are more efficient moving large amounts of memory around.

32bit machines are limited to addressing 4gb of RAM, where as 64bit limits you to 17billion gigs of addressable RAM.

There are other factors, improvements, and speed increases in general due to the evolving technologies, but the “bitness” just describes how many possible combinations of memory addresses can be pointed at.

Compiled 32-bit code takes up less RAM than 64-bit code. Although code size is not typically a bottleneck on a PC (usually your data is much larger than your program), it’s common in the [ARM world](https://en.wikipedia.org/wiki/ARM_architecture) (typically mobile or embedded hardware) to use [thumb mode](https://www.embedded.com/introduction-to-arm-thumb/) to save on code space for programs that don’t require as many bits to process their data.

The difference between x86-32bit and 64bit is minor from an execution standpoint. This basically means the processor operates on 8 bytes at once instead of 4. That is to say, it’s not a new, better instruction set. So Upgrading doesn’t give you much benefit. Now that is NOT true if you were using the Intel 64bit instruction set.

This means that because x86-64bit is reverse compatible with 32bit, there is little drive to update old software.

But why is new software not always made 64bit? One reason is that all processors today are reverse compatible. So if you want to distribute one program for everyone, that is how to do it. The advantage here is you don’t have to distribute multiple compiled programs, which could each have unique bugs.

There is another reason I can think of. Microsoft does not push for it. I am often critical of Microsoft because I feel they are twenty years behind the times. Microsoft Office continues to be preferably delivered as 32-bit. While universal compatibility partially explains this, it seems to me they are too slow to change to the point of being detrimental.