C++ internals. Francis Visoiu Mistrih - 1 / 41
|
|
- Emery Bruce
- 6 years ago
- Views:
Transcription
1 C++ internals Francis Visoiu Mistrih - francis@lse.epita.fr 1 / 41
2 Language features Standard Standard library ISO C++ Committee 2 / 41
3 ABI Specifies an interface between object files Implementation details: runtime functions, memory layout, etc. Depends on: Platform, architecture N4028 aims at defining a portable ABI We'll focus on the Itanium C++ ABI. 3 / 41
4 Example The standard allows virtual member function calls The ABI specifies that virtual calls should use a vtable 4 / 41
5 Name mangling void foo(int i) } void bar(int i) } C T bar T foo C T _Z3bari T _Z3fooi 5 / 41
6 Name mangling - Overloading void foo(int i) } void foo(float i) } C error: conflicting types for 'foo' C T _Z3foof T _Z3fooi 6 / 41
7 Name mangling - Overloading void foo(int); _Z3fooi void foo(float); _Z3foof 7 / 41
8 $ c++filt _ZNSt6vectorIiSaIiEEC2Ev $ llvm-cxxfilt _ZNSt6vectorIiSaIiEEC2Ev Name mangling - more std::vector<int, std::allocator<int>>::vector() Functions, templates, types, operators, namespaces vtables, rtti, thunks, ctor, dtor decltype, lambdas, member pointers, etc. 8 / 41
9 Class members struct str str(int field) : field_field} } void change_field(int new_field) field_ = new_field; } int field_; 9 / 41
10 Class members void str::change_field(int new_field) field_ = new_field; } first argument -> %rdi second argument -> %rsi <str::change_field(int)>: 0: mov %esi,(%rdi) 2: c3 retq 10 / 41
11 Class members void str::change_field(str *this, int new_field) this->field_ = new_field; } first argument -> %rdi (this) second argument -> %rsi (new_field) <str::change_field(int)>: 0: mov %esi,(%rdi) 2: c3 retq 11 / 41
12 Member pointers struct str int field_; int field2_; int str::*field_ptr = &str::field_; int str::*field2_ptr = &str::field2_; str s; s.*field_ptr = 30; s.*field2_ptr = 42; A pointer to data member is an offset from the base address of the class object containing it, represented as a ptrdiff_t. field_ptr == 0x0 field2_ptr == 0x4 12 / 41
13 Simple inheritance struct base int field_; struct derived : base int field2_; 13 / 41
14 Multiple inheritance struct base1 int field1_; struct base2 int field2_; struct derived : base1, base2 int field3_; 14 / 41
15 Simple inheritance - Cast derived d; base *b = &d; assert((void*)&d == (void*)&b); 15 / 41
16 Multiple inheritance - Cast derived d; base1 *b = &d; assert((void*)&d == (void*)&b); 16 / 41
17 Multiple inheritance - Cast derived d; base2 *b = &d; assert((void*)&d!= (void*)&b); push mov sub lea [...] add pop retq %rbp %rsp,%rbp $0x10,%rsp -0xc(%rbp),%rdi $0x10,%rsp %rbp 17 / 41
18 Virtual struct base int field_; virtual void foo() } 18 / 41
19 vtable 19 / 41
20 Virtual struct base int field_; virtual void foo() } struct derived : base int field2_; void foo() override } 20 / 41
21 vtable - override base *b = new base; 21 / 41
22 vtable - override base *b = new derived; 22 / 41
23 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; 23 / 41
24 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; 24 / 41
25 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; 25 / 41
26 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; 26 / 41
27 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } derived d; base2 &b = b; b.bar(); struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; 27 / 41
28 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } derived d; base2 &b = b; b.bar(); struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; void bar() override } 28 / 41
29 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } derived d; base2 &b = b; b.bar(); b.vptr[0](&b); decltype(b) == base2& struct derived : base1, base2 int field3_; void bar() override } 29 / 41
30 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; void bar() override } derived d; base2 &b = b; b.bar(); b.vptr[0](&b); decltype(b) == base2& this!= &d Inside derived::bar 30 / 41
31 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } derived d; base2 &b = b; b.bar(); b.vptr[0](&b); decltype(b) == base2& Inside derived::bar struct derived : base1, base2 int field3_; void bar() override } this!= &d Thunks. 31 / 41
32 Virtual - multiple inheritance struct base1 int field_; virtual void foo() } struct base2 int field2_; virtual void bar() } struct derived : base1, base2 int field3_; void bar() override } 32 / 41
33 Thunks thunk to derived::bar() addq $-16, %rdi jmp derived::bar() thunk to derived::bar() this -= 16 derived::bar(this) } 33 / 41
34 Object files ELF sections struct str void foo() } void bar() } Sections [4].group GROUP [5].text._ZN3str3foo PROGBITS a 0 AXG [6].group GROUP [7].text._ZN3str3bar PROGBITS a 0 AXG / 41
35 Object files Symbols struct str void foo() } void bar() } nm -C W str::bar() W str::foo() When a weak defined symbol is linked with a normal defined symbol, the normal defined symbol is used with no error. 35 / 41
36 Object files Symbols struct str void foo(); void bar(); void str::foo() void str::bar() nm -C T str::bar() T str::foo() ODR: one definition rule 36 / 41
37 Object files Symbols template <typename T> struct str T foo(); template <typename T> T str<t>::foo() return } str<int> s; s.foo(); W str<int>::foo() Templates are weak. 37 / 41
38 Where is the vtable? In the code segment (read + executable) Avoid runtime modifications The virtual table for a class is emitted in the same object containing the definition of its key function 38 / 41
39 The virtual table for a class is emitted in the same object containing the definition of its key function Key function The first non-pure virtual function that is not inline struct str virtual void foo() } virtual void bar(); void str::bar() } If there is no key function, it is emitted everywhere used struct str virtual void foo() } 39 / 41
40 More Virtual-base inheritance, exceptions, SEH, RTTI, unwind tables, ABI runtime support, new/delete, dynamic_cast, etc. 40 / 41
41 References Any Slideshow created using remark. 41 / 41
Introducing C++ David Chisnall. March 15, 2011
Introducing C++ David Chisnall March 15, 2011 Why Learn C++? Lots of people used it to write huge, unmaintainable code......which someone then gets paid a lot to maintain. C With Classes Predecessor of
More informationOverview. Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading
How C++ Works 1 Overview Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading Motivation There are lot of myths about C++
More informationOverview. Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading
HOW C++ WORKS Overview Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading Motivation There are lot of myths about C++
More informationInheritance, Polymorphism and the Object Memory Model
Inheritance, Polymorphism and the Object Memory Model 1 how objects are stored in memory at runtime? compiler - operations such as access to a member of an object are compiled runtime - implementation
More informationAn Insight Into Inheritance, Object Oriented Programming, Run-Time Type Information, and Exceptions PV264 Advanced Programming in C++
An Insight Into Inheritance, Object Oriented Programming, Run-Time Type Information, and Exceptions PV264 Advanced Programming in C++ Nikola Beneš Jan Mrázek Vladimír Štill Faculty of Informatics, Masaryk
More informationAdvanced C++ Topics. Alexander Warg, 2017
www.kernkonzept.com Advanced C++ Topics Alexander Warg, 2017 M I C R O K E R N E L M A D E I N G E R M A N Y Overview WHAT IS BEHIND C++ Language Magics Object Life Time Object Memory Layout INTRODUCTION
More informationSeptember 10,
September 10, 2013 1 Bjarne Stroustrup, AT&T Bell Labs, early 80s cfront original C++ to C translator Difficult to debug Potentially inefficient Many native compilers exist today C++ is mostly upward compatible
More informationDEVIRTUALIZATION IN LLVM
DEVIRTUALIZATION IN LLVM Piotr Padlewski piotr.padlewski@gmail.com University of Warsaw IIIT @PiotrPadlewski CURRENT DEVIRTUALIZATION IN THE FRONTEND struct A { ; virtual void foo(); void f() { A a; a.foo();
More informationComputer Systems C S Cynthia Lee
Computer Systems C S 1 0 7 Cynthia Lee 2 Today s Topics Function call and return in x86-64 Registers Call stack NEXT TIME: NEW topic: the build process Taking a look at each step of the process Preprocessor,
More informationPolymorphism. Zimmer CSCI 330
Polymorphism Polymorphism - is the property of OOP that allows the run-time binding of a function's name to the code that implements the function. (Run-time binding to the starting address of the code.)
More informationCSE 401/M501 Compilers
CSE 401/M501 Compilers Code Shape II Objects & Classes Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 L-1 Administrivia Semantics/type check due next Thur. 11/15 How s it going? Reminder: if you want
More informationFuzzing Clang to find ABI Bugs. David Majnemer
Fuzzing Clang to find ABI Bugs David Majnemer What s in an ABI? The size, alignment, etc. of types Layout of records, RTTI, virtual tables, etc. The decoration of types, functions, etc. To generalize:
More informationFormal Verication of C++ Object Construction and Destruction
Formal Verication of C++ Object Construction and Destruction Tahina Ramananandro 1 1 INRIA Paris-Rocquencourt November 18th, 2011 Ramananandro (INRIA) Formal verif. of C++ object constr. and destr.november
More information18-600: Recitation #4 Exploits
18-600: Recitation #4 Exploits 20th September 2016 Agenda More x86-64 assembly Buffer Overflow Attack Return Oriented Programming Attack 3 Recap: x86-64: Register Conventions Arguments passed in registers:
More informationCSE 351 Midterm - Winter 2015
CSE 351 Midterm - Winter 2015 February 09, 2015 Please read through the entire examination first! We designed this exam so that it can be completed in 50 minutes and, hopefully, this estimate will prove
More informationToday s Big Adventure
Today s Big Adventure - How to name and refer to things that don t exist yet - How to merge separate name spaces into a cohesive whole Readings - man a.out & elf on a Solaris machine - run nm or objdump
More informationQUIZ. Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed?
QUIZ Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed? Or Foo(x), depending on how we want the initialization
More informationToday s Big Adventure
1/34 Today s Big Adventure - How to name and refer to things that don t exist yet - How to merge separate name spaces into a cohesive whole Readings - man a.out & elf on a Solaris machine - run nm or objdump
More informationCompiler Design Spring 2017
Compiler Design Spring 2017 6.0 Runtime system and object layout Dr. Zoltán Majó Compiler Group Java HotSpot Virtual Machine Oracle Corporation 1 Runtime system Some open issues from last time Handling
More informationDRuntime and You David Nadlinger ETH Zurich
DRuntime and You David Nadlinger (@klickverbot) ETH Zurich Agenda Warmup: TypeInfo and ModuleInfo Exception handling Garbage collection Thread-local storage Fibers Interlude: C program startup Shared
More informationCSE 351 Midterm - Winter 2015 Solutions
CSE 351 Midterm - Winter 2015 Solutions February 09, 2015 Please read through the entire examination first! We designed this exam so that it can be completed in 50 minutes and, hopefully, this estimate
More informationC to Assembly SPEED LIMIT LECTURE Performance Engineering of Software Systems. I-Ting Angelina Lee. September 13, 2012
6.172 Performance Engineering of Software Systems SPEED LIMIT PER ORDER OF 6.172 LECTURE 3 C to Assembly I-Ting Angelina Lee September 13, 2012 2012 Charles E. Leiserson and I-Ting Angelina Lee 1 Bugs
More informationAdvanced C++ Programming Workshop (With C++11, C++14, C++17) & Design Patterns
Advanced C++ Programming Workshop (With C++11, C++14, C++17) & Design Patterns This Advanced C++ Programming training course is a comprehensive course consists of three modules. A preliminary module reviews
More informationC++ Runtime Environment Programming Guide
C++ Runtime Environment Programming Guide Contents Introduction 3 Organization of This Document 3 Overview of the C++ Runtime Environment 4 Targeting Mac OS X v10.3.8 and Earlier 4 Targeting Mac OS X v10.3.9
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 informationStack Frames. September 2, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 September 2, / 15
Stack Frames Geoffrey Brown Bryce Himebaugh Indiana University September 2, 2016 Geoffrey Brown, Bryce Himebaugh 2015 September 2, 2016 1 / 15 Outline Preserving Registers Saving and Restoring Registers
More informationDevirtualize Documentation
Devirtualize Documentation Release 0.1 Adam Schwalm January 25, 2017 Contents 1 The basics 1 1.1 Requirements............................................... 1 1.2 Installation................................................
More informationGetting the Best From G++
Getting the Best From G++ Nathan Sidwell CodeSourcery LLC nathan@codesourcery.com Abstract The 3.0 series of G++ compilers and libraries offers a new multi-vendor ABI and increasing conformance to the
More informationPreface to the Second Edition Preface to the First Edition Brief Contents Introduction to C++ p. 1 A Review of Structures p.
Preface to the Second Edition p. iii Preface to the First Edition p. vi Brief Contents p. ix Introduction to C++ p. 1 A Review of Structures p. 1 The Need for Structures p. 1 Creating a New Data Type Using
More informationCS3157: Advanced Programming. Outline
CS3157: Advanced Programming Lecture #12 Apr 3 Shlomo Hershkop shlomo@cs.columbia.edu 1 Outline Intro CPP Boring stuff: Language basics: identifiers, data types, operators, type conversions, branching
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 informationCpt S 122 Data Structures. Course Review Midterm Exam # 2
Cpt S 122 Data Structures Course Review Midterm Exam # 2 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 2 When: Monday (11/05) 12:10 pm -1pm
More informationCS-220 Spring 2018 Final Exam Version Practice May 10, Name:
CS-220 Spring 2018 Final Exam Version Practice May 10, 2018 Name: 1. (10 points) For the following, Check T if the statement is true, the F if the statement is false. (a) T F : One of the advantages of
More informationDesign issues for objectoriented. languages. Objects-only "pure" language vs mixed. Are subclasses subtypes of the superclass?
Encapsulation Encapsulation grouping of subprograms and the data they manipulate Information hiding abstract data types type definition is hidden from the user variables of the type can be declared variables
More information1 Number Representation(10 points)
Name: Sp15 Midterm Q1 1 Number Representation(10 points) 1 NUMBER REPRESENTATION(10 POINTS) Let x=0xe and y=0x7 be integers stored on a machine with a word size of 4bits. Show your work with the following
More informationAn Evil Copy: How the Loader Betrays You
An Evil Copy: How the Loader Betrays You Xinyang Ge 1,3, Mathias Payer 2 and Trent Jaeger 3 Microsoft Research 1 Purdue University 2 Penn State University 3 Page 1 Problem: A Motivating Example // main.c
More informationSoftware 1 with Java. Initialization. Initialization. Initialization. Pass by Value. Initialization. Recitation No. 11 (Summary)
Software 1 with Java Recitation No. 11 (Summary) public class Foo { static int bar; public static void main (String args []) { bar += 1; System.out.println("bar = " + bar); The Does output the code is:
More informationBuffer overflows (a security interlude) Address space layout the stack discipline + C's lack of bounds-checking HUGE PROBLEM
Buffer overflows (a security interlude) Address space layout the stack discipline + C's lack of bounds-checking HUGE PROBLEM x86-64 Linux Memory Layout 0x00007fffffffffff not drawn to scale Stack... Caller
More informationECE Fall 2014, Final Exam
ECE 30862 Fall 2014, Final Exam DO NOT START WORKING ON THIS UNTIL TOLD TO DO SO. LEAVE IT ON THE DESK. THE LAST TWO PAGES ARE THE ANSWER SHEETS. TEAR THEM OFF AND PUT ALL ANSWERS ON THEM. TURN IN BOTH
More informationCompile-Time Function Call Interception to Mock Functions in C/C++
Compile-Time Function Call Interception to Mock Functions in C/C++ Gábor Márton, Zoltán Porkoláb Ericsson Hungary Ltd., Eötvös Loránd University, Budapest martongabesz@gmail.com, zoltan.porkolab@ericsson.com,
More information143A: Principles of Operating Systems. Lecture 4: Calling conventions. Anton Burtsev October, 2017
143A: Principles of Operating Systems Lecture 4: Calling conventions Anton Burtsev October, 2017 Recap from last time Stack and procedure calls What is stack? Stack It's just a region of memory Pointed
More informationQuestion 1: Number Representation
Question 1: Number Representation (A) What is the value of the char 0b 1101 1101 in decimal? If x = 0xDD, x = 0x23 = 2 5 +3 = 35 Also accepted unsigned: 0xDD = (16+1)*13 = 221-35 or 221 (B) What is the
More informationWhere We Are. Optimizations. Assembly code. generation. Lexical, Syntax, and Semantic Analysis IR Generation. Low-level IR code.
Where We Are Source code if (b == 0) a = b; Low-level IR code Optimized Low-level IR code Assembly code cmp $0,%rcx cmovz %rax,%rdx Lexical, Syntax, and Semantic Analysis IR Generation Optimizations Assembly
More informationLambdas in unevaluated contexts
Lambdas in unevaluated contexts Document #: P0315R1 Date: 2016-08-01 Project: Programming Language C++ Evolution Group Reply-to: Louis Dionne 1 Revision history R0 Initial draft R1
More informationDo not turn the page until 12:30.
University of Washington Computer Science & Engineering Autumn 2016 Instructor: Justin Hsia 2016-12-13 Last Name: First Name: Perfect Perry Student ID Number: 1234567 Section you attend (circle): Chris
More informationMidterm. Median: 56, Mean: "midterm.data" using 1:2 1 / 37
30 Midterm "midterm.data" using 1:2 25 20 15 10 5 0 0 20 40 60 80 100 Median: 56, Mean: 53.13 1 / 37 Today s Big Adventure f.c gcc f.s as f.o c.c gcc c.s as c.o ld a.out How to name and refer to things
More informationAreas for growth: I love feedback
Assembly part 2 1 Areas for growth: I love feedback Speed, I will go slower. Clarity. I will take time to explain everything on the slides. Feedback. I give more Kahoot questions and explain each answer.
More informationHomework I - Solution
CS 426 Fall 2017 1 Homework I - Solution Homework I - Solution CS 426 Compiler Construction Fall Semester 2017 1. (50 points) Intermediate representations: (a) (25 points) Construct a Control-Flow Graph
More informationIntroduction to Scientific Programming in C++
Introduction to Scientific Programming in C++ Ramses van Zon Scott Northrup SciNet/Compute Canada March 15, 2011 Ramses van Zon, Scott Northrup (SciNet) Intro Scientific Programming in C++ March 15, 2011
More information18-600: Recitation #4 Exploits (Attack Lab)
18-600: Recitation #4 Exploits (Attack Lab) September 19th, 2017 Announcements Some students have triggered the bomb multiple times Use breakpoints for explode_bomb() Attack lab will be released on Sep.
More informationCS153: Compilers Lecture 11: Compiling Objects
CS153: Compilers Lecture 11: Compiling Objects Stephen Chong https://www.seas.harvard.edu/courses/cs153 Announcements Project 3 due today Project 4 out Due Thursday Oct 25 (16 days) Project 5 released
More informationuftrace: A function graph tracer for C/C++ userspace programs
uftrace: A function graph tracer for C/C++ userspace programs Lightning Talk at CppCon 2016 September 23, 2016 Namhyung Kim, Honggyu Kim LG Electronics {namhyung.kim, hong.gyu.kim@lge.com uftrace https://github.com/namhyung/uftrace
More informationCS Bootcamp x86-64 Autumn 2015
The x86-64 instruction set architecture (ISA) is used by most laptop and desktop processors. We will be embedding assembly into some of our C++ code to explore programming in assembly language. Depending
More informationDownload the tarball for this session. It will include the following files:
Getting Started 1 Download the tarball for this session. It will include the following files: driver driver.c bomb.h bomb.o 64-bit executable C driver source declaration for "bomb" 64-bit object code for
More informationLambdas in unevaluated contexts
Lambdas in unevaluated contexts Document #: P0315R2 Date: 2017-06-18 Project: Programming Language C++ Audience: Core Working Group Reply-to: Louis Dionne Hubert Tong
More informationCS429: Computer Organization and Architecture
CS429: Computer Organization and Architecture Dr. Bill Young Department of Computer Sciences University of Texas at Austin Last updated: February 28, 2018 at 06:32 CS429 Slideset 9: 1 Mechanisms in Procedures
More informationDynamic Dispatch and Duck Typing. L25: Modern Compiler Design
Dynamic Dispatch and Duck Typing L25: Modern Compiler Design Late Binding Static dispatch (e.g. C function calls) are jumps to specific addresses Object-oriented languages decouple method name from method
More informationComputer Systems Lecture 9
Computer Systems Lecture 9 CPU Registers in x86 CPU status flags EFLAG: The Flag register holds the CPU status flags The status flags are separate bits in EFLAG where information on important conditions
More informationBryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition. Carnegie Mellon
Carnegie Mellon Machine-Level Programming III: Procedures 15-213/18-213/14-513/15-513: Introduction to Computer Systems 7 th Lecture, September 18, 2018 Today Procedures Mechanisms Stack Structure Calling
More informationMachine-level Programs Procedure
Computer Systems Machine-level Programs Procedure Han, Hwansoo Mechanisms in Procedures Passing control To beginning of procedure code Back to return point Passing data Procedure arguments Return value
More informationAssembly III: Procedures. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University
Assembly III: Procedures Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Mechanisms in Procedures Passing control To beginning of procedure code
More informationFrancesco Nidito. Programmazione Avanzata AA 2007/08
Francesco Nidito Programmazione Avanzata AA 2007/08 Outline 1 2 3 4 Reference: Micheal L. Scott, Programming Languages Pragmatics, Chapter 10 , type systems and type checking A type type is an abstraction
More informationIntroduction to C++ Introduction to C++ Dr Alex Martin 2013 Slide 1
Introduction to C++ Introduction to C++ Dr Alex Martin 2013 Slide 1 Inheritance Consider a new type Square. Following how we declarations for the Rectangle and Circle classes we could declare it as follows:
More information143A: Principles of Operating Systems. Lecture 5: Calling conventions. Anton Burtsev January, 2017
143A: Principles of Operating Systems Lecture 5: Calling conventions Anton Burtsev January, 2017 Stack and procedure calls Stack Main purpose: Store the return address for the current procedure Caller
More informationFrancesco Nidito. Programmazione Avanzata AA 2007/08
Francesco Nidito Programmazione Avanzata AA 2007/08 Outline 1 2 3 4 Reference: Micheal L. Scott, Programming Languages Pragmatics, Chapter 10 , type systems and type checking A type type is an abstraction
More informationCSE 351 Midterm - Winter 2017
CSE 351 Midterm - Winter 2017 February 08, 2017 Please read through the entire examination first, and make sure you write your name and NetID on all pages! We designed this exam so that it can be completed
More informationPrinceton University Computer Science 217: Introduction to Programming Systems. Assembly Language: Function Calls
Princeton University Computer Science 217: Introduction to Programming Systems Assembly Language: Function Calls 1 Goals of this Lecture Help you learn: Function call problems x86-64 solutions Pertinent
More informationCSE351 Autumn 2012 Midterm Exam (5 Nov 2012)
CSE351 Autumn 2012 Midterm Exam (5 Nov 2012) Please read through the entire examination first! We designed this exam so that it can be completed in 50 minutes and, hopefully, this estimate will prove to
More informationSmartDec: Approaching C++ Decompilation
2011 18th Working Conference on Reverse Engineering SmartDec: Approaching C++ Decompilation Alexander Fokin, Egor Derevenetc, Alexander Chernov and Katerina Troshina Computational Math. and Cybernetics
More informationCOMP6771 Advanced C++ Programming
1 COMP6771 Advanced C++ Programming Week 11 Object Oriented Programming 2016 www.cse.unsw.edu.au/ cs6771 2 Covariants and Contravariants Let us assume that Class B is a subtype of class A. Covariants:
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationThe Four Polymorphisms in C++ Subtype Polymorphism (Runtime Polymorphism) Polymorphism in C
The Four Polymorphisms in C++ When people talk about polymorphism in C++ they usually mean the thing of using a derived class through the base class pointer or reference, which is called subtype polymorphism.
More informationCS-220 Spring 2018 Test 2 Version Practice Apr. 23, Name:
CS-220 Spring 2018 Test 2 Version Practice Apr. 23, 2018 Name: 1. (10 points) For the following, Check T if the statement is true, the F if the statement is false. (a) T F : The main difference between
More information238P: Operating Systems. Lecture 3: Calling conventions. Anton Burtsev October, 2018
238P: Operating Systems Lecture 3: Calling conventions Anton Burtsev October, 2018 What does CPU do internally? (Remember Lecture 01 - Introduction?) CPU execution loop CPU repeatedly reads instructions
More information15-213/18-243, Fall 2010 Exam 1 - Version A
Andrew login ID: Full Name: Section: 15-213/18-243, Fall 2010 Exam 1 - Version A Tuesday, September 28, 2010 Instructions: Make sure that your exam is not missing any sheets, then write your Andrew login
More informationOverriding Variables: Shadowing
Overriding Variables: Shadowing We can override methods, can we override instance variables too? Answer: Yes, it is possible, but not recommended Overriding an instance variable is called shadowing, because
More informationC++11: 10 Features You Should be Using. Gordon R&D Runtime Engineer Codeplay Software Ltd.
C++11: 10 Features You Should be Using Gordon Brown @AerialMantis R&D Runtime Engineer Codeplay Software Ltd. Agenda Default and Deleted Methods Static Assertions Delegated and Inherited Constructors Null
More information15-213, Fall 2007 Midterm Exam
Andrew login ID: Full Name: 15-213, Fall 2007 Midterm Exam October 17, 2007, 1:00pm-2:20pm Instructions: Make sure that your exam is not missing any sheets, then write your full name and Andrew login ID
More informationWeek 7. Statically-typed OO languages: C++ Closer look at subtyping
C++ & Subtyping Week 7 Statically-typed OO languages: C++ Closer look at subtyping Why talk about C++? C++ is an OO extension of C Efficiency and flexibility from C OO program organization from Simula
More informationCS356: Discussion #7 Buffer Overflows. Marco Paolieri
CS356: Discussion #7 Buffer Overflows Marco Paolieri (paolieri@usc.edu) Array Bounds class Bounds { public static void main(string[] args) { int[] x = new int[10]; for (int i = 0; i
More informationWhat about Object-Oriented Languages?
What about Object-Oriented Languages? What is an OOL? A language that supports object-oriented programming How does an OOL differ from an ALL? (ALGOL-Like Language) Data-centric name scopes for values
More informationDo not turn the page until 12:30.
University of Washington Computer Science & Engineering Autumn 2016 Instructor: Justin Hsia 2016-12-13 Last Name: First Name: Student ID Number: Section you attend (circle): Chris Yufang John Kevin Sachin
More informationTDDE18 & 726G77. Functions
TDDE18 & 726G77 Functions Labs update No more one time password. We will note who have demonstrated during the lab and register this in webreg. Use the terminal to send in your lab! Dont use Visual studio
More informationIntro to OOP Visibility/protection levels and constructors Friend, convert constructor, destructor Operator overloading a<=b a.
Intro to OOP - Object and class - The sequence to define and use a class in a program - How/when to use scope resolution operator - How/when to the dot operator - Should be able to write the prototype
More informationStructured bindings with polymorphic lambas
1 Introduction Structured bindings with polymorphic lambas Aaryaman Sagar (aary800@gmail.com) August 14, 2017 This paper proposes usage of structured bindings with polymorphic lambdas, adding them to another
More informationWording for lambdas in unevaluated contexts
Wording for lambdas in unevaluated contexts Document #: P0315R4 Date: 2017-11-10 Project: Programming Language C++ Audience: Core Working Group Reply-to: Louis Dionne Hubert Tong
More informationC++ Important Questions with Answers
1. Name the operators that cannot be overloaded. sizeof,.,.*,.->, ::,? 2. What is inheritance? Inheritance is property such that a parent (or super) class passes the characteristics of itself to children
More informationAdvanced Systems Programming
Advanced Systems Programming Introduction to C++ Martin Küttler September 19, 2017 1 / 18 About this presentation This presentation is not about learning programming or every C++ feature. It is a short
More informationMachine-Level Programming (2)
Machine-Level Programming (2) Yanqiao ZHU Introduction to Computer Systems Project Future (Fall 2017) Google Camp, Tongji University Outline Control Condition Codes Conditional Branches and Conditional
More informationCSCI 2021: x86-64 Control Flow
CSCI 2021: x86-64 Control Flow Chris Kauffman Last Updated: Mon Mar 11 11:54:06 CDT 2019 1 Logistics Reading Bryant/O Hallaron Ch 3.6: Control Flow Ch 3.7: Procedure calls Goals Jumps and Control flow
More informationThe Inefficiency of C++ Fact or Fiction?
The Inefficiency of C++ Fact or Fiction? IAR Systems Anders Lundgren Lotta Frimanson C++ C++ is a general-purpose programming language designed to make programming more enjoyable for the serious programmer.
More informationWentworth Institute of Technology COMP201 Computer Science II Spring 2015 Derbinsky. C++ Kitchen Sink. Lecture 14.
Lecture 14 1 Exceptions Iterators Random numbers Casting Enumerations Pairs The Big Three Outline 2 Error Handling It is often easier to write a program by first assuming that nothing incorrect will happen
More informationMODERN AND LUCID C++ ADVANCED
Informatik MODERN AND LUCID C++ ADVANCED for Professional Programmers Prof. Peter Sommerlad Thomas Corbat Director of IFS Research Assistant Rapperswil, FS 2016 LIBRARY API/ABI DESIGN PIMPL IDIOM HOURGLASS
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationMachine-Level Programming III: Procedures
Machine-Level Programming III: Procedures CSE 238/2038/2138: Systems Programming Instructor: Fatma CORUT ERGİN Slides adapted from Bryant & O Hallaron s slides Mechanisms in Procedures Passing control
More informationDownload the tarball for this session. It will include the following files:
Getting Started 1 Download the tarball for this session. It will include the following files: driver driver.c bomb.h bomb.o 64-bit executable C driver source declaration for "bomb" 64-bit object code for
More informationBuffer Overflows Many of the following slides are based on those from Complete Powerpoint Lecture Notes for Computer Systems: A Programmer's Perspective (CS:APP) Randal E. Bryant and David R. O'Hallaron
More informationRemedial C Now that we can actually use it Pete Williamson
Remedial C++ 11 Now that we can actually use it Pete Williamson (petewil00@hotmail.com) Overview (1) auto lambdas nullptr = default, = delete shared_ptr Range based for loops Overview (2) Uniform initialization
More informationCS356: Discussion #8 Buffer-Overflow Attacks. Marco Paolieri
CS356: Discussion #8 Buffer-Overflow Attacks Marco Paolieri (paolieri@usc.edu) Previous Example #include void unreachable() { printf("impossible.\n"); void hello() { char buffer[6]; scanf("%s",
More informationFunction Call Convention
Function Call Convention Compass Security Schweiz AG Werkstrasse 20 Postfach 2038 CH-8645 Jona Tel +41 55 214 41 60 Fax +41 55 214 41 61 team@csnc.ch www.csnc.ch Content Intel Architecture Memory Layout
More information