The idea of coding an application in a higher-level language and then rewriting the time critical routines in assembly language is commonly understood and often employed in embedded software. In many cases, however, the optimization techniques employed are themselves sub-optimal. This class will focus on concrete methods for analyzing the performance of real-time embedded systems, and both discuss and demonstrate how to make important optimizations that give maximum benefit to embedded systems. Includes 80386 specific optimizations, cycle counting, optimal memory moves, real-time buffering techniques, fast and sparse function code dispatching, hot path “untwisting” for optimal instruction prefetching, interrupt latency optimizations, 8259 interrupt prioritization, and more. Common compiler optimizations will be briefly mentioned, but are not a focus of this class.
ESC_1992_Vol2_Page67_Jones – Sizzling x86 Applications.pdf