> We can’t run the resulting binary. x32 is an ABI that impacts the kernel interface too, so these binaries cannot be executed on a regular x86-64 kernel. Sadly, and as far as I can tell, x32 is pretty much abandonware today. Gentoo claims to support it but there are no official builds of any distribution I can find that are built in x32 mode.
Which distro is this ? In debian I'm pretty sure CONFIG_X86_X32 was enabled in the kernel not too long ago, enabling this to work without issues. When I benchmarked it was on average 20% faster than x86_64 and used quite less memory for GUI apps IIRC - I think that for most utilities like coreutils, image viewers, file explorers, media players, etc. they'd benefit from it ; >4GB is only really meaningful for web browsers, compilers & interpreters, games and creative apps such as anything doing 3D, audio or large data processing.
I'd argue it's more similar to 64-bit x86, and the only difference between the "standard" x86_64 ABI and x32 ABI is that x32's pointers are 32bit.
Everything else matches the 64-bit version - not the 32bit one - the instruction encoding, the extra registers, the minimum isa extensions (x86_64 puts a baseline of sse2), the calling convention advantages etc. etc.
In part yes, the difference is the ability to access the 64-bit registers, the additional set of registers, and the assumption that SSE is present. But because of all of these, x32 defines a new call convention to optimize function calls.
> We can’t run the resulting binary. x32 is an ABI that impacts the kernel interface too, so these binaries cannot be executed on a regular x86-64 kernel. Sadly, and as far as I can tell, x32 is pretty much abandonware today. Gentoo claims to support it but there are no official builds of any distribution I can find that are built in x32 mode.
Which distro is this ? In debian I'm pretty sure CONFIG_X86_X32 was enabled in the kernel not too long ago, enabling this to work without issues. When I benchmarked it was on average 20% faster than x86_64 and used quite less memory for GUI apps IIRC - I think that for most utilities like coreutils, image viewers, file explorers, media players, etc. they'd benefit from it ; >4GB is only really meaningful for web browsers, compilers & interpreters, games and creative apps such as anything doing 3D, audio or large data processing.
And I assume most will default to X86S soon(ish)?
What's X86S? I'm not familiar with it.
So is the only difference between "x32" (sic) and 32 bit x86 with PAE the fact that "x32" can use full 64 bit registers?
I'd argue it's more similar to 64-bit x86, and the only difference between the "standard" x86_64 ABI and x32 ABI is that x32's pointers are 32bit.
Everything else matches the 64-bit version - not the 32bit one - the instruction encoding, the extra registers, the minimum isa extensions (x86_64 puts a baseline of sse2), the calling convention advantages etc. etc.
In part yes, the difference is the ability to access the 64-bit registers, the additional set of registers, and the assumption that SSE is present. But because of all of these, x32 defines a new call convention to optimize function calls.