Dynamic recompilation: Difference between revisions
→Gaming: Fixed many links. |
Removed many red links. |
||
| Line 2: | Line 2: | ||
==Uses== | ==Uses== | ||
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 | 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 dynarec to reduce the space overhead incurred in most deoptimization techniques, and other features such as dynamic thread migration. | ||
==Tasks== | ==Tasks== | ||
| Line 17: | Line 17: | ||
==Example== | ==Example== | ||
Suppose a program is being run in an emulator and needs to copy a null-terminated | Suppose a program is being run in an emulator and needs to copy a null-terminated string. The program is compiled originally for a very simple processor. This processor can only copy a byte at a time, and must do so by first reading it from the source string into a register, then writing it from that register into the destination string. The original program might look something like this: | ||
<source lang=asm> | <source lang=asm> | ||
| Line 69: | Line 69: | ||
*[[Yabause]], a multi-platform [[Sega Saturn emulators|Sega Saturn emulator]].<ref>[http://wiki.yabause.org/index.php5?title=SH2_dynamic_recompiler SH2]</ref> | *[[Yabause]], a multi-platform [[Sega Saturn emulators|Sega Saturn emulator]].<ref>[http://wiki.yabause.org/index.php5?title=SH2_dynamic_recompiler SH2]</ref> | ||
*The backwards compatibility functionality of the [[Xbox 360 emulators|Xbox 360]] (i.e. running games written for the original [[Xbox emulators|Xbox]]) is widely assumed to use dynamic recompilation. | *The backwards compatibility functionality of the [[Xbox 360 emulators|Xbox 360]] (i.e. running games written for the original [[Xbox emulators|Xbox]]) is widely assumed to use dynamic recompilation. | ||
*[[PPSSPP]], a | *[[PPSSPP]], a Sony [[PlayStation Portable emulators|PlayStation Portable emulator]]. Recompilers for both x86 and ARM. | ||
*PSEmu Pro, a | *PSEmu Pro, a Sony [[PlayStation emulators|PlayStation emulator]]. | ||
*[[UltraHLE]], the first [[Nintendo 64 emulators|Nintendo 64 emulators]] emulator to fully run commercial games. | *[[UltraHLE]], the first [[Nintendo 64 emulators|Nintendo 64 emulators]] emulator to fully run commercial games. | ||
*[[PCSX2]],<ref>[http://www.pcsx2.net PCSX 2]</ref> a | *[[PCSX2]],<ref>[http://www.pcsx2.net PCSX 2]</ref> a Sony [[PlayStation 2 emulators|PlayStation 2 emulator]], has a recompiler called "microVU", the successor of "SuperVU". | ||
*[[Dolphin]], a [[GameCube emulators|Nintendo GameCube]] and [[Wii emulators|Wii emulator]], has a dynarec option. | *[[Dolphin]], a [[GameCube emulators|Nintendo GameCube]] and [[Wii emulators|Wii emulator]], has a dynarec option. | ||
*GCEmu,<ref>[http://sourceforge.net/projects/gcemu-project | *GCEmu,<ref>[http://sourceforge.net/projects/gcemu-project GCEmu]</ref> a [[GameCube emulators|Nintendo GameCube emulator]]. | ||
*[[nullDC]], a [[Sega Dreamcast emulators|Sega Dreamcast emulator]] for x86. | *[[nullDC]], a [[Sega Dreamcast emulators|Sega Dreamcast emulator]] for x86. | ||
*GEM,<ref>{{cite web|url=http://gem.tni.nl/ |title=Gameboy Emulator for MSX | The New Image |publisher=GEM |date= |accessdate=2014-01-12}}</ref> a [[Game Boy/Game Boy Color emulators|Nintendo Game Boy/Color]] emulator for [[MSX emulators|MSX]] uses an optimizing dynamic recompiler. | *GEM,<ref>{{cite web|url=http://gem.tni.nl/ |title=Gameboy Emulator for MSX | The New Image |publisher=GEM |date= |accessdate=2014-01-12}}</ref> a [[Game Boy/Game Boy Color emulators|Nintendo Game Boy/Color]] emulator for [[MSX emulators|MSX]] uses an optimizing dynamic recompiler. | ||
*[[DeSmuME]],<ref>[http://desmume.org/2013/04/30/desmume-0-9-9-released/ DeSmuME v0.9.9]</ref> a [[Nintendo DS emulators|Nintendo DS emulator]], has a dynarec option. | *[[DeSmuME]],<ref>[http://desmume.org/2013/04/30/desmume-0-9-9-released/ DeSmuME v0.9.9]</ref> a [[Nintendo DS emulators|Nintendo DS emulator]], has a dynarec option. | ||
*Soywiz's Psp,<ref>{{cite web|author=Publicado por Carlos Ballesteros Velasco |url=http://pspemu.soywiz.com/2013/07/release-soywizs-psp-emulator-2013-07-28.html |title=Soywiz's PSP Emulator: Release : Soywiz's Psp Emulator 2013-07-28 (r525) |publisher=Pspemu.soywiz.com |date=2013-07-28 |accessdate=2014-01-12}}</ref> a | *Soywiz's Psp,<ref>{{cite web|author=Publicado por Carlos Ballesteros Velasco |url=http://pspemu.soywiz.com/2013/07/release-soywizs-psp-emulator-2013-07-28.html |title=Soywiz's PSP Emulator: Release : Soywiz's Psp Emulator 2013-07-28 (r525) |publisher=Pspemu.soywiz.com |date=2013-07-28 |accessdate=2014-01-12}}</ref> a Sony [[PlayStation Portable emulators|PlayStation Portable emulator]], has a dynarec option. | ||
==See also== | ==See also== | ||