Hacker News new | ask | show | jobs
by Someone 27 days ago
> even the best compilers don’t use a third of the opcodes our modern CPUs boast of

That’s not necessarily an indication of the weakness of compilers. It also could be an indication that hardware designers could leave out instructions.

X86, in particular, will have lots of them for backwards compatibility reasons (extreme example: the old 80-bit x87 FP stack)

There also are instructions that are expected to never get used by ‘normal’ compilers but cannot be removed because they only make sense in lower-level code such as those for switching between protection levels, implementing compare-and-swap, etc.

1 comments

x87 support may not be the most obscure part of the instruction set. Ther is also hardware support for BCD math in 16 bit amd 32 bit mode. Who uses that anymore?
Unfortunately some exchanges (twse) uses packed BCD encoding.
BCD allows for insanely fast conversion to and from decimal string representation. And if doing arithmetic in it is only slightly worse than doing it in binary... it may actually be faster on the whole for some workloads.
But those instructions were dropped in 64 bit mode.
bcd is a reasonable way to do fixed-point decimal arithmetic.

binary floating point, let alone IEEE, is almost useless for implementing decimal arithmetic.