The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14.04 LTS (64-bit).
Your light reading for the weekend.
Even though no one seems interested by this topic, I am and I thank you for the info.
I’m with you. I find these sort of links very useful.
I have always recommended folks who want to learn assembly to read Programming from the Ground Up (https://savannah.nongnu.org/projects/pgubook/). I still have to read this one to decide if that’ll change.
I like the fact that they introduce SSE instructions in chapter 2. Few books that talk about assembly even recognize that SIMD instructions exist.
I don’t like the fact that they use the Intel syntax, though. I find instructions like “movq (qNumA), %rax” more intuitive and less error prone than “mov rax, qword [qNumA]”. Both of those “move a quad word from memory location qNumA to rax register”, but the AT&T syntax is more explicit about your intention. After all, movq, movl, and movzxl are all technically different.
Edited 2018-09-02 14:14 UTC
teco.sb,
That does seem more intuitive. I only dabbled with assembly back in the 1900’s, but as a Windows user it seems like everything was geared towards Intel syntax.
I’m going to check out that book you recommended and one of these days I’ll have another go on Linux.
~j
Edited 2018-09-02 17:27 UTC
You still have http://www.plantation-productions.com/Webster/
teco.sb,
Maybe I am biased due to my experience, but I personally don’t like the ATT syntax as much. I prefer intel syntax as in NASM/YASM code since it emphasizes the registers being acted upon.
Edited 2018-09-03 07:16 UTC
If only they choose the Motorola syntax…
I have always been intrigued by assembly programming and find it, if nothing more, at least a great exercise. To somebody starting out I would, however, suggest to go for ARM assembly (tons of free material out there). It is architecturally less baroque and might somewhere down the road even be useful in the realm of embedded systems.
I approve of this post.