Page 14 - ARM 64 Bit Assembly Language
P. 14
Preface
This book is intended to be used in a first course in assembly language programming for
Computer Science (CS) and Computer Engineering (CE) students. It is assumed that students
using this book have already taken courses in programming and data structures, and are com-
petent programmers in at least one high-level language. Many of the code examples in the
book are written in C, with an assembly implementation following. The assembly examples
can stand on their own, but students who are familiar with C, C++ or Java should find the C
examples helpful.
Computer Science and Computer Engineering are very large fields. It is impossible to cover
everything that a student may eventually need to know. There are a limited number of course
hours available, so educators must strive to deliver degree programs that make a compromise
between the number of concepts and skills that the students learn and the depth at which they
learn those concepts and skills. Obviously, with these competing goals it is difficult to reach
consensus on exactly what courses should be included in a CS or CE curriculum.
Traditionally, assembly language courses have consisted of a fairly mechanistic learning of
a set of instructions, registers, and syntax. Partially because of this tendency, over the years,
Assembly language courses have been marginalized in, or removed altogether from, many CS
and CE curricula. The author feels that this is unfortunate, because a solid understanding of
assembly language leads to better understanding of higher-level languages, compilers, inter-
preters, architecture, operating systems, and other important CS and CE concepts.
One goal of this book is to make a course in assembly language more valuable by introducing
methods (and a bit of theory) that are not covered in any other Computer Science or Computer
Engineering course, while using assembly language to implement the methods. In this way,
it is intended that the course in assembly language goes far beyond the traditional assembly
language course, and once again plays an important role in the overall CS and CE curricula.
Choice of processor family
Because of their ubiquity, x86 based systems have been the platforms of choice for most
assembly language courses over the last two decades. This is unfortunate because, in this
xiii