Programming Language Implementation
|
|
- Walter Webb
- 5 years ago
- Views:
Transcription
1 A Practical Introduction to Programming Language Implementation 2014: Week 12 Optimisation College of Information Science and Engineering Ritsumeikan University 1
2 review of last week s topics why primitives are not scalable operating system calls platform library calls dynamic lookup and calling of functions by name foreign function interfaces without a declaration some functions cannot be called representation of primitive types representation of function signature calling a function safely conversion of data representations across function call boundary project: improve numbers/identifiers in your language 2
3 this week s topics the purpose of optimisation faster programs smaller programs compile-time techniques partial evaluation constant folding run-time techniques cached variable lookup project add constant folding to your language 3
4 purpose of optimisation op ti mize verb [ trans. ] make the best or most effective use of (a situation, opportunity, or resource) : to optimise viewing conditions the microscope should be correctly adjusted. Computing : rearrange or rewrite data to improve efficiency of retrieval or processing. DERIVATIVES optimisation noun optimiser noun ORIGIN early 19th cent.: from Latin optimus best + -IZE. 4
5 purpose of optimisation when running a program, where does the time go? executing instructions waiting for data how can we make a program faster? reduce the number of instructions executed read (or write) less data sometimes these two are related eliminating instructions eliminates the need to read operands and write results eliminating data eliminates the need for instructions that process that data we can also make the program smaller uses fewer resources spends less time waiting for instructions 5
6 optimisation techniques inter-procedural optimisations consider the program as a whole; e.g: global optimisations consider an entire function at a time; e.g: local optimisations consider a single statement/expression with linear control flow peephole optimisations of machine code consider sequences of generated machine instructions machine code optimisations consider the binary during linking and loading run-time optimisations consider the dynamic behaviour of the program 6
7 inter-procedural optimisations consider the whole program, transform it for performance/size e.g: passing arguments in registers (instead of on the stack) to static (local, unexported) functions only e.g: keep static (unexported) global variables in registers e.g: inline simple functions into their caller(s) int foo(int a, int b) { return a + b;... int p = foo(x, y); int p = x + y; 7
8 global optimisations consider an entire function e.g: keep local variables in registers (instead of in the stack frame) e.g: loop-invariant code motion out of loops int j =?, n = 0;... for (i = 0; i < 100; ++i) n += array[i + j * 2]; int tmp = j * 2; for (i = 0; i < 100; ++i) n += array[i + tmp]; 8
9 e.g: dead code elimination more global optimisations if (1) dosomething(); else dontsomething(); dosomething(); e.g: redundant store elimination int a = 1;... /* no references to a in this code */ a = 2;... /* no references to a in this code */ a = 3; int a = 3; e.g: variables that are never read can be deleted entirely but not any initialising expressions that have side-effects 9
10 local optimisations consider single expressions or sequences of linear control flow e.g: common sub-expression elimination int ab, h;... h = sqrt(ab * ab + ab * ab); int tmp = ab * ab; h = sqrt(tmp + tmp); 10
11 more local optimisations e.g: strength reduction of operators /* cycle counts for Intel Core 2 (Pentium 4) */ /* assuming that i is in a register and is */ /* a 32-bit signed integer... */ i = i / 2; /* 40 (80) cycles */ i = i >> 1; /* 1 (2) cycle(s) */ i *= 5; i += i << 2; etc... Instruction mul 11 add 1 sal 2 Core 2 Cycles 11
12 peephole optimisation consider sequences of generated machine instructions e.g: replace instruction sequences with shorter/faster equivalents usually by pattern matching; e.g., given an optimiser rule : movl X, ra; movl Y, rb; add rb, ra movl X, ra; addl Y, ra int add(int a, int b) { return a + b; movl 4(%esp), %eax movl 8(%esp), %ecx addl %ecx, %eax ret movl 4(%esp), %eax addl 8(%esp), %eax ret # eax := a # ecx := b # eax += ecx # return eax # eax := a # eax := b # return eax 12
13 machine code optimisation consider the executable in memory, during linking e.g: use short branch instructions for small displacements F80A cmpl $10, %eax F jne L C030 addl $48, %eax 000C L1: F80A cmpl $10, %eax jnes L C030 addl $48, %eax 0008 L1:... 13
14 run-time optimisation consider the dynamic behaviour of the program memoise the results of expensive operations #include <stdio.h> int f(int n) /* must be a pure function! */ { int r= n < 2? 1 : 1 + f(n - 1) + f(n - 2); return r; int main() { for (int i= 0; i < 40; ++i) printf("%i %i\n", i, f(i)); return 0; (try this with one, and then two, levels of memoisation) 14
15 partial evaluation partial evaluation is a compile-time technique that interprets the program (or parts of it) symbolically and replaces the computation with its results, thereby eliminating the computation from the executable program a simple (but powerful) example is constant folding find arithmetic operations involving constants perform the operation at compile time replace the operation with the constant result if we do this bottom-up then complex constant expressions reduce to a single constant 15
16 constant folding + * this can be applied in an interpreter during (e.g.) function definition 16
17 constant folding Token *fold(token *expr) { if (LIST == expr->type) { expr = fold_list(expr); /* cf. eval_list() */ Token *op = expr->list.value; if ( op->type == IDENTIFIER && list_length(expr) == 3 && nth(1, expr)->type == INTEGER && nth(2, expr)->type == INTEGER) { int a = nth(1, expr)->integer; int b = nth(2, expr)->integer; if (op == symbol_plus) return make_integer(a + b); if (op == symbol_minus) return make_integer(a - b); /* etc... */ return expr; 17
18 run-time optimisations for interpreters techniques focus on reducing interpretation overhead short-circuiting commonly-computed control caching commonly-computed values expensive run-time computation in our language: variable lookup linear search of association list (the more globals, the more expensive it is to access them) caching is a kind of memoisation memoise (cache) the last few variable lookup results return results from the cache if possible but, variable lookup is not a pure function defining a new variable can change the function s result the cache must be invalidated when a variable is defined 18
19 cached variable lookup lookup(env, key) = while (env) { if (env->head->key == key) return env->head; env = env->next; return 0; cached lookup(env, key) = index = hash(env, key) if (cache[index].key == key && cache[index].env == env) return cache[index].value; value = lookup(env, key); cache[index].key = key; cache[index].env = env; return cache[index].value = value; 19
20 project either add constant folding to your language or add cached variable lookups to your language 20
21 project: cached lookup #define CACHE_SIZE 11 struct { Token *key; Token *value; cache[cache_size]; Token *lookup(token *environment, Token *key) { /* try to find the key in locals */ /* try to find the key in the cache */ /* find the key in the globals */ /* update the cache */ return value; 21
22 project: cached lookup Token *lookup(token *environment, Token *key) { /* try to find the key in locals */ while (environment && environment!= globals) { Token *binding = environment->list.value; if (binding->association.key == key) { return binding; environment = environment->list.next; if (!environment) return 0; /* try to find the key in the cache */ unsigned long hash = (unsigned long)key % CACHE_SIZE; if (cache[hash].key == key) return cache[hash].value; 22
23 project: cached lookup /* find the key in the globals */ Token *value = 0; while (environment && environment->type == LIST) { Token *binding = environment->list.value; if (binding->association.key == key) { value= binding; break; environment = environment->list.next; /* update the cache */ cache[hash].key= key; cache[hash].value= value; return value; 23
24 project: constant folding Token *fold(token *expr) { if (expr && LIST == expr->type) { expr = fold_list(expr); if (3 == list_length(expr)) { Token *op = expr->list.value; Token *a = expr->list.next->list.value; Token *b = expr->list.next->list.next->list.value; if (INTEGER == a->type && INTEGER == b->type) { int l = a->integer, r = b->integer; if (op == id_plus) return make_integer(l + r); if (op == id_minus) return make_integer(l - r); if (op == id_star) return make_integer(l * r); if (op == id_slash) return make_integer(l / r); /* etc... */ return expr; 24
25 project: constant folding Token *fold_list(token *expr) { if (!expr LIST!= expr->type) return expr; return make_list(fold(expr->list.value), fold_list(expr->list.next)); Token *id_plus = 0; Token *id_minus = 0; /* etc... */ int main(int argc, char **argv) { globals = extend(globals, id_plus = intern("+"), make_primitive(primitive_add)); globals = extend(globals, id_minus = intern("-"), make_primitive(primitive_sub)); /* etc... */ 25
26 glossary bottom-up processing a tree structure in order from the leaves upwards towards the root caching a run-time optimisation that saves the results of an expensive computation, keyed by its input parameters, in a data structure. Subsequent computations of the same results probe the structure for the same keys and, if present, the cached result is used thereby avoiding the expensive computation. Caches differ from memoised results in that they can be used with non-pure functions and invalidated if any conditions that affect the result of the computation are changed. common sub-expression part of an expression that occurs more than once in some larger expression. This can be generalised to any computation that is repeated in a context in which each repetition produces the same result. All but the first occurrence can be eliminated by caching the result of the first occurrence in a temporary variable and using the value directly in subsequent occurrences of the sub-expression. 26
27 constant folding evaluating constant expressions at compile time and substituting the constant result as a literal in place of the original expression. dead code code that can never be reached. global optimisations optimisations that involve the analysis and manipulation of an entire function. inline copying the body of a function into the code that calls it, thereby eliminating the function call and the need to pass parameters and return a result. inter-procedural optimisations optimisations that involve the analysis and manipulation of the entire program. invalidate clear the contents of a cache because the conditions under which its mapping are valid have changed. 27
28 local optimisations optimisations that involve a single expression or series of statements that have strictly linear control flow. In other words these optimisations rely on the code having no conditional instructions, branches or function calls. loop-invariant code motion moving statements and expressions out of a loop body if their value is the same for each iteration of the loop. Their values can be computed once, on initial entry to the loop region, and then reused directly for each iteration. machine code optimisations optimisations that are performed on the binary code during or after it is loaded into memory and linked with libraries. memoise remember the value of a pure function so that its value can be returned immediately whenever the function is called with the same arguments. 28
29 partial evaluation symbolic evaluation of part or all of a program to convert computation into literals for any variables that can be fixed for the entire duration of the program s execution. pattern matching detecting patterns in some text, e.g., the assembly language statements of a compiled program. When used for peephole optimisation the patterns typically include parameters that match anything and which are bound to the actual items found in the program (literals, symbols, register names, etc.); these variables can be referred to within the replacement sequence, and will be expanded to their original values in the input text. peephole optimisations optimisations that replace a contiguous sequence of instructions with another equivalent sequence that is either faster, shorter, or both. pure function a function whose value depends only on the arguments to the function and which generates no side effects. 29
30 redundant store a store of a value into a variable that will not be used before being overwritten by another value. run-time optimisations optimisations that are performed while the program is running and which can take advantage of information that is not known at compile time such as actual computed values, or their types, or the dynamic behaviour of the program. short-circuiting jumping directly to a destination address of a computed jump or function call, based on the parameters used to compute the destination and a previously-cached address computed from them. strength reduction replacing an expensive operator with an equivalent operator (or sequence of operators) that have much lower cost. For example, multiplying by 5 is equivalent to adding four time a value to itself. 30
CS61 Section Solutions 3
CS61 Section Solutions 3 (Week of 10/1-10/5) 1. Assembly Operand Specifiers 2. Condition Codes 3. Jumps 4. Control Flow Loops 5. Procedure Calls 1. Assembly Operand Specifiers Q1 Operand Value %eax 0x104
More informationCompiler construction in4303 lecture 9
Compiler construction in4303 lecture 9 Code generation Chapter 4.2.5, 4.2.7, 4.2.11 4.3 Overview Code generation for basic blocks instruction selection:[burs] register allocation: graph coloring instruction
More informationPractical Malware Analysis
Practical Malware Analysis Ch 4: A Crash Course in x86 Disassembly Revised 1-16-7 Basic Techniques Basic static analysis Looks at malware from the outside Basic dynamic analysis Only shows you how the
More informationGroup B Assignment 8. Title of Assignment: Problem Definition: Code optimization using DAG Perquisite: Lex, Yacc, Compiler Construction
Group B Assignment 8 Att (2) Perm(3) Oral(5) Total(10) Sign Title of Assignment: Code optimization using DAG. 8.1.1 Problem Definition: Code optimization using DAG. 8.1.2 Perquisite: Lex, Yacc, Compiler
More informationCPS104 Recitation: Assembly Programming
CPS104 Recitation: Assembly Programming Alexandru Duțu 1 Facts OS kernel and embedded software engineers use assembly for some parts of their code some OSes had their entire GUIs written in assembly in
More informationCIS 341 Midterm February 28, Name (printed): Pennkey (login id): SOLUTIONS
CIS 341 Midterm February 28, 2013 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing this
More informationComp 204: Computer Systems and Their Implementation. Lecture 22: Code Generation and Optimisation
Comp 204: Computer Systems and Their Implementation Lecture 22: Code Generation and Optimisation 1 Today Code generation Three address code Code optimisation Techniques Classification of optimisations
More informationCredits and Disclaimers
Credits and Disclaimers 1 The examples and discussion in the following slides have been adapted from a variety of sources, including: Chapter 3 of Computer Systems 2 nd Edition by Bryant and O'Hallaron
More informationIntroduction to Code Optimization. Lecture 36: Local Optimization. Basic Blocks. Basic-Block Example
Lecture 36: Local Optimization [Adapted from notes by R. Bodik and G. Necula] Introduction to Code Optimization Code optimization is the usual term, but is grossly misnamed, since code produced by optimizers
More informationProcedure Calls. Young W. Lim Mon. Young W. Lim Procedure Calls Mon 1 / 29
Procedure Calls Young W. Lim 2017-08-21 Mon Young W. Lim Procedure Calls 2017-08-21 Mon 1 / 29 Outline 1 Introduction Based on Stack Background Transferring Control Register Usage Conventions Procedure
More informationCompiler Optimization
Compiler Optimization The compiler translates programs written in a high-level language to assembly language code Assembly language code is translated to object code by an assembler Object code modules
More informationProject 5: Extensions to the MiniJava Compiler
Project 5: Extensions to the MiniJava Compiler Due: Friday, March 7, 12:30 pm. In this assignment you will make two required extensions to the target code generator. You will also make an extension to
More informationIntroduction to Computer Systems. Exam 1. February 22, Model Solution fp
15-213 Introduction to Computer Systems Exam 1 February 22, 2005 Name: Andrew User ID: Recitation Section: Model Solution fp This is an open-book exam. Notes are permitted, but not computers. Write your
More information8 Optimisation. 8.1 Introduction to Optimisation
8 8.1 Introduction to 8.1 Introduction refers to compiler strategies which result in generated object code which is more efficient, either in terms of speed or memory use. can be performed in two locations:
More informationCredits and Disclaimers
Credits and Disclaimers 1 The examples and discussion in the following slides have been adapted from a variety of sources, including: Chapter 3 of Computer Systems 2 nd Edition by Bryant and O'Hallaron
More informationType checking. Jianguo Lu. November 27, slides adapted from Sean Treichler and Alex Aiken s. Jianguo Lu November 27, / 39
Type checking Jianguo Lu November 27, 2014 slides adapted from Sean Treichler and Alex Aiken s Jianguo Lu November 27, 2014 1 / 39 Outline 1 Language translation 2 Type checking 3 optimization Jianguo
More informationEECE.3170: Microprocessor Systems Design I Summer 2017 Homework 4 Solution
1. (40 points) Write the following subroutine in x86 assembly: Recall that: int f(int v1, int v2, int v3) { int x = v1 + v2; urn (x + v3) * (x v3); Subroutine arguments are passed on the stack, and can
More informationCOMPUTER ORGANIZATION & ARCHITECTURE
COMPUTER ORGANIZATION & ARCHITECTURE Instructions Sets Architecture Lesson 5a 1 What are Instruction Sets The complete collection of instructions that are understood by a CPU Can be considered as a functional
More informationAssembly Language: IA-32 Instructions
Assembly Language: IA-32 Instructions 1 Goals of this Lecture Help you learn how to: Manipulate data of various sizes Leverage more sophisticated addressing modes Use condition codes and jumps to change
More informationCSCI 2121 Computer Organization and Assembly Language PRACTICE QUESTION BANK
CSCI 2121 Computer Organization and Assembly Language PRACTICE QUESTION BANK Question 1: Choose the most appropriate answer 1. In which of the following gates the output is 1 if and only if all the inputs
More informationAssignment 11: functions, calling conventions, and the stack
Assignment 11: functions, calling conventions, and the stack ECEN 4553 & 5013, CSCI 4555 & 5525 Prof. Jeremy G. Siek December 5, 2008 The goal of this week s assignment is to remove function definitions
More informationSecond Part of the Course
CSC 2400: Computer Systems Towards the Hardware 1 Second Part of the Course Toward the hardware High-level language (C) assembly language machine language (IA-32) 2 High-Level Language g Make programming
More information4) C = 96 * B 5) 1 and 3 only 6) 2 and 4 only
Instructions: The following questions use the AT&T (GNU) syntax for x86-32 assembly code, as in the course notes. Submit your answers to these questions to the Curator as OQ05 by the posted due date and
More informationCompiler Construction D7011E
Compiler Construction D7011E Lecture 8: Introduction to code generation Viktor Leijon Slides largely by Johan Nordlander with material generously provided by Mark P. Jones. 1 What is a Compiler? Compilers
More informationadministrivia today start assembly probably won t finish all these slides Assignment 4 due tomorrow any questions?
administrivia today start assembly probably won t finish all these slides Assignment 4 due tomorrow any questions? exam on Wednesday today s material not on the exam 1 Assembly Assembly is programming
More informationCNIT 127: Exploit Development. Ch 1: Before you begin. Updated
CNIT 127: Exploit Development Ch 1: Before you begin Updated 1-14-16 Basic Concepts Vulnerability A flaw in a system that allows an attacker to do something the designer did not intend, such as Denial
More informationThe Hardware/Software Interface CSE351 Spring 2013
The Hardware/Software Interface CSE351 Spring 2013 x86 Programming II 2 Today s Topics: control flow Condition codes Conditional and unconditional branches Loops 3 Conditionals and Control Flow A conditional
More informationCS241 Computer Organization Spring 2015 IA
CS241 Computer Organization Spring 2015 IA-32 2-10 2015 Outline! Review HW#3 and Quiz#1! More on Assembly (IA32) move instruction (mov) memory address computation arithmetic & logic instructions (add,
More informationInstruction Set Architecture
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture Randal E. Bryant Carnegie Mellon University http://csapp.cs.cmu.edu CS:APP Instruction Set Architecture Assembly Language View! Processor
More informationFunction Calls COS 217. Reading: Chapter 4 of Programming From the Ground Up (available online from the course Web site)
Function Calls COS 217 Reading: Chapter 4 of Programming From the Ground Up (available online from the course Web site) 1 Goals of Today s Lecture Finishing introduction to assembly language o EFLAGS register
More information7. Optimization! Prof. O. Nierstrasz! Lecture notes by Marcus Denker!
7. Optimization! Prof. O. Nierstrasz! Lecture notes by Marcus Denker! Roadmap > Introduction! > Optimizations in the Back-end! > The Optimizer! > SSA Optimizations! > Advanced Optimizations! 2 Literature!
More informationInstruction Set Architecture
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture Randal E. Bryant Carnegie Mellon University http://csapp.cs.cmu.edu CS:APP Instruction Set Architecture Assembly Language View Processor
More informationTour of common optimizations
Tour of common optimizations Simple example foo(z) { x := 3 + 6; y := x 5 return z * y } Simple example foo(z) { x := 3 + 6; y := x 5; return z * y } x:=9; Applying Constant Folding Simple example foo(z)
More informationLecture 3 Local Optimizations, Intro to SSA
Lecture 3 Local Optimizations, Intro to SSA I. Basic blocks & Flow graphs II. Abstraction 1: DAG III. Abstraction 2: Value numbering IV. Intro to SSA ALSU 8.4-8.5, 6.2.4 Phillip B. Gibbons 15-745: Local
More informationParsing and Pattern Recognition
Topics in IT 1 Parsing and Pattern Recognition Week 10 Lexical analysis College of Information Science and Engineering Ritsumeikan University 1 this week mid-term evaluation review lexical analysis its
More informationCS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2016 Lecture 12
CS24: INTRODUCTION TO COMPUTING SYSTEMS Spring 2016 Lecture 12 CS24 MIDTERM Midterm format: 6 hour overall time limit, multiple sittings (If you are focused on midterm, clock should be running.) Open book
More informationChapter 4 Processor Architecture: Y86 (Sections 4.1 & 4.3) with material from Dr. Bin Ren, College of William & Mary
Chapter 4 Processor Architecture: Y86 (Sections 4.1 & 4.3) with material from Dr. Bin Ren, College of William & Mary 1 Outline Introduction to assembly programing Introduction to Y86 Y86 instructions,
More informationHow Software Executes
How Software Executes CS-576 Systems Security Instructor: Georgios Portokalidis Overview Introduction Anatomy of a program Basic assembly Anatomy of function calls (and returns) Memory Safety Programming
More informationCompiler Construction SMD163. Understanding Optimization: Optimization is not Magic: Goals of Optimization: Lecture 11: Introduction to optimization
Compiler Construction SMD163 Understanding Optimization: Lecture 11: Introduction to optimization Viktor Leijon & Peter Jonsson with slides by Johan Nordlander Contains material generously provided by
More informationWinter Compiler Construction T11 Activation records + Introduction to x86 assembly. Today. Tips for PA4. Today:
Winter 2006-2007 Compiler Construction T11 Activation records + Introduction to x86 assembly Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University Today ic IC Language Lexical Analysis
More informationECE 486/586. Computer Architecture. Lecture # 7
ECE 486/586 Computer Architecture Lecture # 7 Spring 2015 Portland State University Lecture Topics Instruction Set Principles Instruction Encoding Role of Compilers The MIPS Architecture Reference: Appendix
More informationPrinciples of Compiler Design
Principles of Compiler Design Intermediate Representation Compiler Lexical Analysis Syntax Analysis Semantic Analysis Source Program Token stream Abstract Syntax tree Unambiguous Program representation
More informationCODE GENERATION Monday, May 31, 2010
CODE GENERATION memory management returned value actual parameters commonly placed in registers (when possible) optional control link optional access link saved machine status local data temporaries A.R.
More informationCS 31: Intro to Systems ISAs and Assembly. Kevin Webb Swarthmore College February 9, 2016
CS 31: Intro to Systems ISAs and Assembly Kevin Webb Swarthmore College February 9, 2016 Reading Quiz Overview How to directly interact with hardware Instruction set architecture (ISA) Interface between
More informationWhat is a Compiler? Compiler Construction SMD163. Why Translation is Needed: Know your Target: Lecture 8: Introduction to code generation
Compiler Construction SMD163 Lecture 8: Introduction to code generation Viktor Leijon & Peter Jonsson with slides by Johan Nordlander Contains material generously provided by Mark P. Jones What is a Compiler?
More informationCS 31: Intro to Systems ISAs and Assembly. Kevin Webb Swarthmore College September 25, 2018
CS 31: Intro to Systems ISAs and Assembly Kevin Webb Swarthmore College September 25, 2018 Overview How to directly interact with hardware Instruction set architecture (ISA) Interface between programmer
More informationCSE2421 FINAL EXAM SPRING Name KEY. Instructions: Signature
CSE2421 FINAL EXAM SPRING 2013 Name KEY Instructions: This is a closed-book, closed-notes, closed-neighbor exam. Only a writing utensil is needed for this exam. No calculators allowed. If you need to go
More informationWhen you add a number to a pointer, that number is added, but first it is multiplied by the sizeof the type the pointer points to.
Refresher When you add a number to a pointer, that number is added, but first it is multiplied by the sizeof the type the pointer points to. i.e. char *ptr1 = malloc(1); ptr1 + 1; // adds 1 to pointer
More informationMachine-Level Programming II: Control and Arithmetic
Machine-Level Programming II: Control and Arithmetic CSCI 2400: Computer Architecture Instructor: David Ferry Slides adapted from Bryant & O Hallaron s slides 1 Today Complete addressing mode, address
More informationHow Software Executes
How Software Executes CS-576 Systems Security Instructor: Georgios Portokalidis Overview Introduction Anatomy of a program Basic assembly Anatomy of function calls (and returns) Memory Safety Intel x86
More informationSystem Programming and Computer Architecture (Fall 2009)
System Programming and Computer Architecture (Fall 2009) Recitation 2 October 8 th, 2009 Zaheer Chothia Email: zchothia@student.ethz.ch Web: http://n.ethz.ch/~zchothia/ Topics for Today Classroom Exercise
More informationInstruction Set Architecture
CISC 360 Instruction Set Architecture Michela Taufer October 9, 2008 Powerpoint Lecture Notes for Computer Systems: A Programmer's Perspective, R. Bryant and D. O'Hallaron, Prentice Hall, 2003 Chapter
More informationCISC 360 Instruction Set Architecture
CISC 360 Instruction Set Architecture Michela Taufer October 9, 2008 Powerpoint Lecture Notes for Computer Systems: A Programmer's Perspective, R. Bryant and D. O'Hallaron, Prentice Hall, 2003 Chapter
More informationIntroduction to Computer Systems. Exam 1. February 22, This is an open-book exam. Notes are permitted, but not computers.
15-213 Introduction to Computer Systems Exam 1 February 22, 2005 Name: Andrew User ID: Recitation Section: This is an open-book exam. Notes are permitted, but not computers. Write your answer legibly in
More informationMachine Language CS 3330 Samira Khan
Machine Language CS 3330 Samira Khan University of Virginia Feb 2, 2017 AGENDA Logistics Review of Abstractions Machine Language 2 Logistics Feedback Not clear Hard to hear Use microphone Good feedback
More informationProcess Layout and Function Calls
Process Layout and Function Calls CS 6 Spring 07 / 8 Process Layout in Memory Stack grows towards decreasing addresses. is initialized at run-time. Heap grow towards increasing addresses. is initialized
More informationCOMPILER DESIGN - CODE OPTIMIZATION
COMPILER DESIGN - CODE OPTIMIZATION http://www.tutorialspoint.com/compiler_design/compiler_design_code_optimization.htm Copyright tutorialspoint.com Optimization is a program transformation technique,
More informationThe Software Stack: From Assembly Language to Machine Code
COMP 506 Rice University Spring 2018 The Software Stack: From Assembly Language to Machine Code source code IR Front End Optimizer Back End IR target code Somewhere Out Here Copyright 2018, Keith D. Cooper
More informationCredits and Disclaimers
Credits and Disclaimers 1 The examples and discussion in the following slides have been adapted from a variety of sources, including: Chapter 3 of Computer Systems 3 nd Edition by Bryant and O'Hallaron
More informationCSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs
CSC 2400: Computer Systems Towards the Hardware: Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32)
More informationAssembly Programmer s View Lecture 4A Machine-Level Programming I: Introduction
Assembly Programmer s View Lecture 4A Machine-Level Programming I: Introduction E I P CPU isters Condition Codes Addresses Data Instructions Memory Object Code Program Data OS Data Topics Assembly Programmer
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationCS 31: Intro to Systems ISAs and Assembly. Martin Gagné Swarthmore College February 7, 2017
CS 31: Intro to Systems ISAs and Assembly Martin Gagné Swarthmore College February 7, 2017 ANNOUNCEMENT All labs will meet in SCI 252 (the robot lab) tomorrow. Overview How to directly interact with hardware
More informationAssembly Language: Overview!
Assembly Language: Overview! 1 Goals of this Lecture! Help you learn:" The basics of computer architecture" The relationship between C and assembly language" IA-32 assembly language, through an example"
More informationYou may work with a partner on this quiz; both of you must submit your answers.
Instructions: Choose the best answer for each of the following questions. It is possible that several answers are partially correct, but one answer is best. It is also possible that several answers are
More informationTHEORY OF COMPILATION
Lecture 10 Activation Records THEORY OF COMPILATION EranYahav www.cs.technion.ac.il/~yahave/tocs2011/compilers-lec10.pptx Reference: Dragon 7.1,7.2. MCD 6.3,6.4.2 1 You are here Compiler txt Source Lexical
More informationMidterm Exam CSC February 2009
Midterm Exam CSC 252 26 February 2009 Directions; PLEASE READ This exam has 7 questions, all of which have subparts. Each question indicates its point value. The total is 90 points. Questions 3(d) and
More informationTowards the Hardware"
CSC 2400: Computer Systems Towards the Hardware Chapter 2 Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32) 1 High-Level Language Make programming
More informationCS241 Computer Organization Spring Loops & Arrays
CS241 Computer Organization Spring 2015 Loops & Arrays 2-26 2015 Outline! Loops C loops: while, for, do-while Translation to jump to middle! Arrays Read: CS:APP2 Chapter 3, sections 3.6 3.7 IA32 Overview
More informationCSC 8400: Computer Systems. Machine-Level Representation of Programs
CSC 8400: Computer Systems Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32) 1 Compilation Stages
More informationProgramming Language Implementation
A Practical Introduction to Programming Language Implementation 2014: Week 10 Garbage Collection College of Information Science and Engineering Ritsumeikan University 1 review of last week s topics dynamic
More informationAssembly II: Control Flow. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University
Assembly II: Control Flow Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Processor State (x86-64) RAX 63 31 EAX 0 RBX EBX RCX RDX ECX EDX General-purpose
More informationASSEMBLY II: CONTROL FLOW. Jo, Heeseung
ASSEMBLY II: CONTROL FLOW Jo, Heeseung IA-32 PROCESSOR STATE Temporary data Location of runtime stack %eax %edx %ecx %ebx %esi %edi %esp %ebp General purpose registers Current stack top Current stack frame
More informationThe Instruction Set. Chapter 5
The Instruction Set Architecture Level(ISA) Chapter 5 1 ISA Level The ISA level l is the interface between the compilers and the hardware. (ISA level code is what a compiler outputs) 2 Memory Models An
More informationCompiler Passes. Optimization. The Role of the Optimizer. Optimizations. The Optimizer (or Middle End) Traditional Three-pass Compiler
Compiler Passes Analysis of input program (front-end) character stream Lexical Analysis Synthesis of output program (back-end) Intermediate Code Generation Optimization Before and after generating machine
More informationChapter 2A Instructions: Language of the Computer
Chapter 2A Instructions: Language of the Computer Copyright 2009 Elsevier, Inc. All rights reserved. Instruction Set The repertoire of instructions of a computer Different computers have different instruction
More informationCHAPTER 3. Register allocation
CHAPTER 3 Register allocation In chapter 1 we simplified the generation of x86 assembly by placing all variables on the stack. We can improve the performance of the generated code considerably if we instead
More informationVirtual Machines and Dynamic Translation: Implementing ISAs in Software
Virtual Machines and Dynamic Translation: Implementing ISAs in Software Krste Asanovic Laboratory for Computer Science Massachusetts Institute of Technology Software Applications How is a software application
More informationAssembly II: Control Flow. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University
Assembly II: Control Flow Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu IA-32 Processor State %eax %edx Temporary data Location of runtime stack
More informationMidterm Exam Review Slides
Midterm Exam Review Slides Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University Review Topics Number Representation Base Conversion
More informationAssembly II: Control Flow
Assembly II: Control Flow Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu SSE2030: Introduction to Computer Systems, Spring 2018, Jinkyu Jeong (jinkyu@skku.edu)
More informationIntroduction. No Optimization. Basic Optimizations. Normal Optimizations. Advanced Optimizations. Inter-Procedural Optimizations
Introduction Optimization options control compile time optimizations to generate an application with code that executes more quickly. Absoft Fortran 90/95 is an advanced optimizing compiler. Various optimizers
More informationAssembly Language: Part 2
Assembly Language: Part 2 1 Goals of this Lecture Help you learn: Intermediate aspects of IA-32 assembly language Control flow with signed integers Control flow with unsigned integers Arrays Structures
More informationDigital Forensics Lecture 3 - Reverse Engineering
Digital Forensics Lecture 3 - Reverse Engineering Low-Level Software Akbar S. Namin Texas Tech University Spring 2017 Reverse Engineering High-Level Software Low-level aspects of software are often the
More informationQuestion 4.2 2: (Solution, p 5) Suppose that the HYMN CPU begins with the following in memory. addr data (translation) LOAD 11110
Questions 1 Question 4.1 1: (Solution, p 5) Define the fetch-execute cycle as it relates to a computer processing a program. Your definition should describe the primary purpose of each phase. Question
More informationThe Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.
The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees
More informationInstruction Set Architecture
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture Randal E. Bryant adapted by Jason Fritts http://csapp.cs.cmu.edu CS:APP2e Hardware Architecture - using Y86 ISA For learning aspects
More informationY86 Processor State. Instruction Example. Encoding Registers. Lecture 7A. Computer Architecture I Instruction Set Architecture Assembly Language View
Computer Architecture I Instruction Set Architecture Assembly Language View Processor state Registers, memory, Instructions addl, movl, andl, How instructions are encoded as bytes Layer of Abstraction
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationCS , Fall 2004 Exam 1
Andrew login ID: Full Name: CS 15-213, Fall 2004 Exam 1 Tuesday October 12, 2004 Instructions: Make sure that your exam is not missing any sheets, then write your full name and Andrew login ID on the front.
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationThese are reserved words of the C language. For example int, float, if, else, for, while etc.
Tokens in C Keywords These are reserved words of the C language. For example int, float, if, else, for, while etc. Identifiers An Identifier is a sequence of letters and digits, but must start with a letter.
More informationMachine Program: Procedure. Zhaoguo Wang
Machine Program: Procedure Zhaoguo Wang Requirements of procedure calls? P() { y = Q(x); y++; 1. Passing control int Q(int i) { int t, z; return z; Requirements of procedure calls? P() { y = Q(x); y++;
More informationComputer Organization and Structure. Bing-Yu Chen National Taiwan University
Computer Organization and Structure Bing-Yu Chen National Taiwan University Instructions: Language of the Computer Operations and Operands of the Computer Hardware Signed and Unsigned Numbers Representing
More informationCOMS W4115 Programming Languages and Translators Lecture 21: Code Optimization April 15, 2013
1 COMS W4115 Programming Languages and Translators Lecture 21: Code Optimization April 15, 2013 Lecture Outline 1. Code optimization strategies 2. Peephole optimization 3. Common subexpression elimination
More informationCode generation and local optimization
Code generation and local optimization Generating assembly How do we convert from three-address code to assembly? Seems easy! But easy solutions may not be the best option What we will cover: Instruction
More informationFinal exam. Scores. Fall term 2012 KAIST EE209 Programming Structures for EE. Thursday Dec 20, Student's name: Student ID:
Fall term 2012 KAIST EE209 Programming Structures for EE Final exam Thursday Dec 20, 2012 Student's name: Student ID: The exam is closed book and notes. Read the questions carefully and focus your answers
More informationCS 2505 Computer Organization I
Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted one-page formula sheet. No calculators or other computing devices may
More informationCode Optimization April 6, 2000
15-213 Code Optimization April 6, 2000 Topics Machine-Independent Optimizations Code motion Reduction in strength Common subexpression sharing Machine-Dependent Optimizations Pointer code Unrolling Enabling
More information