CSCE 434 Lecture 3
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:
- generate correct code ***
- Output should run quickly
- Compiler should perform quickly (fastest time is )
- Support for separate compilation (divide & conquer)
- Diagnostics for errors (incl. syntax errors, type errors, static analysis errors)
- Works with debugger
- Cross language calls (e.g. for really fast algebraic implementations)
- Consistent [1], predictable optimization
Check out Predictive Parsing
Footnotes
- ↑ consistent optimization: code should never run slower than it would without optimizations