From c5733869e6ed82a88c933393b42eb40b7d7bbb1e Mon Sep 17 00:00:00 2001 From: Simone Coco Date: Tue, 23 Dec 2025 17:08:49 +0100 Subject: [PATCH] start working on x64 emitter --- CMakeLists.txt | 6 +++--- src/backend/x64/emitter.cpp | 7 +++++++ src/backend/x64/emitter.hpp | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 src/backend/x64/emitter.cpp create mode 100644 src/backend/x64/emitter.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1dae0fc..5a59ec1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.23) project(rc64 CXX) - -add_library(rc64 ) -target_include_directories(rc64 PUBLIC src/misc) \ No newline at end of file +add_library(rc64 src/backend/x64/emitter.cpp) +target_include_directories(rc64 PUBLIC src/backend/x64 src/misc external/xbyak) +set_target_properties(rc64 PROPERTIES CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON) \ No newline at end of file diff --git a/src/backend/x64/emitter.cpp b/src/backend/x64/emitter.cpp new file mode 100644 index 0000000..573ff9a --- /dev/null +++ b/src/backend/x64/emitter.cpp @@ -0,0 +1,7 @@ +#include + +namespace rc64 { +Emitter::Emitter() : Xbyak::CodeGenerator(kMaxCodeCacheSize, Xbyak::AutoGrow) { + +} +} \ No newline at end of file diff --git a/src/backend/x64/emitter.hpp b/src/backend/x64/emitter.hpp new file mode 100644 index 0000000..d29a249 --- /dev/null +++ b/src/backend/x64/emitter.hpp @@ -0,0 +1,14 @@ +#pragma once +#include +#include +#include + +namespace rc64 { +struct Emitter : Xbyak::CodeGenerator { + Emitter(); + + static constexpr size_t kMaxTableSize = 1 << 12; + static constexpr size_t kMaxPagesPerTable = 1 << 20; + static constexpr size_t kMaxCodeCacheSize = kMaxTableSize * kMaxPagesPerTable; +}; +} \ No newline at end of file