15CSC13 SYSTEM SOFTWARE AND COMPILER DESIGN
3 0 0 3
OBJECTIVES:
To understand the issues related to design and implementation of assemblers
To learn the role of linkers and loaders, working of macro processors
To get introduced to virtual machines
To learn concepts of lexical analysis and parsing
To understand the intermediate code and object code generation
To know the importance of code optimization
UNIT – I ASSEMBLERS, LOADERS AND LINKERS, MACROPROCESSORS 8
Machine Instructions and Programs – Assemblers – Basic Assembler Functions – Assembler Design
Options. Loaders and Linkers - Basic Loader Functions - Loader Design Options-Dynamic Linking and
Loading- Object files- Contents of an object file - Macroprocessors – Basic Macro Processor Functions -
Macro Processor Design Options
UNIT- II CODE GENERATION & OPTIMIZATION 9
Storage organization, Stack allocation space, Access to non-local data on the stack, Heap management -
Issues in code generation - Design of code generator – Register allocation and assignment - Basic blocks
and Flow graphs – Optimization of basic blocks – Principal sources of optimizations– Data flow analysis
– Peephole optimizations.
UNIT – III FRONT END OF COMPILERS 10
The structure of Compiler – Lexical analysis: Role of Lexical analyzer, Specification and recognition of
tokens, Syntax Analysis: Top down parsing, Bottom up parsing, LR Parsers: SLR, CLR, and LALR.
UNIT IV INTERMEDIATE CODE GENERATION 9
Syntax Directed Definitions, Evaluation orders for syntax directed definitions, Syntax
Directed Translation schemes, Intermediate languages : Three address code, Syntax
tree, Postfix code – Declarations – Type checking – Boolean Expression translation – Back patching
UNIT V VIRTUAL MACHINES 9
Introduction to Virtual Machines (VM) - Emulation - basic Interpretation – Threaded Interpretation –
binary translation. - VM – Object-Oriented VMs – Java VM Architecture – Common - Language
Infrastructure – Dynamic Class Loading - Profiling – Migration
OUTCOMES:
To write assembly level programs and analyse loaders, linkers and macro processor design
To describe the structure and architecture of virtual machines
To design the front end of compiler
To write programs for lexical analysis and parsing
To explain concepts related to intermediate code generation and optimization
TEXT BOOKS:
1. Leland L. Beck, “System Software”, 3rd ed., Pearson Education, 1997.
2. James E Smith and Ravi Nair, “Virtual Machines”, Elsevier, 2005.
3. Alfred V. Aho, Monica S.Lam, Ravi Sethi, Jeffrey D.Ullman, “Compilers :
Principles, Techniques and Tools”, Second Edition, Pearson Education, 2008.
REFERENCES:
1. Srimanta Pal, “ Systems Programming “ , Oxford University Press, 2011.
2. John J.Donovan, “ “Systems Programming”, Tata McGraw-Hill, 1991.
3. V. Raghavan, “Principles of Compiler Design”, Tata Mc GrawHill Education
Publishers, 2010.
4. Allen I. Holub, “Compiler Design in C”, Prentice-Hall software series,1993