x86 EoL

cdimauro · 154

cdimauro

  • Member
  • ***
    • Posts: 101
    • Karma: +25/-1
on: May 28, 2022, 07:03:21 PM
Replying here about this topic, from the following discussion: https://ae.amigalife.org/index.php?topic=561.msg10775


In fact, this ISA was already EoL from long time.
Since years no PC or similar device is sold with an x86 chip: all of them are x64.
just as a sidemark, this is quiet wrong actually.
there is no x86_64 CPU at all, they all are x86_32 which can be switched into 64 bit mode as well, but they are booting in x86_32 mode and then be switched to x86_64.
There's no x86_32 CPU. You're confusing IA-32 AKA x86 as x86_32, which actually it's something completely different: https://en.wikipedia.org/wiki/X32_ABI


All PC CPU sold since years are all 64-bit. It means that they support the x64 AKA x86_64 AKA AMD64 ISA.


It's also not true that they boot in x86_64: they boot in 8086 (real) mode. Then they can switch to protected IA-32/x86 mode. Or in Long Mode (64-bit mode).
Quote
That's the reason its so easy to make 32bit and 64bit applications side by side in Linux/Windows, the 64bit is just an extension of the 32bit part (which in part is just an extension of the 16 bit x86 part, "protected mode" anyone?)
32 bit and 64-bit applications can run together only if the o.s. supports it. Otherwise it's not possible. So, it depends on the o.s..
Quote
so it is not EOL
It's EOL in the sense that software is focusing on x64 mode.
Quote
(except the x87 FPU, which is marked as deprecated)
Correct.
Quote
The real 64bit CPU would be IA64 which is (or better was) Itanium which only has 64bit and just emulates the 32-bit x86
That's not correct. x64 is a real 64-bit CPU like IA-64. And it doesn't emulate x86 from long time, since Itanium is... already discontinued.


BTW, Itanium integrated IA-32 emulation internally with the first versions, but it dropped it after some version, and then used only software emulation for x86 binaries.
« Last Edit: May 29, 2022, 06:20:31 AM by cdimauro »



Samurai_Crow

  • Junior Member
  • **
    • Posts: 88
    • Karma: +31/-0
  • Hobby coder
Reply #1 on: May 30, 2022, 02:18:58 AM
For once, I agree with cdimauro.  When using 386 enhanced mode (32-bit mode) the x86 reverts to an era of register-starved ugliness when non-general-purpose registers such as segment pointers hang limp and lifeless.  Although it never came out, the Debian Linux team tried to come out with a Linux kernel based on the 64-bit mode that would deliberately clamp the addresses of pointers to 32-bits or less.  The reason?  64-bit mode would repurpose most of the segment pointers as general-purpose registers, thus raising their number from 4 to 16.  No more register starvation!  Why didn't it come out?  Position independent code uses relative offsets so the inefficiencies of using 64-bit pointers weren't as obvious even on systems with only 3 GB of RAM or less.  The moral of the story is: Ignore 32 bit and 16 bit modes on x86 CPUs and always use them in 64 bit mode regardless of the amount of RAM present.



cdimauro

  • Member
  • ***
    • Posts: 101
    • Karma: +25/-1
Reply #2 on: May 30, 2022, 06:30:45 AM
Segments registers aren't reused on x32 ABI. On Long Mode they aren't used (except FS and GS, but just to reference the TLS or Kernel data).


The rest is correct: x32 was born to use only 32 bits for pointers in Long Mode, to reduce the memory used, and then the pressure on all memory hierarchy.