- Translates one source code into several machine codes.
- Allocates memory for the object code.
- Produces a list of syntax errors found during compilation.
- Generates a list of source code and object code.
- Links subroutines in a program with the main program.