logoalt Hacker News

gonzalohmtoday at 11:12 AM5 repliesview on HN

How is that possible? 32 bits should be compatible with a 64 bit machine. You can always use less bits for your memory addresses.

Are there any other architecture changes that are preventing 32 bits binaries from running? Does that also mean that old software no longer runs unless there is a 64 bit version?

In windows you can run x32 and x64 executables in a 64 bits machine


Replies

lynguisttoday at 11:45 AM

Monsieur, on Windows this problem was solved with a large development effort, that's why it goes unnoticed on you. Note that CPU level instruction emulation is literally the easiest problem of emulation. (Why do you think you can't just go and execute Nintendo Switch binaries on your Mac M1? Both run ARM64.)

On Windows, this was is implemented as SysWOW64. WOW64 means Windows on Windows 64. It makes the userland emulation and pretends towards the process that everything around him (incl. drivers) are the 32-bit ones.

Source: Microsoft.

https://devblogs.microsoft.com/oldnewthing/20081222-00/?p=19...

show 1 reply
MrDOStoday at 11:34 AM

Only the very first few models of Intel Macs had strictly 32-bit processors (the 2006 iMac and Mac minis with Core Solo/Core Duo processors), and none of them were realistically capable of playing Half-Life 2. Apple is guilty of many sins, but this isn't one of them. Valve should never have shipped a 32-bit application in the first place. The binary was already obsolete before it even left Bellevue.

show 2 replies
Retr0idtoday at 1:54 PM

In the case of hl2 the source code for the engine has leaked, so you can recompile it for your target platform of choice, no "conversion" needed. I got it running natively on aarch64 linux a while back, with no issues.

show 1 reply
functionmousetoday at 11:24 AM

Apple goes way out of their way every few years to ensure old games stop working

show 1 reply
wat10000today at 1:46 PM

Everything in the process has to agree on how big the pointers are, or you need code to convert between the formats at the boundary. That means you either need 32-bit versions of all OS libraries, or you need a complicated shim layer. Apple went for having 32-bit versions of all OS libraries. But this isn't free to maintain, and they dropped them after a few years.