Book Description
ARM Assembly for Embedded Applications is a text for a sophomore-level course in computer science, computer engineering, or electrical engineering that teaches students how to write functions in ARM assembly called by a C program. The C/Assembly interface (i.e., function call, parameter passing, return values, register conventions) is presented early so that students can write simple functions in assembly as soon as possible. The text then covers the details of arithmetic, bit manipulation, making decisions, loops, integer arithmetic, real arithmetic using floating-point and fixed-point representations, composite data types, inline coding and I/O programming. The text uses the GNU ARM Embedded Toolchain for program development on Windows, Linux or OS X operating systems, and is supported by a textbook website that provides numerous resources including PowerPoint lecture slides, programming assignments and a run-time library.What's new: This 5th edition adds an entirely new chapter on floating-point emulation that presents an implementation of the IEEE floating-point specification in C as a model for conversion to assembly. By positioning it just after the chapter on the hardware floating-point unit, students will have a better understanding of the complexity of emulation and thus why the use of fixed-point reals presented in the following chapter is preferred when run-time performance is important.Numerous additional material has been added throughout the book. For example, a technique for mapping compound conditionals to assembly using vertically-constrained flowcharts provides an alternative to symbolic manipulation using DeMorgan's law. Visually-oriented students often find the new technique to be easier and a natural analog to the sequential structure of instruction execution. The text also clarifies how instructions and constants are held in non-volatile flash memory while data, the stack and the heap are held in read-write memory. With this foundation, it then explains why the address distance between these two regions and the limited range of address displacements restrict the use of PC-relative addressing to that of loading read-only data, and why access to read-write data requires the use of a two-instruction sequence.