Run-Time Environments: Storage organization, Stack Allocation of Space, Access to Nonlocal Data on the Stack, Heap Management, Introduction to Garbage Collection, Introduction to Trace-Based Collection. Code Generation: Issues in the Design of a Code Generator, The Target Language, Addresses in the Target Code, Basic Blocks and Flow Graphs, Optimization of Basic Blocks, A Simple Code Generator, Peephole Optimization, Register Allocation and Assignment, Dynamic Programming Code-Generation
The purpose of types:
To define what the program should do.
e.g. read an array of integers and return a double
To guarantee that the program is meaningful.
that it does not add a string to an integer
that variables are declared before they are used
To document the programmer's intentions.
better than comments, which are not checked by the compiler
To optimize the use of hardware.
reserve the minimal amount of memory, but not more
use the most appropriate machine instructions.
The purpose of types:
To define what the program should do.
e.g. read an array of integers and return a double
To guarantee that the program is meaningful.
that it does not add a string to an integer
that variables are declared before they are used
To document the programmer's intentions.
better than comments, which are not checked by the compiler
To optimize the use of hardware.
reserve the minimal amount of memory, but not more
use the most appropriate machine instructions.
Machine-Independent Optimizations: The Principal Sources of Optimization, Introduction to Data-Flow Analysis, Foundations of Data-Flow Analysis, Constant Propagation, Partial Redundancy Elimination, Loops in Flow Graphs
Artificial Intelligence: Introduction, Typical Applications. State Space Search: Depth Bounded
DFS, Depth First Iterative Deepening. Heuristic Search: Heuristic Functions, Best First Search,
Hill Climbing, Variable Neighborhood Descent, Beam Search, Tabu Search. Optimal Search: A
*
algorithm, Iterative Deepening A*
, Recursive Best First Search, Pruning the CLOSED and OPEN
Lists
The topic focuses on different aspects of processor organization and architecture such as architecture models, register organization, instruction formats, addressing modes etc.
Machine-Independent Optimizations: The Principal Sources of Optimization, Introduction to Data-Flow Analysis, Foundations of Data-Flow Analysis, Constant Propagation, Partial Redundancy Elimination, Loops in Flow Graphs
Artificial Intelligence: Introduction, Typical Applications. State Space Search: Depth Bounded
DFS, Depth First Iterative Deepening. Heuristic Search: Heuristic Functions, Best First Search,
Hill Climbing, Variable Neighborhood Descent, Beam Search, Tabu Search. Optimal Search: A
*
algorithm, Iterative Deepening A*
, Recursive Best First Search, Pruning the CLOSED and OPEN
Lists
The topic focuses on different aspects of processor organization and architecture such as architecture models, register organization, instruction formats, addressing modes etc.
CNIT 127: Ch 8: Windows overflows (Part 2)Sam Bowne
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S17.shtml
A microprocessor is an electronic component that is used by a computer to do its work. It is a central processing unit on a single integrated circuit chip containing millions of very small components including transistors, resistors, and diodes that work together.
In this lecture we analyze key-values databases. At first we introduce key-value characteristics, advantages and disadvantages.
Then we analyze the major Key-Value data stores and finally we discuss about Dynamo DB.
In particular we consider how Dynamo DB: How is implemented
1. Motivation Background
2. Partitioning: Consistent Hashing
3. High Availability for writes: Vector Clocks
4. Handling temporary failures: Sloppy Quorum
5. Recovering from failures: Merkle Trees
6. Membership and failure detection: Gossip Protocol
Scaling ingest pipelines with high performance computing principles - Rajiv K...SignalFx
By Rajiv Kurian, software engineer at SignalFx.
At SignalFx, we deal with high-volume high-resolution data from our users. This requires a high performance ingest pipeline. Over time we’ve found that we needed to adapt architectural principles from specialized fields such as HPC to get beyond performance plateaus encountered with more generic approaches. Some key examples include:
* Write very simple single threaded code, instead of complex algorithms
* Parallelize by running multiple copies of simple single threaded code, instead of using concurrent algorithms
* Separate the data plane from the control plane, instead of slowing data for control
* Write compact, array-based data structures with minimal indirection, instead of pointer-based data structures and uncontrolled allocation
The Collections Framework (java.util)- Collections overview, Collection Interfaces, The Collection classes- Array List, Linked List, Hash Set, Tree Set, Priority Queue, Array Deque. Accessing a Collection via an Iterator, Using an Iterator, The For-Each alternative, Map Interfaces and Classes, Comparators, Collection algorithms, Arrays, The Legacy Classes and Interfaces- Dictionary, Hashtable ,Properties, Stack, Vector More Utility classes, String Tokenizer, Bit Set, Date, Calendar, Random, Formatter, Scanner
Exception handling - Fundamentals of exception handling, Exception types, Termination or resumptive models, Uncaught exceptions, using try and catch, multiple catch clauses, nested try statements, throw, throws and finally, built- in exceptions, creating own exception sub classes.
Multithreading- Differences between thread-based multitasking and process-based multitasking, Java thread model, creating threads, thread priorities, synchronizing threads, inter thread communication
Packages- Defining a Package, CLASSPATH, Access protection, importing packages. Interfaces- defining an interface, implementing interfaces, Nested interfaces, applying interfaces, variables in interfaces and extending interfaces.
Stream based I/O (java.io) – The Stream classes-Byte streams and Character streams, Reading console Input and Writing Console Output, File class, Reading and writing Files, Random access file operations, The Console class, Serialization, Enumerations, auto boxing, generics.
Object-Oriented Thinking- A way of viewing world – Agents and Communities, messages and methods, Responsibilities, Classes and Instances, Class Hierarchies- Inheritance, Method binding, Overriding and Exceptions, Summary of Object-Oriented concepts. Java buzzwords, An Overview of Java, Data types, Variables and Arrays, operators, expressions, control statements, Introducing classes, Methods and Classes, String handling.
Inheritance– Inheritance concept, Inheritance basics, Member access, Constructors, Creating Multilevel hierarchy, super uses, using final with inheritance, Polymorphism-ad hoc polymorphism, pure polymorphism, method overriding, abstract classes, Object class, forms of inheritance specialization, specification, construction, extension, limitation, combination, benefits of inheritance, costs of inheritance
JSP
The Anatomy of a JSP Page, JSP Processing, Declarations, Directives, Expressions, Code Snippets, implicit objects, Using Beans in JSP Pages, Using Cookies and session for session tracking, connecting to database in JSP.
Servlet
Common Gateway Interface (CGI), Lifecycle of a Servlet, deploying a servlet, The Servlet API, Reading Servlet parameters, Reading Initialization parameters, Handling Http Request & Responses, Using Cookies and Sessions, connecting to a database using JDBC.
Introduction to XML, Defining XML tags, their attributes and values, Document Type Definition, XML Schemas, Document Object Model, XHTML Parsing XML Data - DOM and SAX Parsers in java.
Introduction to PHP: Declaring variables, data types, arrays, strings, operators, expressions, control structures, functions, Reading data from web form controls like text boxes, radio buttons, lists etc., Handling File Uploads, Connecting to database (MySQL as reference), executing simple queries, handling results, Handling sessions and cookies File Handling in PHP: File operations like opening, closing, reading, writing, appending, deleting etc. on text and binary files, listing directories
Syntax-Directed Translation: Syntax-Directed Definitions, Evaluation Orders for SDD's, Applications of Syntax-Directed Translation, Syntax-Directed Translation Schemes, and Implementing L-Attributed SDD's. Intermediate-Code Generation: Variants of Syntax Trees, Three-Address Code, Types and Declarations, Type Checking, Control Flow, Back patching, Switch-Statements
Syntax Analysis: Introduction, Context-Free Grammars, Writing a Grammar, Top-Down Parsing, Bottom-Up Parsing, Introduction to LR Parsing: Simple LR, More Powerful LR Parsers, Using Ambiguous Grammars, Parser Generators.
Introduction: Language Processors, the structure of a compiler, the science of building a compiler, programming language basics.
Lexical Analysis: The Role of the Lexical Analyzer, Input Buffering, Recognition of Tokens, The Lexical-Analyzer Generator Lex, Finite Automata, From Regular Expressions to Automata, Design of a Lexical-Analyzer Generator, Optimization of DFA-Based Pattern Matchers
E-Mail Security: Pretty Good Privacy, S/MIME IP Security: IP Security overview, IP Security architecture, Authentication Header, Encapsulating security payload, Combining security associations, Internet Key Exchange Case Studies on Cryptography and security: Secure Multiparty Calculation, Virtual Elections, Single sign On, Secure Inter-branch Payment Transactions, Cross site Scripting Vulnerability.
Security Concepts: Introduction, The need for security, Security approaches, Principles of security, Types of Security attacks, Security services, Security Mechanisms, A model for Network Security Cryptography Concepts and Techniques: Introduction, plain text and cipher text, substitution techniques, transposition techniques, encryption and decryption, symmetric and asymmetric key cryptography, steganography, key range and key size, possible types of attacks
Working with Windows and DOS Systems: understanding file systems, exploring Microsoft File Structures, Examining NTFS disks, Understanding whole disk encryption, windows registry, Microsoft startup tasks, MS-DOS startup tasks, virtual machines
Current Forensic tools: evaluating computer forensic tool needs, computer forensics software tools, computer forensics hardware tools, validating and testing forensics software E-Mail Investigations: Exploring the role of e-mail in investigation, exploring the roles of the client and server in e-mail, investigating e-mail crimes and violations, understanding e-mail servers, using specialized e-mail forensic tools. Cell phone and mobile device forensics: Understanding mobile device forensics, understanding acquisition procedures for cell phones and mobile devices
More from Jyothishmathi Institute of Technology and Science Karimnagar (20)
The Power of a Glamping Go-To-Market Accelerator Plan.pptxRezStream
Unlock the secrets to success with our comprehensive 8-Step Glamping Accelerator Go-To-Market Plan! Watch our FREE webinar, where you'll receive expert guidance and invaluable insights on every aspect of launching and growing your glamping business.
4 DAYS MASAI MARA WILDEBEEST MIGRATION SAFARI TOUR PACKAGE KENYABush Troop Safari
Join our 4-day Masai Mara Wildebeest Migration Safari in Kenya. Witness the incredible wildebeest migration, enjoy exciting game drives, and stay in comfortable lodges. Get up close and personal with one of nature's most amazing exhibits! Book Your Safari Today at - https://bushtroop-safaris.com/
Discover Palmer, Puerto Rico, through an immersive cultural tour that unveils its rich history and vibrant traditions. Experience lively festivals, savor authentic cuisine, and explore local markets. Visit historical landmarks, museums, and stunning colonial architecture. Engage with friendly locals, enjoy live music, and hike scenic nature trails, all while participating in cultural workshops and discovering unique artisan crafts.
MC INTERNATIONALS | TRAVEL COMPANY IN JHANGAshBhatt4
Experience the world with MC Internationals travel and tourism. From foreign getways to cultural concentration, we tailor unforgettable journeys for every traveler. Let us turn your dream into reality and create lasting memories. Explore with us today. #TRAVEL,COMPANY #BEST,TRAVEL,COMPANY #VISIT,VISA #EMPLOYMENT,VISA #STUDY,VISA #HAJJ,AND,UMRAH
BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. BTW UK Visa Application Process, Uk Visa complete guide, Uk Visa fees, requirements and application process. Know all about uk visa and best way to apply for the uk visa. Get to know about the requirements that allows you for the faster visa appliaction. Get information in this PDF and simplyfy your visa process.
The Cherry Blossom season in Hunza begins in the second week of March and lasts until the end of April, varying with altitude. During this enchanting period, tourists from around the world flock to Hunza Valley to witness its transformation into a vibrant tapestry of white, pink, and green. The valley comes alive with cherry blossoms, creating a picturesque and mesmerizing landscape that captivates visitors.
About the Company:
The Cherry Blossom season in Hunza starts in the second week of March and extends until the end of April, depending on the altitude. During this enchanting period, tourists from around the globe travel to Hunza Valley to witness its transformation into a vibrant tapestry of white, pink, and green. The valley comes alive with cherry blossoms, creating a picturesque and mesmerizing landscape that captivates all who visit. For the best experience, join Hunza Adventure Tours, the top tour company in Pakistan, and immerse yourself in this breathtaking seasonal spectacle.
During the coldest months, Italy transforms into a winter wonderland, providing visitors with a very unique experience. From the Settimana Bianca ski event to the lively Carnevale celebrations, Italy's winter festivities provide something for everyone. Enjoy hot cocoa, eat hearty comfort foods, and buy during winter deals. Explore the country's rich cultural past by participating in Settimana Bianca, and Carnevale, sipping hot chocolate, shopping during winter deals, and indulging in winter comfort foods. Visit our website https://timeforsicily.com/ for more information.
How To Talk To a Live Person at American Airlinesflyn goo
This page by FlynGoo can become your ultimate guide to connecting with a live person at American Airlines. Have you ever felt lost in the automated maze of customer service menus? FlynGoo is here to rescue you from endless phone trees and automated responses. With just a click or a call to a specific number, we ensure you get the human touch you deserve. No more frustration, no more waiting on hold - we simplify the process, making your travel experience smoother and more enjoyable.
LUXURY TRAVEL THE ULTIMATE TOKYO EXPERIENCE FROM SINGAPORE.pdfDiper Tour
Get off on the most luxurious Tokyo itinerary from Singapore. Experience Tokyo’s sophisticated modernism and rich tradition with first-class travel, sumptuous lodging, fine food, and special tours. Savor the finest that this energetic city has to offer for an experience that will never be forgotten.
London Country Tours, the foremost travel partner offers customized Stonehenge tours from London coming with private tour guides and direct access to the inner circles. Visit: https://www.londoncountrytours.co.uk/tour/tours-to-stonehenge-oxford/
How To Change Name On Volaris Ticket.pdfnamechange763
How to change name on Volaris ticket? This is one of the most common questions asked by travelers flying with Volaris Airlines. The mentioned details can help you with your name rectification on the airline ticket. If you are still facing difficulties call the consolidation desk at +1-800-865-1848.
Its running cost is among the diverse vital aspects you must consider before buying an electric scooter. Calculate the cost of getting e-scooter charge for your regular usage to calculate its economic efficiency, similar to people who investigate the mileage of petrol or diesel-driven scooters.
Exploring Montreal's Artistic Heritage Top Art Galleries and Museums to VisitSpade & Palacio Tours
Montreal boasts a vibrant artistic heritage, showcased in its top art galleries and museums. From the expansive collections at the Montreal Museum of Fine Arts to the cutting-edge exhibits at the Musée d'art contemporain, discover the city's rich cultural landscape. Experience dynamic street art, indigenous works, and contemporary pieces, reflecting Montreal's diverse and innovative art scene.
Antarctica- Icy wilderness of extremes and wondertahreemzahra82
In this presentation, we delve into the captivating realm of Antarctica, Earth's southernmost continent. This icy wilderness stands as a testament to extremes, with record-breaking cold temperatures and vast expanses of pristine ice. Antarctica's landscape is dominated by towering glaciers, colossal icebergs, and expansive ice shelves. Yet, amidst this frozen expanse, a rich tapestry of unique wildlife thrives, including penguins, seals, and seabirds, all finely attuned to survive in this harsh environment. Beyond its natural wonders, Antarctica also serves as a vital hub for scientific exploration, providing invaluable insights into climate change and the Earth's history
Discover the wonders of the Wenatchee River with a variety of river tours in Monitor, WA. Whether you're seeking thrilling whitewater rafting, peaceful kayaking, family-friendly float trips, or scenic sunset cruises, there's something for everyone. Enjoy fishing, wildlife spotting, bird watching, and more in this beautiful natural setting, perfect for outdoor enthusiasts and families alike.
2. 2
Syllabus:
Run-Time Environments: Storage organization, Stack
Allocation of Space, Access to Nonlocal Data on the
Stack, Heap Management, Introduction to Garbage
Collection, Introduction to Trace-Based Collection. Code
Generation: Issues in the Design of a Code Generator,
The Target Language, Addresses in the Target Code,
Basic Blocks and Flow Graphs, Optimization of Basic
Blocks, A Simple Code Generator, Peephole
Optimization, Register Allocation and Assignment,
Dynamic Programming Code-Generation
4. Static vs. Dynamic Allocation
4
• Static: Compile time, Dynamic: Runtime allocation
• Many compilers use some combination of following
– Stack storage: for local variables, parameters and so on
– Heap storage: Data that may outlive the call to the procedure that created it
• Stack allocation is a valid allocation for procedures since procedure calls are nested
Storage Organization
5. Activation records
5
• Procedure calls and returns are usually managed by a run-time stack called
the control stack.
• Each live activation has an activation record (sometimes called a frame)
• The root of activation tree is at the bottom of the stack
• The current execution path specifies the content of the stack with the last
activation has record in the top of the stack.
Storage Organization
6. 6
UNIT 4 :Stack Allocation of Space
A General ActivationRecord
7. Activation Record
7
• Temporary values
• Local data
• A saved machine status
• An “access link”
• A control link
• Space for the return value of the called function
• The actual parameters used by the calling procedure
UNIT 4 :Stack Allocation of Space
9. Designing Calling Sequences
9
UNIT 4 : Access to Nonlocal Data
on the Stack
• Values communicated between caller and callee are generally placed at the
beginning of callee’s activation record
• Fixed-length items: are generally placed at the middle
• Items whose size may not be known early enough: are placed at the end of
activation record
• We must locate the top-of-stack pointer judiciously: a common approach is to have
it point to the end of fixed length fields.
10. Division of tasks between caller and callee
10
UNIT 4 : Access to Nonlocal Data
on the Stack
11. calling sequence
11
• The caller evaluates the actual parameters
• The caller stores a return address and the old value of top-sp into the
callee's activation record.
• The callee saves the register values and other status information.
• The callee initializes its local data and begins execution.
UNIT 4 : Access to Nonlocal Data
on the Stack
12. corresponding return sequence
12
• The callee places the return value next to the parameters
• Using information in the machine-status field, the callee restores top-sp
and other registers, and then branches to the return address that the
caller placed in the status field.
• Although top-sp has been decremented, the caller knows where the
return value is, relative to the current value of top-sp; the caller therefore
may use that value.
UNIT 4 : Access to Nonlocal Data
on the Stack
13. Access to dynamically allocated arrays
13
UNIT 4 : Access to Nonlocal Data
on the Stack
14. UNIT 4: HEAP MANGEMENT
HEAP ALLOCATION
14
•Variables local to a procedure are allocated and de-allocated only at runtime.
• Heap allocation is used to dynamically allocate memory to the variables and claim
it back when the variables are no more required.
•Except statically allocated memory area, both stack and heap memory can grow and
shrink dynamically and unexpectedly. Therefore, they cannot be provided with a
fixed amount of memory in the system.
16. 16
UNIT 4: HEAP MANGEMENT
HEAP ALLOCATION
•As shown in the image above, the text part of the code is allocated a fixed amount of
memory.
•Stack and heap memory are arranged at the extremes of total memory allocated to
the program.
•Both shrink and grow against each other.
•Parameter Passing
•The communication medium among procedures is known as parameter passing. The
values of the variables from a calling procedure are transferred to the called procedure
by some mechanism.
17. 17
•Before moving ahead, first go through some basic terminologies pertaining to
the values in a program.
•r-value
•The value of an expression is called its r-value. The value contained in a single
variable also becomes an r-value if it appears on the right-hand side of the
assignment operator. r-values can always be assigned to some other variable.
•l-value
•The location of memory (address) where an expression is stored is known as
the l-value of that expression. It always appears at the left hand side of an
assignment operator.
UNIT 4: HEAP MANGEMENT
HEAP ALLOCATION
18. 18
•For example:
•day = 1; week = day * 7; month = 1; year = month * 12;
•From this example, we understand that constant values like 1, 7, 12, and
•variables like day, week, month and year, all have r-values.
• Only variables have l-values as they also represent the memory location assigned to them.
•For example:
•7 = x + y;
•is an l-value error, as the constant 7 does not represent any memory location.
UNIT 4: HEAP MANGEMENT
HEAP ALLOCATION
19. UNIT 4 : Garbage collection
Garbage collection Definition
19
•Garbage collection (GC) is a dynamic approach to automatic memory
management and heap allocation that processes and identifies dead
memory blocks and reallocates storage for reuse.
•The primary purpose of garbage collection is to reduce memory
leaks.
•GC implementation requires three primary approaches, as follows:
•Mark-and-sweep - In process when memory runs out, the GC locates
all accessible memory and then reclaims available memory.
20. 20
UNIT 4 : Garbage collection
Garbage collection Definition
•Reference counting - Allocated objects contain a reference count of the referencing number.
•When the memory count is zero, the object is garbage and is then destroyed. The freed
memory returns to the memory heap.
•Copy collection - There are two memory partitions.
•If the first partition is full, the GC locates all accessible data structures and
copies them to the second partition, compacting memory after GC process
and allowing continuous free memory
.
21. UNIT 4: Introduction to Trace-Based
Collection
Trace-Based Collection Sub Heading
21
Instead of collecting garbage as it is created, trace-based collectors run
periodically to find unreachable objects and reclaim their space. Typically, we run
the
22. 22
.
•Trace-based collector whenever the free space is exhausted or its amount drops
below some threshold.
•We begin this section by introducing the simplest "mark-and-sweep" gar-bage
collection algorithm.
•We then describe the variety of trace-based algorithms in terms of four states that
chunks of memory can be put in.
•This section also contains a number of improvements on the basic algorithm,
including those in which object relocation is a part of the garbage-collection function
UNIT 4: Introduction to Trace-Based
Collection
Trace-Based Collection Sub Heading
23. UNIT 4: CODE GENERATIONNG
Introduction
23
• The final phase of a compiler is code generator
• It receives an intermediate representation (IR) with supplementary information in
symbol table
• Produces a semantically equivalent target program
• Code generator main tasks:
– Instruction selection
– Register allocation and assignment
– Instruction ordering
Front end Code optimizer
Code
Generator
24. Issues in the Design of Code Generator
24
UNIT 4: CODE GENERATIONNG
• The most important criterion is that it produces correct code
• Input to the code generator
– IR + Symbol table
– We assume front end produces low-level IR, i.e. values of names in it can be
directly manipulated by the machine instructions.
– Syntactic and semantic errors have been already detected
• The target program
– Common target architectures are: RISC, CISC and Stack based machines
– In this chapter we use a very simple RISC-like computer with addition of some
CISC-like addressing modes
25. complexity of mapping
25
UNIT 4: CODE GENERATIONNG
• the level of the IR
• the nature of the instruction-set architecture
• the desired quality of the generated code.
x=y+z
LD R0, y
ADD R0, R0, z
ST x, R0
a=b+c
d=a+e
LD R0, b
ADD R0, R0, c
ST a, R0
LD R0, a
ADD R0, R0, e
ST d, R0
26. Introduction
26
UNIT 4: Register allocation
• Two sub problems
– Register allocation: selecting the set of variables that will reside in registers at
each point in the program
– Resister assignment: selecting specific register that a variable reside in
• Complications imposed by the hardware architecture
– Example: register pairs for multiplication and division
t=a+b
t=t*c
T=t/d
t=a+b
t=t+c
T=t/d
L R1, a
A R1, b
M R0, c
D R0, d
ST R1, t
L R0, a
A R0, b
M R0, c
SRDA R0, 32
D R0, d
ST R1, t
27. Addressing Modes
27
UNIT 4: Addressing in target code
• variable name: x
• indexed address: a(r) like LD R1, a(R2) means R1=contents ( a+ contents(R2))
• integer indexed by a register : like LD R1, 100(R2)
• Indirect addressing mode: *r and *100(r)
• immediate constant addressing mode: like LD R1, #100
28. conditional-jump three-address instruction
28
UNIT 4: conditional-jump three-address
instruction
If x<y goto L
LD R1, x // R1 = x
LD R2, y // R2 = y
SUB R1, R1, R2 // R1 = R1 - R2
BLTZ R1, M // i f R1 < 0 jump t o M
29. Basic blocks and flow graphs
29
UNIT 4: Basic blocks and flow
graphs
• Partition the intermediate code into basic blocks
– The flow of control can only enter the basic block through the first instruction
in the block. That is, there are no jumps into the middle of the block.
– Control will leave the block without halting or branching, except possibly at
the last instruction in the block.
• The basic blocks become the nodes of a flow graph
30. rules for finding leaders
30
UNIT 4: CODE GENERATIONNG
• The first three-address instruction in the intermediate code is a leader.
• Any instruction that is the target of a conditional or unconditional jump is a leader
• Any instruction that immediately follows a conditional or unconditional jump is a
leader.
31. Intermediate code to set a 10*10 matrix to an
identity matrix
31
UNIT 4: CODE GENERATIONNG
33. liveness and next-use information
33
UNIT 4: CODE GENERATIONNG
• We wish to determine for each three address statement x=y+z what the next uses of x, y and z are.
• Algorithm:
– Attach to statement i the information currently found in the symbol table regarding the next
use and liveness of x, y, and z.
– In the symbol table, set x to "not live" and "no next use.“
– In the symbol table, set y and z to "live" and the next uses of y and z to i.
34. DAG representation of basic blocks
34
UNIT 4: CODE GENERATIONNG
• There is a node in the DAG for each of the initial values of the variables appearing in the basic
block.
• There is a node N associated with each statement s within the block. The children of N are
those nodes corresponding to statements that are the last definitions, prior to s, of the
operands used by s.
• Node N is labeled by the operator applied at s, and also attached to N is the list of variables for
which it is the last definition within the block.
• Certain nodes are designated output nodes. These are the nodes whose variables are live on
exit from the block.
35. Code improving transformations
35
UNIT 4: CODE GENERATIONNG
• We can eliminate local common subexpressions, that is, instructions that compute
a value that has already been computed.
• We can eliminate dead code, that is, instructions that compute a value that is
never used.
• We can reorder statements that do not depend on one another; such reordering
may reduce the time a temporary value needs to be preserved in a register.
• We can apply algebraic laws to reorder operands of three-address instructions,
and sometimes t hereby simplify t he computation.
38. array accesses in a DAG
38
UNIT 4: CODE GENERATIONNG
• An assignment from an array, like x = a [i], is represented by creating a
node with operator =[] and two children representing the initial value of
the array, a0 in this case, and the index i. Variable x becomes a label of this
new node.
• An assignment to an array, like a [j] = y, is represented by a new node with
operator []= and three children representing a0, j and y. There is no
variable labeling this node. What is different is that the creation of this
node kills all currently constructed nodes whose value depends on a0. A
node that has been killed cannot receive any more labels; that is, it cannot
become a common subexpression.
39. DAG for a sequence of array assignments
39
UNIT 4: CODE GENERATIONNG
40. Rules for reconstructing the basic block from a DAG
40
UNIT 4: CODE GENERATIONNG
• The order of instructions must respect the order of nodes in the DAG. That is, we
cannot compute a node's value until we have computed a value for each of its
children.
• Assignments to an array must follow all previous assignments to, or evaluations
from, the same array, according to the order of these instructions in the original
basic block.
• Evaluations of array elements must follow any previous (according to the original
block) assignments to the same array. The only permutation allowed is that two
evaluations from the same array may be done in either order, as long as neither
crosses over an assignment to that array.
• Any use of a variable must follow all previous (according to the original block)
procedure calls or indirect assignments through a pointer.
• Any procedure call or indirect assignment through a pointer must follow all
previous (according to the original block) evaluations of any variable.
41. principal uses of registers
41
UNIT 4: CODE GENERATIONNG
• In most machine architectures, some or all of the operands of an
operation must be in registers in order to perform the operation.
• Registers make good temporaries - places to hold the result of a
subexpression while a larger expression is being evaluated, or more
generally, a place to hold a variable that is used only within a single
basic block.
• Registers are often used to help with run-time storage management,
for example, to manage the run-time stack, including the
maintenance of stack pointers and possibly the top elements of the
stack itself.
42. Descriptors for data structure
42
UNIT 4: CODE GENERATIONNG
• For each available register, a register descriptor keeps track of the
variable names whose current value is in that register. Since we
shall use only those registers that are available for local use within a
basic block, we assume that initially, all register descriptors are
empty. As the code generation progresses, each register will hold
the value of zero or more names.
• For each program variable, an address descriptor keeps track of the
location or locations where the current value of that variable can be
found. The location might be a register, a memory address, a stack
location, or some set of more than one of these. The information
can be stored in the symbol-table entry for that variable name.
43. Machine Instructions for Operations
43
UNIT 4: CODE GENERATIONNG
• Use getReg(x = y + z) to select registers for x, y, and z. Call these Rx, Ry and Rz.
• If y is not in Ry (according to the register descriptor for Ry), then issue an
instruction LD Ry, y', where y' is one of the memory locations for y (according to
the address descriptor for y).
• Similarly, if z is not in Rz, issue and instruction LD Rz, z', where z' is a location for x .
• Issue the instruction ADD Rx , Ry, Rz.
44. Rules for updating the register and address
descriptors
44
UNIT 4: CODE GENERATIONNG
• For the instruction LD R, x
– Change the register descriptor for register R so it holds only x.
– Change the address descriptor for x by adding register R as an
additional location.
• For the instruction ST x, R, change the address descriptor for x to
include its own memory location.
• For an operation such as ADD Rx, Ry, Rz implementing a three-address
instruction x = y + x
– Change the register descriptor for Rx so that it holds only x.
– Change the address descriptor for x so that its only location is Rx. Note
that the memory location for x is not now in the address descriptor for
x.
– Remove Rx from the address descriptor of any variable other than x.
• When we process a copy statement x = y, after generating the load for
y into register Ry, if needed, and after managing descriptors as for all
load statements (per rule I):
– Add x to the register descriptor for Ry.
– Change the address descriptor for x so that its only location is Ry .
45. Instructions generated and the changes in
the register and address descriptors
45
UNIT 4: CODE GENERATIONNG
46. Rules for picking register Ry for y
46
UNIT 4: CODE GENERATIONNG
• If y is currently in a register, pick a register already containing y as Ry. Do not issue a
machine instruction to load this register, as none is needed.
• If y is not in a register, but there is a register that is currently empty, pick one such register
as Ry.
• The difficult case occurs when y is not in a register, and there is no register that is
currently empty. We need to pick one of the allowable registers anyway, and we need to
make it safe to reuse.
47. Possibilities for value of R
47
UNIT 4: CODE GENERATIONNG
• If the address descriptor for v says that v is somewhere besides R, then we are OK.
• If v is x, the value being computed by instruction I, and x is not also one of the
other operands of instruction I (z in this example), then we are OK. The reason is
that in this case, we know this value of x is never again going to be used, so we are
free to ignore it.
• Otherwise, if v is not used later (that is, after the instruction I, there are no further
uses of v, and if v is live on exit from the block, then v is recomputed within the
block), then we are OK.
• If we are not OK by one of the first two cases, then we need to generate the store
instruction ST v, R to place a copy of v in its own memory location. This operation
is called a spill.
48. Selection of the register Rx
48
UNIT 4: CODE GENERATIONNG
• Since a new value of x is being computed, a register that holds only x is always an
acceptable choice for Rx.
• If y is not used after instruction I, and Ry holds only y after being loaded, Ry can
also be used as Rx. A similar option holds regarding z and Rx.
49. 49
UNIT 4: PEEPHOLE OPTIMIZATIONS
Characteristic of peephole optimizations
• Redundant-instruction elimination
• Flow-of-control optimizations
• Algebraic simplifications
• Use of machine idioms
50. 50
UNIT 4: CODE GENERATIONNG
Redundant-instruction elimination
• LD a, R0
ST R0, a
• if debug == 1 goto L1
goto L2
L I : print debugging information
L2:
51. Flow-of-control optimizations
51
UNIT 4: CODE GENERATIONNG
goto L1
...
Ll: goto L2
Can be replaced
by:
goto L2
...
Ll: goto L2
if a<b goto L1
...
Ll: goto L2
Can be replaced by:
if a<b goto L2
...
Ll: goto L2
53. Register Allocation and Assignment
53
UNIT 4: CODE GENERATIONNG
• Global Register Allocation
• Usage Counts
• Register Assignment for Outer Loops
• Register Allocation by Graph Coloring
54. Global register allocation
54
UNIT 4: Global register allocation
• Previously explained algorithm does local (block based) register allocation
• This resulted that all live variables be stored at the end of block
• To save some of these stores and their corresponding loads, we might arrange to
assign registers to frequently used variables and keep these registers consistent
across block boundaries (globally)
• Some options are:
– Keep values of variables used in loops inside registers
– Use graph coloring approach for more globally allocation
55. Usage counts
55
UNIT 4: CODE GENERATIONNG
• For the loops we can approximate the saving by register allocation as:
– Sum over all blocks (B) in a loop (L)
– For each uses of x before any definition in the block we add one unit of saving
– If x is live on exit from B and is assigned a value in B, then we ass 2 units of
saving
56. Flow graph of an inner loop
56
UNIT 4: CODE GENERATIONNG
57. 57
UNIT 4: CODE GENERATIONNG
Code sequence using global register
assignment
58. Register allocation by Graph coloring
58
UNIT 4: Register allocation
• Two passes are used
– Target-machine instructions are selected as though there are an infinite
number of symbolic registers
– Assign physical registers to symbolic ones
• Create a register-interference graph
• Nodes are symbolic registers and edges connects two nodes if one is live
at a point where the other is defined.
• For example in the previous example an edge connects a and d in the
graph
• Use a graph coloring algorithm to assign registers.
61. Dynamic Programming Algorithm
61
UNIT 4: CODE GENERATIONNG
• Compute bottom-up for each node n of the expression tree T an
array C of costs, in which the ith component C[i] is the optimal cost
of computing the subtree S rooted at n into a register, assuming i
registers are available for the computation, for
• Traverse T, using the cost vectors to determine which subtrees of T
must be computed into memory.
• Traverse each tree using the cost vectors and associated
instructions to generate the final target code. The code for the
subtrees computed into memory locations is generated first.
r
i
1
63. Minimum cost of evaluating the root
registers available
63
UNIT 4: CODE GENERATIONNG
• Compute the left subtree with two registers available into
register R0, compute the right subtree with one register
available into register R1, and use the instruction ADD R0, R0,
R1 to compute the root. This sequence has cost 2+5+1=8.
• Compute the right subtree with two registers available into R l
, compute the left subtree with one register available into R0,
and use the instruction ADD R0, R0, R1. This sequence has
cost 4+2+1=7.
• Compute the right subtree into memory location M, compute
the left subtree with two registers available into register RO,
and use the instruction ADD R0, R0, M. This sequence has cost
5+2+1=8.