For sophomore-level courses in Assembly Language Programming in Computer Science, Embedded Systems Design, Real-Time Analysis, Computer Engineering, or Electrical Engineering curricula. Requires prior knowledge of C, C++, or Java.
This book is intended to provide a highly motivating context in which to learn procedural programming language. Using a non-product specific approach and a programming (versus hardware) perspective, this text lays a foundation that supports the multi-threaded style of programming and high-reliability requirements of embedded software. Reflecting current industrial applications and programming practice, it focuses on the more modern 32-bit protected mode processors and on C as the dominant programming language―with coverage of assembly and how it can be used in conjunction with, and support of, C.
Fundamentals of Embedded Software: Where C and Assembly Meet is a refreshing alternative to the traditional sophomore text on computer organization and assembly language programming. The text approaches assembly the way it is commonly used in practice¾to implement small, fast, or special-purpose routines called from a main program written in a high-level language such as C. By using an embedded software context, the text introduces multi-threaded programming, preemptive and non-preemptive systems, shared resources, and scheduling, thus providing a solid foundation for subsequent courses on operating systems, real-time systems, networking, and microprocessor-based design.
The text will help you:
- appreciate the often overlooked consequences and limitations of binary representation.
- implement fast real-number arithmetic using fixed-point reals instead of floating-point.
- reinforce your comprehension of scope, parameter passing, recursion, and memory allocation.
- employ features of C (such as bit-manipulation and variant access) commonly used in embedded software.
- write functions in Intel x86 protected mode assembly to be called from C.
- estimate maximum data rate and latency for various styles of I/O programming.
- manage multiple threads, shared resources, and critical sections.
- develop programming practices that avoid priority inversions, deadlocks, and shared memory problems.
Fundamentals of Embedded Software: Where C and Assembly Meet comes with a CD-ROM containing all the software tools needed to build simple stand-alone embedded applications on an ordinary Pentium-class PC: a C compiler, assembler, linker, boot loader, library, and both preemptive and non-preemptive real-time kernels. Also included are major portions of the source code for a number of programming assignments found in an appendix of the text.