A System for Genera/ng Sta/c Analyzers for Machine Instruc/ons (TSL)

Size: px
Start display at page:

Download "A System for Genera/ng Sta/c Analyzers for Machine Instruc/ons (TSL)"

Transcription

1 Seminar on A System for Genera/ng Sta/c Analyzers for Machine Instruc/ons (TSL) Junghee Lim, Univ. of Wisconsin Madison, USA and Thomas Reps, GrammaTech, USA Presenter : Anand Ramkumar S Universitat des Saarlandes

2 Why Low Level Analysis? High level analysis does not account for behaviors of compiler! memset(password, \0, len); free(password);

3 Why Low Level Analysis? memset(password, \0, len); Op/miza/on free(password); Unpredicted Result! Leaving password in Memory.

4 Why Low Level Analysis? Use of libraries Not available in source code DLL Dynamic Libraries

5 Why Low Level Analysis? More than One Programming Language P C PERKLJASDKF E R L JAVA

6 Why Low Level Analysis? The en/re program can be analyzed including libraries linked to program. Source programs can be in many languages States of processor pipeline can be analyzed So[ware security issues can be iden/fied Instruc/ons inserted / removed By Op/miza/on, Instrumenta/on are handled

7 High Level Analysis Finding memory leaks Finding dereferences of dangling pointers Finding array out of bounds errors Checking type state proper/es ensuring that a file is open() before it is read() Both Low level and High Level analysis are required for comprehensive verifica/on.

8 Analysis of Executables Analysis of set of machine states Register Values Flag States Memory Contents that can be reached at each point in executable

9 Transformer Specifica/on Language TSL Widen Join Meet Update TSL ENGINE

10 Transformer Specifica/on Language TSL The TSL system provides a systema/c way to create analyzers for machine instruc/ons. Automa/cally generates analysis components from a specifica/on.

11 Analyses Overview Value Set Analysis Def Use Analysis

12 VSA (Value Set Analysis) VSA determines a safe approxima/on of set of numeric values and addresses In each register and memory loca/on at each program point

13 VSA (Value Set Analysis) To represent a set of numeric values and addresses VSA uses value set s

14 VSA (Value State Analysis) Code 1. start (0x100): 2. mov eax, 1 3. mov ebx, start 4. add eax, ebx Value Sets: 2. {eax = {1}; ebx = {*} } 3. { eax = {1}; ebx = {0x100} } 4. { eax = {0x101}; ebx = {0x100} }

15 Def Use Analysis (DUA) Match variable defini/ons (assignments) and uses. Example x = 5; if (x > 0)... def use

16 Def Use Analysis (DUA) Analyze by using def use pair. A def use pair is variable's Value and Use [x=5, x>0]

17 Problems solved by TSL Automa/cally Generates Analysis components Common Intermediate Representa/ons Transformers Supports wide range of Analysis Compa/ble with various Architectures

18 Problems solved by TSL τ 1 # τ 1 #2... τ 1 #6 Analyzers τ 2 # τ 2 #2... τ 2 #6 τ 600 # τ 600 #2... τ 600 #6 6 analyses x 600 instructions 3600 transformers

19 Problems solved by TSL Other Systems TSL System A 1 // transformer for A 1 switch(i) { case ADD:... case SUB:... ~600. } A 1 A 2 A 1 A 2 A 2... // transformer for A 2 switch(i) { case ADD:... case SUB:... ~600. } with(i) { ADD(): SUB():... } A 6 // transformer for A 6 switch(i) { case ADD:... case SUB:... ~600. } A 6 A 6

20 Problems solved by TSL ARM Power PC Intel Architecture TSL System SPARC Blackfin.

21 TSL TSL SYSTEM CIR CIR CIR CIR TSL LANGUAGE ISS ISS ISS ISS INTEL SPARC PPC ARM

22 What is in TSL? TSL Language Formal language for specifying seman/cs of machine instruc/ons. TSL System Analysis framework generated automa/cally from specifica/on.

23 Classes of Users for TSL Analysis 1 Analysis 2 Analysis 3... TSL SYSTEM ARM IS1 INTEL IS2 PowerPC IS3

24 Classes of Users for TSL Instruc/on Set Specifica/on (ISS) developers Specifying seman/cs of different instruc/on sets Analysis developers involved in extending the analysis framework

25 ISS Development TSL SYSTEM CIR CIR CIR CIR TSL LANGUAGE ISS ISS ISS ISS INTEL SPARC PPC ARM

26 Transformer Specifica/on Language TSL strongly typed has a data type defini/on mechanism allows defining recursive data types

27 Transformer Specifica/on Language Operators Bit manipula/on operators (, &,, ˆ,, ) Rela/onal operators (<, <=, >, >=, ==,!=)

28 Transformer Specifica/on Language Operators Arithme/c/logical operators (+,,, /,!, &&,, xor) Condi/onal expression operator (? : )

29 Transformer Specifica/on Language TSL base types INT8 INT16 INT32 INT64 BOOL

30 Transformer Specifica/on Language TSL Map base types MEMMAP32_8_LE : maps from 32 bit values (addresses) to 8 bit values MEMMAP32_16_LE : maps from 32 bit values (addresses) to 16 bit values VAR32MAP : 32 bit values, also similarly VAR16MAP, VAR8MAP VARBOOLMAP from var bool to Boolean values

31 ISS Development An ISS developer specifies the abstract syntax grammar by defining the constructors for a language of instruc/ons a concrete state type the concrete seman/cs of each instruc/on

32 ADD Example Intel 32A TSL SYSTEM CIR CIR CIR CIR TSL LANGUAGE ISS ISS ISS ISS INTEL SPARC PPC ARM

33 ADD Example Intel 32A add ebx, eax instruction ADD32_32 operand32 DirectReg32 operand32 DirectReg32 reg32 EBX reg32 EAX

34 ADD Example Concrete Seman/cs ADD DEST DEST + SRC SF, ZF, OF, CF, AF, PF are set according to the result

35 ISS Development Define every op/on available for instruc/on set in TSL The concrete seman/cs is specified by wri/ng a func/on named interpinstr. Abstract opera/ons are defined at the meta level

36 TSL Specifica/on Example [1] // User defined abstract syntax [2] reg32: EAX() EBX()... ; [3] flag: ZF() SF()... ; [4] operand32: Indirect32(reg32 reg32 INT8 INT32) [5] DirectReg32(reg32) Immediate32(INT32)...; [6] operand16:... ; [7]...

37 TSL Specifica/on Example [8] instruc/on [9] : ADD32 32(operand32 operand32) [10] ADD16 16(operand16 operand16)... ; [11] var32: Reg32(reg32); [12] var bool: Flag(flag); [13] state: State(MEMMAP32 8 LE // memory map [14] VAR32MAP // register map [15] VARBOOLMAP); // flag map

38 [16] // User defined func/ons [17] state updateflag(state S,... ) {... } :... [23] state interpinstr(instruc/on I, state S) { [24] with(i) ( [25] ADD32 32(dstOp, srcop): [26] let dstval = interpop(s, dstop); [27] srcval = interpop(s, srcop); [28] res = dstval + srcval; [29] S2 = updateflag(s, dstval, srcval, res); [30] in ( updatestate( S2, dstop, res ) ), [31]...) [32] } TSL Specifica/on Example

39 ADD Example TSL SYSTEM ISS INTEL 32 IS2 IS3

40 Opera/on of TSL System TSL SYSTEM CIR CIR CIR CIR TSL LANGUAGE ISS ISS ISS ISS INTEL SPARC PPC ARM

41 Opera/on of TSL System Translates the TSL specifica/on of each instruc/on set to a Common Intermediate Representa/on (CIR). CIR that can be used to create mul/ple analyzers.

42 Common Intermediate Representa/on CIR is specific to a given instruc/on set CIR is common across analysis Each generated CIR is a template class

43 Common Intermediate Representa/on The user defined abstract syntax is translated to a set of abstract syntax classes. The user defined types, such as reg32, operand32, and instruc/on, are translated to abstract C++ classes

44 Common Intermediate Representa/on [1] template <typename INTERP> [2] class CIR { [3] class reg32 {... }; [4] class EAX: public reg32 {... }; [5]... [6] class operand32 {... }; [7] class Indirect32: public operand32 {... }; [8]... [9] class instruc/on {... };

45 Common Intermediate Representa/on [10] class ADD32 32: public instruc/on {... [11] enum TSL ID id; [12] operand32 op1; [13] operand32 op2; [14] }; [15]... [16] class state {... }; [17] class State: public state {...

46 Common Intermediate Representa/on [24]... [23] sta/c state interpinstr#(instruc/on I, state S) { [24] state ans; [25] switch(i.id) { [26] case ID ADD32 32: { [27] operand32 dstop = I.op1; [28] operand32 srcop = I.op2; [29] INTERP::INT32 dstval = interpop(s, dstop); [30] INTERP::INT32 srcval = interpop(s, srcop); [31] INTERP::INT32 res = INTERP::Add(dstVal,srcVal); [32] state S2 = updateflag(s, dstval, srcval, res); [33] ans = updatestate(s2, dstop, res); [34] } break; [37] return ans; [38] } [39]};

47 Analysis Developer + + 1#, + + 2#, CIR is instan/ated with interpreta/on (INTERP) by analysis developer.

48 Value Set Analysis [1] class VSA INTERP { [2] // basetype [3] typedef ValueSet32 INT32; [4]... [5] // basetype operators [6] INT32 Add(INT32 a, INT32 b) { [7] return a.addvalueset(b); [8] } [9]... [10] // map basetypes

49 Value Set Analysis Widen Join Meet Update interpinstr TSL ENGINE

50 Opera/on of TSL System INTE RP TSL SYSTEM CIR CIR CIR CIR TSL LANGUAGE ISS ISS ISS ISS INTEL SPARC PPC ARM

51 Analysis Developer 1 interpinstr # For each analysis the analysis engine shall call interpinstr #

52 Analysis Developer Analysis Engine in C++ while(worklist φ) { select an edge n->m from worklist... new_s = interpinstr # (instr(n), S)... }

53 Analysis Developer For Analysis Engine in other languages Obtains a transformer for an instruc/on being processed from TSL

54 Generated Transformers for add ebx,eax 1.VSA (Value Set Analysis) S.S[ebx S(ebx)+vsaS(eax)] [ZF (S(ebx) +vsas(eax) = 0)][more flag updates] 2.DUA [ ebx {eax, ebx}, ZF {eax, ebx},... ]

55 Value Set Analysis Transformer S.S[ebx S(ebx)+vsaS(eax)] [ZF (S(ebx) +vsas(eax) = 0)][more flag updates] VSA uses transformer evaluator to create an output abstract state. VSA returns a new abstract state in which ebx is updated with sum of ebx and eax. The flags are updated appropriately.

56 Opera/on of TSL System INTE RP TSL SYSTEM CIR CIR CIR CIR TSL LANGUAGE ISS ISS ISS ISS INTEL SPARC PPC ARM

57 Related Work Systems sharing some same goals as TSL LISAS Instruc/on set specifica/on language Lambda RTL Seman/cs of an instruc/on set and to support mul/ple analysis

58 Summary The TSL system provides a systema/c way to create analyzers for machine instruc/ons. Low Level Analysis for each processor family. It separates the abstract seman/cs of each analysis from the instruc/on sets to be analyzed. All analysis frameworks are generated from the same seman/cs.

59 Thank You!

A System for Generating Static Analyzers for Machine Instructions

A System for Generating Static Analyzers for Machine Instructions A System for Generating Static Analyzers for Machine Instructions Junghee Lim 1 and Thomas Reps 1,2 1 Comp. Sci. Dep., Univ. of Wisconsin-Madison, WI; USA. 2 GrammaTech, Inc.; Ithaca, NY; USA {junghee,reps}@cs.wisc.edu

More information

TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis

TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis JUNGHEE LIM University of Wisconsin and THOMAS REPS University of Wisconsin and GrammaTech, Inc. This paper

More information

Founda'ons of So,ware Engineering. Sta$c analysis (1/2) Claire Le Goues

Founda'ons of So,ware Engineering. Sta$c analysis (1/2) Claire Le Goues Founda'ons of So,ware Engineering Sta$c analysis (1/2) Claire Le Goues 1 Two fundamental concepts Abstrac'on. Elide details of a specific implementa$on. Capture seman$cally relevant details; ignore the

More information

Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #7. Warehouse Scale Computer

Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #7. Warehouse Scale Computer CS 61C: Great Ideas in Computer Architecture Everything is a Number Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13 9/19/13 Fall 2013 - - Lecture #7 1 New- School Machine Structures

More information

Ways to implement a language

Ways to implement a language Interpreters Implemen+ng PLs Most of the course is learning fundamental concepts for using PLs Syntax vs. seman+cs vs. idioms Powerful constructs like closures, first- class objects, iterators (streams),

More information

Code Genera*on for Control Flow Constructs

Code Genera*on for Control Flow Constructs Code Genera*on for Control Flow Constructs 1 Roadmap Last *me: Got the basics of MIPS CodeGen for some AST node types This *me: Do the rest of the AST nodes Introduce control flow graphs Scanner Parser

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 18! Bootstrapping Names in programming languages Binding

More information

Reading assignment. Chapter 3.1, 3.2 Chapter 4.1, 4.3

Reading assignment. Chapter 3.1, 3.2 Chapter 4.1, 4.3 Reading assignment Chapter 3.1, 3.2 Chapter 4.1, 4.3 1 Outline Introduc5on to assembly programing Introduc5on to Y86 Y86 instruc5ons, encoding and execu5on 2 Assembly The CPU uses machine language to perform

More information

Compila(on /15a Lecture 6. Seman(c Analysis Noam Rinetzky

Compila(on /15a Lecture 6. Seman(c Analysis Noam Rinetzky Compila(on 0368-3133 2014/15a Lecture 6 Seman(c Analysis Noam Rinetzky 1 You are here Source text txt Process text input characters Lexical Analysis tokens Annotated AST Syntax Analysis AST Seman(c Analysis

More information

CSE Compilers. Reminders/ Announcements. Lecture 15: Seman9c Analysis, Part III Michael Ringenburg Winter 2013

CSE Compilers. Reminders/ Announcements. Lecture 15: Seman9c Analysis, Part III Michael Ringenburg Winter 2013 CSE 401 - Compilers Lecture 15: Seman9c Analysis, Part III Michael Ringenburg Winter 2013 Winter 2013 UW CSE 401 (Michael Ringenburg) Reminders/ Announcements Project Part 2 due Wednesday Midterm Friday

More information

Vulnerability Analysis (III): Sta8c Analysis

Vulnerability Analysis (III): Sta8c Analysis Computer Security Course. Vulnerability Analysis (III): Sta8c Analysis Slide credit: Vijay D Silva 1 Efficiency of Symbolic Execu8on 2 A Sta8c Analysis Analogy 3 Syntac8c Analysis 4 Seman8cs- Based Analysis

More information

Machine- Level Representa2on: Procedure

Machine- Level Representa2on: Procedure Machine- Level Representa2on: Procedure CSCI 2021: Machine Architecture and Organiza2on Pen- Chung Yew Department Computer Science and Engineering University of Minnesota With Slides from Bryant, O Hallaron

More information

Homework 1 Simple code genera/on. Luca Della Toffola Compiler Design HS15

Homework 1 Simple code genera/on. Luca Della Toffola Compiler Design HS15 Homework 1 Simple code genera/on Luca Della Toffola Compiler Design HS15 1 Administra1ve issues Has everyone found a team- mate? Mailing- list: cd1@lists.inf.ethz.ch Please subscribe if we forgot you 2

More information

Practical Malware Analysis

Practical 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 information

Objec+ves. Review. Basics of Java Syntax Java fundamentals. What are quali+es of good sooware? What is Java? How do you compile a Java program?

Objec+ves. Review. Basics of Java Syntax Java fundamentals. What are quali+es of good sooware? What is Java? How do you compile a Java program? Objec+ves Basics of Java Syntax Java fundamentals Ø Primi+ve data types Ø Sta+c typing Ø Arithme+c operators Ø Rela+onal operators 1 Review What are quali+es of good sooware? What is Java? Ø Benefits to

More information

Sec$on 2: Specifica)on, ADTs, RI WITH MATERIAL FROM MANY

Sec$on 2: Specifica)on, ADTs, RI WITH MATERIAL FROM MANY Sec$on 2: Specifica)on, ADTs, RI WITH MATERIAL FROM MANY Agenda Announcements HW1: due today at 23:59 pm Don t forget to commit/push your changes THIS INCLUDES TAGGING YOUR FINAL VERSION Abstract data

More information

Region of memory managed with stack discipline Grows toward lower addresses. Register %esp contains lowest stack address = address of top element

Region of memory managed with stack discipline Grows toward lower addresses. Register %esp contains lowest stack address = address of top element Machine Representa/on of Programs: Procedures Instructors: Sanjeev Se(a 1 IA32 Stack Region of memory managed with stack discipline Grows toward lower addresses Stack BoGom Increasing Addresses Register

More information

Topic 6: Code Generation

Topic 6: Code Generation Compilers 2008 Topic 6: 6.4 Conditional Instructions Status Flags Conditionals A special register exists called the FLAGS register Consists of a sequence of bits, which are set (1) or unset (0). These

More information

SQLite with a Fine-Toothed Comb. John Regehr Trust-in-So1 / University of Utah

SQLite with a Fine-Toothed Comb. John Regehr Trust-in-So1 / University of Utah SQLite with a Fine-Toothed Comb John Regehr Trust-in-So1 / University of Utah Feasible states for a system we care about No execu

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 14! Sta:c versus Dynamic Checking Type checking Type

More information

EDA180: Compiler Construc6on Context- free grammars. Görel Hedin Revised:

EDA180: Compiler Construc6on Context- free grammars. Görel Hedin Revised: EDA180: Compiler Construc6on Context- free grammars Görel Hedin Revised: 2013-01- 28 Compiler phases and program representa6ons source code Lexical analysis (scanning) Intermediate code genera6on tokens

More information

Lecture 1 Introduc-on

Lecture 1 Introduc-on Lecture 1 Introduc-on What would you get out of this course? Structure of a Compiler Op9miza9on Example 15-745: Introduc9on 1 What Do Compilers Do? 1. Translate one language into another e.g., convert

More information

Equa%onal Reasoning of x86 Assembly Code. Kevin Coogan and Saumya Debray University of Arizona, Tucson, AZ

Equa%onal Reasoning of x86 Assembly Code. Kevin Coogan and Saumya Debray University of Arizona, Tucson, AZ Equa%onal Reasoning of x86 Assembly Code Kevin Coogan and Saumya Debray University of Arizona, Tucson, AZ Assembly Code is Source Code Commercial libraries oeen do not come with source code, but there

More information

High-Level Synthesis Creating Custom Circuits from High-Level Code

High-Level Synthesis Creating Custom Circuits from High-Level Code High-Level Synthesis Creating Custom Circuits from High-Level Code Hao Zheng Comp Sci & Eng University of South Florida Exis%ng Design Flow Register-transfer (RT) synthesis - Specify RT structure (muxes,

More information

Related Course Objec6ves

Related Course Objec6ves Syntax 9/18/17 1 Related Course Objec6ves Develop grammars and parsers of programming languages 9/18/17 2 Syntax And Seman6cs Programming language syntax: how programs look, their form and structure Syntax

More information

Fix- point engine in Z3. Krystof Hoder Nikolaj Bjorner Leonardo de Moura

Fix- point engine in Z3. Krystof Hoder Nikolaj Bjorner Leonardo de Moura μz Fix- point engine in Z3 Krystof Hoder Nikolaj Bjorner Leonardo de Moura Mo?va?on Horn EPR applica?ons (Datalog) Points- to analysis Security analysis Deduc?ve data- bases and knowledge bases (Yago)

More information

Faculty of Engineering Computer Engineering Department Islamic University of Gaza Assembly Language Lab # 2 Assembly Language Fundamentals

Faculty of Engineering Computer Engineering Department Islamic University of Gaza Assembly Language Lab # 2 Assembly Language Fundamentals Faculty of Engineering Computer Engineering Department Islamic University of Gaza 2011 Assembly Language Lab # 2 Assembly Language Fundamentals Assembly Language Lab # 2 Assembly Language Fundamentals

More information

Sta$c Single Assignment (SSA) Form

Sta$c Single Assignment (SSA) Form Sta$c Single Assignment (SSA) Form SSA form Sta$c single assignment form Intermediate representa$on of program in which every use of a variable is reached by exactly one defini$on Most programs do not

More information

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Lecture 32: Pipeline Parallelism 3

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Lecture 32: Pipeline Parallelism 3 CS 61C: Great Ideas in Computer Architecture (Machine Structures) Lecture 32: Pipeline Parallelism 3 Instructor: Dan Garcia inst.eecs.berkeley.edu/~cs61c! Compu@ng in the News At a laboratory in São Paulo,

More information

COSC 111: Computer Programming I. Dr. Bowen Hui University of Bri>sh Columbia Okanagan

COSC 111: Computer Programming I. Dr. Bowen Hui University of Bri>sh Columbia Okanagan COSC 111: Computer Programming I Dr. Bowen Hui University of Bri>sh Columbia Okanagan 1 First half of course SoEware examples From English to Java Template for building small programs Exposure to Java

More information

Register Alloca.on Deconstructed. David Ryan Koes Seth Copen Goldstein

Register Alloca.on Deconstructed. David Ryan Koes Seth Copen Goldstein Register Alloca.on Deconstructed David Ryan Koes Seth Copen Goldstein 12th Interna+onal Workshop on So3ware and Compilers for Embedded Systems April 24, 12009 Register Alloca:on Problem unbounded number

More information

Macro Assembler. Defini3on from h6p://www.computeruser.com

Macro Assembler. Defini3on from h6p://www.computeruser.com The Macro Assembler Macro Assembler Defini3on from h6p://www.computeruser.com A program that translates assembly language instruc3ons into machine code and which the programmer can use to define macro

More information

mith College Computer Science CSC231 Assembly Week #9 Spring 2017 Dominique Thiébaut

mith College Computer Science CSC231 Assembly Week #9 Spring 2017 Dominique Thiébaut mith College Computer Science CSC231 Assembly Week #9 Spring 2017 Dominique Thiébaut dthiebaut@smith.edu 2 Videos to Watch at a Later Time https://www.youtube.com/watch?v=fdmzngwchdk https://www.youtube.com/watch?v=k2iz1qsx4cm

More information

Project: Embedded SMC

Project: Embedded SMC Project: Embedded SMC What is Secure Computa1on [SMC] A Compute f(a, B) Without revealing A to Bob and B to Alice B 2 Using a Trusted Third Party A B f(a, B) f(a, B) A Compute f(a, B) Without revealing

More information

CSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs

CSC 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 information

Basic Assembly SYSC-3006

Basic Assembly SYSC-3006 Basic Assembly Program Development Problem: convert ideas into executing program (binary image in memory) Program Development Process: tools to provide people-friendly way to do it. Tool chain: 1. Programming

More information

Advanced Topics in MNIT. Lecture 1 (27 Aug 2015) CADSL

Advanced Topics in MNIT. Lecture 1 (27 Aug 2015) CADSL Compiler Construction Virendra Singh Computer Architecture and Dependable Systems Lab Department of Electrical Engineering Indian Institute of Technology Bombay http://www.ee.iitb.ac.in/~viren/ E-mail:

More information

CS 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 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 information

Design Principles & Prac4ces

Design Principles & Prac4ces Design Principles & Prac4ces Robert France Robert B. France 1 Understanding complexity Accidental versus Essen4al complexity Essen%al complexity: Complexity that is inherent in the problem or the solu4on

More information

CSC 8400: Computer Systems. Machine-Level Representation of Programs

CSC 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 information

Computer Architecture: Mul1ple Issue. Berk Sunar and Thomas Eisenbarth ECE 505

Computer Architecture: Mul1ple Issue. Berk Sunar and Thomas Eisenbarth ECE 505 Computer Architecture: Mul1ple Issue Berk Sunar and Thomas Eisenbarth ECE 505 Outline 5 stages of RISC Type of hazards Sta@c and Dynamic Branch Predic@on Pipelining with Excep@ons Pipelining with Floa@ng-

More information

CS 267: Automated Verification. Lecture 18, Part 2: Data Model Analysis for Web Applications. Instructor: Tevfik Bultan

CS 267: Automated Verification. Lecture 18, Part 2: Data Model Analysis for Web Applications. Instructor: Tevfik Bultan CS 267: Automated Verification Lecture 18, Part 2: Data Model Analysis for Web Applications Instructor: Tevfik Bultan Web Application Depability 2 Web Application Depability 3 Web Application Depability

More information

LISP: LISt Processing

LISP: LISt Processing Introduc)on to Racket, a dialect of LISP: Expressions and Declara)ons LISP: designed by John McCarthy, 1958 published 1960 CS251 Programming Languages Spring 2017, Lyn Turbak Department of Computer Science

More information

A Func'onal Introduc'on. COS 326 David Walker Princeton University

A Func'onal Introduc'on. COS 326 David Walker Princeton University A Func'onal Introduc'on COS 326 David Walker Princeton University Thinking Func'onally In Java or C, you get (most) work done by changing something temp = pair.x; pair.x = pair.y; pair.y = temp; commands

More information

CS 61C: Great Ideas in Computer Architecture Func%ons and Numbers

CS 61C: Great Ideas in Computer Architecture Func%ons and Numbers CS 61C: Great Ideas in Computer Architecture Func%ons and Numbers 9/11/12 Instructor: Krste Asanovic, Randy H. Katz hcp://inst.eecs.berkeley.edu/~cs61c/sp12 Fall 2012 - - Lecture #8 1 New- School Machine

More information

Program Exploitation Intro

Program Exploitation Intro Program Exploitation Intro x86 Assembly 04//2018 Security 1 Univeristà Ca Foscari, Venezia What is Program Exploitation "Making a program do something unexpected and not planned" The right bugs can be

More information

Computer Systems and Networks. ECPE 170 Jeff Shafer University of the Pacific. Introduc>on to MARIE

Computer Systems and Networks. ECPE 170 Jeff Shafer University of the Pacific. Introduc>on to MARIE ECPE 170 Jeff Shafer University of the Pacific Introduc>on to MARIE 2 Schedule Today Introduce MARIE Wed 15 th and Fri 17 th Assembly programming tutorial 3 Recap MARIE Overview How does the MARIE architecture

More information

Semantics of C++ Hauptseminar im Wintersemester 2009/10 Templates

Semantics of C++ Hauptseminar im Wintersemester 2009/10 Templates Semantics of C++ Hauptseminar im Wintersemester 2009/10 Templates Sebastian Wild Technische Universität München 11.01.2010 Abstract In this work we will discuss about templates in C++, especially their

More information

The x86 Architecture

The x86 Architecture The x86 Architecture Lecture 24 Intel Manual, Vol. 1, Chapter 3 Robb T. Koether Hampden-Sydney College Fri, Mar 20, 2015 Robb T. Koether (Hampden-Sydney College) The x86 Architecture Fri, Mar 20, 2015

More information

The plan. Racket will return! Lecture will not recount every single feature of Java. Final project will be wri)ng a Racket interpreter in Java.

The plan. Racket will return! Lecture will not recount every single feature of Java. Final project will be wri)ng a Racket interpreter in Java. Introduc)on to Java The plan Racket will return! Final project will be wri)ng a Racket interpreter in Java. Lecture will not recount every single feature of Java. You may need to do some digging on your

More information

CISC327 - So*ware Quality Assurance

CISC327 - So*ware Quality Assurance CISC327 - So*ware Quality Assurance Lecture 8 Introduc

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 11! Syntax- Directed Transla>on The Structure of the

More information

Summary: Direct Code Generation

Summary: Direct Code Generation Summary: Direct Code Generation 1 Direct Code Generation Code generation involves the generation of the target representation (object code) from the annotated parse tree (or Abstract Syntactic Tree, AST)

More information

Lecture 15 Intel Manual, Vol. 1, Chapter 3. Fri, Mar 6, Hampden-Sydney College. The x86 Architecture. Robb T. Koether. Overview of the x86

Lecture 15 Intel Manual, Vol. 1, Chapter 3. Fri, Mar 6, Hampden-Sydney College. The x86 Architecture. Robb T. Koether. Overview of the x86 Lecture 15 Intel Manual, Vol. 1, Chapter 3 Hampden-Sydney College Fri, Mar 6, 2009 Outline 1 2 Overview See the reference IA-32 Intel Software Developer s Manual Volume 1: Basic, Chapter 3. Instructions

More information

CSE Lecture 10: Modules and separate compila5on 18 Feb Nate Nystrom University of Texas at Arlington

CSE Lecture 10: Modules and separate compila5on 18 Feb Nate Nystrom University of Texas at Arlington CSE 5317 Lecture 10: Modules and separate compila5on 18 Feb 2010 Nate Nystrom University of Texas at Arlington Modules Key to building large sodware systems is ability to organize the program into modules

More information

X86 Addressing Modes Chapter 3" Review: Instructions to Recognize"

X86 Addressing Modes Chapter 3 Review: Instructions to Recognize X86 Addressing Modes Chapter 3" Review: Instructions to Recognize" 1 Arithmetic Instructions (1)! Two Operand Instructions" ADD Dest, Src Dest = Dest + Src SUB Dest, Src Dest = Dest - Src MUL Dest, Src

More information

Compiler Optimization Intermediate Representation

Compiler Optimization Intermediate Representation Compiler Optimization Intermediate Representation Virendra Singh Associate Professor Computer Architecture and Dependable Systems Lab Department of Electrical Engineering Indian Institute of Technology

More information

Assembly Language Lab # 4 Data Transfer & Arithmetic (1)

Assembly Language Lab # 4 Data Transfer & Arithmetic (1) Faculty of Engineering Computer Engineering Department Islamic University of Gaza 2011 Assembly Language Lab # 4 Data Transfer & Arithmetic (1) Eng. Mohammad Elhindi Assembly Language Lab # 4 Data Transfer

More information

RISC-V, Rocket, and RoCC Spring 2017 James Mar2n

RISC-V, Rocket, and RoCC Spring 2017 James Mar2n RISC-V, Rocket, and RoCC Spring 2017 James Mar2n What s new in Lab 2: In lab 1, you built a SHA3 unit that operates in isola2on We would like Sha3Accel to act as an accelerator for a processor Lab 2 introduces

More information

Effec%ve So*ware. Lecture 9: JVM - Memory Analysis, Data Structures, Object Alloca=on. David Šišlák

Effec%ve So*ware. Lecture 9: JVM - Memory Analysis, Data Structures, Object Alloca=on. David Šišlák Effec%ve So*ware Lecture 9: JVM - Memory Analysis, Data Structures, Object Alloca=on David Šišlák david.sislak@fel.cvut.cz JVM Performance Factors and Memory Analysis» applica=on performance factors total

More information

Computer Architecture. CSE 1019Y Week 16. Introduc>on to MARIE

Computer Architecture. CSE 1019Y Week 16. Introduc>on to MARIE Computer Architecture CSE 1019Y Week 16 Introduc>on to MARIE MARIE Simple model computer used in this class MARIE Machine Architecture that is Really Intui>ve and Easy Designed for educa>on only While

More information

CS 33. Architecture and Optimization (2) CS33 Intro to Computer Systems XV 1 Copyright 2016 Thomas W. Doeppner. All rights reserved.

CS 33. Architecture and Optimization (2) CS33 Intro to Computer Systems XV 1 Copyright 2016 Thomas W. Doeppner. All rights reserved. CS 33 Architecture and Optimization (2) CS33 Intro to Computer Systems XV 1 Copyright 2016 Thomas W. Doeppner. All rights reserved. Modern CPU Design Instruc&on Control Re%rement Unit Register File Fetch

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp-16/ Prof. Andrea Corradini Department of Computer Science, Pisa Control Flow Iterators Recursion Con>nua>ons Lesson 25! 1 Iterators

More information

Assembly Language LAB

Assembly Language LAB Assembly Language LAB Islamic University Gaza Engineering Faculty Department of Computer Engineering 2013 ECOM 2125: Assembly Language LAB Created by: Eng. Ahmed M. Ayash Modified and Presented By: Eihab

More information

Objec0ves. Gain understanding of what IDA Pro is and what it can do. Expose students to the tool GUI

Objec0ves. Gain understanding of what IDA Pro is and what it can do. Expose students to the tool GUI Intro to IDA Pro 31/15 Objec0ves Gain understanding of what IDA Pro is and what it can do Expose students to the tool GUI Discuss some of the important func

More information

Second Part of the Course

Second 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 information

The Instruction Set. Chapter 5

The 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 information

Type Checking. Outline. General properties of type systems. Types in programming languages. Notation for type rules.

Type Checking. Outline. General properties of type systems. Types in programming languages. Notation for type rules. Outline Type Checking General properties of type systems Types in programming languages Notation for type rules Logical rules of inference Common type rules 2 Static Checking Refers to the compile-time

More information

Synthesizing Data- Structure Manipula5ons with Natural Proofs

Synthesizing Data- Structure Manipula5ons with Natural Proofs Synthesizing Data- Structure Manipula5ons with Natural Proofs Xiaokang Qiu (Joint work with Armando Solar- Lezama) Program Synthesis Building Reliable SoHware Program Verification Constraint Solving (Verifica5on

More information

Rela+onal Algebra. Rela+onal Query Languages. CISC437/637, Lecture #6 Ben Cartere?e

Rela+onal Algebra. Rela+onal Query Languages. CISC437/637, Lecture #6 Ben Cartere?e Rela+onal Algebra CISC437/637, Lecture #6 Ben Cartere?e Copyright Ben Cartere?e 1 Rela+onal Query Languages A query language allows manipula+on and retrieval of data from a database The rela+onal model

More information

Review addressing modes

Review addressing modes Review addressing modes Op Src Dst Comments movl $0, %rax Register movl $0, 0x605428 Direct address movl $0, (%rcx) Indirect address movl $0, 20(%rsp) Indirect with displacement movl $0, -8(%rdi, %rax,

More information

Outline. General properties of type systems. Types in programming languages. Notation for type rules. Common type rules. Logical rules of inference

Outline. General properties of type systems. Types in programming languages. Notation for type rules. Common type rules. Logical rules of inference Type Checking Outline General properties of type systems Types in programming languages Notation for type rules Logical rules of inference Common type rules 2 Static Checking Refers to the compile-time

More information

CNIT 127: Exploit Development. Ch 1: Before you begin. Updated

CNIT 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 information

Emulation. Michael Jantz

Emulation. Michael Jantz Emulation Michael Jantz Acknowledgements Slides adapted from Chapter 2 in Virtual Machines: Versatile Platforms for Systems and Processes by James E. Smith and Ravi Nair Credit to Prasad A. Kulkarni some

More information

CS101: Fundamentals of Computer Programming. Dr. Tejada www-bcf.usc.edu/~stejada Week 1 Basic Elements of C++

CS101: Fundamentals of Computer Programming. Dr. Tejada www-bcf.usc.edu/~stejada Week 1 Basic Elements of C++ CS101: Fundamentals of Computer Programming Dr. Tejada stejada@usc.edu www-bcf.usc.edu/~stejada Week 1 Basic Elements of C++ 10 Stacks of Coins You have 10 stacks with 10 coins each that look and feel

More information

Machine- Level Programming II: Arithme6c & Control

Machine- Level Programming II: Arithme6c & Control Machine- Level Programming II: Arithme6c & Control 15-213: Introduc0on to Computer Systems 5 th Lecture, Sep. 7, 2010 Instructors: Randy Bryant and Dave O Hallaron Modified by Karen L. Karavanic 2015 1

More information

Assembly Language LAB

Assembly Language LAB Assembly Language LAB Islamic University Gaza Engineering Faculty Department of Computer Engineering 2013 ECOM 2125: Assembly Language LAB Eng. Ahmed M. Ayash Lab # 3 Data Transfer & Arithmetic February

More information

Chapter 12. Selected Pentium Instructions

Chapter 12. Selected Pentium Instructions Chapter 12 Selected Pentium Instructions 1 2 Chapter 12 12 1 Carry flag indicates out-of-range error for unsigned operations. Chapter 12 3 12 2 Overflow flag indicates out-of-range error for signed operations.

More information

Review. Asser%ons. Some Per%nent Ques%ons. Asser%ons. Page 1. Automated Tes%ng. Path- Based Tes%ng. But s%ll need to look at execu%on results

Review. Asser%ons. Some Per%nent Ques%ons. Asser%ons. Page 1. Automated Tes%ng. Path- Based Tes%ng. But s%ll need to look at execu%on results Review Asser%ons Computer Science 521-621 Fall 2011 Prof. L. J. Osterweil Material adapted from slides originally prepared by Prof. L. A. Clarke Dynamic Tes%ng Execute program on real data and compare

More information

CSE Opera,ng System Principles

CSE Opera,ng System Principles CSE 30341 Opera,ng System Principles Lecture 5 Processes / Threads Recap Processes What is a process? What is in a process control bloc? Contrast stac, heap, data, text. What are process states? Which

More information

Model Transforma.on. Krzysztof Czarnecki Genera.ve So:ware Development Lab University of Waterloo, Canada gsd.uwaterloo.ca

Model Transforma.on. Krzysztof Czarnecki Genera.ve So:ware Development Lab University of Waterloo, Canada gsd.uwaterloo.ca Model Transforma.on Krzysztof Czarnecki Genera.ve So:ware Development Lab University of Waterloo, Canada gsd.uwaterloo.ca Modeling Wizards Summer School, Oct. 1, 2010, Oslo, Norway What is model transforma.on?

More information

(Func&onal (Programming (in (Scheme)))) Jianguo Lu

(Func&onal (Programming (in (Scheme)))) Jianguo Lu (Func&onal (Programming (in (Scheme)))) Jianguo Lu 1 Programming paradigms Func&onal No assignment statement No side effect Use recursion Logic OOP AOP 2 What is func&onal programming It is NOT what you

More information

Efficient JIT to 32-bit Arches

Efficient JIT to 32-bit Arches Efficient JIT to 32-bit Arches Jiong Wang Linux Plumbers Conference Vancouver, Nov, 2018 1 Background ISA specification and impact on JIT compiler Default code-gen use 64-bit register, ALU64, JMP64 test_l4lb_noinline.c

More information

Florian Florob Zeitz

Florian Florob Zeitz esign Goals Florian Zeitz 2017-06-07 1 / 48 1 esign Goals 2 3 esign Goals 4 5 6 2 / 48 1 esign Goals 2 3 esign Goals 4 5 6 3 / 48 esign Goals 4 / 48 esign Goals low-level control config registers hardware

More information

GCC Internals: A Conceptual View Part II

GCC Internals: A Conceptual View Part II : A Conceptual View Part II Abhijat Vichare CFDVS, Indian Institute of Technology, Bombay January 2008 Plan Part I GCC: Conceptual Structure C Program through GCC Building GCC Part II Gimple The MD-RTL

More information

Outline. Review: Assembly/Machine Code View. Processor State (x86-64, Par2al) Condi2on Codes (Explicit Se^ng: Compare) Condi2on Codes (Implicit Se^ng)

Outline. Review: Assembly/Machine Code View. Processor State (x86-64, Par2al) Condi2on Codes (Explicit Se^ng: Compare) Condi2on Codes (Implicit Se^ng) Outline Machine- Level Representa2on: Control CSCI 2021: Machine Architecture and Organiza2on Pen- Chung Yew Department Computer Science and Engineering University of Minnesota Control: Condi2on codes

More information

Introduc)on to C++ CS 16: Solving Problems with Computers I Lecture #2

Introduc)on to C++ CS 16: Solving Problems with Computers I Lecture #2 Introduc)on to C++ CS 16: Solving Problems with Computers I Lecture #2 Ziad Matni Dept. of Computer Science, UCSB A Word About Registra>on for CS16 FOR THOSE OF YOU NOT YET REGISTERED: There s a LONG waitlist

More information

Compiler Construction D7011E

Compiler 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 information

Assembly II: Control Flow. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Assembly 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 information

Sta$c Analysis Dataflow Analysis

Sta$c Analysis Dataflow Analysis Sta$c Analysis Dataflow Analysis Roadmap Overview. Four Analysis Examples. Analysis Framework Soot. Theore>cal Abstrac>on of Dataflow Analysis. Inter- procedure Analysis. Taint Analysis. Overview Sta>c

More information

BBM 101 Introduc/on to Programming I Fall 2014, Lecture 3. Aykut Erdem, Erkut Erdem, Fuat Akal

BBM 101 Introduc/on to Programming I Fall 2014, Lecture 3. Aykut Erdem, Erkut Erdem, Fuat Akal BBM 101 Introduc/on to Programming I Fall 2014, Lecture 3 Aykut Erdem, Erkut Erdem, Fuat Akal 1 Today Introduc/on to Programming Basic Concepts Developing Algorithms Crea

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 10! Con:nua:on of the course Syntax- Directed Transla:on

More information

Data Representa/ons: IA32 + x86-64

Data Representa/ons: IA32 + x86-64 X86-64 Instruc/on Set Architecture Instructor: Sanjeev Se(a 1 Data Representa/ons: IA32 + x86-64 Sizes of C Objects (in Bytes) C Data Type Typical 32- bit Intel IA32 x86-64 unsigned 4 4 4 int 4 4 4 long

More information

Static Program Analysis

Static Program Analysis Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ws-1617/spa/ Recap: Taking Conditional Branches into Account Extending

More information

Towards the Hardware"

Towards 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 information

W1005 Intro to CS and Programming in MATLAB. Brief History of Compu?ng. Fall 2014 Instructor: Ilia Vovsha. hip://www.cs.columbia.

W1005 Intro to CS and Programming in MATLAB. Brief History of Compu?ng. Fall 2014 Instructor: Ilia Vovsha. hip://www.cs.columbia. W1005 Intro to CS and Programming in MATLAB Brief History of Compu?ng Fall 2014 Instructor: Ilia Vovsha hip://www.cs.columbia.edu/~vovsha/w1005 Computer Philosophy Computer is a (electronic digital) device

More information

CS 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 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 information

10/7/15. MediaItem tostring Method. Objec,ves. Using booleans in if statements. Review. Javadoc Guidelines

10/7/15. MediaItem tostring Method. Objec,ves. Using booleans in if statements. Review. Javadoc Guidelines Objec,ves Excep,ons Ø Wrap up Files Streams MediaItem tostring Method public String tostring() { String classname = getclass().tostring(); StringBuilder rep = new StringBuilder(classname); return rep.tostring();

More information

Assembly II: Control Flow

Assembly 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 information

CS 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 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 information