I don't know why people still use these crazy names. x86_64, x64, etc. The people who designed it call it AMD64. Let's call it that.
I don't know why people still use these crazy names. x86_64, x64, etc. The people who designed it call it AMD64. Let's call it that.
They originally called it "x86-64". Recycling a comment of mine from 4 months ago (https://news.ycombinator.com/item?id=22282127):
The "x86-64" name is the original one, and came from AMD themselves: https://web.archive.org/web/20000817071303/http://www.amd.co... (and "x86_64" is obviously an alias for where a hyphen is not an allowed character, like identifiers on many programming languages).
The "x64" name came from Microsoft, probably due to file name length limitations (this was before Windows XP unified the Windows 9x and Windows NT lines).
IIRC, the "AMD64" name came later, probably to distinguish it better from Intel's IA-64 (Itanium).
If we’re speculating, my guess is that they chose “x64” for symmetry with “x32”. Or woodruffw’s suggestion: https://news.ycombinator.com/item?id=23513591
x32 only came out around 2011. It's younger than x64 which came out around 2003, so that can't possibly be the case.
Looks like “x32” was used at least as far back as 2009: http://www.utteraccess.com/forum/office-2010-x64-bit-qu-t191... . Not much earlier than 2011, but just FYI.
It was announced in August 2011, that's when the code was shown for the first time.
https://lkml.org/lkml/2011/8/26/415
> Looks like “x32” was used at least as far back as 2009: http://www.utteraccess.com/forum/office-2010-x64-bit-qu-t191.... .
This is a great example because that person is confused by these terrible names - they've seen the name x64, and they assume there must be an x32... but there wasn't, back in 2009. They mean 32-bit x86, which is not the same thing as x32.
> Near branches with the 0×66 (operand size) prefix behave differently. One type of CPU clears only the top 32 bits, while the other type clears the top 48 bits.
This is more than enough to send your code into wrong address and possibly cause a crash.
They did not, at the time. I have a set of original manuals for the AMD "x86-64" architecture (with a dash, not an underscore).
Why does everyone want to invent their own name for this thing?
Because one is a legal part of a symbol name in C and the other only works in lisp.
There are contexts where hyphens are not allowed but underscores are, like identifiers in many programming languages. Replacing the hyphen with an underscore is an obvious workaround.
FWICT, "x64" is mostly limited to Microsoft. I wouldn't mind that one being thrown out.
For example the windows build flavor is called amd64fre or amd64chk. (chk is a debug build, fre is what most humans use)
Yes, that one particularly, since 86 and 64 don't even have anything to do with each other. One is a product number and the other is a word width - why did they replace one with the other?!
"x86" fits nicely in there and they couldn't refactor it in time, so they just decided to go with "x64".
https://software.intel.com/content/www/us/en/develop/article...
The K6 was a very competent chip but the you can see in the how the high level architecture starts to look much more like the EV6 with the Athlon series.