Dynamic recompilation: Difference between revisions

ObiKKa (talk | contribs)
mNo edit summary
Removed redlinks, spelling, PCSX 2 -> PCSX2
Line 15: Line 15:
* Updating of elapsed cycle counts on platforms with cycle count registers
* Updating of elapsed cycle counts on platforms with cycle count registers
* Management of interrupt checking
* Management of interrupt checking
* Providing an interface to virtualized support hardware for example a [[GPU]]
* 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)
* Optimizing higher level code structures to run efficiently on the target hardware (see below)


Line 61: Line 61:
                             ; so carry on with something else.</source>
                             ; so carry on with something else.</source>


There is an immediate speed benefit simply because the processor doesn't have to load so many instructions to do the same task, but also because the movs instruction is likely to be optimized by the processor designer to be more efficient than the sequence used in the first example. (For example, it may make better use of [[Parallel computing|parallel execution]] in the processor to increment A and B while it is still copying bytes).
There is an immediate speed benefit simply because the processor doesn't have to load so many instructions to do the same task, but also because the movs instruction is likely to be optimized by the processor designer to be more efficient than the sequence used in the first example. (For example, it may make better use of parallel execution in the processor to increment A and B while it is still copying bytes).


===Gaming===
===Gaming===
*[[MAME]] uses dynamic recompilation in its CPU emulators for MIPS, SuperH, PowerPC and even the Voodoo graphics processing units.
*[[MAME]] uses dynamic recompilation in its CPU emulators for MIPS, SuperH, PowerPC and even the Voodoo graphics processing units.
*[[1964]], a [[Nintendo 64 emulators|Nintendo 64 emulator]] for x86 hardware.
*[[1964]], an open-source [[Nintendo 64 emulators|Nintendo 64 emulator]] for x86 hardware.
*Wii64, a [[Nintendo 64 emulators|Nintendo 64 emulator]] for the Wii.
*Wii64, a [[Nintendo 64 emulators|Nintendo 64 emulator]] for the Wii.
*WiiSX, a Sony PlayStation emulator for the Nintendo Wii.
*WiiSX, a Sony PlayStation emulator for the Nintendo Wii.
*[[Mupen64Plus]], a multi-platform Nintendo 64 emulator.<ref>[http://pandorawiki.org/Mupen64plus_dynamic_recompiler Mupen64Plus]</ref>
*[[Mupen64Plus]], an open-source, multi-platform, plugin-based Nintendo 64 emulator.<ref>[http://pandorawiki.org/Mupen64plus_dynamic_recompiler Mupen64Plus]</ref>
*[[Yabause]], a multi-platform [[Sega Saturn emulators|Sega Saturn emulator]].<ref>[http://wiki.yabause.org/index.php5?title=SH2_dynamic_recompiler SH2]</ref>
*[[Yabause]], an open-source 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 Sony [[PlayStation Portable emulators|PlayStation Portable emulator]]. Recompilers for both x86 and ARM.
*[[PPSSPP]], an open-source, multi-platform [[Sony PlayStation Portable emulators|PlayStation Portable emulator]]. Recompilers for both x86 and ARM.
*PSEmu Pro, a Sony [[PlayStation emulators|PlayStation emulator]].
*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 Sony [[PlayStation 2 emulators|PlayStation 2 emulator]], has a recompiler called "microVU", the successor of "SuperVU".
*[[PCSX2]],<ref>[http://www.pcsx2.net PCSX2]</ref> an open-source, plugin-based [[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]], an open-source [[GameCube emulators|Nintendo GameCube]] and [[Wii emulators|Wii emulator]], has a dynarec option.
*GCEmu,<ref>[http://sourceforge.net/projects/gcemu-project GCEmu]</ref> a [[GameCube emulators|Nintendo GameCube emulator]].
*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]], an open-source [[Sega Dreamcast emulators|Sega Dreamcast]] and [[Sega NAOMI and variants|Naomi emulator]] for [[wikipedia:x86|x86]].
*GEM,<ref>{{cite web|url=http://gem.tni.nl/ |title=Gameboy Emulator for MSX &#124; 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 &#124; 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> an open-source [[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 Sony [[PlayStation Portable emulators|PlayStation Portable 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 [[Sony PlayStation Portable emulators|PlayStation Portable emulator]], has a dynarec option.


==See also==
==See also==