An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code
|
|
- Camron Hensley
- 5 years ago
- Views:
Transcription
1 An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code Yuting Wang 1, Pierre Wilke 1,2, Zhong Shao 1 Yale University 1, CentraleSupélec 2 POPL 19 January 18 th, 2019 Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 1 / 16
2 Verified compilation CompCert : verified C compiler (Leroy et al., first released in 2008) C Clight Cshm Cminor CminorSel RTL LTL Linear Mach Asm Used as a basis for a large number of extensions: alternate semantics: CompCertTSO (weak memory model, Sevcík et al., JACM 13), CompCertS (undefined pointer arithmetic, Besson et al., ITP 17) a more concrete view of the stack: Quantitative CompCert (merge the stack blocks into a single stack region, Carbonneaux et al., PLDI 14) compositional compilation: Compositional CompCert (Stewart et al., POPL 15), compositional semantics (Ramananandro et al., CPP 15), SepCompCert (Kang et al., POPL 16) Open problems: verified compilation to machine code port all compiler passes of CompCert, including challenging inlining and tailcall recognition verified compilation of heterogeneous modules (mix C and Asm modules) Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 2 / 16
3 Contribution: Stack-Aware CompCert A version of CompCert with: 1 compilation to machine code merge the stack blocks into a unique stack region eliminate CompCert s pseudo-instructions generate machine code 2 complete extension: we support all CompCert passes including challenging optimizations (function inlining, tailcall elimination) 3 compositional compilation stack access policy mix C and Asm programs Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 3 / 16
4 CompCert: memory model and values void swap(int * p1, int * p2){ int tmp = *p1; *p1 = *p2; *p2 = tmp; int main(){ int i = 3, j = 9; int * x = &i; int * y = &j; swap(x,y); return 0; b p1 b p2 b tmp b i b j b x b y (b i,0) (b j,0) (b i,0) (b j,0) Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 4 / 16
5 CompCert: compilation and memory model The memory model stays the same throughout compilation, but the memory blocks change shapes. C Clight Cminor Asm main b i b j b x b y b i b j swap b p1 b p2 b tmp /0 The stack frames in Asm are in distinct blocks! Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 5 / 16
6 The abstract stack We maintain an abstract stack in memory states, that reflects the structure of the concrete stack. Abstract stack: a list of abstract frames. An abstract frame records useful information about a concrete stack frame: the size of this stack frame at the assembly level; b i b j b x b main which blocks are part of that stack frame; which locations of these blocks are public or private b y Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 6 / 16
7 Abstract stack: example C Clight Cminor Asm main b i b j b x b y b i b j b main 32 The abstract stack at the C level is: b p1 b p2 b tmp ; b i b j b x swap b p1 b p2 b tmp /0 b swap 16 b y Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 7 / 16
8 Abstract stack: example C Clight Cminor Asm The abstract stack at the Asm level is: main b i b j b x b i b j 32 b swap ; b main b y b main swap b p1 b p2 b tmp /0 b swap 16 Stack-access policy: we may write to all of b swap public locations in b main Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 7 / 16
9 Abstract stack primitives Semantics of all intermediate languages instrumented with push_frame and pop_frame b swap 16 b main at function call b main at function return b main push_frame pop_frame Key argument for merging stack blocks : The push_frame primitive only succeeds if the sum of the frames sizes is lower than MAX_STACK. Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 8 / 16
10 Preservation of stack usage with compilation Since the semantics include stack consumption, it must be preserved by compilation Property to ensure: at each program point, the size of source stack should be larger than (or equal to) the size of target stack. Source f Target f The sizes of the source and target stacks are equal. f + g = f + g g g Recall f is the size of f s stack frame at the Asm level! Regular case Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 9 / 16
11 Preservation of stack usage with compilation Since the semantics include stack consumption, it must be preserved by compilation Property to ensure: at each program point, the size of source stack should be larger than (or equal to) the size of target stack. Source f Target f Source void g(){ G; void f(){ g(); Target void g(){ G; void f(){ G; g The sizes of the source stack is larger than the target stack. Function inlining f + g f Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 9 / 16
12 Preservation of stack usage with compilation Since the semantics include stack consumption, it must be preserved by compilation Property to ensure: at each program point, the size of source stack should be larger than (or equal to) the size of target stack. Source f Target f Source void g(){ G; void f(){ F; tail g(); Target void g(){ G; void f(){ F; G; Tailcall inlining The sizes of the source stack is larger than the target stack. f f Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 9 / 16
13 Preservation of stack usage with compilation Since the semantics include stack consumption, it must be preserved by compilation Property to ensure: at each program point, the size of source stack should be larger than (or equal to) the size of target stack. Source g Target f Source void g(){ G; void f(){ F; tail g(); Target void g(){ G; void f(){ F; G; Tailcall inlining Problem: How to compare the sizes of the source and target stacks g? f Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 9 / 16
14 Preservation of stack usage with compilation Since the semantics include stack consumption, it must be preserved by compilation Property to ensure: at each program point, the size of source stack should be larger than (or equal to) the size of target stack. Source Target f g f Source void g(){ G; void f(){ F; tail g(); Target void g(){ G; void f(){ F; G; Tailcall inlining We keep the history of tailcalled functions: max( f, g ) f Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 9 / 16
15 The structure of the abstract stack The abstract stack is actually a list of list of abstract frames. abstract frame stage of abstract frames Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 10 / 16
16 From CompCert Assembly to Machine Code code glob stack code glob stack code glob stack mem CompCert Asm Single-Stack Asm Flat Asm Plain Memory merging stack blocks pseudo-instructions elimination flat memory layout instruction encoding (RockSalt: Morrisett et al., PLDI 12) Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 11 / 16
17 Eliminating pseudo-instructions Caller Callee Single-Stack Asm s 1 call RA next(pc) s 2 allocframe RSP RSP - sz; store RA s 3 Real Asm RSP RSP - 8; store (next(pc)) call s 1 s 2 RSP RSP - (sz - 8) allocframe s 3 Mismatch between CompCert semantics and expected semantics We get rid of the pseudo-register RA and can do away with pseudo-instructions (simple pointer arithmetic) Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 12 / 16
18 Stack access policy Accessible locations are either top-frame locations or public locations. b swap 16 b main at function call b main at function return b main push_frame pop_frame Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 13 / 16
19 Contextual compilation f g ret data callee-save link args When a function f calls a function g, the private regions of f s stack frame should not be altered. Programs compiled from C comply with that policy. Characterization of acceptable Asm functions. We apply this principle to CompCertX (Gu et al., POPL 15) contextual compiler developed for CertiKOS ability to mix C and Asm functions Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 14 / 16
20 Comparison with existing work Target Completeness Compositionality Time LOC CompCert(3.0.1) CompCert Asm complete separate - 135k Stack-Aware CompCert Machine Code complete contextual k Quantitative CompCert SingleStack Asm w.o. some opts. N/A - 100k Compositional CompCert CompCert Asm w.o. some opts. general k SepCompCert CompCert Asm complete separate 2 +3k CompCertX CompCert Asm no s.a. data contextual - +8k CompCert-TSO x86-tso w.o. some opts. concurrency 45 85k CompCertS CompCert Asm w.o. some opts. N/A k Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 15 / 16
21 Conclusion We develop Stack-Aware CompCert, with three distinguishing features: 1 compilation to machine code finite-size stack more concrete memory layout for Asm closer to actual machine code: reduction of unverified part of the compiler 2 complete extension of CompCert function inlining and tailcall elimination 3 compositional compilation extension of CompCertX stack access policy Further work and perspectives: port to other backends: ARM, RISC-V, x86-64 main challenge: encoding and decoding of instructions define a stack analysis / verification framework to reason about the stack usage of programs and prove they run in bounded stack Yuting Wang, Pierre Wilke, Zhong Shao An Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code 16 / 16
A concrete memory model for CompCert
A concrete memory model for CompCert Frédéric Besson Sandrine Blazy Pierre Wilke Rennes, France P. Wilke A concrete memory model for CompCert 1 / 28 CompCert real-world C to ASM compiler used in industry
More informationFormal verification of program obfuscations
Formal verification of program obfuscations Sandrine Blazy joint work with Roberto Giacobazzi and Alix Trieu IFIP WG 2.11, 2015-11-10 1 Background: verifying a compiler Compiler + proof that the compiler
More informationHow much is a mechanized proof worth, certification-wise?
How much is a mechanized proof worth, certification-wise? Xavier Leroy Inria Paris-Rocquencourt PiP 2014: Principles in Practice In this talk... Some feedback from the aircraft industry concerning the
More informationCompCertS: A Memory-Aware Verified C Compiler using Pointer as Integer Semantics
CompCertS: A Memory-Aware Verified C Compiler using Pointer as Integer Semantics Frédéric Besson 1, Sandrine Blazy 2, and Pierre Wilke 3 1 Inria, Rennes, France 2 Université Rennes 1 - CNRS - IRISA, Rennes,
More informationA Formally-Verified C static analyzer
A Formally-Verified C static analyzer David Pichardie joint work with J.-H. Jourdan, V. Laporte, S.Blazy, X. Leroy, presented at POPL 15!! How do you trust your software? bug finders sound verifiers verified
More informationINFORMATION AND COMMUNICATION TECHNOLOGIES (ICT) PROGRAMME. Project FP7-ICT-2009-C CerCo. Report n. D2.2 Prototype implementation
INFORMATION AND COMMUNICATION TECHNOLOGIES (ICT) PROGRAMME Project FP7-ICT-2009-C-243881 CerCo Report n. D2.2 Prototype implementation Version 1.0 Main Authors: Nicolas Ayache, Roberto M. Amadio, Yann
More informationA Compositional Semantics for Verified Separate Compilation and Linking
A Compositional Semantics for Verified Separate Compilation and Linking Tahina Ramananandro Zhong Shao Shu-Chun Weng Jérémie Koenig Yuchen Fu 1 Yale University 1 Massachusetts Institute of Technology Abstract
More informationFormal verification of a static analyzer based on abstract interpretation
Formal verification of a static analyzer based on abstract interpretation Sandrine Blazy joint work with J.-H. Jourdan, V. Laporte, A. Maroneze, X. Leroy, D. Pichardie IFIP WG 1.9/2.15, 2014-07-14 1 Background:
More informationA Formal C Memory Model Supporting Integer-Pointer Casts
A Formal C Memory Model Supporting Integer-Pointer Casts Abstract The ISO C standard does not specify the semantics of many valid programs that use non-portable idioms such as integerpointer casts. Recent
More informationThe CompCert verified compiler
The CompCert verified compiler Tahina Ramananandro 1 1 Yale University November 28th, 2012 Ramananandro (Yale) CompCert November 28th, 2012 1 / 99 Outline 1 General overview: compiler correctness 2 The
More informationValidating LR(1) parsers
Validating LR(1) parsers Jacques-Henri Jourdan François Pottier Xavier Leroy INRIA Paris-Rocquencourt, projet Gallium Journées LTP/MTVV, 2011-10-28 Parsing: recap text or token stream abstract syntax tree
More informationFormal verification of an optimizing compiler
Formal verification of an optimizing compiler Xavier Leroy INRIA Rocquencourt RTA 2007 X. Leroy (INRIA) Formal compiler verification RTA 2007 1 / 58 The compilation process General definition: any automatic
More informationMath 230 Assembly Programming (AKA Computer Organization) Spring MIPS Intro
Math 230 Assembly Programming (AKA Computer Organization) Spring 2008 MIPS Intro Adapted from slides developed for: Mary J. Irwin PSU CSE331 Dave Patterson s UCB CS152 M230 L09.1 Smith Spring 2008 MIPS
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 informationFormal C semantics: CompCert and the C standard
Formal C semantics: CompCert and the C standard Robbert Krebbers 1, Xavier Leroy 2, and Freek Wiedijk 1 1 ICIS, Radboud University Nijmegen, The Netherlands 2 Inria Paris-Rocquencourt, France Abstract.
More informationCertified compilers. Do you trust your compiler? Testing is immune to this problem, since it is applied to target code
Certified compilers Do you trust your compiler? Most software errors arise from source code But what if the compiler itself is flawed? Testing is immune to this problem, since it is applied to target code
More informationCS 61c: Great Ideas in Computer Architecture
MIPS Functions July 1, 2014 Review I RISC Design Principles Smaller is faster: 32 registers, fewer instructions Keep it simple: rigid syntax, fixed instruction length MIPS Registers: $s0-$s7,$t0-$t9, $0
More informationAn Abstract Stack Based Approach to Verified Compositional Compilation to Machine Code
An Abstract Stack Based Approach to Veriied Compositional Compilation to Machine Code YUTING WANG, Yale University, USA PIERRE WILKE, Yale University, USA and CentraleSupélec, France ZHONG SHAO, Yale University,
More informationHyperkernel: Push-Button Verification of an OS Kernel
Hyperkernel: Push-Button Verification of an OS Kernel Luke Nelson, Helgi Sigurbjarnarson, Kaiyuan Zhang, Dylan Johnson, James Bornholt, Emina Torlak, and Xi Wang The OS Kernel is a critical component Essential
More informationWeeks 6&7: Procedures and Parameter Passing
CS320 Principles of Programming Languages Weeks 6&7: Procedures and Parameter Passing Jingke Li Portland State University Fall 2017 PSU CS320 Fall 17 Weeks 6&7: Procedures and Parameter Passing 1 / 45
More informationTranslation Validation for a Verified OS Kernel
To appear in PLDI 13 Translation Validation for a Verified OS Kernel Thomas Sewell 1, Magnus Myreen 2, Gerwin Klein 1 1 NICTA, Australia 2 University of Cambridge, UK L4.verified sel4 = a formally verified
More informationModule 27 Switch-case statements and Run-time storage management
Module 27 Switch-case statements and Run-time storage management In this module we will discuss the pending constructs in generating three-address code namely switch-case statements. We will also discuss
More informationTurning proof assistants into programming assistants
Turning proof assistants into programming assistants ST Winter Meeting, 3 Feb 2015 Magnus Myréen Why? Why combine proof- and programming assistants? Why proofs? Testing cannot show absence of bugs. Some
More informationCSE Lecture In Class Example Handout
CSE 30321 Lecture 07-09 In Class Example Handout Part A: A Simple, MIPS-based Procedure: Swap Procedure Example: Let s write the MIPS code for the following statement (and function call): if (A[i] > A
More informationFormal verification of a C-like memory model and its uses for verifying program transformations
Formal verification of a C-like memory model and its uses for verifying program transformations Xavier Leroy, Sandrine Blazy To cite this version: Xavier Leroy, Sandrine Blazy. Formal verification of a
More informationFunction Calls and Stack Allocation
Function Calls and Allocation Topics Pushing and Popping Role of in (Automatic) Allocation Parameter Passing Region of memory managed with stack discipline Grows toward lower addresses pointer indicates
More informationICS 252 Introduction to Computer Design
ICS 252 Introduction to Computer Design Lecture 3 Fall 2006 Eli Bozorgzadeh Computer Science Department-UCI System Model According to Abstraction level Architectural, logic and geometrical View Behavioral,
More informationProcedures and Stacks
Procedures and Stacks Daniel Sanchez Computer Science & Artificial Intelligence Lab M.I.T. March 15, 2018 L10-1 Announcements Schedule has shifted due to snow day Quiz 2 is now on Thu 4/12 (one week later)
More informationFunction Calls and Stack Allocation
Function Calls and Allocation Topics Pushing and Popping Role of in (Automatic) Allocation Parameter Passing Region of memory managed with stack discipline Grows toward lower addresses pointer indicates
More informationStack. Stack. Function Calls and Stack Allocation. Stack Popping Popping. Stack Pushing Pushing. Page 1
Function Calls and Allocation Region of memory managed with stack discipline Grows toward lower addresses pointer indicates lowest stack address Bottom Increasing Addresses Topics Pushing and Popping Role
More informationCS 4110 Programming Languages & Logics
CS 4110 Programming Languages & Logics Lecture 38 Typed Assembly Language 30 November 2012 Schedule 2 Monday Typed Assembly Language Wednesday Polymorphism Stack Types Today Compilation Course Review Certi
More informationMachine Programming 3: Procedures
Machine Programming 3: Procedures CS61, Lecture 5 Prof. Stephen Chong September 15, 2011 Announcements Assignment 2 (Binary bomb) due next week If you haven t yet please create a VM to make sure the infrastructure
More informationCS 345. Functions. Vitaly Shmatikov. slide 1
CS 345 Functions Vitaly Shmatikov slide 1 Reading Assignment Mitchell, Chapter 7 C Reference Manual, Chapters 4 and 9 slide 2 Procedural Abstraction Can be overloaded (e.g., binary +) Procedure is a named
More informationCSC 2400: Computing Systems. X86 Assembly: Function Calls"
CSC 24: Computing Systems X86 Assembly: Function Calls" 1 Lecture Goals! Challenges of supporting functions" Providing information for the called function" Function arguments and local variables" Allowing
More informationCourse Administration
Fall 2018 EE 3613: Computer Organization Chapter 2: Instruction Set Architecture Introduction 4/4 Avinash Karanth Department of Electrical Engineering & Computer Science Ohio University, Athens, Ohio 45701
More informationMIPS Datapath. MIPS Registers (and the conventions associated with them) MIPS Instruction Types
1 Lecture 08 Introduction to the MIPS ISA + Procedure Calls in MIPS Longer instructions = more bits to address registers MIPS Datapath 6 bit opcodes... 2 MIPS Instructions are 32 bits More ways to address
More informationCA Compiler Construction
CA4003 - Compiler Construction David Sinclair When procedure A calls procedure B, we name procedure A the caller and procedure B the callee. A Runtime Environment, also called an Activation Record, is
More informationFunctions and Procedures
Functions and Procedures Function or Procedure A separate piece of code Possibly separately compiled Located at some address in the memory used for code, away from main and other functions (main is itself
More informationx86 assembly CS449 Fall 2017
x86 assembly CS449 Fall 2017 x86 is a CISC CISC (Complex Instruction Set Computer) e.g. x86 Hundreds of (complex) instructions Only a handful of registers RISC (Reduced Instruction Set Computer) e.g. MIPS
More informationCSCI565 Compiler Design
CSCI565 Compiler Design Spring 2011 Homework 4 Solution Due Date: April 6, 2011 in class Problem 1: Activation Records and Stack Layout [50 points] Consider the following C source program shown below.
More informationAnne Bracy CS 3410 Computer Science Cornell University
Anne Bracy CS 3410 Computer Science Cornell University The slides are the product of many rounds of teaching CS 3410 by Professors Weatherspoon, Bala, Bracy, McKee, and Sirer. See P&H 2.8 and 2.12, and
More informationMIPS Functions and the Runtime Stack
MIPS Functions and the Runtime Stack COE 301 Computer Organization Prof. Muhamed Mudawar College of Computer Sciences and Engineering King Fahd University of Petroleum and Minerals Presentation Outline
More informationW4118: PC Hardware and x86. Junfeng Yang
W4118: PC Hardware and x86 Junfeng Yang A PC How to make it do something useful? 2 Outline PC organization x86 instruction set gcc calling conventions PC emulation 3 PC board 4 PC organization One or more
More informationControl Instructions. Computer Organization Architectures for Embedded Computing. Thursday, 26 September Summary
Control Instructions Computer Organization Architectures for Embedded Computing Thursday, 26 September 2013 Many slides adapted from: Computer Organization and Design, Patterson & Hennessy 4th Edition,
More informationControl Instructions
Control Instructions Tuesday 22 September 15 Many slides adapted from: and Design, Patterson & Hennessy 5th Edition, 2014, MK and from Prof. Mary Jane Irwin, PSU Summary Previous Class Instruction Set
More informationFinal Exam Review Questions
EECS 665 Final Exam Review Questions 1. Give the three-address code (like the quadruples in the csem assignment) that could be emitted to translate the following assignment statement. However, you may
More informationG Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing
More informationImplementing Procedure Calls
1 / 39 Implementing Procedure Calls February 18 22, 2013 2 / 39 Outline Intro to procedure calls Caller vs. callee Procedure call basics Calling conventions The stack Interacting with the stack Structure
More informationProgramming Languages
Programming Languages Tevfik Koşar Lecture - XX April 4 th, 2006 1 Roadmap Subroutines Allocation Strategies Calling Sequences Parameter Passing Generic Subroutines Exception Handling Co-routines 2 1 Review
More informationVerasco: a Formally Verified C Static Analyzer
Verasco: a Formally Verified C Static Analyzer Jacques-Henri Jourdan Joint work with: Vincent Laporte, Sandrine Blazy, Xavier Leroy, David Pichardie,... June 13, 2017, Montpellier GdR GPL thesis prize
More informationADD R Operation : ACC = ACC + R SIZE : 1 byte, 8 bit Time : 3 T Cycle Work : Read R, Read ACC, Add, Write Result to ACC
CISC to RISC and MIPS Instruction Set A. Sahu CSE, IIT Guwahati Please be updated with http://jatinga.iitg.ernet.in/~asahu/cs222/ Outline Prev Class Understanding an existing architecture CISC : 8085 Example
More informationTutorial: Building a backend in 24 hours. Anton Korobeynikov
Tutorial: Building a backend in 24 hours Anton Korobeynikov anton@korobeynikov.info Outline 1. From IR to assembler: codegen pipeline 2. MC 3. Parts of a backend 4. Example step-by-step The Pipeline LLVM
More informationCompilers and computer architecture: A realistic compiler to MIPS
1 / 1 Compilers and computer architecture: A realistic compiler to MIPS Martin Berger November 2017 Recall the function of compilers 2 / 1 3 / 1 Recall the structure of compilers Source program Lexical
More informationSystems I. Machine-Level Programming V: Procedures
Systems I Machine-Level Programming V: Procedures Topics abstraction and implementation IA32 stack discipline Procedural Memory Usage void swap(int *xp, int *yp) int t0 = *xp; int t1 = *yp; *xp = t1; *yp
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-17/cc/ Generation of Intermediate Code Conceptual Structure of
More informationCSC 2400: Computer Systems. Using the Stack for Function Calls
CSC 24: Computer Systems Using the Stack for Function Calls Lecture Goals Challenges of supporting functions! Providing information for the called function Function arguments and local variables! Allowing
More informationCS429: Computer Organization and Architecture
CS429: Computer Organization and Architecture Warren Hunt, Jr. and Bill Young Department of Computer Sciences University of Texas at Austin Last updated: October 1, 2014 at 12:03 CS429 Slideset 6: 1 Topics
More informationCSC 2400: Computer Systems. Using the Stack for Function Calls
CSC 24: Computer Systems Using the Stack for Function Calls Lecture Goals Challenges of supporting functions! Providing information for the called function Function arguments and local variables! Allowing
More informationCSC 2400: Computing Systems. X86 Assembly: Function Calls
CSC 24: Computing Systems X86 Assembly: Function Calls 1 Lecture Goals Challenges of supporting functions Providing information for the called function Function arguments and local variables Allowing the
More informationChap. 8 :: Subroutines and Control Abstraction
Chap. 8 :: Subroutines and Control Abstraction Michael L. Scott Programming Language Theory 2015, kkman@sangji.ac.kr 1 Review Of Stack Layout Allocation strategies Static Code Globals Own variables Explicit
More informationMIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions
Representing Instructions Instructions are encoded in binary Called machine code MIPS instructions Encoded as 32-bit instruction words Small number of formats encoding operation code (opcode), register
More informationELEC / Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2)
ELEC 5200-001/6200-001 Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2) Victor P. Nelson, Professor & Asst. Chair Vishwani D. Agrawal, James J. Danaher Professor Department
More informationVirtual Machine (Part II)
Harvard University CS 101 Fall 2005, Shimon Schocken Virtual Machine (Part II) Elements of Computing Systems 1 Virtual Machine II (Ch. 8) Where we are at: Human Thought Abstract design Chapters 9, 12 H.L.
More informationPortable Software Fault Isolation
Portable Software Fault Isolation Joshua A. Kroll Computer Science Department Princeton University Princeton, NJ kroll@cs.princeton.edu Gordon Stewart Computer Science Department Princeton University Princeton,
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-17/cc/ Generation of Intermediate Code Outline of Lecture 15 Generation
More informationQuiz for Chapter 2 Instructions: Language of the Computer3.10
Date: 3.10 Not all questions are of equal difficulty. Please review the entire quiz first and then budget your time carefully. Name: Course: 1. [5 points] Prior to the early 1980s, machines were built
More informationLecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook)
Lecture 2 Instructions: Language of the Computer (Chapter 2 of the textbook) Instructions: tell computers what to do Chapter 2 Instructions: Language of the Computer 2 Introduction Chapter 2.1 Chapter
More informationCompCertX: Tahina Ramananandro. Verified Separate Compilation for Compositional Verification of Layered Systems
CompCertX: Verified Separate Compilation for Compositional Verification of Layered Systems onghui Gu Jérémie Koenig Zhong Shao Newman Wu Shu-Chun Weng Tahina amananandro August 24, 2015 Haozhong Zhang
More informationField Analysis. Last time Exploit encapsulation to improve memory system performance
Field Analysis Last time Exploit encapsulation to improve memory system performance This time Exploit encapsulation to simplify analysis Two uses of field analysis Escape analysis Object inlining April
More informationCSC 8400: Computer Systems. Using the Stack for Function Calls
CSC 84: Computer Systems Using the Stack for Function Calls Lecture Goals Challenges of supporting functions! Providing information for the called function Function arguments and local variables! Allowing
More informationOperating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst
Operating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst Department of Computer Science Why C? Low-level Direct access to memory WYSIWYG (more or less) Effectively
More informationTypical Runtime Layout. Tiger Runtime Environments. Example: Nested Functions. Activation Trees. code. Memory Layout
Tiger Runtime Environments Compile-time environments are just symbol tables; they are used to assist static semantic analysis, code generation and code optimization. Run-time environments are about how
More informationAdam Chlipala University of California, Berkeley ICFP 2006
Modular Development of Certified Program Verifiers with a Proof Assistant Adam Chlipala University of California, Berkeley ICFP 2006 1 Who Watches the Watcher? Program Verifier Might want to ensure: Memory
More informationIntermediate Programming, Spring 2017*
600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general
More informationToday s topics. MIPS operations and operands. MIPS arithmetic. CS/COE1541: Introduction to Computer Architecture. A Review of MIPS ISA.
Today s topics CS/COE1541: Introduction to Computer Architecture MIPS operations and operands MIPS registers Memory view Instruction encoding A Review of MIPS ISA Sangyeun Cho Arithmetic operations Logic
More informationMotivation. Compiler. Our ultimate goal: Hack code. Jack code (example) Translate high-level programs into executable code. return; } } return
Motivation Jack code (example) class class Main Main { { static static int int x; x; function function void void main() main() { { Inputs Inputs and and multiplies multiplies two two numbers numbers var
More informationComputer Hardware Engineering
2 Course Structure Computer Hardware ngineering IS1200, spring 2015 Lecture 3: Languages Module 4: I/O Systems Module 1: Logic Design L DCÖ1 L DCÖ2 Lab:dicom L7 Module 2: C and Assembly Programming Associate
More informationLecture #16: Introduction to Runtime Organization. Last modified: Fri Mar 19 00:17: CS164: Lecture #16 1
Lecture #16: Introduction to Runtime Organization Last modified: Fri Mar 19 00:17:19 2010 CS164: Lecture #16 1 Status Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces
More informationCS64 Week 5 Lecture 1. Kyle Dewey
CS64 Week 5 Lecture 1 Kyle Dewey Overview More branches in MIPS Memory in MIPS MIPS Calling Convention More Branches in MIPS else_if.asm nested_if.asm nested_else_if.asm Memory in MIPS Accessing Memory
More information15-411: LLVM. Jan Hoffmann. Substantial portions courtesy of Deby Katz
15-411: LLVM Jan Hoffmann Substantial portions courtesy of Deby Katz and Gennady Pekhimenko, Olatunji Ruwase,Chris Lattner, Vikram Adve, and David Koes Carnegie What is LLVM? A collection of modular and
More informationSemantics of an Intermediate Language for Program Transformation
Semantics of an Intermediate Language for Program Transformation Sigurd Schneider Advisors: Sebastian Hack, Gert Smolka Student Session at POPL 2013 Saarland University Graduate School of Computer Science
More informationTutorial: Building a backend in 24 hours. Anton Korobeynikov
Tutorial: Building a backend in 24 hours Anton Korobeynikov anton@korobeynikov.info Outline 1. Codegen phases and parts 2. The Target 3. First steps 4. Custom lowering 5. Next steps Codegen Phases Preparation
More informationCompiling Code, Procedures and Stacks
Compiling Code, Procedures and Stacks L03-1 RISC-V Recap Computational Instructions executed by ALU Register-Register: op dest, src1, src2 Register-Immediate: op dest, src1, const Control flow instructions
More informationCompiler Verification meets Cross-Language Linking via Data Abstraction
Compiler Verification meets Cross-Language Linking via Data Abstraction Peng Wang, Santiago Cuellar, Adam Chlipala, MIT CSAIL Princeton University MIT CSAIL Verified Compiler Program Verification Techniques
More informationLecture 4: Instruction Set Design/Pipelining
Lecture 4: Instruction Set Design/Pipelining Instruction set design (Sections 2.9-2.12) control instructions instruction encoding Basic pipelining implementation (Section A.1) 1 Control Transfer Instructions
More informationCENG3420 Lecture 03 Review
CENG3420 Lecture 03 Review Bei Yu byu@cse.cuhk.edu.hk 2017 Spring 1 / 38 CISC vs. RISC Complex Instruction Set Computer (CISC) Lots of instructions of variable size, very memory optimal, typically less
More informationProject 3 Due October 21, 2015, 11:59:59pm
Project 3 Due October 21, 2015, 11:59:59pm 1 Introduction In this project, you will implement RubeVM, a virtual machine for a simple bytecode language. Later in the semester, you will compile Rube (a simplified
More informationConcurrency. Johan Montelius KTH
Concurrency Johan Montelius KTH 2017 1 / 32 What is concurrency? 2 / 32 What is concurrency? Concurrency: (the illusion of) happening at the same time. 2 / 32 What is concurrency? Concurrency: (the illusion
More informationCode Generation. The Main Idea of Today s Lecture. We can emit stack-machine-style code for expressions via recursion. Lecture Outline.
The Main Idea of Today s Lecture Code Generation We can emit stack-machine-style code for expressions via recursion (We will use MIPS assembly as our target language) 2 Lecture Outline What are stack machines?
More informationWhat is concurrency? Concurrency. What is parallelism? concurrency vs parallelism. Concurrency: (the illusion of) happening at the same time.
What is concurrency? Concurrency Johan Montelius KTH 2017 Concurrency: (the illusion of) happening at the same time. A property of the programing model. Why would we want to do things concurrently? What
More informationHoare logic. A proof system for separation logic. Introduction. Separation logic
Introduction Hoare logic Lecture 6: Examples in separation logic In the previous lecture, we saw how reasoning about pointers in Hoare logic was problematic, which motivated introducing separation logic.
More informationMidterm Review. PIC 10B Spring 2018
Midterm Review PIC 10B Spring 2018 Q1 What is size t and when should it be used? A1 size t is an unsigned integer type used for indexing containers and holding the size of a container. It is guarenteed
More informationWe can emit stack-machine-style code for expressions via recursion
Code Generation The Main Idea of Today s Lecture We can emit stack-machine-style code for expressions via recursion (We will use MIPS assembly as our target language) 2 Lecture Outline What are stack machines?
More informationAnnouncements. My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM.
IR Generation Announcements My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM. This is a hard deadline and no late submissions will be
More informationSafety and Liveness of MCS Lock Layer by Layer
Safety and Liveness of MCS Lock Layer by Layer Jieung Kim (B), Vilhelm Sjöberg, Ronghui Gu, and Zhong Shao Yale University, New Haven, USA {jieung.kim,vilhelm.sjoberg,ronghui.gu,zhong.shao}@yale.edu Abstract.
More informationAnne Bracy CS 3410 Computer Science Cornell University
Anne Bracy CS 3410 Computer Science Cornell University The slides are the product of many rounds of teaching CS 3410 by Professors Weatherspoon, Bala, Bracy, McKee, and Sirer. compute jump/branch targets
More informationMachine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine
Machine Language Instructions Introduction Instructions Words of a language understood by machine Instruction set Vocabulary of the machine Current goal: to relate a high level language to instruction
More informationCertified Merger for C Programs Using a Theorem Prover: A First Step
Certified Merger for C Programs Using a Theorem Prover: A First Step Yuki Goto Kazuko Takahashi School of Science & Technology School of Science & Technology Kwansei Gakuin University Kwansei Gakuin University
More informationCPSC 311, 2010W1 Midterm Exam #2
CPSC 311, 2010W1 Midterm Exam #2 2010/11/02 Page 1 of 18 CPSC 311, 2010W1 Midterm Exam #2 Name: Q1: 20 Student ID: Q2: 20 Signature (required; indicates agreement with rules below): Q3: 20 Q4: 20 Q5: 20
More informationStatic and User-Extensible Proof Checking. Antonis Stampoulis Zhong Shao Yale University POPL 2012
Static and User-Extensible Proof Checking Antonis Stampoulis Zhong Shao Yale University POPL 2012 Proof assistants are becoming popular in our community CompCert [Leroy et al.] sel4 [Klein et al.] Four-color
More information