Intermediate Representations of Mobile Code.

Informatica (Impact Factor: 1.12). 01/2008; 32:1-25.
Source: DBLP

ABSTRACT Over the past decade, since Java was first introduced and integrated into the Netscape web browser, several intermediate representations have been developed that might be potentially used for mobile code applications. This paper examines the requirements for a mobile code representation, presents several examples of stack-based, tree-oriented, and proof-annotating mobile code representations, and evaluates each of these representations according to the requirements.

  • Source
    J. UCS. 01/1998; 4:522-533.
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: Certifying compilation allows a compiler to produce annota- tions that prove that target code abides by a specied safety policy. An independent verier can check the code without needing to trust the compiler. For such a system to be gen- erally useful, the safety policy should be expressive enough to allow dierent compilers to eectively produce certiable code. In this work, we use our experience in writing a certify- ing compiler to suggest general design principles that should allow concise yet expressive certicates. As an extended ex- ample, we present our compiler's translation of the control flow of Popcorn, a high-level language with function point- ers and exception handlers, to TALx86, a typed assembly language with registers, a stack, memory, and code blocks. This example motivates techniques for controlling certicate size and verication time. We quantify the eectiveness of techniques for reducing the overhead of certifying compilation by measuring the ef- fects their use has on a real Popcorn application, the com- piler itself. The selective use of these techniques, which in- clude common-subexpression elimination of types, higher- order type abbreviations, and selective re-verication, can change certicate size and verication time by well over an order of magnitude. We consider this report to be the rst quantitative study on the practicality of certifying a real program using a type system not specically designed for the compiler or source language.
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: Dynamic code generation is the creation of executable code at runtime. Such "on-the-fly" code generation is a powerful technique, enabling applications to use runtime information to improve performance by up to an order of magnitude [4, 8, 20, 22, 23]. Unfortunately, previous general-purpose dynamic code generation systems have been either inefficient or non-portable. We present VCODE, a retargetable, extensible, very fast dynamic code generation system. An important feature of VCODE is that it generates machine code "in-place" without the use of intermediate data structures. Eliminating the need to construct and consume an intermediate representation at runtime makes VCODE both efficient and extensible. VCODE dynamically generates code at an approximate cost of six to ten instructions per generated instruction, making it over an order of magnitude faster than the most efficient general-purpose code generation system in the literature [10]. Dynamic code generation is relatively well...

Full-text (2 Sources)

Available from
May 30, 2014