Skip to content
Free planNo credit card requiredStart writing

Search 250 million research papers

Read the abstract, see who wrote it and who cites it, and get the citation in APA, MLA, Chicago or Harvard.

About 2,542 papers for “Bytecode”

bytecode insertion

Geoff A. Cohen, Jeffrey S. Chase · 2008

Bytecode transformation is a powerful technique to dynamically extend or adapt Java software using transformer programs that automatically rewrite compiled classes. Bytecode transformers have been used to integrate separately developed software components, instrument programs with monitoring or debugging code, and extend programs with new features for security, data management, and other needs. Although bytecode transformation has shown promise in research systems, acceptance of this technique in practice depends on effective software tools to facilitate development of transformers that are effective and correct across all legal inputs. This paper explores interfaces for safe code insertion in JOIE, a toolkit for constructing bytecode transformers for the Java environment. JOIE provides a core set of low-level primitives for manipulating Java classfiles, supplemented by higher-level interfaces that directly support common transformer styles. The goal of this design is to make common transformations safe and efficient, without sacrificing the toolkit’s generality for more complex transformers. JOIE’s high-level facilities include expressive interfaces for safe insertion of new code into existing applications, which is the focus of this paper. A key technique is to extend compiled classes by mixing in attributes, behaviors, and interfaces from auxiliary classes that are written in Java and packaged with the transformer. In addition the JOIE architecture supports modular primitives for traversing and filtering existing bytecode and splicing in new instruction sequences. This paper presents the architecture of JOIE’s code insertion facilities, and illustrates their use in three example transformations. These examples expose issues and tradeoffs in the design and use of the interfaces, and demonstrate the potential of the JOIE bytecode transformation architecture as a tool for software extension. key words: Java; bytecode; program transformation; architecture; interfaces 1.

Cited by 0

Polymorphic bytecode

Davide Ancona, Ferruccio Damiani, Sophia Drossopoulou et al. · 2005

We define compositional compilation as the ability to typecheck source code fragments in isolation, generate We define compositional compilation as the ability to typecheck source code fragments in isolation, generate corresponding binaries,and link together fragments whose mutual assumptions are satisfied, without reinspecting the code. Even though compositional compilation is a highly desirable feature, in Java-like languages it can hardly be achieved. This is due to the fact that the bytecode generated for a fragment (say, a class) is not uniquely determined by its source code, but also depends on the compilation context.We propose a way to obtain compositional compilation for Java, by introducing a polymorphic form of bytecode containing type variables (ranging over class names) and equipped with a set of constraints involving type variables. Thus, polymorphic bytecode provides a representation for all the (standard) bytecode that can be obtained by replacing type variables with classes satisfying the associated constraints.We illustrate our proposal by developing a typing and a linking algorithm. The typing algorithm compiles a class in isolation generating the corresponding polymorphic bytecode fragment and constraints on the classes it depends on. The linking algorithm takes a collection of polymorphic bytecode fragments, checks their mutual consistency, and possibly simplifies and specializes them. In particular, linking a self-contained collection of fragments either fails, or produces standard bytecode (the same as would have been produced by standard compilation of all fragments).

Cited by 51

Java bytecode

Arnaud Fontaine, Samuel Hym, Isabelle Simplot-ryl et al. · 2011

Cited by 0

Verified Java Bytecode Verification (Verified Java Bytecode Verification)

Gerwin Klein · it - Information Technology · 2005

Zusammenfassung Der Bytecode Verifier ist ein essenzieller Bestandteil der Sicherheitsarchitektur der Programmierplattform Java. Die vorliegende Dissertation stellt eine formale, ausführbare Spezifikation des Bytecode Verifiers vor sowie den Beweis, dass diese korrekt ist. Die Formalisierung, vollständig im Theorembeweiser Isabelle durchgeführt, besteht aus einem abstrakten Framework für Bytecode-Verifikation, das mit zunehmend ausdrucksstarken Typsystemen instanziiert wird. Diese decken sämtliche wichtigen Eigenschaften der Java-Plattform ab. Die Formalisierung liefert zwei ausführbare, verifizierte Bytecode Verifier: den Standard-Algorithmus, wie er auf normalen Desktop-Rechnern benutzt wird, und einen Lightweight Bytecode Verifier für eingebettete Systeme mit Ressourcenbeschränkungen wie z.B. Java SmartCards.

Cited by 2

Functional Java Bytecode

Christopher League, Valery Trifonov, Zhong Shao · 2001

We describe the design and implementation of lambdaJVM, a functional representation of Java bytecode that makes data flow explicit, verification simple, and that is well-suited for translation into lower-level representations such as those used in optimizing compilers. It is a good alternative to stack-based Java bytecode for virtual machines or ahead-of-time compilers which optimize methods and produce native code. We use lambdaJVM as one component in a sophisticated type-preserving compiler for Java class files. Though our implementation is incomplete, preliminary measurements of both compile and run times are promising.

Cited by 0

Speculatively vectorized bytecode

Erven Rohou, Sergei Dyshel, Dorit Nuzman et al. · 2011

Diversity is a confirmed trend of computing systems, which present a complex and moving target to software developers. Virtual machines and just-in-time compilers have been proposed to mitigate the complexity of these systems. They do so by offering a single and stable abstract machine model thereby hiding architectural details from programmers.

Cited by 8

Formal Certification of Non-interferent Android Bytecode (DEX Bytecode)

Hendra Gunadi · 2015

The Android operating system is now used in the majority of mobile devices. Each application in Android runs in an instance of the Dalvik virtual machine, which is a register-based virtual machine (VM). Most applications for Android are developed using Java, compiled to Java bytecode and then translated to DEX bytecode using the dx tool in the Android Software Development Kit. In this work, I aim to develop a type-based method for certifying non-interference properties of DEX bytecode, following a methodology that has been developed for Java bytecode certification by Barthe et al. To this end, I develop a formal operational semantics of the Dalvik VM, a type system for DEX bytecode, and prove the soundness of the type system with respect to a notion of non-interference. I then study the translation process from Java bytecode to DEX bytecode, as implemented in the dx tool in the Android SDK. I show that an abstracted version of the translation from Java bytecode to DEX bytecode preserves the non-interference property. More precisely, I show that if the Java bytecode is typable in Barthe et al's type system (which guarantees non-interference) then its translation is typable in our type system. This result opens up the possibility to leverage existing bytecode verifiers for Java to certify non-interference properties of Android bytecode.

Cited by 8

Polymorphic bytecode instrumentation

Philippe Moret, Walter Binder, Éric Tanter · 2011

Bytecode instrumentation is a widely used technique to implement aspect weaving and dynamic analyses in virtual machines such as the Java Virtual Machine. Aspect weavers and other instrumentations are usually developed independently and combining them often requires significant engineering effort, if at all possible. In this paper we introduce polymorphic bytecode instrumentation (PBI), a simple but effective technique that allows dynamic dispatch amongst several, possibly independent instrumentations.

Cited by 25

Bytecode und Maschinencode

Bernd Klein · Einführung in Python 3 · 2013

No AccessEinführung in Python 3Jul 2013Bytecode und MaschinencodeBernd KleinBernd Kleinhttps://doi.org/10.3139/9783446437173.003SectionsAboutPDF ToolsAdd to FavoritesDownload CitationTrack CitationsCopy LTI LinkPDF key 'share (en)' returned an object instead of string.FacebookTwitterEmailLinkedIn previous chapternext chapter FiguresReferencesRelatedDetails 2013Pages: 17-19Print ISBN: 978-3-446-43547-6eISBN: 978-3-446-43717-3 Copyright & Permissions© 2013 Carl Hanser Verlag GmbH & Co. KGPDF downloadLoading ...

Cited by 1

Java Bytecode Disassembler

Macháček, Ondřej · Brno University of Technology Digital Library (Brno University of Technology) · 2013

Tato práce se zabývá popisem struktury mezikódu jazyka Java a disassemblováním instrukcí mezikódu jazyka Java. Součástí této práce je knihovna pro disassemblování souborů tříd jazyka Java. Knihovna umožňuje zobrazit veškeré disassemblované informace uložené v souboru tříd. Pro ukázku práce s knihovnou byla napsána i jednoduchá aplikace s grafickým uživatelským rozhraním.

Cited by 0

Java bytecode optimizations

H.D. Lambridge · 2002

We present our results obtained from applying well known optimizations to Java bytecodes. We survey the optimizations implemented thus far, which include peephole optimizations, jump redundancy eliminations, and common subexpression elimination. The transformations are each analyzed according to several criteria. We measure the impact each has on reducing a program's execution time and size, the frequency by which the optimizations can be applied, and the extra compile time incurred. Together, these results quantify the overall effectiveness of employing classical optimizations on bytecodes. Our experiments were conducted on a representative set of public domain Java programs which were compiled using Sun's JDK 1.0.2. All transformations were applied to bytecodes with no access to their original source.

Cited by 0

Characterizing WebAssembly Bytecode

Yuxin Qin, Dejice Jacob, Jeremy Singer · ENLIGHTEN (Jurnal Bimbingan dan Konseling Islam) · 2022

WebAssembly, known as Wasm, is an interpreted portable bytecode execution format that is growing in popularity. In this work, we perform a simple pair of characterizations of Wasm. Statically, we compare the instruction set to other portable bytecodes like JVM and PCODE, showing that Wasm operates at a lower abstraction level than JVM, similar to PCODE. Dynamically, we study the Wasm instruction mix for a set of common benchmark applications. This investigation reveals that, like JVM, data movement operations occur most frequently in instruction traces. We conclude by discussing possible future directions for optimizing Wasm execution.

Cited by 0Open access

Java Bytecode Disassembler

Hřibal, Jaromír · Brno University of Technology Digital Library (Brno University of Technology) · 2015

První část této bakalářské práce se zabývá základními principy virtuálního stroje jazyka Java a detailněji se věnuje jeho instrukční sadě a formátu . class souborů, dohromady známých jako bajtkód . Následující část prezentuje rešerši existujících nástrojů pro manipulaci s bajtkódem . Poslední část popisuje vytvoření pluginu do vývojového prostředí Eclipse , který realizuje uživatelsky přívětivé zobrazení zadaného bajtkódu spolu s původním zdrojovým kódem, ze kterého byl bajtkód generován. Nástroj předpokládá dostupnost těchto zdrojových kódů, takže neplní roli dekompilátoru.

Cited by 0