On 1/17/20 2:35 AM, Klaus-J. Wolf wrote:
On Thu, Jan 16, 2020 at 7:21 AM Damjan Jovanovic <damjan.jov@gmail.com mailto:damjan.jov@gmail.com> wrote:
There are no fundamental limitations to running x86 software on x86-64. The CPU supports it. The kernel supports it. Libraries can be built into 32 bit binaries. Compilers/linkers/assemblers support 32 bit. The problem is political: lazy distros aspiring to be Apple, that don't want to build 32 bit packages. The solution can also be political: use a distro that allows you to use your computer the way that you want.
Hmm, when I asked I rather thought of technical problems and their solution. I mean, 32bit calls can be translated into 64bit ones, if C doesn't, assembler will do, so why not do it?
Taking this approach means compiling (probably JIT) or interpreting the entirety of the game's code, neither of which are performant or indeed easy (consider self-modifying code).
If we have no 32-bit libraries (or, in the case of Mac OS, ability to even load 32-bit libraries if they are present), the best solution seems to be to run most code in 32-bit mode (after all, the CPU does still support it) and thunk down to 64-bit when necessary, specifically when entering a host library or something similar.
But this is still a lot of work, and raises a lot of its own nasty problems. It's far better just to have 32-bit libraries available to us.