•
Will be used
–
To gain information about the program
–
To generate
efficient
code
•
Needs to be
–
Easy to construct
–
Low-level enough to be useful for many
target machine architectures
–
Easy to manipulate, for optimisations,
information gathering