SP and MP - TM - Chapter 1
SP and MP - TM - Chapter 1
SP and MP - TM - Chapter 1
System programming
Course Outline
PARTA System Programming Introduction Lexical Analysis Syntax Analysis Code generation Code Optimization
PART-B Microprocessor 8086 Family Assembly Language Programming-Introduction Implementing Standard Program Structure in 8086 Assembly Language Strings, Procedures and Macros
System Prrogramming
REFERENCES: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Compilers, Principles, Techniques and Tools, Pearson Education Asia. Dhamdhere D.M, Systems Programming and Operating Systems, Tata McGraw-Hill, Second revised edition Douglas V. Hall Microprocessor and Interfacing Programming and hardware,Tata McGrawHill Donovan J.J., Systems Programming, McGraw Hill, 1972 Barron D.W., Assemblers and Loaders, McDonald and Javes, 1978. Ullman J.D., Fundamental Concepts of Programming Systems, Addision Wesley, 1976. Aho A.V. & Ullman J.D., Principles of Compiler Design, Addison-Wesley, 1985. K.R.Venugopal, Raj Kumar,Microprocessor X86 Programming, BPB Publications. G.Sudha Sadasivam,Compiler Design, Scitech Publications Vinu V.Das,Compiler Design using Flex and YACC,PHI
System programming
INTRODUCTION
Language processor is a program that performs task such as translating and interpreting , required for processing a specified programming language. Some of the language processors are: - compiler - interpreter - assembler
Language Processor
COMPILER
The language processor that translates the complete source program as a whole in machine code before execution is called compiler.
source program
( Normally a program written in a high-level programming language)
target program
( Normally the equivalent program in machine code relocatable object file)
input
Target program
output
Language processor
INTERPRETER
The language processor that translates (converts) each statement of source program into machine code and executes it immediately before to translate the next statement is called Interpreter. source program input INTERPRETER output
error messages
Language processor
Assembler
Assembler is used to translate the program written in Assembly language into machine code. Typically, assemblers make two passes over the assembly file First pass: reads each line and records labels in a symbol table Second pass: use info in symbol table to produce actual machine code for each line
Linker
Tool that merges the object files produced by separate compilation or assembly and creates an executable file Three tasks Searches the program to find library routines used by program, e.g. printf(), math routines, Determines the memory locations that code from each module will occupy and relocates its instructions by adjusting absolute references Resolves references among files
Loader
Part of the OS that brings an executable file residing on disk into memory and starts it running Steps Read executable files header to determine the size of text and data segments Create a new address space for the program Copies instructions and data into address space Copies arguments passed to the program on the stack Initializes the machine registers including the stack ptr Jumps to a startup routine that copies the programs arguments from the stack to registers and calls the programs main routine
Language processor 10
In analysis phase, an intermediate representation is created from the given source program.
Lexical Analyzer, Syntax Analyzer and Semantic Analyzer are the parts of this phase.
In synthesis phase, the equivalent target program is created from this intermediate representation.
Intermediate Code Generator, Code Generator, and Code Optimizer are the parts of this phase.
Language processor
11
Phases Of Compiler
12
Phases of A Compiler
13
Phases Of Compiler
Each phase transforms the source program from one representation into another representation. They communicate with error handlers. They communicate with the symbol table.
14
Lexical Analyzer
Lexical Analyzer reads the source program character by character and returns the tokens of the source program. A token describes a pattern of characters having same meaning in the source program. (such as identifiers, operators, keywords, numbers, delimeters and so on) Ex: newval = oldval + 12 => tokens: newval identifier
= oldval + 12 assignment operator identifier add operator a number
Puts information about identifiers into the symbol table. Regular expressions are used to describe tokens (lexical constructs). A (Deterministic) Finite State Automation can be used in the implementation of a lexical analyzer.
Language processor 15
Syntax Analyzer
A Syntax Analyzer creates the syntactic structure (generally a parse tree) of the given program. A syntax analyzer is also called as a parser. A parse tree describes a syntactic structure.
assgstmt identifier newval = expression expression identifier oldval + expression number 12 In a parse tree, all terminals are at leaves. They represent arguments of the operation. All inner nodes are non-terminals in a context free grammar. They represent operation.
Language processor
16
Language Processor
17
Language Processor
18
Parsing Techniques
Depending on how the parse tree is created, there are different parsing techniques. These parsing techniques are categorized into two groups: Top-Down Parsing, Bottom-Up Parsing Top-Down Parsing:
Construction of the parse tree starts at the root, and proceeds towards the leaves. Efficient top-down parsers can be easily constructed by hand. Recursive Predictive Parsing, Non-Recursive Predictive Parsing (LL Parsing).
Bottom-Up Parsing:
Construction of the parse tree starts at the leaves, and proceeds towards the root. Normally efficient bottom-up parsers are created with the help of some software tools. Bottom-up parsing is also known as shift-reduce parsing. Operator-Precedence Parsing simple, restrictive, easy to implement LR Parsing much general form of shift-reduce parsing, LR, SLR, LALR
Language processor 19
Semantic Analyzer
A semantic analyzer checks the source program for semantic errors and collects the type information for the code generation. Type-checking is an important part of semantic analyzer. Normally semantic information cannot be represented by a context-free language used in syntax analyzers. Context-free grammars used in the syntax analysis are integrated with attributes (semantic rules)
the result is a syntax-directed translation, Attribute grammars
Ex:
newval = oldval + 12
The type of the identifier newval must match with type of the expression (oldval+12)
Language processor 20
Language processor
21
Language Processor
22
Code Generator
Produces the target language in a specific architecture. The target program is normally is a relocatable object file containing the machine codes. Ex:
( assume that we have an architecture with instructions whose at least one of its operands is a machine register)
Language Processor
23
24