THERE IS AN UPDATED AND IMPROVED VERSION (THE SECOND EDITION) OF THIS BOOK.
This book provides the reader with an invaluable insight to C and C++ in particular and programming languages in general. Although the title suggests that the book has a narrow scope, in fact, just the opposite is the The book is an introduction to programming language design, object-oriented programming, assemblers, compilers, interpreters, linkers, computer architecture, and system programming--everything you need to know to be a master of C and C++. Included in the book are several well-defined system programming projects that support the material covered, including a machine interpreter implementation, an assembler implementation, and a linker implementation. The software package for the book supports Windows, OS X, Linux, and Raspbian.
I was searching for a book to teach me how C is compiled in assembly. This is the perfect book for it. The biggest let down is that it is focused on some educational assembly and not some commercial one like ARM, MIPS or RISC-V.