1. Introduction to System Software
1.1 Concept of System Software, Goals of system software, system program and system programming, Introduction to various system programs such as Assembler, Macro processor, Loader, Linker, Compiler, Interpreter, Device Drivers, Operating system, Editors, Debuggers.
2.1 Elements of Assembly Language programming, Assembly scheme, pass structure of assembler, Assembler Design: Two pass assembler Design and single pass, Assembler Design for Hypothetical / X86 family processor, data structures used.
3. Macros and Macro Processor
3.1 Introduction, Macro definition and call, Features of Macro facility: Simple, parameterized, conditional and nested. Design of single pass macro processor, data structures used.
4. Loaders and Linkers
4.1 Introduction, functions of loaders, Relocation and Linking concept, Different loading schemes: Relocating loader, Direct Linking Loader, Dynamic linking and loading.
5. Compiler: Analysis Phase
5.1 Introduction to compilers, Phases of compilers: Lexical Analysis- Role of Finite State Automata in Lexical Analysis, Design of Lexical analyser, data structures used . Syntax Analysis- Role of Context Free Grammar in Syntax analysis, Types of Parsers: Top down parser- LL(1), Bottom up parser- Operator precedence parser, SLR Semantic Analysis, Syntax directed definitions.
6. Compilers: Synthesis Phase
6.1 Intermediate Code Generation: Types of Intermediate codes: Syntax tree, Postfix notation, Three address codes: Triples and Quadruples. Code Optimization: Need and sources of optimization, Code optimization techniques: Machine Dependent and Machine Independent. Code Generation: Issues in the design of code generator, code generation algorithm. Basic block and flow graph.