X64 Cheat Sheet (2019) [pdf]
cs.brown.edu
cs.brown.edu
It isn't so hard to install NASM and start from there, but it would be substantially easier to learn if there was an option like codeacademy for assembly.
Partway through, I transferred to another state, and their college's intro course was about C.
0: https://www.intel.com/content/www/us/en/developer/articles/t...
15 year old students had no issue dealing with 8086 and 68000 Assembly.
For example for 64bit windows https://www.nasm.us/xdoc/2.15.05/html/nasmdo12.html#section-... .
There's also this for formats, this is windows for example. https://www.nasm.us/xdoc/2.15.05/html/nasmdoc8.html#section-...
For general systems programming/asm, AMD has REALLY well written documentation. Intel is better for edge cases and are more explicit. But when learning the explicitness makes it more complicated and AMD reads on the level of a regular person, not some 80 year old greybeard who writes asm in hex codes.
mov ah,09h ; move 9 into AH"x64" is a marketing name primarily used by Microsoft. Sure, many of us know what you're talking about when you use "x64", but it's just not a real thing. There's no 464, 564, 664, 764, et cetera, so the "x" means nothing, unlike its use in "x86".
It's like using "virus" to describe a Trojan - people will generally get the gist, but you're technically wrong, and if you're supposed to know what you're talking about, then you're certainly not showing it.
Speaking seriously, there are two variants of this architecture: AMD64 and Intel 64 (that's what AMD and Intel call their respective versions). Everything else is misnomer, including legacy monikers such as "x86-64".
I wouldn't be too harsh on the prof for a throwaway doc: it reads as a perfectly fine intro to concepts like stack, heap, and basic assembly instructions. I'd argue most computer science students, with aims of a programming job, don't need to even know these concepts [1], [2]. With hardware advancements, most probably don't need to worry about code performance. Of those who do, they'll just google Agner Fog, and learn on their own just fine. Despite my opening sentence, I'm sure the Electrical Engineering/Computer Engineering departments are much stronger in this area.
I think your reaction is an excellent example of a significant problem with discourse on the Internet.
Correct terms matter. Using incorrect terminology just because it's common is no excuse.
Being pedantic about things isn't helpful, either, but which is worse: a teacher in a specific field using terms incorrectly, and therefore passing along that incorrect usage, or someone pointing that out?
So let's reexamine: is this "one of the most stark examples of bikeshedding", or is this the Internet showing its lack of tolerance for a genuine care for facts and correctness?
But Intel 64, amd64, x86_64, x86, all work because none are ambiguous or misleading. "IA-32e" would be confusing, but at least it refers to a specific Intel marketing term that one can look up. They're specific enough to avoid ambiguity.
(to be fair, "Intel 64" could refer to Itanic, so that's not as unambiguous as it could be, but without context, it's reasonable most would assume it refers to 64 bit x86)
No, it cannot. It refers exactly to AMD64 (not "amd64", it's a GCC's marketing name) and Intel 64 (and their previous revisions) and nothing else. See, I too can omit middle terms in a logical sequence and simply assert the conclusion (You've omitted something like "and if the name can denote two things it may as well denote any number of things with vaguely similar alternative names" which is obviously ridiculous).
> "Intel 64" could refer to Itanic
By your own logic it could not. "Itanium" is a marketing name, the architecture's actual name was "IA-64".
The things have names that people put on them. If people refer to AMD64 as "x64", then "x64" is a name of that thing, literally. Whether it's correct or not is a matter of convention and popularity, and your proposed convention is quite unpopular, I'd say.