Intermediate Code. Intermediate Code Generation
|
|
|
- Piers Spencer
- 9 years ago
- Views:
Transcription
1 Intermediate Code CS SJAllan Intermediate Code 1 Intermediate Code Generation The front end of a compiler translates a source program into an intermediate representation Details of the back end are left to the back end Benefits include: Retargeting Machine-independent code optimization Parser Static Checker Intermediate Code Generator Intermediate Code Code Generator CS SJAllan Intermediate Code 2 1
2 Intermediate Languages Consider the code: a := b * -c + b * -c A syntax tree graphically depicts code Postfix notation is a linearized representation of a syntax tree: a b c uminus * b c uminus * + assign Syntax Tree CS SJAllan Intermediate Code 3 Three-Address Code Three-address code is a sequence of statements of the general form x := y op z x, y, and z are names, constants, or compiler-generated temporaries op can be any operator Three-address code is a linearized representation of a syntax tree Explicit names correspond to interior nodes of the graph CS SJAllan Intermediate Code 4 2
3 Three-Address Code Example t1 := -c t2 := b * t1 t3 := -c t4 := b * t3 t5 := t2 + t4 a := t5 CS SJAllan Intermediate Code 5 Types of Three-Address Statements 1. Assignment statements: a. x := y op z, where op is a binary operator b. x := op y, where op is a unary operator 2. Copy statements a. x := y 3. The unconditional jumps: a. goto L 4. Conditional jumps: a. if x relop y goto L 5. param x and call p, n and return y relating to procedure calls 6. Assignments: a. x := y[i] b. x[i] := y 7. Address and pointer assignments: a. x := &y, x := *y, and *x = y CS SJAllan Intermediate Code 6 3
4 Generating Three-Address Code Temporary names are made up for the interior nodes of a syntax tree The synthesized attribute S.code represents the code for the assignment S The nonterminal E has attributes: E.place is the name that holds the value of E E.code is a sequence of three-address statements evaluating E The function newtemp returns a sequence of distinct names The function newlabel returns a sequence of distinct labels CS SJAllan Intermediate Code 7 Assignments S id := E E E 1 + E 2 E E 1 * E 2 S.code := E.code gen(id.place ':=' E.place) E.code := E 1.code E 2.code gen(e.place ':=' E 1.place '+' E 2.place) E.code := E 1.code E 2.code gen(e.place ':=' E 1.place '*' E 2.place) CS SJAllan Intermediate Code 8 4
5 Assignments E -E 1 E (E 1 ) E id E.place := E 1.place; E.code := E 1.code E.place := id.place; E.code := E.code := E 1.code gen(e.place ':=' 'uminus' E 1.place) CS SJAllan Intermediate Code 9 While Statement S.begin: E.code if E.place = 0 goto S.after S1.code goto S.begin S.after:... CS SJAllan Intermediate Code 10 5
6 Example: S while E do S 1 S.begin := newlabel; S.after := newlabel; S.code := gen(s.begin ':') E.code gen('if' E.place '=' '0' 'goto' S.after) S 1.code gen('goto' S.begin) gen(s.after ':') CS SJAllan Intermediate Code 11 Quadruples A quadruple is a record structure with four fields: op, arg 1, arg 2, and result The op field contains an internal code for an operator Statements with unary operators do not use arg 2 Operators like param use neither arg 2 nor result The target label for conditional and unconditional jumps are in result The contents of fields arg 1, arg 2, and result are typically pointers to symbol table entries If so, temporaries must be entered into the symbol table as they are created Obviously, constants need to be handled differently CS SJAllan Intermediate Code 12 6
7 Quadruples Example op arg1 arg2 result (0) uminus c t 1 (1) * b t 1 t 2 (2) uminus c t 3 (3) * b t 3 t 4 (4) + t 2 t 4 t 5 (5) := t 5 a CS SJAllan Intermediate Code 13 Triples Triples refer to a temporary value by the position of the statement that computes it Statements can be represented by a record with only three fields: op, arg 1, and arg 2 Avoids the need to enter temporary names into the symbol table Contents of arg 1 and arg 2 : Pointer into symbol table (for programmer defined names) Pointer into triple structure (for temporaries) Of course, still need to handle constants differently CS SJAllan Intermediate Code 14 7
8 Triples Example op arg1 arg2 (0) uminus c (1) * b (0) (2) uminus c (3) * b (2) (4) + (1) (3) (5) assign a (4) CS SJAllan Intermediate Code 15 Declarations A symbol table entry is created for every declared name Information includes name, type, relative address of storage, etc. Relative address consists of an offset: Offset is from the base of the static data area for globals Offset is from the field for local data in an activation record for locals to procedures Types are assigned attributes type and width (size) Becomes more complex if we need to deal with nested procedures or records CS SJAllan Intermediate Code 16 8
9 Declarations P D D D ; D D id : T T integer T real T array[num] of T 1 T T 1 offset := 0 enter(id.name, T.type, offset); offset := offset + T.width T.type := integer; T.width := 4 T.type := real T.width := 8 T.type := array(num, T 1.type); T.width := num * T 1.width T.type := pointer(t 1.type); T.width := 4 CS SJAllan Intermediate Code 17 Translating Assignments S id := E E E 1 + E 2 E E 1 * E 2 p := lookup(id.name); if p!= NULL then emit(p ':=' E.place) else error emit(e.place ':=' E 1.place '+' E 2.place) emit(e.place ':=' E 1.place '*' E 2.place) CS SJAllan Intermediate Code 18 9
10 Translating Assignments E -E 1 E (E 1 ) E id E.place := E 1.place emit(e.place ':=' 'uminus' E 1.place) p := lookup(id.name); if p!= NULL then E.place := p else error CS SJAllan Intermediate Code 19 Addressing Array Elements The location of the i th element of array A is: base + (i low) * w w is the width of each element low is the lower bound of the subscript base is the relative address of A[low] The expression for the location can be rewritten as: i * w + (base low * w) The subexpression in parentheses is a constant That subexpression can be evaluated at compile time CS SJAllan Intermediate Code 20 10
11 Two-Dimensional Arrays Stored in row-major form The address of A[i 1,i 2 ] is: base+((i 1 low 1 ) n 2 +i 2 low 2 ) w Where n 2 = high 2 low We can rewrite the above as: ((i 1 n 2 )+i 2 ) w+(base ((low 1 n 2 )+low 2 ) w) The last term can be computed at compile time CS SJAllan Intermediate Code 21 Type Conversions There are multiple types (e.g. integer, real) for variables and constants Compiler may need to reject certain mixed-type operations At times, a compiler needs to general type conversion instructions An attribute E.type holds the type of an expression CS SJAllan Intermediate Code 22 11
12 Semantic Action: E E 1 + E 2 if E 1.type = integer and E 2.type = integer then begin emit(e.place ':=' E 1.place 'int+' E 2.place); E.type := integer end else if E 1.type = real and E2.type = real then else if E 1.type = integer and E 2.type = real then begin u := newtemp; emit(u ':=' 'inttoreal' E 1.place); emit(e.place ':=' u 'real+' E 2.place); E.type := real end else if E 1.type = real and E 2.type = integer then else E.type := type_error; CS SJAllan Intermediate Code 23 Example: x := y + i * j In this example, x and y have type real i and j have type integer The intermediate code is shown below: t 1 := i int* j t 3 := inttoreal t 1 t 2 := y real+ t 3 x := t 2 CS SJAllan Intermediate Code 24 12
13 Boolean Expressions Boolean expressions compute logical values Often used with flow-of-control statements Methods of translating boolean expression: Numerical methods: True is represented as 1 and false is represented as 0 Nonzero values are considered true and zero values are considered false Flow-of-control methods: Represent the value of a boolean by the position reached in a program Often not necessary to evaluate entire expression CS SJAllan Intermediate Code 25 Numerical Representation Expressions evaluated left to right using 1 to denote true and 0 to donate false Example: a or b and not c t 1 := not c t 2 := b and t 1 t 3 := a or t 2 Another example: a < b 100: if a < b goto : t : = 0 102: goto : t : = 1 104: CS SJAllan Intermediate Code 26 13
14 Numerical Representation E E 1 or E 2 E E 1 and E 2 E not E 1 E (E 1 ) emit(e.place ':=' E 1.place 'or E 2.place) emit(e.place ':=' E 1.place 'and E 2.place) emit(e.place ':=' 'not' E 1.place) E.place := E1.place; CS SJAllan Intermediate Code 27 Numerical Representation E id 1 relop id 2 E true E false emit(e.place ':=' '1') emit(e.place ':=' '0') emit('if' id 1.place relop.op id 2.place 'goto' nextstat+3); emit(e.place ':=' '0'); emit('goto' nextstat+2); emit(e.place ':=' '1'); CS SJAllan Intermediate Code 28 14
15 Example: a<b or c<d and e<f 100: if a < b goto : t 1 := 0 102: goto : t 1 := 1 104: if c < d goto : t 2 := 0 106: goto : t 2 := 1 108: if e < f goto : t 3 := 0 110: goto : t 3 := 1 112: t 4 := t 2 and t 3 113: t 5 := t 1 or t 4 slt t 1, a, b slt t 2, c, d slt t 3, e, f and t 4, t 2, t 3 or t 5, t 1, t 4 MIPS code CS SJAllan Intermediate Code 29 Flow-of-Control The function newlabel will return a new symbolic label each time it is called Each boolean expression will have two new attributes: E.true is the label to which control flows if E is true E.false is the label to which control flows if E is false Attribute S.next of a statement S: Inherited attribute whose value is the label attached to the first instruction to be executed after the code for S Used to avoid jumps to jumps CS SJAllan Intermediate Code 30 15
16 Flow-of-Control S if E then S 1 E.true := newlabel; E.false := S.next; S 1.next := S.next; S.code := E.code gen(e.true ':') S 1.code CS SJAllan Intermediate Code 31 Flow-of-Control S if E then S 1 else S 2 E.true := newlabel; E.false := newlabel; S 1.next := S.next; S 2.next := S.next; S.code := E.code gen(e.true ':') S 1.code gen('goto' S.next) gen(e.false ':') S 2.code CS SJAllan Intermediate Code 32 16
17 Flow-of-Control S while E do S 1 S.begin := newlabel; E.true := newlabel; E.false := S.next; S1.next := S.begin; S.code := gen(s.begin ':') E.code gen(e.true ':') S 1.code gen('goto' S.begin) CS SJAllan Intermediate Code 33 Boolean Expressions Revisited E E 1 or E 2 E E 1 and E 2 E 1.true := E.true; E 1.false := newlabel; E 2.true := E.true; E 2.false := E.false; E.code := E 1.code gen(e 1.false ':') E 2.code E 1.true := newlabel; E 1.false := E.false; E 2.true := E.true; E 2.false := E.false; E.code := E 1.code gen(e 1.true ':') E 2.code CS SJAllan Intermediate Code 34 17
18 Boolean Expressions Revisited E not E 1 E (E 1 ) E id 1 relop id 2 E true E false E 1.true := E.false; E 1.false := E.true; E.code := E 1.code E 1.true := E.true; E 1.false := E.false; E.code := E 1.code E.code := gen('if' id.place relop.op id 2.place 'goto' E.true) gen('goto' E.false) E.code := gen('goto' E.true) E.code := gen('goto' E.false) CS SJAllan Intermediate Code 35 Revisited: a<b or c<d and e<f if a < b goto Ltrue goto L1 L1: if c < d goto L2 goto Lfalse L2: if e < f goto Ltrue goto Lfalse The code generated is inefficient What is the problem? Why was the code generated that way? CS SJAllan Intermediate Code 36 18
19 Another Example while a < b do if c < d then x := y + z else x := y - z L1: if a < b goto L2 goto Lnext L2: if c < d goto L3 goto L4 L3: t 1 := y + z x:= t 1 goto L1 L4: t 2 := y z x := t 2 goto L1 Lnext: CS SJAllan Intermediate Code 37 Mixed-Mode Expressions Boolean expressions often have arithmetic subexpressions, e.g. (a + b) < c If false has the value 0 and true has the value 1 arithmetic expressions can have boolean subexpressions Example: (a < b) + (b < a) has value 0 if a and b are equal and 1 otherwise Some operators may require both operands to be boolean Other operators may take both types of arguments, including mixed arguments CS SJAllan Intermediate Code 38 19
20 Revisited: E E 1 + E 2 E.type := arith; if E1.type = arith and E2.type = arith then begin /* normal arithmetic add */ E.code := E 1.code E 2.code gen(e.place ':=' E 1.place '+' E 2.place) end else if E1.type := arith and E2.type = bool then begin E2.place := newtemp; E2.true := newlabel; E2.flase := newlabel; E.code := E1.code E2.code gen(e2.true ':' E.place ':=' E1.place + 1) gen('goto' nextstat+1) gen(e2.false ':' E.place ':=' E1.place) else if CS SJAllan Intermediate Code 39 Case (Switch) Statements Implemented as: Sequence of if statements Jump table CS SJAllan Intermediate Code 40 20
21 Labels and Goto Statements The definition of a label is treated as a declaration of the label Labels are typically entered into the symbol table Entry is created the first time the label is seen This may be before the definition of the label if it is the target of any forward goto When a compiler encounters a goto statement: It must ensure that there is exactly one appropriate label in the current scope If so, it must generate the appropriate code; otherwise, an error should be indicated CS SJAllan Intermediate Code 41 Procedures The procedure is an extremely important, very commonly used construct Imperative that a compiler generates good calls and returns Much of the support for procedure calls is provided by a run-time support package S call id ( Elist) Elist Elist, E Elist E CS SJAllan Intermediate Code 42 21
22 Calling Sequence Calling sequences can differ for different implementations of the same language Certain actions typically take place: Space must be allocated for the activation record of the called procedure The passed arguments must be evaluated and made available to the called procedure Environment pointers must be established to enable the called procedure to access appropriate data The state of the calling procedure must be saved The return address must be stored in a known place An appropriate jump statement must be generated CS SJAllan Intermediate Code 43 Return Statements Several actions must also take place when a procedure terminates If the called procedure is a function, the result must be stored in a known place The activation record of the calling procedure must be restored A jump to the calling procedure's return address must be generated No exact division of run-time tasks between the calling and called procedure CS SJAllan Intermediate Code 44 22
23 Pass by Reference The param statements can be used as placeholders for arguments The called procedure is passed a pointer to the first of the param statements Any argument can by obtained by using the proper offset from the base pointer Arguments other than simple names: First generate three-address statements needed to evaluate these arguments Follow this by a list of param three-address statements CS SJAllan Intermediate Code 45 Using a Queue S call id ( Elist ) Elist Elist, E Elist E for each item p on queue do emit('param' p); emit('call' id.place) push E.place to queue initialize queue to contain E The code to evaluate arguments is emitted first, followed by param statements and then a call If desired, could augment rules to count the number of parameters CS SJAllan Intermediate Code 46 23
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Compiler Design July 2004
irst Prev Next Last CS432/CSL 728: Compiler Design July 2004 S. Arun-Kumar [email protected] Department of Computer Science and ngineering I. I.. Delhi, Hauz Khas, New Delhi 110 016. July 30, 2004
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
Algorithms and Data Structures
Algorithms and Data Structures Part 2: Data Structures PD Dr. rer. nat. habil. Ralf-Peter Mundani Computation in Engineering (CiE) Summer Term 2016 Overview general linked lists stacks queues trees 2 2
A Grammar for the C- Programming Language (Version S16) March 12, 2016
A Grammar for the C- Programming Language (Version S16) 1 Introduction March 12, 2016 This is a grammar for this semester s C- programming language. This language is very similar to C and has a lot of
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
The previous chapter provided a definition of the semantics of a programming
Chapter 7 TRANSLATIONAL SEMANTICS The previous chapter provided a definition of the semantics of a programming language in terms of the programming language itself. The primary example was based on a Lisp
Chapter 5. Selection 5-1
Chapter 5 Selection 5-1 Selection (Decision) The second control logic structure is selection: Selection Choosing between two or more alternative actions. Selection statements alter the sequential flow
The following themes form the major topics of this chapter: The terms and concepts related to trees (Section 5.2).
CHAPTER 5 The Tree Data Model There are many situations in which information has a hierarchical or nested structure like that found in family trees or organization charts. The abstraction that models hierarchical
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
DATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Tutorial on C Language Programming
Tutorial on C Language Programming Teodor Rus [email protected] The University of Iowa, Department of Computer Science Introduction to System Software p.1/64 Tutorial on C programming C program structure:
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 20: Stack Frames 7 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Where We Are Source code if (b == 0) a = b; Low-level IR code
AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS
TKK Reports in Information and Computer Science Espoo 2009 TKK-ICS-R26 AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS Kari Kähkönen ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
The Cool Reference Manual
The Cool Reference Manual Contents 1 Introduction 3 2 Getting Started 3 3 Classes 4 3.1 Features.............................................. 4 3.2 Inheritance............................................
X86-64 Architecture Guide
X86-64 Architecture Guide For the code-generation project, we shall expose you to a simplified version of the x86-64 platform. Example Consider the following Decaf program: class Program { int foo(int
GENERIC and GIMPLE: A New Tree Representation for Entire Functions
GENERIC and GIMPLE: A New Tree Representation for Entire Functions Jason Merrill Red Hat, Inc. [email protected] 1 Abstract The tree SSA project requires a tree representation of functions for the optimizers
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
Module 2 Stacks and Queues: Abstract Data Types
Module 2 Stacks and Queues: Abstract Data Types A stack is one of the most important and useful non-primitive linear data structure in computer science. It is an ordered collection of items into which
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.
Code Generation I Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.7 Stack Machines A simple evaluation model No variables
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 28, 2010 G. Lipari (Scuola Superiore Sant Anna) Introduction
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
University of Twente. A simulation of the Java Virtual Machine using graph grammars
University of Twente Department of Computer Science A simulation of the Java Virtual Machine using graph grammars Master of Science thesis M. R. Arends, November 2003 A simulation of the Java Virtual Machine
Functional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
An Introduction to Assembly Programming with the ARM 32-bit Processor Family
An Introduction to Assembly Programming with the ARM 32-bit Processor Family G. Agosta Politecnico di Milano December 3, 2011 Contents 1 Introduction 1 1.1 Prerequisites............................. 2
CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
Chapter 3: Restricted Structures Page 1
Chapter 3: Restricted Structures Page 1 1 2 3 4 5 6 7 8 9 10 Restricted Structures Chapter 3 Overview Of Restricted Structures The two most commonly used restricted structures are Stack and Queue Both
Instruction Set Architecture
Instruction Set Architecture Consider x := y+z. (x, y, z are memory variables) 1-address instructions 2-address instructions LOAD y (r :=y) ADD y,z (y := y+z) ADD z (r:=r+z) MOVE x,y (x := y) STORE x (x:=r)
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical
Lecture 9. Semantic Analysis Scoping and Symbol Table
Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax
10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
Language Processing Systems
Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to [email protected] Course materials at www.u-aizu.ac.jp/~hamada/education.html
Selection Statements
Chapter 5 Selection Statements 1 Statements So far, we ve used return statements and expression ess statements. e ts. Most of C s remaining statements fall into three categories: Selection statements:
Programming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
PES Institute of Technology-BSC QUESTION BANK
PES Institute of Technology-BSC Faculty: Mrs. R.Bharathi CS35: Data Structures Using C QUESTION BANK UNIT I -BASIC CONCEPTS 1. What is an ADT? Briefly explain the categories that classify the functions
Machine-Code Generation for Functions
Machine-Code Generation for Functions Cosmin Oancea [email protected] University of Copenhagen December 2012 Structure of a Compiler Programme text Lexical analysis Binary machine code Symbol sequence
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming 1 2 Foreword First of all, this book isn t really for dummies. I wrote it for myself and other kids who are on the team. Everything
Chapter 2: Elements of Java
Chapter 2: Elements of Java Basic components of a Java program Primitive data types Arithmetic expressions Type casting. The String type (introduction) Basic I/O statements Importing packages. 1 Introduction
Inside the Java Virtual Machine
CS1Bh Practical 2 Inside the Java Virtual Machine This is an individual practical exercise which requires you to submit some files electronically. A system which measures software similarity will be used
Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.
Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java
Keywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void
1. Explain C tokens Tokens are basic building blocks of a C program. A token is the smallest element of a C program that is meaningful to the compiler. The C compiler recognizes the following kinds of
Outline. Conditional Statements. Logical Data in C. Logical Expressions. Relational Examples. Relational Operators
Conditional Statements For computer to make decisions, must be able to test CONDITIONS IF it is raining THEN I will not go outside IF Count is not zero THEN the Average is Sum divided by Count Conditions
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Semantic Analysis Project Tuesday, Feb 16 DUE: Monday, Mar 1 Extend your compiler
Chapter 3 Operators and Control Flow
Chapter 3 Operators and Control Flow I n this chapter, you will learn about operators, control flow statements, and the C# preprocessor. Operators provide syntax for performing different calculations or
Stack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
A single register, called the accumulator, stores the. operand before the operation, and stores the result. Add y # add y from memory to the acc
Other architectures Example. Accumulator-based machines A single register, called the accumulator, stores the operand before the operation, and stores the result after the operation. Load x # into acc
Common Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
Pixy: A Static Analysis Tool for Detecting Web Application Vulnerabilities (Technical Report)
Pixy: A Static Analysis Tool for Detecting Web Application Vulnerabilities (Technical Report) Nenad Jovanovic, Christopher Kruegel, Engin Kirda Secure Systems Lab Vienna University of Technology Abstract
Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!
Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)
JAVA - QUICK GUIDE. Java SE is freely available from the link Download Java. So you download a version based on your operating system.
http://www.tutorialspoint.com/java/java_quick_guide.htm JAVA - QUICK GUIDE Copyright tutorialspoint.com What is Java? Java is: Object Oriented Platform independent: Simple Secure Architectural- neutral
Compilers I - Chapter 4: Generating Better Code
Compilers I - Chapter 4: Generating Better Code Lecturers: Paul Kelly ([email protected]) Office: room 304, William Penney Building Naranker Dulay ([email protected]) Materials: Office: room 562 Textbook
7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)
High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming
Stacks. Linear data structures
Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations
Syntaktická analýza. Ján Šturc. Zima 208
Syntaktická analýza Ján Šturc Zima 208 Position of a Parser in the Compiler Model 2 The parser The task of the parser is to check syntax The syntax-directed translation stage in the compiler s front-end
Automatic Test Data Synthesis using UML Sequence Diagrams
Vol. 09, No. 2, March April 2010 Automatic Test Data Synthesis using UML Sequence Diagrams Ashalatha Nayak and Debasis Samanta School of Information Technology Indian Institute of Technology, Kharagpur
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)
Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking
WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math
Textbook Correlation WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math Following Directions Unit FIRST QUARTER AND SECOND QUARTER Logic Unit
TATJA: A Test Automation Tool for Java Applets
TATJA: A Test Automation Tool for Java Applets Matthew Xuereb 19, Sanctuary Street, San Ġwann [email protected] Abstract Although there are some very good tools to test Web Applications, such tools neglect
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004. Instruction
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004 Name: Instruction There are two parts in this test. The first part contains 50 questions worth 80 points. The second part constitutes 20 points
Chapter 7: Functional Programming Languages
Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language
Quiz 4 Solutions EECS 211: FUNDAMENTALS OF COMPUTER PROGRAMMING II. 1 Q u i z 4 S o l u t i o n s
Quiz 4 Solutions Q1: What value does function mystery return when called with a value of 4? int mystery ( int number ) { if ( number
Logic in Computer Science: Logic Gates
Logic in Computer Science: Logic Gates Lila Kari The University of Western Ontario Logic in Computer Science: Logic Gates CS2209, Applied Logic for Computer Science 1 / 49 Logic and bit operations Computers
Compiler Construction
Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation
Relational Databases
Relational Databases Jan Chomicki University at Buffalo Jan Chomicki () Relational databases 1 / 18 Relational data model Domain domain: predefined set of atomic values: integers, strings,... every attribute
University of Toronto Department of Electrical and Computer Engineering. Midterm Examination. CSC467 Compilers and Interpreters Fall Semester, 2005
University of Toronto Department of Electrical and Computer Engineering Midterm Examination CSC467 Compilers and Interpreters Fall Semester, 2005 Time and date: TBA Location: TBA Print your name and ID
A TOOL FOR DATA STRUCTURE VISUALIZATION AND USER-DEFINED ALGORITHM ANIMATION
A TOOL FOR DATA STRUCTURE VISUALIZATION AND USER-DEFINED ALGORITHM ANIMATION Tao Chen 1, Tarek Sobh 2 Abstract -- In this paper, a software application that features the visualization of commonly used
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
COMPUTER SCIENCE TRIPOS
CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
Translating C code to MIPS
Translating C code to MIPS why do it C is relatively simple, close to the machine C can act as pseudocode for assembler program gives some insight into what compiler needs to do what's under the hood do
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
I PUC - Computer Science. Practical s Syllabus. Contents
I PUC - Computer Science Practical s Syllabus Contents Topics 1 Overview Of a Computer 1.1 Introduction 1.2 Functional Components of a computer (Working of each unit) 1.3 Evolution Of Computers 1.4 Generations
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
Lecture Outline. Stack machines The MIPS assembly language. Code Generation (I)
Lecture Outline Code Generation (I) Stack machines The MIPS assembl language Adapted from Lectures b Profs. Ale Aiken and George Necula (UCB) A simple source language Stack- machine implementation of the
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
Lecture Notes on Linear Search
Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 29, 2013 1 Introduction One of the fundamental and recurring problems in computer science is
Integrating Formal Models into the Programming Languages Course
Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,
Introduction to Computers and Programming. Testing
Introduction to Computers and Programming Prof. I. K. Lundqvist Lecture 13 April 16 2004 Testing Goals of Testing Classification Test Coverage Test Technique Blackbox vs Whitebox Real bugs and software
Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2
Lecture Handout Computer Architecture Lecture No. 2 Reading Material Vincent P. Heuring&Harry F. Jordan Chapter 2,Chapter3 Computer Systems Design and Architecture 2.1, 2.2, 3.2 Summary 1) A taxonomy of
C++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
