You are on page 1of 23

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

QUESTION BANK
PRINCIPLES OF COMPILER DESIGN

UNIT I LEXICAL ANALYSIS


Introduction to Compiling- Compilers-Analysis of the source program-The phasesCousins-The grouping of phases-Compiler construction tools. The role of the lexical
analyzer- Input buffering-Specification of tokens-Recognition of tokens-A language for
specifying lexical analyzer.
UNIT II SYNTAX ANALYSIS and RUN-TIME ENVIRONMENTS
Syntax Analysis- The role of the parser-Context-free grammars-Writing a grammar-Topdown
parsing-Bottom-up
Parsing-LR
parsers-Constructing
an
SLR(1)
parsing
table.
Type Checking- Type Systems-Specification of a simple type checker. Run-Time
Environments-Source
language
issues-Storage
organization-Storage-allocation
strategies.
UNIT III INTERMEDIATE CODE GENERATION
Intermediate languages-Declarations-Assignment statements - Boolean expressionsCase statements- Backpatching-Procedure calls
UNIT IV CODE GENERATION
Issues in the design of a code generator- The target machine-Run-time storage
management-Basic blocks and flow graphs- Next-use information-A simple code
generator-Register allocation and assignment-The dag representation of basic blocks Generating code from dags.
UNIT V CODE OPTIMIZATION
Introduction-The principle sources of optimization-Peephole optimization- Optimization of
basic blocks-Loops in flow graphs- Introduction to global data-flow analysis-Code
improving transformations.
TOTAL: 75 PERIODS
TEXT BOOK:
1. Alfred V. Aho, Ravi Sethi Jeffrey D. Ullman, Compilers- Principles, Techniques, and
Tools, Pearson Education Asia, 2007.
REFERENCES:
1. David Galles, Modern Compiler Design, Pearson Education Asia, 2007
2. Steven S. Muchnick, Advanced Compiler Design & Implementation,Morgan
Kaufmann Pulishers, 2000.
3. C. N. Fisher and R. J. LeBlanc Crafting a Compiler with C, Pearson Education,
2000.

UNIT I
PART-A
1. What is Error Handler?
The error handler invokes error diagnostic routines and also generates error
messages. It works in conjunction with all the phases to handle the errors at the
respective phases.
2. Define Tokens. APRIL/MAY 2011
The token can be defined as a meaningful group of characters over the character set
of the programming language like identifiers, keywords, constants and others.
3. Define Symbol Table.
A Symbol Table is a data structure containing a record for each identifier, with fields
for the attributes of the identifier.
4. Name some variety of intermediate forms.

Postfix notation or polish notation.

Syntax tree

Three address code

Quadruple

5. What is a Complier? MAY/JUNE 2007


A Complier is a program that reads a program written in one language-the source
language-and translates it in to an equivalent program in another language-the target language .
As an important part of this translation process, the compiler reports to its user the presence of
errors in the source program.
6. What are the cousins of compiler?April/May2004,April/May2005,April/May 2012
The following are the cousins of compilers
i. Preprocessors
ii. Assemblers
iii. Loaders
iv. Link editors.
7.

What are the main two parts of compilation? What are they performing?
APRIL/MAY 2010
The two main parts are
Analysis part breaks up the source program into constituent pieces and creates
An intermediate representation of the source program.
Synthesis part constructs the desired target program from the intermediate
Representation.

8. State some compiler construction tools? Arpil /May 2008


2

a.Parse generator
b. Scanner generators
c. Syntax-directed translation engines
d. Automatic code generator
i. Data flow engines.
9. What is a Loader? What does the loading process do?
A Loader is a program that performs the two functions
i. Loading
ii .Link editing
The process of loading consists of taking relocatable machine code, altering the
relocatable address and placing the altered instructions and data in memory at the proper
locations.
10. What is a preprocessor? Nov/Dev 2004
A preprocessor is one, which produces input to compilers. A source program may be
divided into modules stored in separate files. The task of collecting the source program is
sometimes entrusted to a distinct program called a preprocessor.
The preprocessor may also expand macros into source language statements.
Skeletal source program

Preprocessor

Source program
11. What is an assembler and interpreter? APRIL/MAY 2011
Assembler is a program, which converts the assembly language in to machine language.
Interpreter is a program which converts source language into machine language line by
line.
12. What is a lexeme? Define a regular set. APRIL/MAY 2011
A Lexeme is a sequence of characters in the source program that is matched by the
pattern for a token.
A language denoted by a regular expression is said to be a regular set
13. What is a sentinel? What is its usage? April/May 2004
A Sentinel is a special character that cannot be part of the source program.
Normally we use eof as the sentinel. This is used for speeding-up the lexical analyzer.
14. What is a regular expression? State the rules, which define regular expression?
MAY/JUNE 2007
Regular expression is a method to describe regular Language
3

Rules:
1) -is a regular expression that denotes {} that is the set containing the empty
string
2) If a is a symbol in ,then a is a regular expression that denotes {a}
3) Suppose r and s are regular expressions denoting the languages L(r ) and L(s) Then,
a) (r )/(s) is a regular expression denoting L(r) U L(s).
b) (r )(s) is a regular expression denoting L(r )L(s)
c) (r )* is a regular expression denoting L(r)*.
d) (r) is a regular expression denoting L(r ).
15. What are the Error-recovery actions in a lexical analyzer? April/May 2012,
APRIL/MAY 2005
Deleting an extraneous character
Inserting a missing character
Replacing an incorrect character by a correct character
Transposing two adjacent characters
16. Draw a transition diagram to represent relational operators. NOV/DEC 2007
Start

<

=
>
Other

return( relop, LE)

2
3

return(relop, NE)
*

5 return(relop,EQ) 4
>

return(relop,LT)

=
6

7
Other

return(relop,GE)
*

Return(relop, GT)

17. What are the issues to be considered in the design of lexical analyzer? MAY/JUNE
2009
How to Precisely Match Strings to Tokens
How to Implement a Lexical Analyzer
18. Define concrete and abstract syntax with example. MAY/JUNE 2009
The grammar is mainly used for parsing only - the key is to resolve all ambiguities. This
grammar is called Concrete Syntax.
Abstract Syntax is used to characterize the essential structure of the program the key is to be as simple as possible; it may contain ambiguities.
Traditional Compilers do semantic analysis on Concrete Syntax
Modern Compilers do the semantic analysis on Abstract Syntax tree
19. Differentiate compiler and interpreter APRIL/MAY 2008

An interpreter is a translator used to convert high level program into machine code. These
translators translate the program line by line. A Compiler is also a translator which is used
to translate the whole source of a program at a time.
20. Write short notes on buffer pair. APRIL/MAY 2008
Lexical analyzer will detect the tokens from the source language with the help of input
buffering. The reason is, the lexical analyzer will scan the input character by character, it
will increase the cost file read operation.. So buffering is used. The buffer is a pair in
which each half is equal to system read command.
21. How is the token structure is specified? APRIL/MAY 2010.
Token structure is specified with the help of Pattern. The pattern can be described with the
help of Regular Expression
22. What is the role of lexical analyzer? NOV/DEC 2011
Its main task is to read input characters and produce as output a sequence of tokens that
parser uses for syntax analysis. Additionally task is removing blank, new line and tab
characters
23. Give the transition diagram for an identifier. NOV/DEC 2011

.
PART B [Text Book:Alfred Aho,Ravi Sethi,V.Jeffery Ullman]
1. What are the various phases of a compiler. Explain each phase in detail. (Page
No.10) April/May 2011, April/May 2012
2. Explain the various Compiler Construction Tools. (Page No.22) April/May 2011,
April/May 2012
5

3. Explain Input Buffering with example. (Page No.88) November/December 2011


4. Explain the role Lexical Analyzer. (Page No.84) April/May 2011
5. Explain the specification of tokens. (Page No.92) APRIL/MAY 2008
6. Elaborate in detail the recognition of tokens. (Page No.98) April/May 2012
7. What are the issues in Lexical analysis. (Page No.84) April/May 2012
8. Draw

the

transition

diagram

for

relational

operators

and

unsigned

numbers in Pascal. (Page No.101 & 102) April/May 2011


UNIT II
PART A
1. Differentiate Top Down Parser And Bottom Up Parser? Give Example for each.
APRIL/MAY 2010.
Top Down Parser are the parsers which constructs the parse tree from the root to the
leaves in pre- order for the given input string. Predictive Parser, Recursive Descendent
Parser.
Bottom Up Parser are the parsers which constructs the parse tree from the leaves to
the root for the given input string. LR Parser, SLR Parser.
2. Define Handles. MAY/JUNE 2007, APRIL/MAY 2005
A handle of a string is a substring that matches the right side of a production. This
reduction helps in constructing the parse tree or right most derivation.
3.

Define ambiguous grammar with an example, and specify it demerits


April/May 2012 , NOV/DEC 2007
If a grammar produces more than one parse tree for the given input
string then it is called

It is difficult to select or determine which parse tree is suitable for an input string.

4.

ambiguous grammar. It's demerit is

Ex:
E E+E / E*E / id

Mention the properties of parse tree.

The root is labeled by the start symbol.

Each leaf is labeled by a token or by

Each interior node is labeled by a non terminal


6

If A is the Non terminal, labeling some interior node and x1, x2, x3 .xn
are the labels of the children.

5. What do you mean by a syntax tree?


Syntax tree is a variant of a parse tree in which each leaf represents an operand and
each interior node represents an operator.
6. Define Handle pruning. NOVEMBER/DECEMBER 2011, APRIL/MAY 2011
A technique to obtain the rightmost derivation in reverse (called canonical
reduction sequence) is known as handle pruning (i.e.) starting with a string of terminals
w to be parsed. If w is the sentence of the grammar then =n where n is the nth right
sentential form of unknown right most derivation.
7. What are the goals of error handler in a parser? APRIL/MAY 2005, NOV/DEC
2007
The error handler in a parser has simple-to-state goals:
It should report the presence of errors clearly and accurately.
It should recover from each error quickly enough to be able to detect subsequent errors.
It should not significantly slow down the processing of correct programs.
8.

How will you define a context free grammar?

A context free grammar consists of terminals, non-terminals, a start symbol, and


productions.
i. Terminals are the basic symbols from which strings are formed. Token is a synonym
for terminal. Ex: if, then, else.
ii. Nonterminals are syntactic variables that denote sets of strings, which help define the
language generated by the grammar. Ex: stmt, expr.
iii. Start symbol is one of the nonterminals in a grammar and the set of strings it denotes
is the language defined by the grammar. Ex: S.
iv.The productions of a grammar specify the manner in which the terminals and
nonterminals can be combined to form strings Ex: expr-> id
9.

Differentiate sentence and sentential form.


Sentence
Sentential form
If S=>w then the string w is called If S=>a then a is a sentential form of G.
Sentence of G.

Sentence is a string of terminals. Sentential


Sentence is a sentential form with no terminals
nonterminals.

form

may

contain

non

10. What is meant by Predictive parsing? Nov/Dec 2007


A special form of Recursive Descent parsing, in which the look-ahead symbol
unambiguously determines the procedure selected for each nonterminal, where no
backtracking is required.
11. What do you mean by viable prefixes?
The set of prefixes of right sentential forms that can appear on the stack of a shift-reduce
parser are called viable prefixes.
A viable prefix is that it is a prefix of a right sentential form that does not continue the
past the right end of the rightmost handle of that sentential form.
12. What are the conflicts during Shift reduce parsing?
There are context free grammars for which shift reduce parsing cannot be used. Every
shift reduce parser for such a grammar can reach a configuration in which the parser
knowing the entire stack contents and the next input symbol cannot decide whether to
shift or to reduce a shift/reduce conflict or cannot decide which of several reductions to
make a reduce/reduce conflict.
13. When procedure call occurs, what are the steps to be takes placed?
NOV/DEC 2007
o

State of the calling procedure must be saved, so that it can resume after completion of
procedure.

o Return address is saved, in this location called routine must transfer after completion of
procedure

14. List out the actions involved in shift reduce parsing. MAY/JUNE 2007
o
o
o
o

Shift.
Reduce.
Accept.
Error.

15. What are the algebraic properties of regular expressions? APRIL/MAY 2005
8

Union

Kleene Closure

Positive Closure

16. What is left factoring? Give an example. NOV/DEC 2007


Left factoring is a grammar transformation that is useful for producing a grammar
suitable for predictive parsing.
17. Derive the string and construct a syntax tree for the input string ceaedbe using
the grammar S->SaA|A,A->AbB|B,B->cSd|e MAY/JUNE 2009
Refer class notes.
18. List the factors to be considered for top-down parsing. MAY/JUNE 2009
We begin with the start symbol and at each step,
expand one of the remaining nonterminals by replacing it with the right side of one of its
productions. We repeat until only terminals remain. The top-down parse produces a
leftmost derivation of the sentence
19.

Construct a parse tree of (a+b)*c for the grammer E->E+E/E*E/(E)/id.


APRIL/MAY 2008
Refer class notes.

20. Eliminate immediate left recursion for the following grammer


E->E+T/T,T->T*F,F->(E)/id.

APRIL/MAY 2008

Refer class notes


21. Eliminate Left Recursion for the given grammar. MAY/JUNE 2007
E E+T|T

TT*F|F
F ( E )| id
E TE'
E' +TE' |
T FT'
T' *FT' |
F ( E ) | id

22. What are the limitations of static allocation? APRIL/MAY 2011


1. The size of the data object and constraints on its position in memory must be known
at compile time.
2. Recursive procedures are restricted, because all activations of a procedure use the
9

same bindings for local names.


3. Data structures cannot be created dynamically, since there is no mechanism for
storage allocation at run time.
23. Mention the two rules for type checking. Nov/Dec 2011
type checker for a language is based on information about the syntactic constructs
in the language, the notion of types, and the rules for assigning types to language
constructs.
24. What is dangling reference APRIL/MAY 2012
A dangling reference occurs when there is a reference to storage that has been
deallocated. It is a logical error to use dangling references, since the value of deallocated
storage is undefined according to the semantics of most languages
PART B [Text Book:Alfred Aho,Ravi Sethi,V.Jeffery Ullman]
1. Explain Top- Down Parsing and Bottom up Parsing. C
MAY/JUNE 2007
2. Explain Error Recovery in Predictive Parsing. (Page No.192) MAY/JUNE 2007
NOV/DEC 2007 APRIL/MAY 2005
3.

Distinguish between the source text of a procedure and its activation at run time.
(Page No.389)

4.

April/May 2011 , Nov/Dec 2011, NOV/DEC 2007

Discuss the various storage allocation strategies in detail.

(Page No.401)

April/May 2011 , Nov/Dec 2011, NOV/DEC 2007


5.

6.

i) Construct an SLR parsing table for the above grammar.


E -> E + T
E -> T
T -> T * F
T -> F
F -> (E)
F-> id
(Refer Notes) MAY/JUNE 2009, April/May 2011, APRIL/MAY 2008
Construct the predictive parser for the following grammar:
S -> (L) | a
L -> L,S | S.
Construct the behavior of the parser on the sentence (a, a) using the grammar
specified above. (Refer Notes) April/May 2012 , MAY/JUNE 2007,
APRIL/MAY 2005,
10

7.

Give an algorithm for finding the FIRST and FOLLOW positions for a given nonterminal.
MAY/JUNE 2009 APRIL/MAY 2008

8. Consider the grammar,


E -> E + T
E -> T
T -> T * F
T -> F
F -> (E)
F-> id
Construct a predictive parsing table for the grammar given above. Verify whether
the input string id + id * id is accepted by the grammar or not. (Refer Notes)
MAY/JUNE 2009 APRIL/MAY 2008
9. Check whether the following grammar is a LL(1) grammar
S-> iEtS | iEtSeS | a
E-> b
Also define the FIRST and FOLLOW procedures. (Refer Notes) APRIL/MAY 2005
10. Consider the grammar E -> E + E | E * E | (E) | id
Show the sequence of moves made by the shift-reduce parser on the input id1 + id2
* id3 and determine whether the given string is accepted by the parser or not.
(Refer Notes) MAY/JUNE 2007
11. What is a shift-reduce parser? Explain in detail the conflicts that may occur during
shift-reduce parsing. (Page No.201)

April/May 2012

12.

Consider the grammar given below.


E -> E + T
E -> T
T -> T * F
T -> F
F -> (E)
F-> id
Construct an LR parsing table for the above grammar. Give the moves of LR parser
on id*id+id
(Refer Notes)
MAY/JUNE 2007
13. Explain in detail about the specification of a simple type checker. (Page No.348)
April/May 2012
14. How to subdivide a run time memory into code and data areas. Explain.
(Page No.396)
April/May 2012
15. Explain the non-recursive predictive parsing with its algorithm. (Page No.190)
NOV/DEC 2007
16.

Explain the LR parsing algorithm in detail.

APRIL/MAY 2005

11

(Page. No. 218)

NOV/DEC 2007

UNIT III
PART A
1.

What is Data flow engine? APRIL/MAY 2008.


Much of the information needed to perform good code optimization involves data
flow analysis, the gathering of information about how values are transmitted from one
part of a program to each other part. This is handled by the data flow engines.

2. What are Syntax directed translation engines? MAY/JUNE 2007


These produce collections of routines that walk the parse tree generating intermediate
code.
3. What do you mean by DAG? NOVEMBER/DECEMBER 2011.
It is Directed Acyclic Graph. In this common sub expressions are
eliminated. So it is a compact way of representation.
4. Define quadruple and give one example.
A quadruple is a data structure with 4 fields like operator, argument-1 ,
argument-2 and result.
Example: a=b*-c
(0)
(1)
(2)

Operator
Uminus
*
=

Argument -1
c
b

Argument -1
T1

Result
T1
T2
a

5. What is the merit of quadruples? APRIL/MAY 2012


If we move a statement computing a variable, A then the statements using 'A'
requires no change. That is A can be computed anywhere before the utilization of
A.
12

6.Generate three address code for " if A<B then 1 else 0", using numerical method.
(1) if A<B goto (4)
(2) T 1=0
(3) goto (5)
(4) T 1=1
(5)
7. List the three kinds of intermediate representation. NOV/DEC 2007
The three kinds of intermediate representations are
i. Syntax trees
ii. Postfix notation
iii. Three address code
8. What is a syntax tree? Draw the syntax tree for the assignment statement
a := b * -c + b * -c.
APRIL/MAY 2011,NOV/DEC 2011
A syntax tree depicts the natural hierarchical structure of a source program.
Syntax tree:

9. What is postfix notation?


A Postfix notation is a linearized representation of a syntax tree. It is a list of nodes of the
tree in which a node appears immediately after its children.
10. What is the usage of syntax directed definition.
Syntax trees for assignment statement are produced by the syntax directed definition.
11. Define three-address code. MAY/JUNE 2007
Three-address code is a sequence of statements of the general form
x := y op z

13

where x, y and z are names, constants, or compiler-generated temporaries; op stands for


any operator, such as fixed or floating-point arithmetic operator, or a logical operator on
Boolean-valued data.
Three-address code is a linearized representation of a syntax tree or a dag in which
explicit names correspond to the interior nodes of the graph.
12. What are triples?
The fields arg1,and arg2 for the arguments of op, are either pointers to the
symbol table or pointers into the triple structure then the three fields used in the
intermediate code format are called triples.
In other words the intermediate code format is known as triples.
13. Draw the DAG for a := b * -c + b * -c

14.List the types of three address statements. NOVEMBER/DECEMBER 2011.


The types of three address statements are
a. Assignment statements
b. Assignment Instructions
c. Copy statements
d. Unconditional Jumps
e. Conditional jumps
f. Indexed assignments
g. Address and pointer assignments
h. Procedure calls and return
15. How semantic rules are defined?
The semantic rules are defined by the following ways
a. mktable(previous)
b. enter(table,name,type,offset)
c. addwith(table,width)
d. enterproc(table,name,newtable)
16. What are the two primary purposes of Boolean Expressions?
14

They are used to compute logical values


They are used as conditional expressions in statements that alter the flow of control,
such as if-then, if-then-else, or while-do statements.
17.What are the two methods to represent the value of a Boolean expression?
i. The first method is to encode true and false numerically and to evaluate a Boolean
expression analogously to an arithmetic expression.
ii. The second principal method of implementing Boolean expression is by flow of
control that is representing the value of a Boolean expression by a position reached in a
program.
18.What is meant by Shot-Circuit or jumping code? APRIL/MAY 2010.
We can also translate a Boolean expression into three-address code without generating
code for any of the Boolean operators and without having the code necessarily evaluate
the entire expression. This style of evaluation is sometimes called short-circuit or
jumping code.
19. What is the intermediate code representation for the expression a or b and not c?
(Or)
Translate a or b and not c into three address code.
Three-address sequence is
t1 := not c
t2 := b and t1
t3 := a or t2
20. Translate the conditional statement if a<b then 1 else 0 into three address code.
Three-address sequence is
100: if a < b goto 103
101: t := 0
102: goto 104
103: t := 1
104:
21. Explain the following functions:
i) makelist(i) ii) merge(p1,p2) iii) backpatch(p,i)
i. makelist(i) creates a new list containing only I, an index into the array of quadruples;
makelist returns a pointer to the list it has made.
list.
iii. backpatch(p,i) inserts i as the target label for each of the statements on the list pointed
to by p.
22. Define back patching. May/June 2007 & Nov/Dec 2007 APRIL/MAY 2012
MAY/JUNE 2009 APRIL/MAY 2008
15

Back patching is the activity of filling up unspecified information of labels using


appropriate semantic actions in during the code generation process.
23. What is the sequence of actions taking place on entry to a procedure?
The sequence of actions taking place on entry to a procedure includes calling
sequence, translation for a call. A call sequence allocates an activation record and enters
information into its fields. The code in calling sequence is often divided between the
calling procedure (the caller) and the procedure it calls (the callee)
24.Why is it necessary to generate intermediate code instead of generating target
program itself? MAY/JUNE 2009
Intermediate code is simple enough to be easily converted to any target code.
Complex enough to represent the entire complex structure of high level language

PART B [Text Book:Alfred Aho,Ravi Sethi,V.Jeffery Ullman]


1. What is the 3 address code? Describe its types. (Page No.467)
April/May 2012 ,APRIL/MAY 2005
2. Explain how declaration is done in a procedure using syntax directed translation.
(Page No.473)

MAY/JUNE 2009

3. Describe the method of generating syntax directed definition for control statements.
( Page. No. 491)

NOV/DEC 2007

4. Brief Intermediate code generation for Basic block, Control Flow and Boolean
Expressions. (Page No:399 )
MAY/JUNE 2007
5. Explain the data structure used for implementing Symbol Table. (Page No:85 )
MAY/JUNE 2007 , NOV/DEC 2007, APRIL/MAY 2005
6. 7. Define three-address code. Describe the various methods of implementing threeaddress statements with an example. (Page No:366 ) MAY/JUNE 2007 ,
NOV/DEC 2007 ,APRIL/MAY 2005
7.

Give the translation scheme for converting the assignments into three address code.
(Page No:478 ) April/May 2011, Nov/Dec 2011

8.

Discuss the various methods for translating Boolean expression.


(Page No:488 ) April/May 2012

16

9.

How can Back patching be used to generate code for Boolean expressions and flow
of control statements?
(Page No:501 ) April/May 2011, APRIL/MAY 2008

10. Write a short note on procedures calls. ( Page. No. 506)


Nov/Dec 2011, April/May 2012 ,APRIL/MAY 2005
11. How names can be looked up in the symbol table. Discuss. (Page No:478 )
April/May 2012

UNIT - IV
PART A
1. What are basic blocks?

NOVEMBER/DECEMBER 2011. APRIL/MAY 2005,

APRIL/MAY 2010,APRIL/MAY 2008


A sequence of consecutive statements which may be entered only at the beginning and
when entered are executed in sequence without halt or possibility of branch , are called basic
blocks.
2. What is a flow graph? NOVEMBER/DECEMBER 2011. APRIL/MAY 2012,
APRIL/MAY 2008
The basic block and their successor relationships shown by a directed graph is called a
flow graph. The nodes of a flow graph are the basic blocks.
3. Mention the applications of DAGs.
We can automatically detect common sub expressions.
We can determine the statements that compute the values, which could be used outside
the block.
We can determine which identifiers have their values used in the block.
4. What are the advantages and disadvantages of register allocation and assignments?
Advantages:
i. It simplifies the design of a compiler
Disadvantages:
i. It is applied too strictly.
ii. It uses registers in efficiently. Certain registers may go unused over substantial
portions of the code, while unnecessary load and stores are generated.
5. What is meant by multiregister operations?
We can modify our labeling algorithm to handle operations like multiplication, division,
or function calls which normally requires more than one register to perform. Hence this
operation is called multiregister operations.
6. What is meant by peephole optimization? MAY/JUNE 2007
17

Peephole optimization is a technique used in many compliers, in connection with the


optimization of either intermediate or object code. It is really an attempt to overcome the
difficulties encountered in syntax directed generation of code.
7. What are the primary structure preserving transformations on basic blocks?
Common sub-expression elimination
Dead-code elimination
Renaming of temporary variable
Interchange of 2 independent adjacent statements.
8. What are the issues in the design of code generators? Nov/Dec 2007
i) Input to the code generator
ii) Target programs
iii) Memory management
iv) Instruction selection
v) Register allocation
vi) Choice of evaluation order
vii) Approaches to code generation
9. What are the various forms of target programs?
i) Absolute machine language
ii) Relocatable machine language
iii) Assembly language
10. What are the rules to determine the leaders of basic blocks?
i) The first statement is a leader
ii) Any statement that is the target of a conditional or unconditional goto is a leader
iii) Any statement that immediately follows a goto or conditional goto statement is a
leader.
11. What is the use of algebraic transformation?
Algebraic transformation can be used to change the set of expressions computed by a
basic blocks into an algebraically equivalent set.
12. What is meant by loop?
A loop is a collection of nodes in a flow graph such that
i) All nodes in the collection are strongly connected i.e., from any node in the loop to any
other, there is a path of length one or more, wholly within the loop
ii) The collection of nodes has a unique entry, i.e. a node in the loop such that the only
way to reach a node of the loop from a node outside the loop is to first go through the entry.
13. What is register descriptor and address descriptor?
A register descriptor keeps track of what is currently in each register.
18

An address descriptor keeps track of the location where the current value of the name can
be found at run time.
14. Define DAG. Nov/Dec 2007 , MAY/JUNE 2007
A DAG for a basic block is a directed acyclic graph with the following labels on nodes:
i) Leaves are labeled by unique identifiers, either variable names or constants.
ii) Interior nodes are labeled by an operator symbol.
iii) Nodes are also optionally given a sequence of identifiers for labels.
15. How would you calculate the cost of an instruction?
The cost of an instruction to be one plus the costs associated with the source and
destination address modes. This cost corresponds to the length of the instruction.
Address modes involving registers have cost zero, while those with a memory location
or literal in them have cost one.
16.

State the problems in code generation.


Three main problems in code generation are,

17.

Deciding what machine instructions to generate.

Deciding in what order the computations should be done and

Deciding which registers to use.

Define code generation.


The code generation is the final phase of the compiler. It takes an

intermediate representation of the source program as the input and produces an


equivalent target program as the output.
18. What is input to code generator?
The input to code generator consists of the intermediate representation of the source program
produced by the front end together with information in the symbol table that is used to determine
the run time addresses of the data objects denoted by the names in the intermediate
representation.
PART B [Text Book:Alfred Aho,Ravi Sethi,V.Jeffery Ullman]
1. What are the issues in design of a code generator? Explain in detail (Page No:506 )
NOV/DEC 2007,

Nov/Dec 2011, April/May 2012 , MAY/JUNE 2007

APRIL/MAY 2005 APRIL/MAY 2008

19

2.

Define basic block. Write an algorithm to partition a sequence of


three-address statements into basic blocks.

(Page No:528 )
April/May 2011, April/May 2012

3.

Discuss about the run time storage management of a code generator .


No:427 )

4.

(Page

MAY/JUNE 2007

Explain in the DAG representation of the basic block with example. (Page. No. 598)
April/May 2012 APRIL/MAY 2005 APRIL/MAY 2008

5.

How to generate a code for a basic block from its dag representation? Explain.
(Page No:546 )

6.

April/May 2011, Nov/Dec 2011

Explain the structure-preserving transformations for basic blocks. (Page No:530 )


Nov/Dec 2011

7.

Explain the code generation algorithm in detail. (Page No.535)


April/May 2012 APRIL/MAY 2008 April/May 2011, Nov/Dec 2011

8. Write short notes on next-use information with suitable example. (Page No.534)
APRIL/MAY 2008

UNIT - V
PART A
1. How the quality of object program is measured?
The quality of an object program is measured by its Size or its running time. For large
computation running time is particularly important. For small computations size may be
as important or even more.
2. Explain the principle sources of optimization.
Code optimization techniques are generally applied after syntax analysis, usually both
before and during code generation. The techniques consist of detecting patterns in the
program and replacing these patterns by equivalent and more efficient constructs.
3.

What are the 3 areas of code optimization?


Local optimization
Loop optimization
Data flow analysis

4.

Define local optimization. APRIL/MAY 2011


The optimization performed within a block of code is called a local optimization.

5. Define local optimization. APRIL/MAY 2011


20

The optimization performed within a block of code is called a local optimization.


6. Define constant folding.
Deducing at compile time that the value of an expression is a constant and using
the constant instead is known as constant folding.
7. What do you mean by inner loops?
The most heavily traveled parts of a program, the inner loops, are an obvious target for
optimization. Typical loop optimizations are the removal of loop invariant computations
and the elimination of induction variables.
8. What is code motion? April/May 2004, May/June 2007, April/May-2008
Code motion is an important modification that decreases the amount of code in a loop.
9.

What are the properties of optimizing compilers? NOV/DEC 2007


Transformation must preserve the meaning of programs.
Transformation must, on the average, speed up the programs by a measurable amount
A Transformation must be worth the effort.

10.

Define Local transformation & Global Transformation.


A transformation of a program is called Local, if it can be performed by looking only at
the statements in a basic block otherwise it is called global.

11.

What is meant by Common Subexpressions?


An occurrence of an expression E is called a common subexpression, if E was previously
computed, and the values of variables in E have not changed since the previous
computation.

12.

What is meant by Dead Code? APRIL/MAY 2011


A variable is live at a point in a program if its value can be used subsequently otherwise,
it is dead at that point. The statement that computes values that never get used is known
Dead code or useless code.

13. What are the techniques used for loop optimization?


i) Code motion
ii) Induction variable elimination
iii) Reduction in strength
14.

What is meant by Reduction in strength?


Reduction in strength is the one which replaces an expensive operation by a cheaper one
such as a multiplication by an addition.
15. What is meant by loop invariant computation?
An expression that yields the same result independent of the number of times the loop is
executed is known as loop invariant computation.
16. Define data flow equations.
21

A typical equation has the form


Out[S] = gen[S] U (In[S] kill[S])
and can be read as, the information at the end of a statement is either generated within the
statement, or enters at the beginning and is not killed as control flows through the
statement. Such equations are called data flow equations.
17. When is a flow graph reducible? APRIL/MAY 2012
A flow graph is reducible if and only if we can partition the edges into two disjoint
groups often called the forward edges and back edges.
18. What is induction variable?
A variable is called an induction variable of a loop if every time the variable changes
values, it is incremented or decremented by some constant.

19. What is static memory allocation?


This allocation is done at the compile time and the data for the procedure can be in
advance known and the sizes are also known at compile time, so these memories can be
allocated statically.
20.

What is a cross complier? NOV/DEC 2007


A cross compiler is a compiler capable of creating executable code for a platform
other than the one on which the compiler is run. (ie). A compier may run on one machine
and produce target code for another machine.

PART B [Text Book:Alfred Aho,Ravi Sethi,V.Jeffery Ullman]


1. Explain the principle sources of code optimization in detail. (Page No:592 )
Nov/Dec 2011, May 2012 ,MAY/JUNE 2007
MAY/JUNE 2009 ,APRIL/MAY 2008 , APRIL/MAY 2005

2. Discuss about the following : April/May 2012


a.
b.
c.
d.

(Page No:592 )

i ) common sub expression elimination


ii) Copy propagation
ii) Dead code elimination
iii) Code motion

3. Write about Data Flow Analysis of structural programs. (Page No:611 )


22

Nov/Dec 2011, April/May 2012


4. Explain in detail optimization of basic blocks with example. ( Page No.598)
Nov/Dec 2011 MAY/JUNE 2009
5. Write an algorithm to construct the natural loop of a back edge.
(Page No:604 ) APRIL/MAY 2011
6.

Explain in detail about code-improving transformations.

(Page No:633 )

April/May 2011
7.

Write in detail about function-preserving transformations. (Page No:592 )


APRIL/MAY 2011

8.

Discuss briefly about Peephole Optimization. (Page No.554 )


April/May 2011 , Nov/Dec 2011, MAY/JUNE 2009,April/May 2012

23

You might also like