CS601 : System Software and Compiler Design Coverage plan for theory part : =============================== 1. Overview of System Software The problem of Translation 2. Assembly language and essentials of assembly process Executable statements, Assembler directives 3. Lexical analysis - Tokens, keywords, identifiers, literals - C program for Lexical analysis - Finite automata and C program to implement it - Lexical analyser generator - LEX, REX 4. Assembler data structures, Symbol table 5. Single phase and multiple phase assembly process 6. Assembler macros and macroprocessors 7. Linkers and Loaders - Basic concepts of modular programs, linking of modules, and laoding. - Static and Dynamic linking - Shared libraries - case study of Sun Solaris and MS Windows - OLE, ActiveX - Loaders and Overlay 8. Compilers : - Basic features of High Level Languages and overview of the issues in translation of HLL programs. - Phases of a compiler. - Languages and grammar, Chomsky hierarchy of grammar. 9. Parsing : Top-down and Bottom-up parsers - Parse trees - Study of some parsing techniques and working out examples - shift-reduce parser, recursive descent (operator precedence) parser, LL(1), LR(0), SLR, LALR parsers. - Parser generator - YACC, bison 10. Intermediate code generation - Syntax-directed translation. 11. Error handling and recovery. 12. Storage allocation - Symbol table revisited - Structured programs and activation records - Parameter passing techniques 13. Code optimization : Basic Techniques. 14. Debuggers - Break-points, controlled execution - examination of variables, stack, and internal registers - advanced features - user interface using source symbols, modification of values, logging of input sequences, etc. Approximate Schedule : ====================== Topics 1, 2, 3 and 4 4 weeks Topics 5, 6, and 7 3 weeks Topics 8, and 9 5 weeks Topics 10, 11, 12, 13 and 14 3 weeks Note : One week is equivalent to 4 theory classes and 2 laboratory contact hours. Laboratory work : ================= 1. Familiarisation with UNIX environment : - User account, login, shell - Basic commands - Files and directories, access permissions - Environment variables - The vi editor - basic operations - Compiling and running programs - Getting help - man pages 2. Writing a lexical analyser program for a representative assembly language using C. 3. Lexical analyser generator - LEX, REX 4. Implementation of assembler data structures including Symbol table 5. Writing a simple assembler 6. Implementation of a simple parsing technique as a C program 7. Parser generator - YACC, bison 8. Familiarisation with libraries in UNIX, Windows 9. Using a debugger in UNIX.