CSCE 434 Lecture 3

From Notes
Jump to navigation Jump to search

« previous | Friday, August 30, 2013 | next »


Test all code on the CSE Linux machine (linux.cse.tamu.edu)

Compilers

Large, complex pieces of software

Two purposes:

  • Translation
    • High-Level → High-Level
    • High-Level → Low-level
  • Optimization
    • Minimize Execution Time and constrain Memory consumption (focus of this class)
    • Minimize memory usage and constrain execution time
    • Minimize power consumption and constrain others

Other embedded systems optimize cost for mass-production, for example.

All compilers have to:

  1. generate correct code ***
  2. Output should run quickly
  3. Compiler should perform quickly (fastest time is )
  4. Support for separate compilation (divide & conquer)
  5. Diagnostics for errors (incl. syntax errors, type errors, static analysis errors)
  6. Works with debugger
  7. Cross language calls (e.g. for really fast algebraic implementations)
  8. Consistent [1], predictable optimization


Check out Predictive Parsing

Footnotes

  1. consistent optimization: code should never run slower than it would without optimizations