Jump to content

Dynamic recompilation

From Niidae Wiki

Template:Short description Template:Multiple issues Template:Use dmy dates Template:Program execution

In computer science, dynamic recompilation is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling during execution, the system can tailor the generated code to reflect the program's run-time environment, and potentially produce more efficient code by exploiting information that is not available to a traditional static compiler.

Uses

[edit]

Most dynamic recompilers are used to convert machine code between architectures at runtime. This is a task often needed in the emulation of legacy gaming platforms. In other cases, a system may employ dynamic recompilation as part of an adaptive optimization strategy to execute a portable program representation such as Java or .NET Common Language Runtime bytecodes. Full-speed debuggers also utilize dynamic recompilation to reduce the space overhead incurred in most deoptimization techniques, and other features such as dynamic thread migration.

Tasks

[edit]

The main tasks a dynamic recompiler has to perform are:

  • Reading in machine code from the source platform
  • Emitting machine code for the target platform

A dynamic recompiler may also perform some auxiliary tasks:

  • Managing a cache of recompiled code
  • Updating of elapsed cycle counts on platforms with cycle count registers
  • Management of interrupt checking
  • Providing an interface to virtualized support hardware, for example a GPU
  • Optimizing higher-level code structures to run efficiently on the target hardware (see below)

Applications

[edit]

Template:Example farm

Emulators

[edit]

See also

[edit]

References

[edit]

Template:Reflist

[edit]