More opcodes

This commit is contained in:
Nekotekina 2014-04-18 00:25:02 +04:00
parent 29d2ea7513
commit 5d091411a3
3 changed files with 572 additions and 420 deletions

2
asmjit

@ -1 +1 @@
Subproject commit 6c50029aa0aa23722b3c4c507113afa04191e5df
Subproject commit 316812daf0d734f1e3dc3abb05785737513274f0

File diff suppressed because it is too large Load diff

View file

@ -4,8 +4,6 @@
#include "SPUInterpreter.h"
#include "SPURecompiler.h"
static const SPUImmTable g_spu_imm;
SPURecompilerCore::SPURecompilerCore(SPUThread& cpu)
: m_enc(new SPURecompiler(cpu, *this))
, inter(new SPUInterpreter(cpu))
@ -135,9 +133,9 @@ void SPURecompilerCore::Compile(u16 pos)
log.Open(wxString::Format("SPUjit_%d.log", GetCurrentSPUThread().GetId()), first ? wxFile::write : wxFile::write_append);
log.Write(wxString::Format("========== START POSITION 0x%x ==========\n\n", start * 4));
log.Write(wxString(stringLogger.getString()));
log.Write(wxString::Format("========== COMPILED %d (excess %d), time: [start=%lld (decoding=%lld), finalize=%lld]\n\n",
entry[start].count, excess, stamp1 - stamp0, time0, get_system_time() - stamp1));
log.Close();
//ConLog.Write("Compiled: %d (excess %d), addr=0x%x, time: [start=%d (decoding=%d), finalize=%d]",
//entry[start].count, excess, start * 4, stamp1 - stamp0, time0, get_system_time() - stamp1);
m_enc->compiler = nullptr;
first = false;
}
@ -200,7 +198,7 @@ u8 SPURecompilerCore::DecodeMemory(const u64 address)
return 0;
}
typedef u32(*Func)(void* _cpu, void* _ls, const SPUImmTable* _imm, u32 _pos);
typedef u32(*Func)(void* _cpu, void* _ls, const void* _imm, u32 _pos);
Func func = asmjit_cast<Func>(entry[pos].pointer);
@ -217,7 +215,7 @@ u8 SPURecompilerCore::DecodeMemory(const u64 address)
}
u16 res = pos;
res = (u16)func(cpu, &Memory[m_offset], &g_spu_imm, res);
res = (u16)func(cpu, &Memory[m_offset], imm_table.data(), res);
if (did_compile)
{
@ -238,6 +236,4 @@ u8 SPURecompilerCore::DecodeMemory(const u64 address)
CPU.SetBranch((u64)res << 2);
return 0;
}
/*Decode(Memory.Read32(address));
return 4;*/
}