intro1 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. .TL
  2. The design and implementation of
  3. the EM Global Optimizer
  4. .AU
  5. H.E. Bal
  6. .AI
  7. Vrije Universiteit
  8. Wiskundig Seminarium, Amsterdam
  9. .AB
  10. The EM Global Optimizer is part of the Amsterdam Compiler Kit,
  11. a toolkit for making retargetable compilers.
  12. It optimizes the intermediate code common to all compilers of
  13. the toolkit (EM),
  14. so it can be used for all programming languages and
  15. all processors supported by the kit.
  16. .PP
  17. The optimizer is based on well-understood concepts like
  18. control flow analysis and data flow analysis.
  19. It performs the following optimizations:
  20. Inline Substitution, Strength Reduction, Common Subexpression Elimination,
  21. Stack Pollution, Cross Jumping, Branch Optimization, Copy Propagation,
  22. Constant Propagation, Dead Code Elimination and Register Allocation.
  23. .PP
  24. This report describes the design of the optimizer and several
  25. of its implementation issues.
  26. .AE
  27. .bp
  28. .NH 1
  29. Introduction
  30. .PP
  31. .FS
  32. This work was supported by the
  33. Stichting Technische Wetenschappen (STW)
  34. under grant VWI00.0001.
  35. .FE
  36. The EM Global Optimizer is part of a software toolkit
  37. for making production-quality retargetable compilers.
  38. This toolkit,
  39. called the Amsterdam Compiler Kit
  40. .[
  41. tanenbaum toolkit rapport
  42. .]
  43. .[
  44. tanenbaum toolkit cacm
  45. .]
  46. runs under the Unix*
  47. .FS
  48. *Unix is a Trademark of Bell Laboratories
  49. .FE
  50. operating system.
  51. .sp 0
  52. The main design philosophy of the toolkit is to use
  53. a language- and machine-independent
  54. intermediate code, called EM.
  55. .[
  56. keizer architecture
  57. .]
  58. The basic compilation process can be split up into
  59. two parts.
  60. A language-specific front end translates the source program into EM.
  61. A machine-specific back end transforms EM to assembly code
  62. of the target machine.
  63. .PP
  64. The global optimizer is an optional phase of the
  65. compilation process, and can be used to obtain
  66. machine code of a higher quality.
  67. The optimizer transforms EM-code to better EM-code,
  68. so it comes between the front end and the back end.
  69. It can be used with any combination of languages
  70. and machines, as far as they are supported by
  71. the compiler kit.
  72. .PP
  73. This report describes the design of the
  74. global optimizer and several of its
  75. implementation issues.
  76. Measurements can be found in.
  77. .[
  78. bal tanenbaum global
  79. .]