diff --git a/README.md b/README.md index a9f9760..22aa48e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,47 @@ -# asm_book -Moving content over from pk_do_not_be_afraid to be refactored into text book form +# ARM V8 Assembly Language Programming Made Not So Scary + +This text book provides a fairly thorough examination of the ARM V8 ISA. It begins from the perspective of +a person knowledgeable in the C or C++ programming languages (or similar languages, of which there are many). +Early chapters bridge your knowledge of C or C++ backwards into assembly language driving home a very sharp +point: C is a high level assembly language. Further, assembly language is nothing to be scared about. + +## For Whom Is This Book Intended? + +As mentioned, if you are already familiar with C or any language descended from C, this book begins with what +you know. Later chapters dive deeply into the corners and recesses of the ARM V8 ISA and are suitable for +those wishing to master the rich instruction set of the 64 bit ARM processors. + +## Can This Book Be Used In Courses Covering Assembly Language? + +Yes, absolutely. In fact, we would argue that the study of assembly language is extremely important to the +building of competent software engineers. Further, we would argue that teaching the x86 instruction set is +sadistic and cruel as that ISA was born in the 1970s and has simply gotten more muddled with age. + +The MIPS +instruction set is another ISA that is often covered in College level courses. While far kinder and gentler +than the x86 ISA, the MIPS processor isn't nearly as relevant as the ARM family. Phones, tablets, laptops and +even desktops contain ARM V8 processors making the study of the ARM ISA far more topical. + +## Calling Convention Used In This Book + +Assembly language programming is quite closely intertwined with both the underlying hardware architecture and +operating system. A "calling convention" refers to how functions are called and how parameters are passed. In +this book we will use the ARM LINUX conventions. This means: + +* You will need to run a ARM Linux VM on the Macintosh - even on ARM-based Macs. Why? Apple. That's why. +* You will need to run WSL (Windows Subsystem for Linux) on ARM-based Windows machines. +* You will need to run an ARM Linux VM on x86-based Windows machines. + +## Section 1 - Bridging from C / C++ to Assembly Language + +| Chapter | Content | +| ------- | ------- | +| 1 | Hello World | + +## Section 2 - Stuff + +## Section 3 - More Stuff + +## About The Author + +Perry Kivolowitz's career in the Computer Sciences spans just under five decades. He launched more than 5 companies, mostly relating to hardware, image processing and visual effects (for motion pictures and television).