
Introduction to x64 Assembly (2011) [pdf] - networked
https://cs.nyu.edu/courses/fall11/CSCI-GA.2130-001/x64-intro.pdf
======
redwards510
Can someone recommend a tutorial on understanding the extreme basics of
Assembly? For some reason I just cannot grok it, which is strange because it's
just tiny building blocks that make up all other languages. Most tutorials
assume you already have some basic understanding of low level computer
hardware architecture and fail to point you anywhere if you don't.

~~~
HillRat
Don't start with the x86 or -64 architecture; there's a lot of cruft in there
due to backwards compatibility. Start with a simpler architecture like MIPS
(see e.g., Sweetman's "See MIPS Run" for an introduction), or the old 6800
chips (few extant examples in the wild not attached to old Macs -- unless you
are willing to pay exorbitant prices because you're maintaining an old weapons
system -- but there are some wonderful out-of-print textbooks that are great
reads).

~~~
kabdib
ARM is nice and simple, and relatively modern.

Even simpler, the 6502. After writing tens of thousands of lines of 6502
assembly, the ARM feels like writing in a high level language. But people got
real work done with it.

[The Macs were 68000s, not 6800s. Typo, I assume]

~~~
HillRat
An effect of browsing HN on a phone at 6AM while packing for a trip, I'm
afraid. Using the 6502 (though I know nothing operational about either
processor) is a great idea; I'm sure there are some good systems programming
texts kicking around from those days that target that family, and would make a
nice introduction to development on a simple 8-bit design. Are the 6502s still
used in microcontroller applications?

~~~
kabdib
I doubt that 6502s are still actively used. There are many better
microprocessors available today (the last one I used was under twenty cents in
quantity, with a clock rate 10X that of the 6502s back-when).

------
jimmahoney
I teach a systems course at Marlboro College which covers some x86 assembler
and C, using Bryant and O'Hallaron's "Computer Systems: A Programmer's
Perspective" textook. ( [http://csapp.cs.cmu.edu/](http://csapp.cs.cmu.edu/)
). The course materials include some great labs.

My students have particularly liked the "bomb lab" which requires reverse
engineering an x86 binary to understand what input it expects, and the stack
overflow exercises.

Highly recommended.

------
pmalynin
If you're developing x86-64 assembly in Sublime Text I suggest this (shameless
plug)
[https://github.com/Nessphoro/sublimeassembly](https://github.com/Nessphoro/sublimeassembly)

