

Learn Intel 64 assembly language and architecture, become proficient in C, and understand how the programs are compiled and executed down to machine instructions, enabling you to write robust, high-performance code. Low-Level Programming explains Intel 64 architecture as the result of von Neumann architecture evolution. The book teaches the latest version of the C language (C11) and assembly language from scratch. It covers the entire path from source code to program execution, including generation of ELF object files, and static and dynamic linking. Code examples and exercises are included along with the best code practices. Optimization capabilities and limits of modern compilers are examined, enabling you to balance between program readability and performance. The use of various performance-gain techniques is demonstrated, such as SSE instructions and pre-fetching. Relevant Computer Science topics such as models of computation andformal grammars are addressed, and their practical value explained. What You'll Learn Low-Level Programming teaches programmers to: Freely write in assembly language Understand the programming model of Intel 64 Write maintainable and robust code in C11 Follow the compilation process and decipher assembly listings Debug errors in compiled assembly code Use appropriate models of computation to greatly reduce program complexity Write performance-critical code Comprehend the impact of a weak memory model in multi-threaded applications Who This Book Is For Intermediate to advanced programmers and programming students Review: Great book, all around - A learning experience worth having. The author presents the subject matter in a way that is concise and student friendly. I felt he has done a good job at breaking down the most important fundamentals of low level programming while providing insight to both its basic and advanced feature set. A treat of a book, best consumed with a pencil and paper in hand for note keeping, A great addition to my collection, This book covers a broad spectrum of information and doesn't fall short from being excellent. 2 thumbs up! Review: Great book on the low-level programming in the mixed C/Assembly languge environment - Very well written book on Intel 64 architecture and programming using both Assembly language and C. Clear instructions, numerous code samples compilable from the first try and many assignment forcing the reader to apply his newly acquired knowledge to writing useful and quite complicated code from scratch. The chapters on using C and Assembly in ensemble are especially valuable. There are many good books about C but this one is the best I've seen so far on Assembly and its productive use with C.
| Best Sellers Rank | #2,210,433 in Kindle Store ( See Top 100 in Kindle Store ) #32 in Compiler Design #33 in Computer Hardware Design #236 in Systems Architecture |
A**A
Great book, all around
A learning experience worth having. The author presents the subject matter in a way that is concise and student friendly. I felt he has done a good job at breaking down the most important fundamentals of low level programming while providing insight to both its basic and advanced feature set. A treat of a book, best consumed with a pencil and paper in hand for note keeping, A great addition to my collection, This book covers a broad spectrum of information and doesn't fall short from being excellent. 2 thumbs up!
V**N
Great book on the low-level programming in the mixed C/Assembly languge environment
Very well written book on Intel 64 architecture and programming using both Assembly language and C. Clear instructions, numerous code samples compilable from the first try and many assignment forcing the reader to apply his newly acquired knowledge to writing useful and quite complicated code from scratch. The chapters on using C and Assembly in ensemble are especially valuable. There are many good books about C but this one is the best I've seen so far on Assembly and its productive use with C.
C**S
Great, but not for the faint in heart
It is a very good book assuming you already know Assembly and C. Many of the chapters require that you hit the references for a more in depth review. However it does a great job in giving one a vocabulary to learn more and most certainly it was refreshing to see assembly and C under the same cover. You will need to read it more than once to get the most out of it
D**E
Absolutely fantastic, a fantastic coverage of low level programming with C and x64
Absolutely fantastic, a fantastic coverage of low level programming with C and x64, it's hard to find a decent tutorial these days that covers a working/modern version of assembly so this was a breath of fresh air. Kudos to the author.
M**E
This is a great book for learning low level programming
This is a great book for learning low level programming. Although, I am C++ programmer, I learned so much from it. Really get it and you won't be disappointed!
H**A
It's good, but lacking a bit.
No question the author knows this stuff, however whether he's successful in explaining it, it's a different question. Some topics are properly covered and well explained, others (like memory segments and global desc table) are skimmed and feel rushed. Lack of samples and clarity. The content is quite poorly organized as well. I also felt it could have explained the differences between Linux, OSX and Windows, and at least covered a bit of ARM given its relevance these days.
R**Y
The computer language foundation
This book provides the foundation of most of the languages. Assembly, Forth, C and their many useful references. Well done!
P**R
Five Stars
Well done. A fascinating and insightful read, I learnt a ton. Thank you.
M**R
Amazing!!!
I would recommend this to anyone who is interested in learning modern ask and any level of programmer. This is the best technical book Iโve seen to date. Iโm a 3rd year cs student I wish we had resources like this at university.
V**V
A good introduction to all levels of programming
What this book is not about: it's not an x86 assembly manual, in fact, it doesn't give thorough description of any of the topics mentioned. It's better than that! It's more like a guide book, i.e. it's an overview of the whole modern software stack, starting with low-level assembly and ending with relatively high-level C code. So if you want to get an idea of how things work under the hood, and how those pieces stick together - this is the book for you.
H**T
Bad written/translated
The ideas of this book and the topic covered are really good. Problem is the writing style or I guess the translation to English. Mostly it is just annoying to read but there are sentences that really doesn't make sense. At least when writing a book like this you should invest in a professional proof reader and translator.
R**R
No target group and errors
Tl;dr: - This book isn't well suited both for beginners and people already familiar with Assembly and C. - It contains quite a lot of spelling and grammatical errors. - The author tells you on numerous occasions to just look it up online or in the documentation. - The answers to the questions asked in the book are only available online. - Contains errors regarding C pointers and arrays. - Other than that it is actually a decent book. Let me explain... Firstly, the topic of this book is very interesting and there aren't any similar books as far as I know. Thus, I appreciate the effort that the author and the technical reviewer put into it. The author seems to be very knowledgeable with the exception of a few significant errors regarding C (more on that later). However, his writing style isn't the best. Unfortunately, the editor did a bad job because this book contains numerous spelling errors (e.g. "can not" instead of cannot). If you can't afford a proper editor, just ask on Twitter etc. if some people would be interested in proofreading a draft of the book in exchange for a free copy of the final product. There are even a few sentences that end completely different than they started as far as I remember. At least you can figure out what he meant. Who is this book for? I don't know it either. The book says on the cover "[...] teaches you to freely write in assembly language". But it simply doesn't. The author doesn't even teach the basics of assembly. All you get it an impression of how assembly works. There is no way that anyone can write freely in assembly after reading this, you probably can't even write a running program that is more complex that "hello world". Instead he focuses on all the fancy stuff in favor of teaching actual assembly language. For most things that would actually be helpful for learning assembly, he just tells you to look it up in the Intel/NASM documentation. I don't get it. If a beginner wanted to learn assembly from the documentations, then why would he buy this book? Since this book is mainly targeted to intermediate or advanced programmers (at least that's what the cover says), one might argue that this book doesn't need to be beginner friendly. In that case, why write that it teaches assembly when it clearly doesn't. Additionally, including an introduction to Assembly and C wouldn't be necessary in that case. So clearly there is no actual target group for this book except students who read this alongside a course in college. That's a shame since it offers some useful bits of information that most intermediate programmers probable don't know already. Further, I almost lost it when I saw the answers to the questions are only available online. I didn't buy a hardcopy of an expensive book just to use a computer anyway! For me personally it was over when the author said, and I quote: "[...] an expression myarray [an int array] has actually a type int*, because it is a pointer to the first array element!", p. 153. That's wrong. An array is more than just a pointer to its first element. If you don't believe me, check out "Understanding and Using C Pointers" by Richard Reese. At that point, the book lost some of its credibility. In case I misinterpreted this, it should be explained more carefully. He also mixes pointer and array notation (e.g. using array notation on a pointer), which could be considered bad practice. My advice for a possible 2nd edition would be to decide whether this book should teach asm/C or not and to market it accordingly. If they decide not to teach them, change part one and get rid of part two. Otherwise, append part one and actually teach assembly and maybe get rid of the unnecessary Models of Computation chapter. In any case, include the answers to the questions, at least summarize some of the contents of the documentations when you're referring to them, hire an editor and fix the chapters about pointers and arrays in C. If you do that, the 2nd edition will be a decent book.
K**D
Nice content, bad writing, feels like a draft.
The book's subject is very interesting. However, I hope it was written with more care. Loads of grammatical errors and strange sentences that feel like this was meant for a draft version and not the final one. I appreciate that the author is not a native speaker; but there is a difference between that and being just careless about furnishing a good product. Please, if you are working on a second version, be more careful than that.
Trustpilot
1 week ago
1 week ago