Implement speculative translation on the CPU (#515)
* Implement speculative translation on the cpu, and change the way how branches to unknown or untranslated addresses works * Port t0opt changes and other cleanups * Change namespace from translation related classes to ChocolArm64.Translation, other minor tweaks * Fix typo * Translate higher quality code for indirect jumps aswell, and on some cases that were missed when lower quality (tier 0) code was available * Remove debug print * Remove direct argument passing optimization, and enable tail calls for BR instructions * Call delegates directly with Callvirt rather than calling Execute, do not emit calls for tier 0 code * Remove unused property * Rename argument on ArmSubroutine delegate
This commit is contained in:
parent
f5b4f6ccc4
commit
a694420d11
21 changed files with 656 additions and 376 deletions
|
@ -1,6 +1,7 @@
|
|||
using ChocolArm64;
|
||||
using ChocolArm64.Memory;
|
||||
using ChocolArm64.State;
|
||||
using ChocolArm64.Translation;
|
||||
|
||||
using NUnit.Framework;
|
||||
|
||||
|
@ -48,10 +49,12 @@ namespace Ryujinx.Tests.Cpu
|
|||
|
||||
_entryPoint = Position;
|
||||
|
||||
Translator translator = new Translator();
|
||||
_ramPointer = Marshal.AllocHGlobal(new IntPtr(_size));
|
||||
_memory = new MemoryManager(_ramPointer);
|
||||
_memory.Map(Position, 0, _size);
|
||||
|
||||
Translator translator = new Translator(_memory);
|
||||
|
||||
_thread = new CpuThread(translator, _memory, _entryPoint);
|
||||
|
||||
if (_unicornAvailable)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue