EXTENSIBILITY OF AN OBJECT-ORIENTED COMPILIER INTERMEDIATE WITH A FOCUS ON CLONING
John Andrew More · OhioLink ETD Center (Ohio Library and Information Network) · 2005
This thesis examines a re-design of the AIRE object-oriented compiler intermediate in order to simplify the task of building and adding new back-end analysis tools to the system.In particular, this thesis work proposes a revision to the AIRE intermediate form (which is used by several VHDL front-end compilers) that will simplify the design and use of back-end analysis tools.The revision includes three main parts, namely: (i) a restructuring of the base header files to setup an interface definition for the basic AIRE nodes; (ii) a factory method of AIRE node instantiation; and (iii) a cloning mechanism that enables cloning of the AIRE tree with different inheritance hierarchies in the AIRE nodes.In pursuit of this re-design effort, several different possible solutions were explored and evaluated.In particular, we studied three different approaches and developed small working prototypes of one before embarking on a full scale deployment of the cloning method in the SAVANT implementation of AIRE.The cloning method was chosen because it is best able to meet the goals of this project.Our goals included simplicity, ease of use, and flexibility.After implementing the abstract base classes and cloning mechanism into AIRE, the C++ code generator backend of SAVANT was moved to a "cloned" extension to AIRE and its performance (both compliance and runtime) evaluated against the original implementation.Preliminary performance analysis shows that the system continues to provide the same level of functionality as the previous approach.However, it is slower during execution, and consumes greater memory resources.These problems are offset by increased productivity gains during compilation, and increased flexibility at runtime.As with most important tasks in life this thesis could not have been completed without the help and support of a number of people.Often times in life such things go unmentioned, and unnoticed except for a tacit understanding, a nod, or a word of thanks.Thus it is a rare opportunity to be given the chance to publicly and permanently thank the people who have supported me in this endeavor.Without their aid none of this would have been possible.I would like to thank Dr. Wilsey for providing me with the opportunity to further advance my education and knowledge.His guidance throughout this process has been invaluable.Second, I would like to thank Dr. Hal Carter, and Dr. Karen Tomko for taking the time to serve as members of my thesis committee.I would also like to thank Darryl Dieckman for his initial help and insight at the start of this project.Without his invaluable suggestions, I am sure this would have taken me much longer.I would also like to thank my parents for their encouragement and support throughout this process.When things got tough, they stood beside me.Finally, last, but certainly not least, I would like to thank Dale Martin.Through our innumerable conversations I was able to gain enough understanding to finish this project.Dale went out of his way on multiple occasions to help me, making significant sacrifices of his time and attention.