Language-side Foreign Function Interfaces with NativeBoost
|
|
- Joshua Butler
- 8 years ago
- Views:
Transcription
1 Language-side Foreign Function Interfaces with NativeBoost IWST 2013 Camillo Bruni, Luc Fabresse, Stéphane Ducasse, Igor Stasenko
2 Outline 1.Context 2.Existing Solutions 3.NativeBoost 4.Speed Comparison of NativeBoost with other FFIs 5.NativeBoost Internals 6.Conclusion & Future Work 2
3 Context Language Cairo OpenGL Chipmunk Virtual Machine (VM)... LibC 3
4 Context Language Cairo OpenGL Chipmunk Virtual Machine (VM)... LibC How to interact with external libraries? 4
5 Existing Solutions Language-side Library VM Extension VM Plugin Foreign Function Interface VM-level Language-level 5
6 Existing Solutions Language-side Library costly VM Extension VM Plugin Foreign Function Interface VM-level Language-level 6
7 Existing Solutions Language-side Library VM Extension VM Plugin costly low-level Foreign Function Interface VM-level Language-level 7
8 Existing Solutions Language-side Library VM Extension VM Plugin costly low-level Foreign Function Interface VM-level Language-level fast slow 8
9 NativeBoost A language-side and fast FFI implementation 9
10 Language-side Extensible Easy to use no VM code needed no low-level code (C wrapper) needed 10
11 Fast Transparent generation of Assembly code from the language-side 11
12 NativeBoost Example char* getenv(const char*) 12
13 NativeBoost Example char* getenv(const char*) 13
14 NativeBoost Example Regular Smalltalk method with one argument 14
15 NativeBoost Example A pragma indicating that #primitivenativecall of #NativeBoost plugin should be executed when this method is executed 15
16 NativeBoost Example 16
17 NativeBoost Example char* getenv(const char*) types annotation used to generate marshalling code 17
18 NativeBoost Example the values to be passed when calling out 18
19 NativeBoost Example the external library address in which the function is looked up 19
20 Speed Comparisons NativeBoost Alien FFI C-FFI LuaJIT Callouts Marshalling Callbacks 20
21 Callout Evaluation Average time calling out uint clock(void) slower 150% 100% faster 50% 0% NativeBoost Alien C-FFI LuaJIT 21
22 Marshalling int int abs(int) 300% 200% 100% 0% NativeBoost Alien C-FFI LuaJIT 22
23 Marshalling char*/string 400% int printf(char*,int,int) 300% 200% 100% 0% NativeBoost Alien C-FFI LuaJIT 23
24 Marshalling char*/string 1000% char* getenv( char* ) 300% 100% NativeBoost Alien C-FFI LuaJIT 24
25 Marshalling char*/string 1000% char* getenv( char* ) 300% 100% NativeBoost Alien C-FFI LuaJIT 25
26 Marshalling structs 1000% void! cairo_matrix_multiply (! cairo_matrix_t *result,! cairo_matrix_t *a,! cairo_matrix_t *b) 400% 100% NativeBoost Alien C-FFI LuaJIT 26
27 Callbacks Evaluation void qsort (! void *base,! size_t nel,! size_t width,! int (*compare)(const void*, const void*)) 100% 30% not supported NativeBoost Alien C-FFI LuaJIT 27
28 Insights into NativeBoost Internals NBExample getenv: PATH 28
29 Insights into NativeBoost Internals NBExample getenv: PATH 29
30 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) 30
31 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) Fail if no native code associated with #getenv: 31
32 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) 1. generate native code for marshalling, associate it with #getenv: 3. restart the method execution 32
33 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) activate the native code associated with #getenv: 33
34 Conclusion NativeBoost-FFI is: Language-side: extensible, high-level code only Fast compared to other Smalltalk FFI Needs optimizations on Callbacks but that would require strong VM support 34
35 Future Work Improve NativeBoost Callback performance Reuse Alien s VM Callback support? Better integration of NativeBoost with the JIT Do not leave JIT-mode when activating a NB method 35
36 Language-side Foreign Function Interfaces with NativeBoost IWST 2013 Camillo Bruni, Luc Fabresse, Stéphane Ducasse, Igor Stasenko
MoonGen. A Scriptable High-Speed Packet Generator Design and Implementation. Paul Emmerich. January 30th, 2016 FOSDEM 2016
MoonGen A Scriptable High-Speed Packet Generator Design and Implementation Paul Emmerich January 30th, 2016 FOSDEM 2016 Chair for Network Architectures and Services Department of Informatics Paul Emmerich
More informationLua as a business logic language in high load application. Ilya Martynov ilya@iponweb.net CTO at IPONWEB
Lua as a business logic language in high load application Ilya Martynov ilya@iponweb.net CTO at IPONWEB Company background Ad industry Custom development Technical platform with multiple components Custom
More informationReading and Writing PCD Files The PCD File Format The Grabber Interface Writing a Custom Grabber PCL :: I/O. Suat Gedikli, Nico Blodow
PCL :: I/O Suat Gedikli, Nico Blodow July 1, 2011 Outline 1. Reading and Writing PCD Files 2. The PCD File Format 3. The Grabber Interface 4. Writing a Custom Grabber global functions in the namespace
More informationlanguage 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
More informationInterpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
More informationFast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
More informationGenerating Serialisation Code with Clang
EURO-LLVM CONFERENCE 12 th April 2012 Wayne Palmer Generating Serialisation Code with Clang 1 INTRODUCTION TO THE QUANTITATIVE ANALYTICS LIBRARY A single C++ library of nearly 10 million lines of code.
More informationCode and Usage Description. A.Konstantinov
NORDUGRID NORDUGRID-TECH-9 25/9/2009 THE HTTP(S,G) AND SOAP SERVER/FRAMEWORK Code and Usage Description A.Konstantinov aleks@fys.uio.no Contents 1 Introduction 3 2 Classes 3 2.1 HTTPS_Connector............................................
More informationSQLITE C/C++ TUTORIAL
http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have
More informationEffective Java Programming. efficient software development
Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of
More informationUsing AllJoyn with Apache Cordova, Python & Node
Using AllJoyn with Apache Cordova, Python & Node Ivan R. Judson, PhD October 2014, Microsoft 13 October 2015 AllSeen Alliance 1 Agenda 1. Background 2. Cordova Plugin 3. Language Bindings Python Bindings
More informationTachyon: a Meta-circular Optimizing JavaScript Virtual Machine
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de
More informationCSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
More informationCreating Synergies on the Cloudbox. Mohan Sundar Samsung Electronics
Creating Synergies on the Cloudbox Mohan Sundar Samsung Electronics Index Index Background What s Cloudbox? How to use Cloudbox? Cloudbox Internals Sample App (Unified Single View) Summary Q&A 3 Background
More informationLibmonitor: A Tool for First-Party Monitoring
Libmonitor: A Tool for First-Party Monitoring Mark W. Krentel Dept. of Computer Science Rice University 6100 Main St., Houston, TX 77005 krentel@rice.edu ABSTRACT Libmonitor is a library that provides
More informationEmbedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
More informationSecurity types to the rescue
Security types to the rescue p. 1 Security types to the rescue David Wagner and Rob Johnson {daw,rtjohnso}@cs.berkeley.edu University of California, Berkeley Security types to the rescue p. 2 Problem statement
More informationResearch and Design of Universal and Open Software Development Platform for Digital Home
Research and Design of Universal and Open Software Development Platform for Digital Home CaiFeng Cao School of Computer Wuyi University, Jiangmen 529020, China cfcao@126.com Abstract. With the development
More informationCS3813 Performance Monitoring Project
CS3813 Performance Monitoring Project Owen Kaser October 8, 2014 1 Introduction In this project, you should spend approximately 20 hours to experiment with Intel performance monitoring facilities, and
More informationA deeper look at Inline functions
A deeper look at Inline functions I think it s safe to say that all Overload readers know what C++ inline functions are. When we declare a function or member function as inline we are trying to avoid the
More informationWritten by the Red Hat Eclipse Engineering Team Revision 3. October 2003
! " $#&%'() Abstract This white paper provides information on Red Hat Developer Suite, a member of the Red Hat Applications product family. It describes the goals of Red Hat Developer Suite, the Eclipse
More informationPARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)
PARALLEL JAVASCRIPT Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology) JAVASCRIPT Not connected with Java Scheme and self (dressed in c clothing) Lots of design errors (like automatic semicolon
More informationA Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe
A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe About Me I work on HDFS and related storage technologies at Cloudera. Committer on the HDFS and Hadoop projects. Previously worked
More informationCUDA Programming. Week 4. Shared memory and register
CUDA Programming Week 4. Shared memory and register Outline Shared memory and bank confliction Memory padding Register allocation Example of matrix-matrix multiplication Homework SHARED MEMORY AND BANK
More information1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
More informationLecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
More information4GL CONNECTOR OPEN SOURCE TECHNOLOGY AND SERVICES TO BRING INFORMIX 4GL CODE TO THE JAVA ENTERPRISE APPLICATION ENVIRONMENT
4GL CONNECTOR OPEN SOURCE TECHNOLOGY AND SERVICES TO BRING INFORMIX 4GL CODE TO THE JAVA ENTERPRISE APPLICATION ENVIRONMENT EXECUTIVE SUMMARY In today's Services Oriented Architecture SOA environment,
More informationAbstractions from Multimedia Hardware. Libraries. Abstraction Levels
Abstractions from Multimedia Hardware Chapter 2: Basics Chapter 3: Multimedia Systems Communication Aspects and Services Chapter 4: Multimedia Systems Storage Aspects Chapter 5: Multimedia Usage and Applications
More informationAndroid and OpenCV Tutorial
Android and OpenCV Tutorial Computer Vision Lab Tutorial 26 September 2013 Lorenz Meier, Amaël Delaunoy, Kalin Kolev Institute of Visual Computing Tutorial Content Strengths / Weaknesses of Android Java
More informationHelp on the Embedded Software Block
Help on the Embedded Software Block Powersim Inc. 1. Introduction The Embedded Software Block is a block that allows users to model embedded devices such as microcontrollers, DSP, or other devices. It
More informationTegra Android Accelerometer Whitepaper
Tegra Android Accelerometer Whitepaper Version 5-1 - Contents INTRODUCTION 3 COORDINATE SPACE GLOSSARY 4 ACCELEROMETER CANONICAL AXES 6 WORKING WITH ACCELEROMETER DATA 7 POWER CONSERVATION 10 SUPPORTING
More informationCSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
More informationThis is DEEPerent: Tracking App behaviors with (Nothing changed) phone for Evasive android malware
This is DEEPerent: Tracking App behaviors with (Nothing changed) phone for Evasive android malware What I will talk about.. Challenges we faced on android malware analysis: Fast code analysis (Reversing)
More informationSpecific Simple Network Management Tools
Specific Simple Network Management Tools Jürgen Schönwälder University of Osnabrück Albrechtstr. 28 49069 Osnabrück, Germany Tel.: +49 541 969 2483 Email: Web:
More informationC Programming Review & Productivity Tools
Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries
More informationReach 4 million Unity developers
Reach 4 million Unity developers with your Android library Vitaliy Zasadnyy Senior Unity Dev @ GetSocial Manager @ GDG Lviv Ankara Android Dev Days May 11-12, 2015 Why Unity? Daily Users 0 225 M 450 M
More informationAffdex SDK for Windows!
Affdex SDK for Windows SDK Developer Guide 1 Introduction Affdex SDK is the culmination of years of scientific research into emotion detection, validated across thousands of tests worldwide on PC platforms,
More informationios Audio Programming Guide
ios Audio Programming Guide A Guide to Developing Applications for Real-time Audio Processing and Playback izotope, Inc. izotope ios Audio Programming Guide This document is meant as a guide to developing
More informationLecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
More informationMYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING. Jukka Lehtosalo University of Cambridge Computer Laboratory
MYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING Jukka Lehtosalo University of Cambridge Computer Laboratory SPEAKER BIO 2000-2006 Software engineer (QPR Software and Kielikone) 2007-2009
More informationRecursion vs. Iteration Eliminating Recursion
Recursion vs. Iteration Eliminating Recursion continued CS 311 Data Structures and Algorithms Lecture Slides Monday, February 16, 2009 Glenn G. Chappell Department of Computer Science University of Alaska
More informationGoals, Processes, and Development Effort
Pharo s Vision Goals, Processes, and Development Effort http://www.pharo-project.org Stéphane Ducasse stephane.ducasse@inria.fr Marcus Denker marcus.denker@inria.fr Damien Pollet damien.pollet@inria.fr
More informationJava CPD (I) Frans Coenen Department of Computer Science
Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials
More informationOperating Systems. Privileged Instructions
Operating Systems Operating systems manage processes and resources Processes are executing instances of programs may be the same or different programs process 1 code data process 2 code data process 3
More informationChecking Browser Settings, and Basic System Requirements for QuestionPoint
Checking Browser Settings, and Basic System Requirements for QuestionPoint This document covers basic IE settings and system requirements necessary for QuestionPoint. These settings and requirements apply
More informationSystem Structures. Services Interface Structure
System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface
More informationIntroduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized
More informationKeil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
More informationInternational Relations Program Integrated Assessment Plan April 27, 2007
W International Relations Program Integrated Assessment Plan April 27, 2007 I. Student Learning Goals Goal 1: Students will acquire an interdisciplinary understanding of international relations that provides
More informationMcGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
More informationVOC Documentation. Release 0.1. Russell Keith-Magee
VOC Documentation Release 0.1 Russell Keith-Magee February 07, 2016 Contents 1 About VOC 3 1.1 The VOC Developer and User community................................ 3 1.2 Frequently Asked Questions.......................................
More informationIBrokers - Interactive Brokers and R
IBrokers - Interactive Brokers and R Jeffrey A. Ryan September 21, 2014 Contents 1 Introduction 1 2 The API 2 2.1 Data.................................. 2 2.2 Execution............................... 2
More informationMatrixSSL Porting Guide
MatrixSSL Porting Guide Electronic versions are uncontrolled unless directly accessed from the QA Document Control system. Printed version are uncontrolled except when stamped with VALID COPY in red. External
More informationProgramming the Android Platform. Logistics
Programming the Android Platform CMSC498G Logistics Professor Adam Porter 4125 AVW aporter@cs.umd.edu Course meets W 3:00 3:50 in CSI 3118 1 Goals Learn more about Mobile devices Mobile device programming
More informationEmbedded Software Development
Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) TDDI11, Embedded Software 2010-04-22 Embedded Software Development Host and Target Machine Typical embedded
More informationSMTP-32 Library. Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows. Version 5.2
SMTP-32 Library Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows Version 5.2 Copyright 1994-2003 by Distinct Corporation All rights reserved Table of Contents 1 Overview... 5 1.1
More informationWireless Mesh Networks under FreeBSD
Wireless Networks under FreeBSD Rui Paulo rpaulo@freebsd.org The FreeBSD Project AsiaBSDCon 2010 - Tokyo, Japan Abstract With the advent of low cost wireless chipsets, wireless mesh networks became much
More informationChapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
More informationAndroid Architecture. Alexandra Harrison & Jake Saxton
Android Architecture Alexandra Harrison & Jake Saxton Overview History of Android Architecture Five Layers Linux Kernel Android Runtime Libraries Application Framework Applications Summary History 2003
More informationMatrixSSL Developer s Guide
MatrixSSL Developer s Guide This document discusses developing with MatrixSSL. It includes instructions on integrating MatrixSSL into an application and a description of the configurable options for modifying
More informationIntroduction. Reading. Today MPI & OpenMP papers Tuesday Commutativity Analysis & HPF. CMSC 818Z - S99 (lect 5)
Introduction Reading Today MPI & OpenMP papers Tuesday Commutativity Analysis & HPF 1 Programming Assignment Notes Assume that memory is limited don t replicate the board on all nodes Need to provide load
More informationODROID Multithreading in Android
Multithreading in Android 1 Index Android Overview Android Stack Android Development Tools Main Building Blocks(Activity Life Cycle) Threading in Android Multithreading via AsyncTask Class Multithreading
More informationHow To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes
Content Introduction and History File I/O The File System Shell Programming Standard Unix Files and Configuration Processes Programs are instruction sets stored on a permanent medium (e.g. harddisc). Processes
More information5 CLASSES CHAPTER. 5.1 Object-Oriented and Procedural Programming. 5.2 Classes and Objects 5.3 Sample Application: A Clock Class
CHAPTER 5 CLASSES class head class struct identifier base spec union class name 5.1 Object-Oriented and Procedural Programming 5.2 Classes and Objects 5.3 Sample Application: A Clock Class 5.4 Sample Application:
More informationIBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM
IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM Note Before you use this information and the product it supports, read the
More informationCOS 217: Introduction to Programming Systems
COS 217: Introduction to Programming Systems 1 Goals for Todayʼs Class Course overview Introductions Course goals Resources Grading Policies Getting started with C C programming language overview 2 1 Introductions
More informationImplementation Aspects of OO-Languages
1 Implementation Aspects of OO-Languages Allocation of space for data members: The space for data members is laid out the same way it is done for structures in C or other languages. Specifically: The data
More informationMemory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example
Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include
More informationTIA NEWHALL. A dissertation submitted in partial fulfillment. of the requirements for the degree of. Doctor of Philosophy. (Computer Sciences)
PERFORMANCE MEASUREMENT OF INTERPRETED, JUST-IN-TIME COMPILED, AND DYNAMICALLY COMPILED EXECUTIONS BY TIA NEWHALL A dissertation submitted in partial fulfillment of the requirements for the degree of Doctor
More informationChecking IE Settings, and Basic System Requirements for QuestionPoint
Checking IE Settings, and Basic System Requirements for QuestionPoint This document covers basic IE settings and system requirements necessary for QuestionPoint. These settings and requirements apply to
More informationInteger Set Library: Manual
Integer Set Library: Manual Version: isl-0.15 Sven Verdoolaege June 11, 2015 Contents 1 User Manual 3 1.1 Introduction............................... 3 1.1.1 Backward Incompatible Changes...............
More informationSA8 T1 Meeting 3 JANUS Basics and Applications
SA8 T1 Meeting 3 JANUS Basics and Applications Rui Ribeiro WebRTC Task Member IP Video Services Manager, FCT FCCN Stockolm, 27 Oct 2015 28/10/2015 Networks Services People www.geant.org Meetecho JANUS
More informationVirtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.
Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.
More informationsqlpp11 - An SQL Library Worthy of Modern C++
2014-09-11 Code samples Prefer compile-time and link-time errors to runtime errors Scott Meyers, Effective C++ (2nd Edition) Code samples Let s look at some code String based In the talk, we looked at
More informationServer virtualization overview
overview Virtualization within the IT environment helps you make more efficient use of existing software and hardware resources. You can use popular virtualization software to create VMs (virtual machines)
More informationHigh-Level Language. Building a Modern Computer From First Principles. www.nand2tetris.org
High-Level Language Building a Modern Computer From First Principles www.nand2tetris.org Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 9: High-Level Language
More informationEmbedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
More informationXen and XenServer Storage Performance
Xen and XenServer Storage Performance Low Latency Virtualisation Challenges Dr Felipe Franciosi XenServer Engineering Performance Team e-mail: felipe.franciosi@citrix.com freenode: felipef #xen-api twitter:
More informationCS 241 Data Organization Coding Standards
CS 241 Data Organization Coding Standards Brooke Chenoweth University of New Mexico Spring 2016 CS-241 Coding Standards All projects and labs must follow the great and hallowed CS-241 coding standards.
More informationAndroid builders summit The Android media framework
Android builders summit The Android media framework Author: Bert Van Dam & Poornachandra Kallare Date: 22 April 2014 Usage models Use the framework: MediaPlayer android.media.mediaplayer Framework manages
More informationJava. How to install the Java Runtime Environment (JRE)
Java How to install the Java Runtime Environment (JRE) Install Microsoft Virtual Machine (VM) via System Check Install Sun Java Runtime Environment (JRE) via System Check Loading Java Applet Failed How
More informationA JIT Compiler for Android s Dalvik VM. Ben Cheng, Bill Buzbee May 2010
A JIT Compiler for Android s Dalvik VM Ben Cheng, Bill Buzbee May 2010 Overview View live session notes and ask questions on Google Wave: http://bit.ly/bizjnf Dalvik Environment Trace vs. Method Granularity
More information1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
More informationGPU Profiling with AMD CodeXL
GPU Profiling with AMD CodeXL Software Profiling Course Hannes Würfel OUTLINE 1. Motivation 2. GPU Recap 3. OpenCL 4. CodeXL Overview 5. CodeXL Internals 6. CodeXL Profiling 7. CodeXL Debugging 8. Sources
More informationAn Introduction to Android. Huang Xuguang Database Lab. Inha University 2009.11.2 Email: xuguanghuang@yahoo.cn
An Introduction to Android Huang Xuguang Database Lab. Inha University 2009.11.2 Email: xuguanghuang@yahoo.cn Outline Background What is Android? Development for Android Background Internet users and Mobile
More informationTo Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
More informationl What is Android? l Getting Started l The Emulator l Hello World l ADB l Text to Speech l Other APIs (camera, bitmap, etc)
today l What is Android? l Getting Started l The Emulator l Hello World l ADB l Text to Speech l Other APIs (camera, bitmap, etc) l Other: Signing Apps, SVN l Discussion and Questions introduction to android
More informationChannel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
More informationBASIC COMPONENTS. There are 3 basic components in every Apache Cordova project:
Apache Cordova is a open-source mobile development framework. It allows you to use standard web technologies such as HTML5, CSS3 and JavaScript for cross-platform development, avoiding each mobile platform
More informationHow To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
More informationAndroid Development: a System Perspective. Javier Orensanz
Android Development: a System Perspective Javier Orensanz 1 ARM - Linux and Communities Linux kernel GNU Tools 2 Linaro Partner Initiative Mission: Make open source development easier by delivering a common
More informationExtending Desktop Applications to the Web
Extending Desktop Applications to the Web Arno Puder San Francisco State University Computer Science Department 1600 Holloway Avenue San Francisco, CA 94132 arno@sfsu.edu Abstract. Web applications have
More informationSoftware design for self-sustaining embedded systems
Software design for self-sustaining embedded systems Designing and implementing software for embedded systems with limited power resources is a challenging task. This paper focuses on software development
More information3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version
Version 3.5 JEFFERSON LAB Data Acquisition Group cmsg Developer s Guide J E F F E R S O N L A B D A T A A C Q U I S I T I O N G R O U P cmsg Developer s Guide Elliott Wolin wolin@jlab.org Carl Timmer timmer@jlab.org
More informationDeep Inside Android. OpenExpo 2008 - Zurich September 25 th, 2008. Gilles Printemps - Senior Architect. Copyright 2007 Esmertec AG.
Deep Inside Android OpenExpo 2008 - Zurich September 25 th, 2008 Copyright 2007 Esmertec AG Jan 2007 Gilles Printemps - Senior Architect Agenda What is Android? The Android platform Anatomy of an Android
More informationThe GenomeTools Developer s Guide
The GenomeTools Developer s Guide Sascha Steinbiss, Gordon Gremme and Stefan Kurtz February 4, 2013 Contents 1 Introduction 1 2 Object-oriented design 2 3 Directory structure 11 4 Public APIs 13 5 Coding
More informationEMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)
EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and
More informationC++ Class Library Data Management for Scientific Visualization
I. Introduction C++ Class Library Data Management for Scientific Visualization Al Globus, Computer Sciences Corporation 1 globus@nas.nasa.gov Abstract Scientific visualization strives to convert large
More informationAVRO - SERIALIZATION
http://www.tutorialspoint.com/avro/avro_serialization.htm AVRO - SERIALIZATION Copyright tutorialspoint.com What is Serialization? Serialization is the process of translating data structures or objects
More informationCaml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr Copyright c 2007-2010 Xavier Clerc cadmium@x9c.fr Released under the LGPL version 3 February 6, 2010 Abstract: This
More information