Page 15 - ARM 64 Bit Assembly Language
P. 15
Preface
author’s opinion, in every respect other than ubiquity, the x86 architecture is the worst pos-
sible choice for learning and teaching assembly language. The newer chips in the family have
hundreds of instructions, and irregular rules govern how those instructions can be used. In an
attempt to make it possible for students to succeed, typical courses use antiquated assemblers
and interface with the antiquated IBM PC BIOS, using only a small subset of the modern x86
instruction set. The programming environment has little or no relevance to modern comput-
ing.
Partially because of this tendency to use x86 platforms, and the resulting unnecessary bur-
den placed on students and instructors, as well as the reliance on antiquated and irrelevant
development environments, assembly language is often viewed by students as very difficult
and lacking in value. The author believes that this situation can be remedied, and hopes that
this textbook helps students to realize the value of knowing assembly language. The relatively
simple ARM processor family was chosen in hopes that the students also learn that although
assembly language programming may be more difficult than high-level languages, it can be
mastered.
The recent development of very low-cost ARM based Linux computers has caused a surge of
interest in the ARM architecture as an alternative to the x86 architecture, which has become
increasingly complex over the years. This book should provide a solution for a growing need.
The ARM architecture is a very good choice for teaching and learning assembly language, for
several reasons.
Many students have difficulty with the concept that a register can hold variable x at one point
in the program, and hold variable y at some other point. They also often have difficulty with
the concept that, before it can be involved in any computation, data has to be moved from
memory into the CPU. Using a load-store architecture helps the students to more readily grasp
these concepts.
Another common difficulty that students have is in relating the concepts of an address and a
pointer variable. The design of the ARM architecture makes it easier for students to realize
that pointers are just variables that hold an address. Students who learn assembly using this
book will understand pointers at a fundamental level.
Many students also struggle with the concept of recursion, regardless of what language is
used. In assembly, the mechanisms involved are exposed and directly manipulated by the pro-
grammer. Examples of recursion are scattered throughout this textbook.
Some students have difficulty understanding the flow of a program, and tend to put many un-
necessary branches into their code. Many assembly language courses spend so much time and
space on learning the instruction set that they never have time to teach good programming
xiv