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