fbpx
Wikipedia

Dynamic recompilation

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

  • Many Java virtual machines feature dynamic recompilation.
  • Apple's Rosetta for Mac OS X on x86, allows PowerPC code to be run on the x86 architecture.
  • Later versions of the Mac 68K emulator used in classic Mac OS to run 680x0 code on the PowerPC hardware.
  • Psyco, a specializing compiler for Python.
  • The HP Dynamo project, an example of a transparent binary dynamic optimizer.[1]
  • DynamoRIO, an open-source successor to Dynamo that works with the ARM, x86-64 and IA-64 (Itanium) instruction sets.[2][3]
  • The Vx32 virtual machine employs dynamic recompilation to create OS-independent x86 architecture sandboxes for safe application plugins.
  • Microsoft Virtual PC for Mac, used to run x86 code on PowerPC.
  • FreeKEYB, an international DOS keyboard and console driver with many usability enhancements utilized self-modifying code and dynamic dead code elimination to minimize its in-memory image based on its user configuration (selected features, languages, layouts) and actual runtime environment (OS variant and version, loaded drivers, underlying hardware), automatically resolving dependencies, dynamically relocating and recombining code sections on byte-level granularity and optimizing opstrings based on semantic information provided in the source code, relocation information generated by special tools during assembly and profile information obtained at load time.[4]
  • The backwards compatibility functionality of the Xbox 360 (i.e. running games written for the original Xbox) is widely assumed to use dynamic recompilation.
  • Apple's Rosetta 2 for Apple silicon, permits many applications compiled for x86-64-based processors to be translated for execution on Apple silicon.
  • QEMU
  • PCem
  • 86Box

Emulators edit

See also edit

References edit

  1. ^ . Archived from the original on 2008-07-07. Retrieved 2006-01-22.
  2. ^ . Archived from the original on 2019-09-05. Retrieved 2016-04-12.
  3. ^ "DynamoRIO". GitHub. 2021-10-15.
  4. ^ Paul, Matthias R.; Frinke, Axel C. (1997-10-13) [first published 1991], FreeKEYB - Enhanced DOS keyboard and console driver (User Manual) (v6.5 ed.)
  5. ^ . Archived from the original on 2005-10-29. Retrieved 2009-04-15.
  6. ^ petebernert (2015-10-03). "GCemu". SourceForge.
  7. ^ "Gameboy Emulator for MSX | The New Image". GEM. Retrieved 2014-01-12.
  8. ^ "DeSmuME v0.9.9".
  9. ^ Publicado por Carlos Ballesteros Velasco (2013-07-28). "Soywiz's PSP Emulator: Release : Soywiz's Psp Emulator 2013-07-28 (r525)". Pspemu.soywiz.com. Retrieved 2014-01-12.
  10. ^ Mupen64Plus
  11. ^ "SH2".
  12. ^ "PPSSPP - PPSSPP - PSP emulator for Android, Windows, Linux, iOS, MacOSX". ppsspp.org. Retrieved 2021-11-17.

External links edit

dynamic, recompilation, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, this, article, needs, additional, citations, verification, please, help, improve, this, article,. This article has multiple issues Please help improve it or discuss these issues on the talk page Learn how and when to remove these template messages This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Dynamic recompilation news newspapers books scholar JSTOR January 2014 Learn how and when to remove this template message This article contains weasel words vague phrasing that often accompanies biased or unverifiable information Such statements should be clarified or removed January 2014 This article possibly contains original research Please improve it by verifying the claims made and adding inline citations Statements consisting only of original research should be removed June 2021 Learn how and when to remove this template message This article s lead section may be too short to adequately summarize the key points Please consider expanding the lead to provide an accessible overview of all important aspects of the article June 2021 Learn how and when to remove this template message 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 Contents 1 Uses 2 Tasks 3 Applications 3 1 Emulators 4 See also 5 References 6 External linksUses editMost 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 editThe main tasks a dynamic recompiler has to perform are Reading in machine code from the source platform Emitting machine code for the target platformA 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 editThis article may contain excessive or irrelevant examples Please help improve the article by adding descriptive text and removing less pertinent examples June 2021 Many Java virtual machines feature dynamic recompilation Apple s Rosetta for Mac OS X on x86 allows PowerPC code to be run on the x86 architecture Later versions of the Mac 68K emulator used in classic Mac OS to run 680x0 code on the PowerPC hardware Psyco a specializing compiler for Python The HP Dynamo project an example of a transparent binary dynamic optimizer 1 DynamoRIO an open source successor to Dynamo that works with the ARM x86 64 and IA 64 Itanium instruction sets 2 3 The Vx32 virtual machine employs dynamic recompilation to create OS independent x86 architecture sandboxes for safe application plugins Microsoft Virtual PC for Mac used to run x86 code on PowerPC FreeKEYB an international DOS keyboard and console driver with many usability enhancements utilized self modifying code and dynamic dead code elimination to minimize its in memory image based on its user configuration selected features languages layouts and actual runtime environment OS variant and version loaded drivers underlying hardware automatically resolving dependencies dynamically relocating and recombining code sections on byte level granularity and optimizing opstrings based on semantic information provided in the source code relocation information generated by special tools during assembly and profile information obtained at load time 4 The backwards compatibility functionality of the Xbox 360 i e running games written for the original Xbox is widely assumed to use dynamic recompilation Apple s Rosetta 2 for Apple silicon permits many applications compiled for x86 64 based processors to be translated for execution on Apple silicon QEMU PCem 86BoxEmulators edit PCSX2 5 a PlayStation 2 emulator has a recompiler called microVU the successor of SuperVU GCemu 6 a GameCube emulator GEM 7 a Game Boy emulator for MSX uses an optimizing dynamic recompiler DeSmuME 8 a Nintendo DS emulator has a dynarec option Soywiz s Psp 9 a PlayStation Portable emulator has a dynarec option Mupen64Plus a multi platform Nintendo 64 emulator 10 Yabause a multi platform Saturn emulator 11 PPSSPP a multi platform PlayStation Portable emulator uses a JIT dynamic recompiler by default 12 See also editBinary recompiler Binary translation Comparison of platform virtualization software Just in time compilation Instrumentation computer programming References edit HP Labs technical report on Dynamo Archived from the original on 2008 07 07 Retrieved 2006 01 22 DynamoRIO Dynamic Instrumentation Tool Platform Archived from the original on 2019 09 05 Retrieved 2016 04 12 DynamoRIO GitHub 2021 10 15 Paul Matthias R Frinke Axel C 1997 10 13 first published 1991 FreeKEYB Enhanced DOS keyboard and console driver User Manual v6 5 ed PCSX 2 Archived from the original on 2005 10 29 Retrieved 2009 04 15 petebernert 2015 10 03 GCemu SourceForge Gameboy Emulator for MSX The New Image GEM Retrieved 2014 01 12 DeSmuME v0 9 9 Publicado por Carlos Ballesteros Velasco 2013 07 28 Soywiz s PSP Emulator Release Soywiz s Psp Emulator 2013 07 28 r525 Pspemu soywiz com Retrieved 2014 01 12 Mupen64Plus SH2 PPSSPP PPSSPP PSP emulator for Android Windows Linux iOS MacOSX ppsspp org Retrieved 2021 11 17 External links editDynamic recompiler tutorial Archived 2021 06 11 at the Wayback Machine Blog posts about writing a MIPS to PPC dynamic recompiler Retrieved from https en wikipedia org w index php title Dynamic recompilation amp oldid 1209508300, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.