Updated CPU (markdown)

Sebastian Valle 2015-02-16 23:50:38 -05:00
parent f420b40e1b
commit 226b52c729

10
CPU.md

@ -1,9 +1,5 @@
Citra current has 2 CPU cores: `armemu` and `dyncom/skyeye`.
Citra's current CPU core is an ARM interpreter called "dyncom", which was originally taken from a project called SkyEye, and then modified to support the ARMv6 instruction set that the 3DS uses.
`armemu` is an old interpreter. It originally supports ARM7 (ARMv5) and partial ARMv6 support only. We added in ARMv6 stuffs and other fixes ourselves to get 3ds emulation as far as it is. ([ichfly](https://github.com/ichfly) tacked on more ARMv6 instructions for 3dmoo and [Lioncash](https://github.com/lioncash) is now doing further work on that area)
Dyncom originally supported ARM7 (ARMv5) and partial ARMv6 only. We added in the remaining ARMv6 media instructions and other fixes ourselves to get 3DS emulation as far as it is.
`SkyEye` is "[a very fast full system simulator which takes llvm as IR of dynmic compiled framework.. It can simulate series ARM, Coldfire,Mips, Powerpc, Sparc, x86 and Blackfin DSP Processor](http://sourceforge.net/projects/skyeye/)". It probably is still in active development, though really slow.
`dyncom` is the fallback interpreter to SkyEye's ARM dynamic recompiler. `dyncom` is more complex, cleaner, a little buggier than the current version of `armemu`, but it runs much faster. `dyncom` doesn't have as many instructions implemented as `armemu`.
`dyncom` is currently used by default, but there is still the option to use `armemu` instead. Eventually we plan to get rid of `armemu`. There's no sense in maintaining two interpreters.
There are plans to implement a dynamic recompiler that will fallback into dyncom for unimplemented instructions, but no work has been started on that yet.