Types of Separated Java Bytecode
|
|
|
- Hollie Martin
- 5 years ago
- Views:
Transcription
1 Improving the Java Virtual Machine Using Type-Separated Bytecode Philipp Adler and Wolfram Amme Friedrich-Schiller-Universität, Ernst-Abbe-Platz 1-4, Jena, Germany, [phadler Abstract. Java Bytecode is currently the most used mobile code representation, although it contains some well-known major flaws. In the paper we roduce the principle operation of type-separated bytecode. Type-separated bytecode is a new ermediate representation that compensates some of the drawbacks roduced by Java Bytecode. In particular the use of type-separated bytecode can considerably speed-up the verification process and supports optimizations performed on the producer side of a mobile code generation system. This is especially important when using bytecode on constrained devices like JavaCards or in embedded systems. 1 Introduction No other mobile code format reached such a popularity like Java bytecode. It is used in many different domains although it has some serious flaws. The most two important drawbacks are the space and time consuming verification process and an ermediate representation which is difficult to optimize. On modern computers the consumption of time and space during the verification process is mostly irrelevant. There is plenty of memory available and computing power increases more and more. Even though the possibility of exploiting the time behavior of the verification algorithm to mount an attack on virtual machines exists [6], this danger is mostly ignored. Also, the increasing capabilities of personal computers lead to many improvements to execute bytecode efficiently. Beside the formerly important erpretation there exist just-in-time (JIT) and adaptive compilers which produce native machine code on the fly. The generated code is considerably faster than erpreted execution, but these compilers do have an overhead. On constrained devices the situation is not as simple as on modern computers. Their computing power and memory increased, too, but they have far less ressources than their larger counterparts. The verification algorithm must not excess available memory which is just a fraction of what can be used on desktop systems. Because of the low computing power the time spend during verification is also a multiple of the normal time used. These problems are not completely solved, leading frequently to compromises where one ressource is exchanged with the other. To lower the verification time more space is needed [19]
2 and vice versa [4, 13]. Another difficult problem is the actual program execution. Because modern JIT and adaptive compilers can often not be employed on constrained devices classical erpretation is inevitable. Every single instruction takes up precious time, so it would be helpful if optimizations could eliminate unnecessary operations. This can be achieved through different frameworks, for example SOOT [21], but the more important optimizations like null- and boundchecks can not be applied on Java bytecode because of its granularity. In this paper we roduce a new ermediate representation based on existing bytecodes. Using type separation it is possible to reduce the amount of verification work and memory space significantly. In addition, it is possible to optimize the mobile code and support an efficient (erpretable) execution using annotations. Because the annotations are embedded o the ermediate representation their correct use can be verified, thus they become secure. As a side effect the type separation can be used for simple program parallelization on processors with multiple instruction pipelines. In the rest of the paper we try to sketch the main ideas of type-separated bytecode. In section 2 the related work regarding verification process, annotations and optimizations is presented. Section 3 shows the main concepts of typeseparated bytecode and section 4 pos to future work and research regarding our project. The final section 5 gives a short summary. 2 Related Work Since Java bytecode has some serious flaws new ermediate representations were developed. Beside the stackbased techniques used in bytecodes there are mainly two other representations: syntaxoriented (like Architecture Neutral Distribution Format (ANDF) [17], Slim-Binaries [11], SafeTSA [1]) and proof carrying (for example Proof-Carrying-Code (PCC) [16], typed assembler language (TAL) [15]). Although these ermediate representations do have advantages their use is not widespread, at least not commercial. Java bytecode is still widely-used and thus a lot of research went o improving this ermediate representation. This section summarizes the two main problems with bytecode and pictures some research activities. 2.1 Verification Process The verification process for Java bytecode occurs directly before program execution and is used to guarantee security aspects of the mobile code [14]. Besides structural inspections every instruction is checked for receiving the right type and number of operands and that the stacksize is between zero and its given maximum size. These examinations take time and consume a lot of space. Reducing the time factor of the verification process is an important task. The complexity class is O(n 2 ) with n being the number of code instructions. It is possible to construct programs which do have exactly this worst-case time behavior and which can be used to mount denial of service (DoS) attacks [6].
3 To reduce the time factor there are mainly two approaches. The first one deals with simplifying the bytecode, for example on the problem of subroutines [8, 20], while the second one tries to speed up the verification process, e.g. with modified algorithms or by adding special information to the bytecode [3, 19]. These techniques can reduce the amount of verification time, but as a compromise the program size increases due to restructuring or additional information. Memory space consumed during verification is another important issue with Java bytecode, especially on devices with constrained ressources. Large and medium sized programs can easily have an overhead of multiple kilobytes [12], being too much for small systems. To reduce memory usage one can use requirements for the program code, leading to simpler code with less control pos [13]. Another technique modifies the algorithm and uses multiple verification passes, each solving subproblems [4]. While conserving main memory these techniques often lead to increases in code size or verification time. 2.2 Annotations and Optimizations Annotations in our sense are code informations added to the mobile code during its generation. They can be used by the runtime environment to improve execution speed or to increase program security. In general, no verification of the annotations is possible, so blind trust o them could lead to semantical errors and security exploits. Currently there are just two techniques to guarantee the right usage: either by using proof-carrying techniques or with secure annotations like in SafeTSA. Yet, neither of these are directly convertible to bytecode so the problem still arises. On the other hand code annotations on Java bytecode are not directly possible. One can use attributes, but there is no way to detect manipulations. In the last Java version, program annotations made by the programmer are roduced to the language and to bytecode, however for code annotations this is not of erest. Often, annotations are used for optimizations on the runtime environment. They are applied dynamically during runtime in JIT and adaptive compilers, whereas for erpreters we do not know of any system utilizing annotations. Common optimizations which can be annotated are removal of bound checks [22], escape information [9] and virtual register placement [10]. Reig [18] suggested some other high level language information which can be used as annotation. In general, an ermediate representation which supports secure annotations could be very beneficial. 3 Type-separated Bytecode In this section we try to picture the main ideas of our new ermediate representation called type-separated bytecode. The first part deals with basic concepts and functionality. During the second part ideas for two more advanced topics are presented.
4 3.1 Type-Separation The type-separated bytecode is based on existing representations, e.g. Java bytecode [7] and the Common Intermediate Language (CIL) (as part of the Common Language Infrastructure (CLI) [5]). Like these formats type-separated bytecode uses a stack-based machine model. But instead of using just a single stack and register set the method of type-separation is applied. The basic idea behind type-separation is to separate every single type from all different types. Thus, instead of having one untyped stack we now have as many stacks as types do exist, each associated with its appropriate type. To work with these stacks we must also have typed register sets, again one for each type. In figure 1 this concept is visualized. On the top one can see the untyped stack and register set. After type-separation we now have four stacks, three for the values on the stack and one corresponding to the register. This empty float stack is needed since in a stack machine every register access happens via a stack. The register set is split up o its three values. An extra register set for double-values can be omitted because they are just temporally on the stack. As can be seen only the stacks and register sets whose type is used in the program are present in the representation. Stack Register Set Object float double Object È Type-Separation È Stacks Register Sets Float float double Object Integer Integer Double Object Float Object Object Fig. 1. Type-Separation Given that every stack and register set must only contain values of its dedicated type, the memory usage of the verification process is reduced. It is no longer necessary to save a stack and register map on each control po as it is
5 done in the traditional verification algorithm. It is sufficient to remember the heights of the stacks to prevent over- and underflows. To achieve type consistent behavior the used instructions have a special property. Each instruction knows per se where the operands of an operation must come from and the result should go to. Because of this property it is not possible to undermine the type system, thus the type-separated bytecode becomes type secure. For instance, an eger compare instruction would take its two operands from the eger stack and put the resulting boolean value onto the boolean stack. In contrast, an eger subtraction operation would place its resulting eger back onto the eger stack and also took its operands from there. Figure 2 shows an example of a simple program in type-separated format. Its execution and the effect on stacks and registers are displayed. Java Type-Separated Stacks Register Sets Sourcecode Bytecode double bool 0 double 0 i = 1; 10: iconst : istore 0 1 double d = 2.4; 12: ldc : dstore if ( d - i >= 1 ) { 16: dload : iload : i2d 2.4; : dsub : dconst 1 1.4; : dcmp ge true : if false d = 1; 25: dconst : dstore } 27:... Fig. 2. Example of the Execution of Type-Separated Bytecode A further important po in creating type-separated bytecode is using constras. For example we can demand that every register is initialized with a neutral value prior code execution, for example 0 for number types and null for reference types. This constra saves space during verification because one does not need to save the state of register sets. There are other constras like keeping the stack empty on jumps [13], but we have to decide which ones to incorporate o the ermediate representation yet. Because of the type separation a great amount of different stacks and register sets are present. We expect that a direct execution could pose some serious penalties on runtime behavior. Therefore, it could be beneficial to transform the program after verification o a one stack machine model prior to execution. First examinations show that such a transformation could be achieved with just one program pass, resulting in a linear time algorithm (in the number of
6 instructions). Together with our linear time verification algorithm this shows that type-separated bytecode can be used for linear time verification of mobile code at least. 3.2 Advanced Techniques There are mainly two ideas for other features of type-separated bytecode. The first one deals with program annotations whereas the second can be used for simple program parallelization. In our ermediate representation we plan to add annotations in the form of types and corresponding instructions. This way they merge with the language and can be verified during the verification phase, leading to secure annotations. These annotations can be used for program optimizations or to test security requirements. For example one may use such code annotations to reduce the number of nullchecks. Everytime a local object is accessed its type changes from insecure to secure. Further uses of this reference can occur without nullchecks. Such reductions may be superfluous for desktop computers with JIT and adaptive compilers but for constrained devices using erpreters this can give another performance increase. Another technique to be developed is simple program parallelization. In typeseparated bytecode every type has its corresponding stack. Therefore, if multiple instruction pipelines are available it is possible to associate them with appropriate stacks. Every operation performed on this stack can now be handled by the underlying instruction pipeline. Though this method is just a basic one we expect some performance increases. In future work this process can be refined to achieve better results. 4 Future Work The development of type-separated bytecode is currently at the beginning stage. The presented work is just a mere overview and will be refined further in the future. We first have to decide on a general stack machine model, were it is possible to transform a broad choice of programs o. After construction of a common model we have to do first evaluations on the type-separated bytecode to find problems and restrictions. Further research should lead thereafter to the final stack machine model. In latter phases of the project we will incorporate annotations o the language. After developing a general method to accomplish this the next stage will be to find suitable code annotations. Mostly they come from the areas of code optimization and security properties. Perhaps it is possible to add aspect oriented programming styles [2] to type-separated bytecode. This will lead to a broader usage of annotations for program security. For the time being the last thing to accomplish is the building of a runtime environment for constrained devices, for example cell phones and JavaCards. In this area we suppose the largest improvements due to type-separated bytecode.
7 Not only the verification algorithm is better adopted to this setting. Through the developed annotations the mobile code can be made more efficient and the runtime behavior is improved. 5 Summary In this paper we presented our primary ideas concerning a new mobile ermediate representation called type-separated bytecode. We suppose that this representation can lead to major improvements concerning program verification and runtime efficiency. This is especially true for constrained devices like cell phones, JavaCards and embedded systems. Further research will lead to the final version of type-separated bytecode and special techniques like annotations and simple parallel program execution. References 1. W. Amme, N. Dalton, M. Franz, and J. von Ronne. SafeTSA: A type safe and referentially secure mobile-code representation based on static single assignment form. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI 2001), volume 36 of ACM SIGPLAN Notices, pages , Snowbird, Utah, USA, June ACM Press. 2. Aspect-Oriented Software Association (AOSA). Aspect-Oriented Software Development (AOSD). Annual conference, visit 3. I. Bayley and S. Shiel. JVM bytecode verification without dataflow analysis. In Proceedings of the Workshop on Bytecode Semantics, Verification, Analysis and Transformation (Bytecode 2005), pages , C. Bernardeschi, G. Lettieri, L. Martini, and P. Masci. A space-aware bytecode verifier for Java cards. In Proceedings of the Workshop on Bytecode Semantics, Verification, Analysis and Transformation (Bytecode 2005), pages , ECMA (European Computer Manufacturers Association) International. Common Language Infrastructure (CLI), Standard ECMA-335, Dec A. Gal, C. W. Probst, and M. Franz. A denial of service attack on the Java bytecode verifier. Technical Report 03-23, School of Information and Computer Science, University of California, Irvine, Oct J. Gosling, B. Joy, G. L. Steele, and G. Bracha. The Java Language Specification Second Edition. The Java Series. Addison-Wesley, Reading, MA, USA, second edition, M. Hagiya and A. Tozawa. On a new method for dataflow analysis of Java Virtual Machine subroutines. Lecture Notes in Computer Science, 1503, A. Hartmann, W. Amme, J. von Ronne, and M. Franz. Code annotation for safe and efficient dynamic object resolution. In Proceedings of the 2nd International Workshop on Compiler Optimization Meets Compiler Verification (COCV 2003), pages 18 32, Warsaw, Poland, Apr J. Jones and S. N. Kamin. Annotating Java class files with virtual registers for performance. Concurrency: Practice and Experience, 12(6): , May T. Kistler and M. Franz. A Tree-Based alternative to Java byte-codes. International Journal of Parallel Programming, 27(1):21 34, Feb
8 12. X. Leroy. Java bytecode verification: An overview. In Proceedings of the International Conference on Computer Aided Verification (CAV 2001), pages , London, UK, June Springer-Verlag. 13. X. Leroy. Bytecode verification on Java smart cards. Software Practice and Experience, 32: , T. Lindholm and F. Yellin. The Java Virtual Machine Specification. The Java Series. Addison-Wesley, second edition, Apr G. Morrisett, D. Walker, K. Crary, and N. Glew. From System F to typed assembly language. ACM Transactions on Programming Languages and Systems, 21(3): , May G. C. Necula. Proof-carrying code. In Proceedings of the Symposium on Principles of Programming Languages (POPL 1997), ACM SIGPLAN Notices, pages , New York, NY, USA, Jan ACM Press. 17. OpenGroup. Architecture Neutral Distribution Format (XANDF) Specification. Open Group Specification P527, page 206, Jan F. Reig. Annotations for portable ermediate languages. Electronic Notes in Theoretical Computer Science, 59(1), E. Rose and K. H. Rose. Lightweight bytecode verification. In Proceedings of the Workshop on Formal Underpinnings of the Java Paradigm (OOPSLA 1998), Oct R. Stata and M. Abadi. A type system for Java bytecode subroutines. In Proceedings of the Symposium on Principles of Programming Languages (POPL 1998), pages , New York, NY, Jan ACM. 21. R. Vallée-Rai, E. Gagnon, L. Hendren, P. Lam, P. Pominville, and V. Sundaresan. Soot: A Java Optimization Framework, Sable Research Group of McGill University, D. E. Yessick. Removal of bounds checks in an annotation aware JVM, May
Checking Access to Protected Members in the Java Virtual Machine
Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/
language 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
- Applet java appaiono di frequente nelle pagine web - Come funziona l'interprete contenuto in ogni browser di un certo livello? - Per approfondire
- Applet java appaiono di frequente nelle pagine web - Come funziona l'interprete contenuto in ogni browser di un certo livello? - Per approfondire il funzionamento della Java Virtual Machine (JVM): -
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
Interpreters 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.
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
HOTPATH VM. An Effective JIT Compiler for Resource-constrained Devices
HOTPATH VM An Effective JIT Compiler for Resource-constrained Devices based on the paper by Andreas Gal, Christian W. Probst and Michael Franz, VEE 06 INTRODUCTION INTRODUCTION Most important factor: speed
Security Architecture and Verification of Java Bytecode
Security Architecture and Verification of Java Bytecode Ankit Tyagi, Abhishek Anand, Archana Bharti, Rashi Kohli Scholar, Department of Computer Science and Engineering, Amity University, Greater Noida,
picojava TM : A Hardware Implementation of the Java Virtual Machine
picojava TM : A Hardware Implementation of the Java Virtual Machine Marc Tremblay and Michael O Connor Sun Microelectronics Slide 1 The Java picojava Synergy Java s origins lie in improving the consumer
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Hardware/Software Co-Design of a Java Virtual Machine
Hardware/Software Co-Design of a Java Virtual Machine Kenneth B. Kent University of Victoria Dept. of Computer Science Victoria, British Columbia, Canada [email protected] Micaela Serra University of Victoria
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
1. 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
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Code Generation for High-Assurance Java Card Applets
Code Generation for High-Assurance Java Card Applets Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/ coglio
Reconfigurable Architecture Requirements for Co-Designed Virtual Machines
Reconfigurable Architecture Requirements for Co-Designed Virtual Machines Kenneth B. Kent University of New Brunswick Faculty of Computer Science Fredericton, New Brunswick, Canada [email protected] Micaela Serra
Armed E-Bunny: A Selective Dynamic Compiler for Embedded Java Virtual Machine Targeting ARM Processors
2005 ACM Symposium on Applied Computing Armed E-Bunny: A Selective Dynamic Compiler for Embedded Java Virtual Machine Targeting ARM Processors Mourad Debbabi Computer Security Research Group CIISE, Concordia
The Design of the Inferno Virtual Machine. Introduction
The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Lecture 32: The Java Virtual Machine. The Java Virtual Machine
The University of North Carolina at Chapel Hill Spring 2002 Lecture 32: The Java Virtual Machine April 12 1 The Java Virtual Machine Java Architecture Java Programming Language Java Virtual Machine (JVM)
The Java Virtual Machine (JVM) Pat Morin COMP 3002
The Java Virtual Machine (JVM) Pat Morin COMP 3002 Outline Topic 1 Topic 2 Subtopic 2.1 Subtopic 2.2 Topic 3 2 What is the JVM? The JVM is a specification of a computing machine Instruction set Primitive
Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective
Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT
The Hotspot Java Virtual Machine: Memory and Architecture
International Journal of Allied Practice, Research and Review Website: www.ijaprr.com (ISSN 2350-1294) The Hotspot Java Virtual Machine: Memory and Architecture Prof. Tejinder Singh Assistant Professor,
INTRODUCTION TO JAVA PROGRAMMING LANGUAGE
INTRODUCTION TO JAVA PROGRAMMING LANGUAGE Today Java programming language is one of the most popular programming language which is used in critical applications like stock market trading system on BSE,
Chapter 5 Instructor's Manual
The Essentials of Computer Organization and Architecture Linda Null and Julia Lobur Jones and Bartlett Publishers, 2003 Chapter 5 Instructor's Manual Chapter Objectives Chapter 5, A Closer Look at Instruction
Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert
Ubiquitous Computing Ubiquitous Computing The Sensor Network System Sun SPOT: The Sun Small Programmable Object Technology Technology-Based Wireless Sensor Networks a Java Platform for Developing Applications
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer
How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language
Cross-platform IL code manipulation library for runtime instrumentation of.net applications
Cross-platform IL code manipulation library for runtime instrumentation of.net applications master thesis subject for Markus Gaisbauer (0256634) in cooperation with dynatrace software GmbH July 5, 2007
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
An evaluation of the Java Card environment
An evaluation of the Java Card environment Christophe Rippert, Daniel Hagimont Contact: Christophe Rippert, Sirac Laboratory INRIA Rhône-Alpes, 655 avenue de l Europe Montbonnot 38334 St Ismier Cedex,
Reducing Memory in Software-Based Thread-Level Speculation for JavaScript Virtual Machine Execution of Web Applications
Reducing Memory in Software-Based Thread-Level Speculation for JavaScript Virtual Machine Execution of Web Applications Abstract Thread-Level Speculation has been used to take advantage of multicore processors
Chapter 3: Operating-System Structures. Common System Components
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System Design and Implementation System Generation 3.1
CA4003 - Compiler Construction
CA4003 - Compiler Construction David Sinclair Overview This module will cover the compilation process, reading and parsing a structured language, storing it in an appropriate data structure, analysing
Cost Model: Work, Span and Parallelism. 1 The RAM model for sequential computation:
CSE341T 08/31/2015 Lecture 3 Cost Model: Work, Span and Parallelism In this lecture, we will look at how one analyze a parallel program written using Cilk Plus. When we analyze the cost of an algorithm
Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design
Java in Education Introduction Choosing appropriate tool for creating multimedia is the first step in multimedia design and production. Various tools that are used by educators, designers and programmers
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
FPGA area allocation for parallel C applications
1 FPGA area allocation for parallel C applications Vlad-Mihai Sima, Elena Moscu Panainte, Koen Bertels Computer Engineering Faculty of Electrical Engineering, Mathematics and Computer Science Delft University
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
COMPUTER SCIENCE TRIPOS
CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five
Garbage Collection in the Java HotSpot Virtual Machine
http://www.devx.com Printed from http://www.devx.com/java/article/21977/1954 Garbage Collection in the Java HotSpot Virtual Machine Gain a better understanding of how garbage collection in the Java HotSpot
Advances in Programming Languages
Advances in Programming Languages Lecture 13: Certifying Correctness Ian Stark School of Informatics The University of Edinburgh Tuesday 4 November 2014 Semester 1 Week 8 http://www.inf.ed.ac.uk/teaching/courses/apl
C# and Other Languages
C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List
Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors
Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors Klaus Wissing PolySpace Technologies GmbH Argelsrieder Feld 22 82234 Wessling-Oberpfaffenhofen
IMPROVING PERFORMANCE OF RANDOMIZED SIGNATURE SORT USING HASHING AND BITWISE OPERATORS
Volume 2, No. 3, March 2011 Journal of Global Research in Computer Science RESEARCH PAPER Available Online at www.jgrcs.info IMPROVING PERFORMANCE OF RANDOMIZED SIGNATURE SORT USING HASHING AND BITWISE
Advanced Operating Systems (M) Dr Colin Perkins School of Computing Science University of Glasgow
Advanced Operating Systems (M) Dr Colin Perkins School of Computing Science University of Glasgow Rationale Radical changes to computing landscape; Desktop PC becoming irrelevant Heterogeneous, multicore,
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
International Workshop on Field Programmable Logic and Applications, FPL '99
International Workshop on Field Programmable Logic and Applications, FPL '99 DRIVE: An Interpretive Simulation and Visualization Environment for Dynamically Reconægurable Systems? Kiran Bondalapati and
2 Introduction to Java. Introduction to Programming 1 1
2 Introduction to Java Introduction to Programming 1 1 Objectives At the end of the lesson, the student should be able to: Describe the features of Java technology such as the Java virtual machine, garbage
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. [email protected] Oct 2003 Presented to Gordon College CS 311
The Java Virtual Machine and Mobile Devices John Buford, Ph.D. [email protected] Oct 2003 Presented to Gordon College CS 311 Objectives Review virtual machine concept Introduce stack machine architecture
İSTANBUL AYDIN UNIVERSITY
İSTANBUL AYDIN UNIVERSITY FACULTY OF ENGİNEERİNG SOFTWARE ENGINEERING THE PROJECT OF THE INSTRUCTION SET COMPUTER ORGANIZATION GÖZDE ARAS B1205.090015 Instructor: Prof. Dr. HASAN HÜSEYİN BALIK DECEMBER
Developing an Inventory Management System for Second Life
Developing an Inventory Management System for Second Life Abstract Anthony Rosequist Workflow For the progress report a month ago, I set the goal to have a basic, functional inventory management system
Software Engineering
Software Engineering Lecture 06: Design an Overview Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 35 The Design Phase Programming in
An Easier Way for Cross-Platform Data Acquisition Application Development
An Easier Way for Cross-Platform Data Acquisition Application Development For industrial automation and measurement system developers, software technology continues making rapid progress. Software engineers
Pluggable Type Systems. Gilad Bracha
Pluggable Type Systems Gilad Bracha The Paradox of Type Systems Type systems help reliability and security by mechanically proving program properties Type systems hurt reliability and security by making
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, [email protected] Abstract. Exception
Chapter 4 Lecture 5 The Microarchitecture Level Integer JAVA Virtual Machine
Chapter 4 Lecture 5 The Microarchitecture Level Integer JAVA Virtual Machine This is a limited version of a hardware implementation to execute the JAVA programming language. 1 of 23 Structured Computer
Functional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
Introduction to programming
Unit 1 Introduction to programming Summary Architecture of a computer Programming languages Program = objects + operations First Java program Writing, compiling, and executing a program Program errors
Lecture 12: Software protection techniques. Software piracy protection Protection against reverse engineering of software
Lecture topics Software piracy protection Protection against reverse engineering of software Software piracy Report by Business Software Alliance for 2001: Global economic impact of software piracy was
IMCM: A Flexible Fine-Grained Adaptive Framework for Parallel Mobile Hybrid Cloud Applications
Open System Laboratory of University of Illinois at Urbana Champaign presents: Outline: IMCM: A Flexible Fine-Grained Adaptive Framework for Parallel Mobile Hybrid Cloud Applications A Fine-Grained Adaptive
The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway
The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway Abstract High Level Languages (HLLs) are rapidly becoming the standard
MPI and Hybrid Programming Models. William Gropp www.cs.illinois.edu/~wgropp
MPI and Hybrid Programming Models William Gropp www.cs.illinois.edu/~wgropp 2 What is a Hybrid Model? Combination of several parallel programming models in the same program May be mixed in the same source
Portable Profiling of Memory Allocation in Java
Portable Profiling of Memory Allocation in Java Walter Binder Ecole Polytechnique Fédérale de Lausanne (EPFL) Artificial Intelligence Laboratory CH-1015 Lausanne, Switzerland [email protected] Abstract.
Under the Hood: The Java Virtual Machine. Lecture 24 CS 2110 Fall 2011
Under the Hood: The Java Virtual Machine Lecture 24 CS 2110 Fall 2011 Compiling for Different Platforms Program written in some high-level language (C, Fortran, ML,...) Compiled to intermediate form Optimized
Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage
Outline 1 Computer Architecture hardware components programming environments 2 Getting Started with Python installing Python executing Python code 3 Number Systems decimal and binary notations running
Smart Cards a(s) Safety Critical Systems
Smart Cards a(s) Safety Critical Systems Gemplus Labs Pierre.Paradinas [email protected] Agenda Smart Card Technologies Java Card TM Smart Card a specific domain Card Life cycle Our Technical and Business
Programming Language Concepts for Software Developers
Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark [email protected] Abstract This note describes and motivates our current plans for an undergraduate
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Driving force. What future software needs. Potential research topics
Improving Software Robustness and Efficiency Driving force Processor core clock speed reach practical limit ~4GHz (power issue) Percentage of sustainable # of active transistors decrease; Increase in #
