Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> It's not clear to me if 32-bit mode would be axed as well, or if it would be retained (maybe partially).

I've been reading the detailed pdf to see more details. It looks to me like 32-bit mode, specifically in the sense of a 32-bit distribution of modern software, is being retained. Segments would be converted more towards their 64-bit extremely attenuated mode, rather than the more robust functionality they have right now. So most 32-bit software shouldn't be affected, unless you're getting really dirty with the segmentation features or trying to support something like Win16.




> Segments would be converted more towards their 64-bit extremely attenuated mode, rather than the more robust functionality they have right now.

Which, ten years down the line, should free up a bit more opcode space when they decide to no longer support CS/DS/ES/SS segment prefixes. The space could be used for instructions that are the same in 32-bit and 64-bit modes.

The primary ("first byte") opcode space is quite busy in 32-bit mode. Intel and AMD figured out a way to "hide" extra instruction prefixes in illegal modes of certain 16/32-bit instructions. Intel did this with the VEX prefix and AMD did it with the XOP prefix. The instructions they chose were LES/LDS and POP. This is the reason why some of the bits in those multi-byte prefixes have to be inverted, btw.

Having 4 clean bytes available with no need for such silly games should prove useful in the future.

The 4 string I/O instructions they suggest removing will be useful immediately.

Removing all ring 3 I/O instructions (also part of the plan) will free up 8 further bytes in the primary opcode map for user space code. This could perhaps be used to provide shorter aliases of certain existing encodings -- so the instructions in question would still be available for kernels but applications would see better encoding density.

And then there is the 67h byte being freed as well due to removing address size overrides.

If they are sensible, they will also remove the BOUND instruction from 32-bit mode, but that is not in the current version of the plan.

So what are the benefits?

Free space in the primary opcode map => better encoding density... and they might not be doing this to give us shorter programs. They might be doing this so the parallel instruction decoders can handle more instructions per cycle.

Getting rid of 16-bit data will make the data flow engine in future CPUs simpler (no more partial register stalls).

They also get to remove lots and lots of special cases that undoubtedly cost engineering time and validation time.


> Which, ten years down the line, should free up a bit more opcode space when they decide to no longer support CS/DS/ES/SS segment prefixes. The space could be used for instructions that are the same in 32-bit and 64-bit modes.

The document explicitly says that segment prefixes are _ignored_.

> Removing all ring 3 I/O instructions (also part of the plan) will free up 8 further bytes in the primary opcode map for user space code.

It does not unless the same codes are removed in ring 0 as well. But if ring 0 IO commands are converted to multibyte, why ring 3 IO commands can't get the same?

> And then there is the 67h byte being freed as well due to removing address size overrides.

Again, not ignored - unsupported styles get GP instead.

> Free space in the primary opcode map => better encoding density...

Won't happen. More so, most encodings are shared with 32-bit mode and still developed this way.

> Getting rid of 16-bit data will make the data flow engine in future CPUs simpler (no more partial register stalls).

This is missed as well. 16-bit data are still handlable. Only addressing is disallowed.

> So what are the benefits?

Seems pretty none among what you listed:(




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: