Ryan Sciampacone IBM Managed Runtime Architect 29 th July Packed Objects IBM Corporation
|
|
- Alyson Richardson
- 6 years ago
- Views:
Transcription
1 Ryan Sciampacone IBM Managed Runtime Architect 29 th July 2013 Packed Objects 2013 IBM Corporation
2 Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES. ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE. IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS IBM Corporation
3 Problem IBM Corporation
4 Problem? What problem? JNI just isn t a great way to marshal data Locality in Java can matter (e.g., JEP 142) Existing native and data placement stories aren t very good In many cases, legacy systems exist the interop is just terrible So we want something that integrates well with the Java language and helps us IBM Corporation
5 Native Access Java Native anobject int[] d int int int int int Object header Object field / data Fighting the Java/Native interface IBM Corporation
6 Everything is an Object Array (object) Hash table Entry key Object header (object) Object field / data value IBM Corporation
7 Everything is an Object Array (object) Hash table Entry key Object header (object) Object field / data value IBM Corporation
8 Everything is an Object Array (object) Hash table Entry key Object header (object) Object field / data value IBM Corporation
9 Everything is an Object Array (object) Hash table Entry key Object header (object) Object field / data value IBM Corporation
10 Object Internals Object header Hot fields. Object field / data Field ordering has performance implications JVM can potentially reorder your fields for you IBM Corporation
11 Establishing Goals On heap / off heap seamless referencing of data Ability to do away with headers Ability to bring related objects close together This actually sounds a lot like C structure types struct Address { char[4] addr; short port; } struct Header { struct Address src; struct Address dst; } struct Header addr port addr port Address src Address dst Packed Objects! IBM Corporation
12 Basics IBM Corporation
13 Packed Objects: Under the covers Object header Object field / data apoint IBM Corporation
14 Packed Objects: Under the covers Object header Object field / data apoint apackedpoint IBM Corporation
15 Packed Objects: Under the covers Object header Object field / data apoint apackedpoint IBM Corporation
16 Packed Objects: In Practice Object header apoint Object field / data aline Point s Point e apoint IBM Corporation
17 Packed Objects: In Practice apoint apackedline Object header Object field / data aline Point s Point e apoint IBM Corporation
18 Packed Objects: In Practice apoint apackedline Object header Object field / data aline Point s Point e apoint apackedpoint s apackedpoint e IBM Corporation
19 Packed Objects: In Practice apoint apackedline Object header Object field / data aline Point s Point e apoint apackedpoint s apackedpoint final class PackedPoint extends PackedObject { ; ; final class PackedLine extends PackedObject { PackedPoint s; PackedPoint e; } IBM Corporation
20 Packed Objects: In Practice apoint apackedline Object header Object field / data aline Point s Point e apoint IBM Corporation
21 Packed Objects: In Practice apoint apackedline Object header Object field / data aline Point s Point e apoint apackedline.e IBM Corporation
22 Packed Objects: In Practice apoint apackedline Object header Object field / data aline Point s Point e apoint apackedpoint apackedline.e IBM Corporation
23 Packed Objects: In Practice with Arrays anarrayofpackedpoints Object header Object field / data. apackedpoint IBM Corporation
24 Packed Objects: In Practice with Native Access Java Native Object header Struct field / data struct Point { ; ; } IBM Corporation
25 Packed Objects: In Practice with Native Access Java Native Object header Struct field / data final class PackedPoint extends PackedObject { ; ; } struct Point { ; ; } IBM Corporation
26 Packed Objects: In Practice with Native Access Java Native Object header Struct field / data apackedpoint final class PackedPoint extends PackedObject { ; ; } struct Point { ; ; } IBM Corporation
27 Advantages IBM Corporation
28 Lets Build Something in C! struct Address { char[4] addr; short port; } struct Header { struct Address src; struct Address dst; } struct Header addr port addr port Address src Address dst Nested substructures Compact Alignment IBM Corporation
29 Let s Build the Same Something in Java! Address byte[] class Address { byte[] addr; short port; } class Header { Address src; Address dst; } Header Address src Address dst addr port Address addr port addr byte[] addr Headers Locality Alignment IBM Corporation
30 What does the Java code look like under the covers? Bytecodes: aload1 getfield Header.dest LAddress; getfield Address.addr [B iconst0 baload bipush 192 ificmpeq... JIT (32 bit): mov EBX, dword ptr -4[ECX] mov EBX, dword ptr 8[EBX] mov EBX, dword ptr 4[EBX] movsx EDI, byte ptr 8[EBX] cmp EDI, 192 // load temp1 // load dest // load addr // array[0] From a code point of view, this isn t terrible IBM Corporation
31 What if we did this with Packed final class Address extends PackedObject { PackedByte[[4]] addr; short port; final class PacketHeader extends PackedObject { Address src; Address dest; } apackedheader addr port addr port Address src Address dst The Java code is pretty clean and a pretty good result! IBM Corporation
32 Ok, what about the code under the covers? Bytecodes: aload1 getfield PackedHeader.dest LAddress; getfield Address.addr [B iconst0 baload bipush 192 ificmpeq... JIT (32 bit): mov EBX, dword ptr -4[ECX] // load temp1 mov EAX, dword ptr 4[EBX] // load mov EDX, dword ptr 8[EBX] // load lea EBX, dword ptr [EAX + EDX] movsx EDI, byte ptr 0[EBX] // array[0] cmp EDI, 192 Bytecodes don t change JIT code is pretty good too! IBM Corporation
33 What about native access? Java Native anobject addr port addr port How do we implement this normally? IBM Corporation
34 JNI implementation Usual stash pointers in long types tricks JNI costs tend to be high IBM Corporation
35 JNI implementation Usual stash pointers in long types tricks JNI costs tend to be high IBM Corporation
36 Unsafe implementation You shouldn t be here Keeping your indices straight is never fun IBM Corporation
37 DirectByteBuffer implementation No extra JNI to write (this is good) Still playing the indices game IBM Corporation
38 PackedObject answer apackedheader Ø addr port addr port Looks like natural Java code Foregoes JNI Same type capable of on-heap representation IBM Corporation
39 Challenges IBM Corporation
40 Identity Crisis Java Native apackedline Ø anotherpackedline Ø What does apackedline == anotherpackedline mean? The data is what really matters 2013 IBM Corporation
41 Synchronization Java Native apackedline Ø anotherpackedline Ø 2013 IBM Corporation
42 Synchronization Java Native apackedline Ø anotherpackedline apackedline.e.x = 10 anotherpackedline.e.x = 13 Ø Thread T1: synchronized (apackedline) { apackedline.e.x = 10; } Thread T2: synchronized (anotherpackedline) { anotherpackedline.e.x = 13; } 2013 IBM Corporation
43 Finalization apackedpoint apackedline IBM Corporation
44 Finalization apackedpoint apackedline IBM Corporation
45 Finalization apackedpoint apackedline Finalization? IBM Corporation
46 Finalization apackedpoint apackedline Finalization? Finalization? IBM Corporation
47 Finalization Java Native apackedline Ø anotherpackedline Finalization? Ø 2013 IBM Corporation
48 Nested Data Structures apackedline.s = apackedpoint; apackedline PackedPoint s PackedPoint e apackedpoint IBM Corporation
49 Nested Data Structures apackedline.s := apackedpoint; apackedline PackedPoint s PackedPoint e apackedpoint Base types do share the same assignment operator Helps convey apackedline == anotherpackedline as meaningless IBM Corporation
50 Field final class PackedPoint extends PackedObject { ; ; } PackedPoint(, ) { } No no-argument final class PackedLine extends PackedObject { PackedPoint s; PackedPoint e; } PackedLine(int sx, int sy, int ex, int ey) { } Implicitly instantiates PackedPoint objects for s & e fields 2013 IBM Corporation
51 Field final class PackedPoint extends PackedObject { ; ; void init(, ) { this.x = x; this.y = y; } } PackedPoint(, ) { final class PackedLine extends PackedObject { PackedPoint s; PackedPoint e; } PackedLine(int sx, int sy, int ex, int ey) { s.init(sx, sy); e.init(ex, ey); } 2013 IBM Corporation
52 Advanced IBM Corporation
53 Modeling Native Data Pointers struct BinaryTreeNode { struct BinaryTreeNode* left; struct BinaryTreeNode* right; // data } Java abinarytreenode Ø Native *left *right <data> *left *right <data> *left *right <data> IBM Corporation
54 Modeling Native Data Pointers? abinarytreenode.right struct BinaryTreeNode { struct BinaryTreeNode* left; struct BinaryTreeNode* right; // data } Java abinarytreenode Ø Native *left *right <data> *left *right <data> *left *right <data> IBM Corporation
55 Modeling Native Data Pointers? abinarytreenode.right struct BinaryTreeNode { struct BinaryTreeNode* left; struct BinaryTreeNode* right; // data } Java abinarytreenode Ø Native *left *right <data> 32b or 64b? *left *right <data> *left *right <data> IBM Corporation
56 Modeling Native Data class BinaryTreeNode extends PackedObject BinaryTreeNode BinaryTreeNode right; // data } Annotation to mark a field as a native pointer (rather than a Java one) Enhance getfield / putfield to recognize Restrict for security reasons Unmanaged pointers (no GC involvement) IBM Corporation
57 Modeling Native Data Pointers Java Native abinarytreenode Ø *left *right <data> *left *right <data> abinarytreenode.right IBM Corporation
58 Modeling Native Data Pointers Java Native abinarytreenode Ø Ø *left *right <data> *left *right <data> abinarytreenode.right IBM Corporation
59 final class Address extends PackedObject { PackedByte[[4]] addr; short port; final class PacketHeader extends PackedObject { Address src; Address dest; } apackedheader addr port addr port IBM Corporation
60 final class Address extends PackedObject { PackedByte[[4]] addr; short port; final class PacketHeader extends PackedObject { Address src; Address dest; } apackedheader addr port addr port apackedheader addr port addr addr port Which is the correct default behavior? How do you get the alternate if that s what you want? IBM Corporation
61 Alignment class A { int i; short s; short padding; // align long l; } class A { int i; short long l; } IBM Corporation
62 Alignment class A { int i; short s; short padding; // align long l; } class A { int i; short long l; } Padding isn t quite right in the context of nested final class Address extends PackedObject { PackedByte[[4]] addr; short port; final class PacketHeader extends PackedObject Address Address dest; } IBM Corporation
63 final class SimpleValue extends PackedObject { int value; } Java Native asimplevalue Ø DE 37 C4 FE Provide a field IBM Corporation
64 Possibilities IBM Corporation
65 Let s look at transferring data Heap A C B IBM Corporation
66 Let s look at transferring data Heap A Remote Transfer C B IBM Corporation
67 Let s look at transferring data Heap A Remote Transfer C B IBM Corporation
68 Let s look at transferring data Heap A Remote Transfer C B IBM Corporation
69 PackedObjects could help Heap A Remote Transfer C B IBM Corporation
70 PackedObjects could help Heap Packed A A Remote Transfer C B B C IBM Corporation
71 PackedObjects could help Heap Packed Packed A A A Remote Transfer C B B B C C IBM Corporation
72 Making the data transfer easier Heap Remote Transfer IBM Corporation
73 Making the data transfer easier Heap Remote Transfer Specialized Heap Area IBM Corporation
74 Making the data transfer easier Heap C Remote Transfer A A B B C Specialized Heap Area IBM Corporation
75 Making the data transfer easier Heap C Remote Transfer A A B B C Specialized Heap Area IBM Corporation
76 Making the data transfer seamless Heap Remote Transfer Specialized Heap Area IBM Corporation
77 Making the data transfer seamless Heap A B C Remote Transfer A B A C B Specialized Heap Area C IBM Corporation
78 Making the data transfer seamless Heap A B Packed C Remote Transfer Packed A B A C B Specialized Heap Area C IBM Corporation
79 Questions? IBM Corporation
80 References Get Products and Technologies: IBM Java Runtimes and SDKs: IBM Monitoring and Diagnostic Tools for Java: Learn: IBM Java InfoCenter: Discuss: IBM Java Runtimes and SDKs Forum: IBM Corporation
81 Copyright and Trademarks IBM Corporation All Rights Reserved. IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web see the IBM Copyright and trademark information page at URL: IBM Corporation
From Java Code to Java Heap Understanding the Memory Usage of Your Application
Chris Bailey IBM Java Service Architect 3 rd October 2012 From Java Code to Java Heap Understanding the Memory Usage of Your Application 2012 IBM Corporation Important Disclaimers THE INFORMATION CONTAINED
More informationCompact Off-Heap Structures in the Java Language
Steve Poole May 2013 Compact Off-Heap Structures in the Java Language Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILST EFFORTS WERE
More informationProgram 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 informationThe Gap Between the Virtual Machine and the Real Machine. Charles Forgy Production Systems Tech
The Gap Between the Virtual Machine and the Real Machine Charles Forgy Production Systems Tech How to Improve Performance Use better algorithms. Use parallelism. Make better use of the hardware. Argument
More informationPause-Less GC for Improving Java Responsiveness. Charlie Gracie IBM Senior Software charliegracie
Pause-Less GC for Improving Java Responsiveness Charlie Gracie IBM Senior Software Developer charlie_gracie@ca.ibm.com @crgracie charliegracie 1 Important Disclaimers THE INFORMATION CONTAINED IN THIS
More informationOptimizing Memory Bandwidth
Optimizing Memory Bandwidth Don t settle for just a byte or two. Grab a whole fistful of cache. Mike Wall Member of Technical Staff Developer Performance Team Advanced Micro Devices, Inc. make PC performance
More informationRyan Sciampacone Senior Software Developer August 1 st Multitenant JVM. JVM Languages Summit IBM Corporation
Ryan Sciampacone Senior Software Developer August 1 st 2012 Multitenant JVM JVM Languages Summit 2012 Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL
More informationEECE.3170: Microprocessor Systems Design I Summer 2017 Homework 4 Solution
1. (40 points) Write the following subroutine in x86 assembly: Recall that: int f(int v1, int v2, int v3) { int x = v1 + v2; urn (x + v3) * (x v3); Subroutine arguments are passed on the stack, and can
More informationAssembly Language: Function Calls
Assembly Language: Function Calls 1 Goals of this Lecture Help you learn: Function call problems: Calling and returning Passing parameters Storing local variables Handling registers without interference
More informationAssembly Language: Function Calls" Goals of this Lecture"
Assembly Language: Function Calls" 1 Goals of this Lecture" Help you learn:" Function call problems:" Calling and returning" Passing parameters" Storing local variables" Handling registers without interference"
More informationX86 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 informationAssembly Language: Function Calls" Goals of this Lecture"
Assembly Language: Function Calls" 1 Goals of this Lecture" Help you learn:" Function call problems:" Calling and urning" Passing parameters" Storing local variables" Handling registers without interference"
More informationCPEG421/621 Tutorial
CPEG421/621 Tutorial Compiler data representation system call interface calling convention Assembler object file format object code model Linker program initialization exception handling relocation model
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 informationLecture 8 Dynamic Memory Allocation
Lecture 8 Dynamic Memory Allocation CS240 1 Memory Computer programs manipulate an abstraction of the computer s memory subsystem Memory: on the hardware side 3 @ http://computer.howstuffworks.com/computer-memory.htm/printable
More informationPractical Malware Analysis
Practical Malware Analysis Ch 4: A Crash Course in x86 Disassembly Revised 1-16-7 Basic Techniques Basic static analysis Looks at malware from the outside Basic dynamic analysis Only shows you how the
More informationGetting to the Next Level with Eclipse Concierge
EclipseCon Europe 26 th October 2016 Getting to the Next Level with Eclipse Concierge Jan S. Rellermeyer, IBM Research Tim Verbelen, iminds - Ghent University Jochen Hiller, Deutsche Telekom AG Important
More informationJaguar: Enabling Efficient Communication and I/O in Java
Jaguar: Enabling Efficient Communication and I/O in Java Matt Welsh and David Culler UC Berkeley Presented by David Hovemeyer Outline ' Motivation ' How it works ' Code mappings ' External objects ' Pre
More informationAssembly Language: Function Calls. Goals of this Lecture. Function Call Problems
Assembly Language: Function Calls 1 Goals of this Lecture Help you learn: Function call problems: Calling and urning Passing parameters Storing local variables Handling registers without interference Returning
More informationSemantics 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 informationCompiling Techniques
Lecture 10: Introduction to 10 November 2015 Coursework: Block and Procedure Table of contents Introduction 1 Introduction Overview Java Virtual Machine Frames and Function Call 2 JVM Types and Mnemonics
More informationRev101. spritzers - CTF team. spritz.math.unipd.it/spritzers.html
Rev101 spritzers - CTF team spritz.math.unipd.it/spritzers.html Disclaimer All information presented here has the only purpose of teaching how reverse engineering works. Use your mad skillz only in CTFs
More informationCSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs
CSC 2400: Computer Systems Towards the Hardware: Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32)
More informationCSCI 334: Principles of Programming Languages. Computer Architecture (a really really fast introduction) Lecture 11: Control Structures II
1 byte{ 1 byte{ CSCI 334: Principles of Programming Languages Lecture 11: Control Structures II Computer Architecture (a really really fast introduction) Instructor: Dan Barowy Memory Instructions main
More informationReverse Engineering II: The Basics
Reverse Engineering II: The Basics This document is only to be distributed to teachers and students of the Malware Analysis and Antivirus Technologies course and should only be used in accordance with
More informationCSC 8400: Computer Systems. Machine-Level Representation of Programs
CSC 8400: Computer Systems Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32) 1 Compilation Stages
More informationReversing Basics A Practical Approach
Reversing Basics A Practical Approach Author: Amit Malik (DouBle_Zer0) E-Mail: m.amit30@gmail.com Note: Keep Out of Reach of Children/Danger-Software Poison. Download EXE/Crackme: https://sites.google.com/site/hacking1now/crackmes
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 informationSA31675 / CVE
Generated by Secunia 10 September, 2008 5 pages Table of Contents Introduction 2 Technical Details 2 Exploitation 4 Characteristics 4 Tested Versions 4 Fixed Versions 5 References 5 Generated by Secunia
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 informationProcess Layout and Function Calls
Process Layout and Function Calls CS 6 Spring 07 / 8 Process Layout in Memory Stack grows towards decreasing addresses. is initialized at run-time. Heap grow towards increasing addresses. is initialized
More informationReverse Engineering II: Basics. Gergely Erdélyi Senior Antivirus Researcher
Reverse Engineering II: Basics Gergely Erdélyi Senior Antivirus Researcher Agenda Very basics Intel x86 crash course Basics of C Binary Numbers Binary Numbers 1 Binary Numbers 1 0 1 1 Binary Numbers 1
More informationD Programming Language
Group 14 Muazam Ali Anil Ozdemir D Programming Language Introduction and Why D? It doesn t come with a religion this is written somewhere along the overview of D programming language. If you actually take
More informationIBM, Java and POWER Linux IBM Corporation
IBM, Java and POWER Linux 1 2012 IBM Corporation IBM and Java Java tm is critically important to IBM Provides fundamental infrastructure to hundreds of products within IBM software portfolio Delivers standard
More informationReverse Engineering Low Level Software. CS5375 Software Reverse Engineering Dr. Jaime C. Acosta
1 Reverse Engineering Low Level Software CS5375 Software Reverse Engineering Dr. Jaime C. Acosta Machine code 2 3 Machine code Assembly compile Machine Code disassemble 4 Machine code Assembly compile
More informationLecture 4 CIS 341: COMPILERS
Lecture 4 CIS 341: COMPILERS CIS 341 Announcements HW2: X86lite Available on the course web pages. Due: Weds. Feb. 7 th at midnight Pair-programming project Zdancewic CIS 341: Compilers 2 X86 Schematic
More informationQUIZ. What are 3 differences between C and C++ const variables?
QUIZ What are 3 differences between C and C++ const variables? Solution QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Solution The C/C++ preprocessor substitutes mechanically,
More informationCSE P 501 Compilers. x86 Lite for Compiler Writers Hal Perkins Autumn /25/ Hal Perkins & UW CSE J-1
CSE P 501 Compilers x86 Lite for Compiler Writers Hal Perkins Autumn 2011 10/25/2011 2002-11 Hal Perkins & UW CSE J-1 Agenda Learn/review x86 architecture Core 32-bit part only for now Ignore crufty, backward-compatible
More informationEECE416 :Microcomputer Fundamentals and Design. X86 Assembly Programming Part 1. Dr. Charles Kim
EECE416 :Microcomputer Fundamentals and Design X86 Assembly Programming Part 1 Dr. Charles Kim Department of Electrical and Computer Engineering Howard University www.mwftr.com 1 Multiple Address Access
More informationCSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1
CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines
More informationReverse Engineering II: The Basics
Reverse Engineering II: The Basics Gergely Erdélyi Senior Manager, Anti-malware Research Protecting the irreplaceable f-secure.com Binary Numbers 1 0 1 1 - Nibble B 1 0 1 1 1 1 0 1 - Byte B D 1 0 1 1 1
More informationMachine and Assembly Language Principles
Machine and Assembly Language Principles Assembly language instruction is synonymous with a machine instruction. Therefore, need to understand machine instructions and on what they operate - the architecture.
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 informationToday. Instance Method Dispatch. Instance Method Dispatch. Instance Method Dispatch 11/29/11. today. last time
CS2110 Fall 2011 Lecture 25 Java program last time Java compiler Java bytecode (.class files) Compile for platform with JIT Interpret with JVM Under the Hood: The Java Virtual Machine, Part II 1 run native
More informationSYSTEM CALL IMPLEMENTATION. CS124 Operating Systems Fall , Lecture 14
SYSTEM CALL IMPLEMENTATION CS124 Operating Systems Fall 2017-2018, Lecture 14 2 User Processes and System Calls Previously stated that user applications interact with the kernel via system calls Typically
More informationHands-on Lab Session 9909 Introduction to Application Performance Management: Monitoring. Timothy Burris, Cloud Adoption & Technical Enablement
Hands-on Lab Session 9909 Introduction to Application Performance Management: Monitoring Timothy Burris, Cloud Adoption & Technical Enablement Copyright IBM Corporation 2017 IBM, the IBM logo and ibm.com
More informationWindows Java address space
Windows Java address space This article applies to the IBM 32-bit SDK and Runtime Environment for Windows, Java2 Technology Edition. It explains how the process space for Java is divided and explores a
More informationShenandoah: Theory and Practice. Christine Flood Roman Kennke Principal Software Engineers Red Hat
Shenandoah: Theory and Practice Christine Flood Roman Kennke Principal Software Engineers Red Hat 1 Shenandoah Christine Flood Roman Kennke Principal Software Engineers Red Hat 2 Shenandoah Why do we need
More informationJohn A. Ronciak Staff Engineer NCG/NID/LAO Intel Corp.
John A. Ronciak Staff Engineer NCG/NID/LAO Corp. February 15-17, 17, 2000 Agenda l Learning the Cross Development Platform l Make the Device Driver IA-64 Clean l Building an IA-64 Linux Driver l Debugging
More informationANITA S SUPER AWESOME RECITATION SLIDES
ANITA S SUPER AWESOME RECITATION SLIDES 15/18-213: Introduction to Computer Systems Stacks and Buflab, 11 Jun 2013 Anita Zhang, Section M WHAT S NEW (OR NOT) Bomblab is due tonight, 11:59 PM EDT Your late
More informationCS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 21: Generating Pentium Code 10 March 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 21: Generating Pentium Code 10 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Simple Code Generation Three-address code makes it
More informationRegister Allocation, iii. Bringing in functions & using spilling & coalescing
Register Allocation, iii Bringing in functions & using spilling & coalescing 1 Function Calls ;; f(x) = let y = g(x) ;; in h(y+x) + y*5 (:f (x
More informationRoadmap. Java: Assembly language: OS: Machine code: Computer system:
Roadmap C: car *c = malloc(sizeof(car)); c->miles = 100; c->gals = 17; float mpg = get_mpg(c); free(c); Assembly language: Machine code: Computer system: get_mpg: pushq movq... popq ret %rbp %rsp, %rbp
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 informationSo far, system calls have had easy syntax. Integer, character string, and structure arguments.
Pointers Page 1 So far, system calls have had easy syntax Wednesday, September 30, 2015 10:45 AM Integer, character string, and structure arguments. But this is not always true. Today, we begin to explore
More informationCNIT 127: Exploit Development. Ch 1: Before you begin. Updated
CNIT 127: Exploit Development Ch 1: Before you begin Updated 1-14-16 Basic Concepts Vulnerability A flaw in a system that allows an attacker to do something the designer did not intend, such as Denial
More informationX86 Assembly Language and C Fundamentals. Chapter 5. Data Transfer Instructions. X86 Code Figures
1 X86 Assembly Language and C Fundamentals Chapter 5 Data Transfer Instructions X86 Code Figures 2 Page 200, Figure 5.4 ;swap_bytes.asm ;-----------------------------------------------------------.STACK
More informationFaster Objects and Arrays. Closing the [last?] inherent C vs. Java speed gap
Faster Objects and Arrays Closing the [last?] inherent C vs. Java speed gap http://www.objectlayout.org Gil Tene, CTO & co-founder, Azul Systems About me: Gil Tene co-founder, CTO @Azul Systems Have been
More informationUsing MMX Instructions to implement 2X 8-bit Image Scaling
Using MMX Instructions to implement 2X 8-bit Image Scaling Information for Developers and ISVs From Intel Developer Services www.intel.com/ids Information in this document is provided in connection with
More informationCNIT 127: Exploit Development. Ch 3: Shellcode. Updated
CNIT 127: Exploit Development Ch 3: Shellcode Updated 1-30-17 Topics Protection rings Syscalls Shellcode nasm Assembler ld GNU Linker objdump to see contents of object files strace System Call Tracer Removing
More informationSystem Memory Heaps. 6.1 System Memory Heaps 6.2 Allocation from the system pool
System Memory Heaps 6.1 System Memory Heaps 6.2 Allocation from the system pool Source code: KmdKit\examples\basic\MemoryWorks\SystemModules Assuming you already grasp the basics, let's review some of
More informationReversing. Time to get with the program
Reversing Time to get with the program This guide is a brief introduction to C, Assembly Language, and Python that will be helpful for solving Reversing challenges. Writing a C Program C is one of the
More informationAssembly Language. Lecture 2 - x86 Processor Architecture. Ahmed Sallam
Assembly Language Lecture 2 - x86 Processor Architecture Ahmed Sallam Introduction to the course Outcomes of Lecture 1 Always check the course website Don t forget the deadline rule!! Motivations for studying
More informationMigrate early, migrate often! JDK release cadence strategies
Migrate early, migrate often! JDK release cadence strategies Dan Heidinga Eclipse OpenJ9 Project Lead Interpreter Lead, IBM Runtimes @danheidinga DanHeidinga Theresa Mammarella Eclipse OpenJ9 Software
More informationJava and C II. CSE 351 Spring Instructor: Ruth Anderson
Java and C II CSE 351 Spring 2017 Instructor: Ruth Anderson Teaching Assistants: Dylan Johnson Kevin Bi Linxing Preston Jiang Cody Ohlsen Yufang Sun Joshua Curtis Administrivia Lab 5 Due TONIGHT! Fri 6/2
More informationWeek 5, continued. This is CS50. Harvard University. Fall Cheng Gong
This is CS50. Harvard University. Fall 2014. Cheng Gong Table of Contents News... 1 Buffer Overflow... 1 Malloc... 6 Linked Lists... 7 Searching... 13 Inserting... 16 Removing... 19 News Good news everyone!
More informationStatic Vulnerability Analysis
Static Vulnerability Analysis Static Vulnerability Detection helps in finding vulnerabilities in code that can be extracted by malicious input. There are different static analysis tools for different kinds
More informationProcesses (Intro) Yannis Smaragdakis, U. Athens
Processes (Intro) Yannis Smaragdakis, U. Athens Process: CPU Virtualization Process = Program, instantiated has memory, code, current state What kind of memory do we have? registers + address space Let's
More informationMulti-core processors are here, but how do you resolve data bottlenecks in native code?
Multi-core processors are here, but how do you resolve data bottlenecks in native code? hint: it s all about locality Michael Wall October, 2008 part I of II: System memory 2 PDC 2008 October 2008 Session
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationC#: framework overview and in-the-small features
Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer C#: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer
More informationProduct Overview Analyst s Notebook Analyst s Notebook is a standalone desktop product for a single user Allows quick collation and visualization of unstructured or structured data Incorporates powerful
More informationFaCT. A Flexible, Constant-Time Programming Language
, Gary Soeller, Fraser Brown, Brian Johannesmeyer, Yunlu Huang, Ranjit Jhala, Deian Stefan A Flexible, Constant-Time Programming Language Timing side channels Secret key Crypto Plaintext Encrypted Timing
More informationUniversity of Washington
Roadmap C: car *c = malloc(sizeof(car)); c->miles = 100; c->gals = 17; float mpg = get_mpg(c); free(c); Assembly language: Machine code: Computer system: get_mpg: pushq %rbp movq %rsp, %rbp... popq %rbp
More informationSSA Based Mobile Code: Construction and Empirical Evaluation
SSA Based Mobile Code: Construction and Empirical Evaluation Wolfram Amme Friedrich Schiller University Jena, Germany Michael Franz Universit of California, Irvine, USA Jeffery von Ronne Universtity of
More informationThere are 16 total numbered pages, 7 Questions. You have 2 hours. Budget your time carefully!
UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AND ENGINEERING MIDTERM EXAMINATION, October 27, 2014 ECE454H1 Computer Systems Programming Closed book, Closed note No programmable electronics allowed
More informationCS 31: Intro to Systems Functions and the Stack. Martin Gagne Swarthmore College February 23, 2016
CS 31: Intro to Systems Functions and the Stack Martin Gagne Swarthmore College February 23, 2016 Reminders Late policy: you do not have to send me an email to inform me of a late submission before the
More informationAbout unchecked management SMM & UEFI. Vulnerability. Patch. Conclusion. Bruno Pujos. July 16, Bruno Pujos
July 16, 2016 1/45 Whoami RE, vulnerability research LSE 2015 Sogeti since 2/45 1 2 Reverse Exploitation 3 4 3/45 Agenda 1 4/45 Agenda 1 5/45 Unified Extended FIrmware is based on EFI Specification for
More informationCS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/
CS61C Machine Structures Lecture 4 C Pointers and Arrays 1/25/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L04 C Pointers (1) Common C Error There is a difference
More informationAssembly Language. Lecture 2 x86 Processor Architecture
Assembly Language Lecture 2 x86 Processor Architecture Ahmed Sallam Slides based on original lecture slides by Dr. Mahmoud Elgayyar Introduction to the course Outcomes of Lecture 1 Always check the course
More informationMitchell Adair January, 2014
Mitchell Adair January, 2014 Know Owen from our time at Sandia National Labs Currently work for Raytheon Founded UTDallas s Computer Security Group (CSG) in Spring 2010 Reversing, binary auditing, fuzzing,
More informationAgenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1
Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies
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 IA-32 (1) Characteristics Region of memory managed with stack discipline
More informationAdvanced Programming & C++ Language
Advanced Programming & C++ Language ~6~ Introduction to Memory Management Ariel University 2018 Dr. Miri (Kopel) Ben-Nissan Stack & Heap 2 The memory a program uses is typically divided into four different
More informationStatic Analysis I PAOLO PALUMBO, F-SECURE CORPORATION
Static Analysis I PAOLO PALUMBO, F-SECURE CORPORATION Representing Data Binary numbers 1 0 1 1 NIBBLE 0xB 1 0 1 1 1 1 0 1 0xBD 1 0 1 1 1 1 0 1 0 0 1 1 1 0 0 1 BYTE WORD 0xBD 0x39 Endianness c9 33 41 03
More informationCode Profiling. CSE260, Computer Science B: Honors Stony Brook University
Code Profiling CSE260, Computer Science B: Honors Stony Brook University http://www.cs.stonybrook.edu/~cse260 Performance Programs should: solve a problem correctly be readable be flexible (for future
More informationInnovate 2013 Automated Mobile Testing
Innovate 2013 Automated Mobile Testing Marc van Lint IBM Netherlands 2013 IBM Corporation Please note the following IBM s statements regarding its plans, directions, and intent are subject to change or
More informationIslamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 10. Advanced Procedures
Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 10 Advanced Procedures May, 2014 1 Assembly Language LAB Stack Parameters There are
More informationQ1: Multiple choice / 20 Q2: Data transfers and memory addressing
16.317: Microprocessor Systems Design I Fall 2014 Exam 1 October 1, 2014 Name: ID #: For this exam, you may use a calculator and one 8.5 x 11 double-sided page of notes. All other electronic devices (e.g.,
More informationAssembly Programmer s View Lecture 4A Machine-Level Programming I: Introduction
Assembly Programmer s View Lecture 4A Machine-Level Programming I: Introduction E I P CPU isters Condition Codes Addresses Data Instructions Memory Object Code Program Data OS Data Topics Assembly Programmer
More 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 informationASSEMBLY III: PROCEDURES. Jo, Heeseung
ASSEMBLY III: PROCEDURES Jo, Heeseung IA-32 STACK (1) Characteristics Region of memory managed with stack discipline Grows toward lower addresses Register indicates lowest stack address - address of top
More informationStack -- Memory which holds register contents. Will keep the EIP of the next address after the call
Call without Parameter Value Transfer What are involved? ESP Stack Pointer Register Grows by 4 for EIP (return address) storage Stack -- Memory which holds register contents Will keep the EIP of the next
More informationCSE 509: Computer Security
CSE 509: Computer Security Date: 2.16.2009 BUFFER OVERFLOWS: input data Server running a daemon Attacker Code The attacker sends data to the daemon process running at the server side and could thus trigger
More informationAssembly III: Procedures. Jo, Heeseung
Assembly III: Procedures Jo, Heeseung IA-32 Stack (1) Characteristics Region of memory managed with stack discipline Grows toward lower addresses Register indicates lowest stack address - address of top
More informationCVE EXPLOIT USING 108 BYTES AND DOWNLOADING A FILE WITH YOUR UNLIMITED CODE BY VALTHEK
CVE-2017-11882 EXPLOIT USING 108 BYTES AND DOWNLOADING A FILE WITH YOUR UNLIMITED CODE BY VALTHEK First words of thank to Embedy Company to discover the initial exploit and POC of 44 bytes máximum, Ridter
More informationHow to Impress Girls with Browser Memory Protection Bypasses
How to Impress Girls with Browser Memory Protection Bypasses Mark Dowd & Alexander Sotirov markdowd@au1.ibm.com alex@sotirov.net Setting back browser security by 10 years Part I: Introduction Introduction
More informationJAVA An overview for C++ programmers
JAVA An overview for C++ programmers Wagner Truppel wagner@cs.ucr.edu edu March 1st, 2004 The early history James Gosling, Sun Microsystems Not the usual start for a prog.. language Consumer electronics,
More informationprintf("this program adds the value 10 to a given integer number.\n\n");
PA1 Sample Solution Program 1 void add10(int *n); //Prototype int n; printf("this program adds the value 10 to a given integer number.\n\n"); printf("please enter an integer number: "); scanf("%d", &n);
More informationMethodHandle implemention tips and tricks
MethodHandle implemention tips and tricks Dan Heidinga J9 VM Software Developer daniel_heidinga@ca.ibm.com J9 Virtual Machine 2011 IBM Corporation MethodHandles: a 30 sec introduction A method handle is
More information