Book: Intel Software Developer’s Manual Vol. 1
I have used this book countless times as a reference but a few weeks ago I decided that it’s time to read it from cover to cover. So, here is my review for this book.
Title: Intel® 64 and IA-32 Architectures Software Developer’s Manual
Volume: 1, Basic Architecture
First of all, this book is written in a strict way that sometimes makes it really boring. However, it deals with concepts about processor design and features of Intel processors that you cannot easily find in other books. To clarify, there is nothing really advanced discussed in this volume. Nevertheless, if interrupts, exceptions and exception handling, gates like interrupt gates, trap gates, call gates and task gates, privilege levels, I/O ports or technologies such as MMX, SSE/SSE2/SSE3/SSE4, x87 FPU etc. are unknown words to you, then you should definitely read it. If you cannot answer questions like “why does the OS have to check for stack pointer alignment?“, or “why we are able to pass arguments in different code segments (far calls) through general purpose registers?” etc. you have to read it. From now on, I will suggesting this book as a supplementary resource to anyone studying x86 or x86_64 assembly programming. Anyone learning assembly can gain a better understanding of why things work like they do by utilizing this book. To conclude, no advanced concepts are being described but it has detailed information about basic architecture issues that you cannot easily find anywhere else.