Reddit reviews Introduction to 64 Bit Assembly Programming for Linux and OS X: For Linux and OS X
We found 5 Reddit comments about Introduction to 64 Bit Assembly Programming for Linux and OS X: For Linux and OS X. Here are the top ones, ranked by their Reddit score.
Apple actively discourages people from avoiding their frameworks and linked libraries; there is a reason things like MUSL and µClibc don't exist on OS X. System calls on OS X do change signature without warning, so what's the point? You can't get at the system without using a dynamically linked standard library or keeping to a very small set of [so far] stable system calls like 'open'. Similar problem as Windows and its ever-present DLLs.
The one area where assembly is nice on Mac is in optimization within a C, Pascal, etc program. Because the ISA is x86-64 nowadays, if you don't care about supporting older PPC or x86 archs, you can have a lot of fun doing SIMD code. More fun than in Linux or even Windows? Not really; it's the same thing effectively (in fact, your code will be portable). If you like the platform for user reasons then it's a fine place to start and there's a decent recent introductory book about x86-64 assembly on OS X (and Linux): https://www.amazon.com/Introduction-Bit-Assembly-Programming-Linux/dp/1484921909/ref=sr_1_1?s=books&ie=UTF8&qid=1498145217&sr=1-1
But writing pure assembly programs in OS X basically has no benefit outside of educational ones compared with mixed C and assembly.
Suggested in a related thread I was able to learn enough to read and write it better from this book: https://www.amazon.com/Introduction-Bit-Assembly-Programming-Linux/dp/1484921909/
Even better beyond is to write some C and observe what GCC or Clang compiles it into, and see if you can mentally (or actually) map the disassembly back to C.
If you're lucky, when your own curiosity brings you there.
I taught myself assembly using this textbook, and a copy of Intel's x86 instruction manual, over the summer after graduating college. Java was the language of choice for the C.S. program at my university. C was used in the OS and some computer graphics classes (others used Java 3D), but everything else was high-level, no memory management, with a virtual machine and garbage collector to wipe my ass and feed me crackers. (Here's a very recently published book.)
In my experience, learning assembly helped me gain a deep understanding of how programming works. With a 1-to-1 (almost always) mapping between a line of assembly and a CPU instruction, I felt like I was directly instructing the computer in a way I never feel using high-level languages. From that, I gained an appreciation of how low-level C programming can be, because you can see immediately how C statements are transformed into assembly. After learning assembly, I deliberately compiled programs into assembler with GCC so I could look at the code, because I could finally understand it.
And then I learned C++, and saw how it could be built directly on top of C.
And now it all makes sense.
I recommend this book for x86-64 Linux based assembly. https://www.amazon.com/Introduction-Bit-Assembly-Programming-Linux/dp/1484921909/ref=sr_1_1?ie=UTF8&qid=1517846307&sr=8-1&keywords=ray+seyfarth
I used this one to learn x86_64 in a self study during undergrad. It was understandable and clear.
https://www.amazon.com/Introduction-Bit-Assembly-Programming-Linux/dp/1484921909/