Reorganization of source & Clang-Format

This commit is contained in:
Xphalnos 2025-06-20 20:33:57 +02:00
parent 3693ac72cb
commit 4d4f0c8490
9 changed files with 28 additions and 36 deletions

View file

@ -14,32 +14,30 @@
using JitFunc = void (*)();
void JIT::translate_and_run(CPU &cpu) {
void JIT::translate_and_run(CPU& cpu) {
// TODO: Create REM Context
create_rem_context(nullptr, nullptr, nullptr, nullptr, nullptr);
// TODO: Create REM Context
create_rem_context(nullptr, nullptr, nullptr, nullptr, nullptr);
#ifdef WIN32
u8 *code = (u8 *)VirtualAlloc(NULL, 64, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
u8* code = (u8*)VirtualAlloc(NULL, 64, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
#else
u8 *code = (u8 *)mmap(nullptr, 64, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0);
u8* code = (u8*)mmap(nullptr, 64, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0);
#endif
size_t offset = 0;
// Decode mock instructions from cpu.memory
if (cpu.memory[0] == 0x05)
{ // MOVZ placeholder
code[offset++] = 0x48; // mov rax, imm64
if (cpu.memory[0] == 0x05) { // MOVZ placeholder
code[offset++] = 0x48; // mov rax, imm64
code[offset++] = 0xB8;
u64 imm = 5;
std::memcpy(&code[offset], &imm, sizeof(imm));
offset += 8;
}
if (cpu.memory[4] == 0x03)
{ // ADD placeholder
code[offset++] = 0x48; // add rax, imm32
if (cpu.memory[4] == 0x03) { // ADD placeholder
code[offset++] = 0x48; // add rax, imm32
code[offset++] = 0x05;
u32 addval = 3;
std::memcpy(&code[offset], &addval, sizeof(addval));
@ -50,12 +48,11 @@ create_rem_context(nullptr, nullptr, nullptr, nullptr, nullptr);
JitFunc fn = reinterpret_cast<JitFunc>(code);
u64 result;
asm volatile(
"call *%1\n"
"mov %%rax, %0\n"
: "=r"(result)
: "r"(fn)
: "%rax");
asm volatile("call *%1\n"
"mov %%rax, %0\n"
: "=r"(result)
: "r"(fn)
: "%rax");
cpu.regs[0] = result;
}