This book presents a comprehensive, structured, up-to-date survey on instruction selection. The survey is structured according to two dimensions: approaches to instruction selection from the past 45 years are organized and discussed according to their fundamental principles, and according to the characteristics of the supported machine instructions. The fundamental principles are macro expansion, tree covering, DAG covering, and graph covering. The machine instruction characteristics introduced are single-output, multi-output, disjoint-output, inter-block, and interdependent machine instructions. The survey also examines problems that have yet to be addressed by existing approaches.
The book is suitable for advanced undergraduate students in computer science, graduate students, practitioners, and researchers.
Gabriel Hjort Blindell's research focuses on advanced computer architecture, compiler construction, parallel systems, combinatorial optimization, algorithms, data structures, and complexity. Since June 2012 he has participated in a research project on constraint-based compilation, in particular he is investigating how constraint programming can be used to drive and optimize the instruction selection phase.
Introduction.- Macro Expansion.- Tree Covering.- DAG Covering.- Graph Covering.- Conclusions.