From d409c08ef658ab006ad9e6d7124ade168926a125 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Fri, 11 Apr 2025 08:58:49 +0200 Subject: [PATCH] Restructure backends --- src/CMakeLists.txt | 7 +------ src/analyzer/snapshot.cpp | 2 +- src/backends/CMakeLists.txt | 5 +++++ src/{ => backends}/icicle-emulator/CMakeLists.txt | 4 +++- .../icicle-emulator/icicle-bridge}/.gitignore | 0 .../icicle-emulator/icicle-bridge}/CMakeLists.txt | 8 ++++---- .../icicle-emulator/icicle-bridge}/Cargo.lock | 0 .../icicle-emulator/icicle-bridge}/Cargo.toml | 0 .../data/Ghidra/Processors/x86/data/languages/adx.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/avx.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/avx2.sinc | 0 .../Ghidra/Processors/x86/data/languages/avx2_manual.sinc | 0 .../Ghidra/Processors/x86/data/languages/avx_manual.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/bmi1.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/bmi2.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/cet.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/clwb.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/fma.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/ia.sinc | 0 .../Ghidra/Processors/x86/data/languages/lockable.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/lzcnt.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/macros.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/mpx.sinc | 0 .../Processors/x86/data/languages/old/x86RealV1.lang | 0 .../Processors/x86/data/languages/old/x86RealV1.trans | 0 .../Ghidra/Processors/x86/data/languages/old/x86V1.lang | 0 .../Ghidra/Processors/x86/data/languages/old/x86V1.trans | 0 .../Processors/x86/data/languages/old/x86_64bit_v1.lang | 0 .../Processors/x86/data/languages/old/x86_64bit_v1.trans | 0 .../Processors/x86/data/languages/old/x86smmV1.lang | 0 .../Processors/x86/data/languages/old/x86smmV1.trans | 0 .../Ghidra/Processors/x86/data/languages/pclmulqdq.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/rdrand.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/sgx.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/sha.sinc | 0 .../data/Ghidra/Processors/x86/data/languages/smx.sinc | 0 .../Processors/x86/data/languages/x86-16-real.pspec | 0 .../Ghidra/Processors/x86/data/languages/x86-16.cspec | 0 .../data/Ghidra/Processors/x86/data/languages/x86-16.gdis | 0 .../Ghidra/Processors/x86/data/languages/x86-16.pspec | 0 .../Processors/x86/data/languages/x86-32-golang.cspec | 0 .../x86/data/languages/x86-32-golang.register.info | 0 .../Processors/x86/data/languages/x86-64-compat32.pspec | 0 .../Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec | 0 .../Processors/x86/data/languages/x86-64-golang.cspec | 0 .../x86/data/languages/x86-64-golang.register.info | 0 .../Ghidra/Processors/x86/data/languages/x86-64-win.cspec | 0 .../Ghidra/Processors/x86/data/languages/x86-64.dwarf | 0 .../Ghidra/Processors/x86/data/languages/x86-64.pspec | 0 .../Ghidra/Processors/x86/data/languages/x86-64.slaspec | 0 .../data/Ghidra/Processors/x86/data/languages/x86.dwarf | 0 .../data/Ghidra/Processors/x86/data/languages/x86.ldefs | 0 .../data/Ghidra/Processors/x86/data/languages/x86.opinion | 0 .../data/Ghidra/Processors/x86/data/languages/x86.pspec | 0 .../data/Ghidra/Processors/x86/data/languages/x86.slaspec | 0 .../Ghidra/Processors/x86/data/languages/x86borland.cspec | 0 .../Ghidra/Processors/x86/data/languages/x86delphi.cspec | 0 .../Ghidra/Processors/x86/data/languages/x86gcc.cspec | 0 .../Ghidra/Processors/x86/data/languages/x86win.cspec | 0 .../icicle-emulator/icicle-bridge}/src/icicle.rs | 0 .../icicle-emulator/icicle-bridge}/src/lib.rs | 0 .../icicle-emulator/icicle-bridge}/src/registers.rs | 0 .../icicle-emulator/icicle_x64_emulator.cpp | 0 .../icicle-emulator/icicle_x64_emulator.hpp | 0 src/{ => backends}/unicorn-emulator/CMakeLists.txt | 0 src/{ => backends}/unicorn-emulator/function_wrapper.hpp | 0 src/{ => backends}/unicorn-emulator/unicorn.hpp | 0 src/{ => backends}/unicorn-emulator/unicorn_hook.hpp | 0 .../unicorn-emulator/unicorn_memory_regions.hpp | 0 .../unicorn-emulator/unicorn_x64_emulator.cpp | 0 .../unicorn-emulator/unicorn_x64_emulator.hpp | 0 71 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 src/backends/CMakeLists.txt rename src/{ => backends}/icicle-emulator/CMakeLists.txt (90%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/.gitignore (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/CMakeLists.txt (86%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/Cargo.lock (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/Cargo.toml (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/adx.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/avx.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/avx2.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/avx2_manual.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/avx_manual.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/bmi1.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/bmi2.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/cet.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/clwb.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/fma.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/ia.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/lockable.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/lzcnt.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/macros.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/mpx.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.lang (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.trans (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86V1.lang (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86V1.trans (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.lang (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.trans (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.lang (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.trans (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/pclmulqdq.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/rdrand.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/sgx.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/sha.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/smx.sinc (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-16-real.pspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-16.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-16.gdis (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-16.pspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-32-golang.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-32-golang.register.info (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64-golang.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64-golang.register.info (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64-win.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64.dwarf (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64.pspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86-64.slaspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86.dwarf (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86.ldefs (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86.opinion (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86.pspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86.slaspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86borland.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86delphi.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86gcc.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/data/Ghidra/Processors/x86/data/languages/x86win.cspec (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/src/icicle.rs (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/src/lib.rs (100%) rename src/{icicle => backends/icicle-emulator/icicle-bridge}/src/registers.rs (100%) rename src/{ => backends}/icicle-emulator/icicle_x64_emulator.cpp (100%) rename src/{ => backends}/icicle-emulator/icicle_x64_emulator.hpp (100%) rename src/{ => backends}/unicorn-emulator/CMakeLists.txt (100%) rename src/{ => backends}/unicorn-emulator/function_wrapper.hpp (100%) rename src/{ => backends}/unicorn-emulator/unicorn.hpp (100%) rename src/{ => backends}/unicorn-emulator/unicorn_hook.hpp (100%) rename src/{ => backends}/unicorn-emulator/unicorn_memory_regions.hpp (100%) rename src/{ => backends}/unicorn-emulator/unicorn_x64_emulator.cpp (100%) rename src/{ => backends}/unicorn-emulator/unicorn_x64_emulator.hpp (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3655cf03..ff8ebfb8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,15 +1,10 @@ add_subdirectory(common) add_subdirectory(emulator) add_subdirectory(gdb-stub) -add_subdirectory(unicorn-emulator) +add_subdirectory(backends) add_subdirectory(windows-emulator) add_subdirectory(windows-gdb-stub) -if (MOMO_ENABLE_RUST_CODE) - add_subdirectory(icicle-emulator) - add_subdirectory(icicle) -endif() - if (NOT MOMO_BUILD_AS_LIBRARY) add_subdirectory(analyzer) add_subdirectory(fuzzing-engine) diff --git a/src/analyzer/snapshot.cpp b/src/analyzer/snapshot.cpp index 2b04848b..8dc427d8 100644 --- a/src/analyzer/snapshot.cpp +++ b/src/analyzer/snapshot.cpp @@ -18,8 +18,8 @@ namespace snapshot std::span validate_header(const std::span snapshot) { - snapshot_header default_header; snapshot_header header{}; + constexpr snapshot_header default_header{}; if (snapshot.size() < sizeof(header)) { diff --git a/src/backends/CMakeLists.txt b/src/backends/CMakeLists.txt new file mode 100644 index 00000000..12d192df --- /dev/null +++ b/src/backends/CMakeLists.txt @@ -0,0 +1,5 @@ +add_subdirectory(unicorn-emulator) + +if (MOMO_ENABLE_RUST_CODE) + add_subdirectory(icicle-emulator) +endif() diff --git a/src/icicle-emulator/CMakeLists.txt b/src/backends/icicle-emulator/CMakeLists.txt similarity index 90% rename from src/icicle-emulator/CMakeLists.txt rename to src/backends/icicle-emulator/CMakeLists.txt index 8ee0ec84..da62e3af 100644 --- a/src/icicle-emulator/CMakeLists.txt +++ b/src/backends/icicle-emulator/CMakeLists.txt @@ -1,3 +1,5 @@ +add_subdirectory(icicle-bridge) + file(GLOB_RECURSE SRC_FILES CONFIGURE_DEPENDS *.cpp *.hpp @@ -15,4 +17,4 @@ endif() target_include_directories(icicle-emulator INTERFACE "${CMAKE_CURRENT_LIST_DIR}") target_link_libraries(icicle-emulator PUBLIC emulator) -target_link_libraries(icicle-emulator PRIVATE emulator-common icicle) +target_link_libraries(icicle-emulator PRIVATE emulator-common icicle-bridge) diff --git a/src/icicle/.gitignore b/src/backends/icicle-emulator/icicle-bridge/.gitignore similarity index 100% rename from src/icicle/.gitignore rename to src/backends/icicle-emulator/icicle-bridge/.gitignore diff --git a/src/icicle/CMakeLists.txt b/src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt similarity index 86% rename from src/icicle/CMakeLists.txt rename to src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt index 992f2f33..4836948a 100644 --- a/src/icicle/CMakeLists.txt +++ b/src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt @@ -51,12 +51,12 @@ add_custom_command( COMMENT "Copying Ghidra Processor Specification" ) -add_library(icicle INTERFACE) -add_dependencies(icicle icicle-rust-project) -target_link_libraries(icicle INTERFACE ${ICICLE_RUST_LIB}) +add_library(icicle-bridge INTERFACE) +add_dependencies(icicle-bridge icicle-rust-project) +target_link_libraries(icicle-bridge INTERFACE ${ICICLE_RUST_LIB}) if(MSVC) - target_link_libraries(icicle INTERFACE + target_link_libraries(icicle-bridge INTERFACE ws2_32.lib Userenv.lib ntdll.lib diff --git a/src/icicle/Cargo.lock b/src/backends/icicle-emulator/icicle-bridge/Cargo.lock similarity index 100% rename from src/icicle/Cargo.lock rename to src/backends/icicle-emulator/icicle-bridge/Cargo.lock diff --git a/src/icicle/Cargo.toml b/src/backends/icicle-emulator/icicle-bridge/Cargo.toml similarity index 100% rename from src/icicle/Cargo.toml rename to src/backends/icicle-emulator/icicle-bridge/Cargo.toml diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/adx.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/adx.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/adx.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/adx.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/avx.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/avx.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/avx2.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx2.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/avx2.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx2.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/avx2_manual.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx2_manual.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/avx2_manual.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx2_manual.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/avx_manual.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx_manual.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/avx_manual.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/avx_manual.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/bmi1.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/bmi1.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/bmi1.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/bmi1.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/bmi2.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/bmi2.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/bmi2.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/bmi2.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/cet.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/cet.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/cet.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/cet.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/clwb.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/clwb.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/clwb.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/clwb.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/fma.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/fma.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/fma.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/fma.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/ia.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/ia.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/ia.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/ia.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/lockable.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/lockable.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/lockable.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/lockable.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/lzcnt.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/lzcnt.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/lzcnt.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/lzcnt.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/macros.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/macros.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/macros.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/macros.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/mpx.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/mpx.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/mpx.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/mpx.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.lang b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.lang similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.lang rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.lang diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.trans b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.trans similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.trans rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86RealV1.trans diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86V1.lang b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86V1.lang similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86V1.lang rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86V1.lang diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86V1.trans b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86V1.trans similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86V1.trans rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86V1.trans diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.lang b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.lang similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.lang rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.lang diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.trans b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.trans similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.trans rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86_64bit_v1.trans diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.lang b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.lang similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.lang rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.lang diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.trans b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.trans similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.trans rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/old/x86smmV1.trans diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/pclmulqdq.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/pclmulqdq.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/pclmulqdq.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/pclmulqdq.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/rdrand.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/rdrand.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/rdrand.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/rdrand.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/sgx.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/sgx.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/sgx.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/sgx.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/sha.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/sha.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/sha.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/sha.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/smx.sinc b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/smx.sinc similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/smx.sinc rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/smx.sinc diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16-real.pspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16-real.pspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16-real.pspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16-real.pspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16.gdis b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16.gdis similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16.gdis rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16.gdis diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16.pspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16.pspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-16.pspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-16.pspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-32-golang.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-32-golang.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-32-golang.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-32-golang.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-32-golang.register.info b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-32-golang.register.info similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-32-golang.register.info rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-32-golang.register.info diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-compat32.pspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-gcc.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-golang.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-golang.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-golang.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-golang.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-golang.register.info b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-golang.register.info similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-golang.register.info rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-golang.register.info diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-win.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-win.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64-win.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64-win.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64.dwarf b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64.dwarf similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64.dwarf rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64.dwarf diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64.pspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64.pspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64.pspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64.pspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64.slaspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64.slaspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86-64.slaspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86-64.slaspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86.dwarf b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.dwarf similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86.dwarf rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.dwarf diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86.ldefs b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.ldefs similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86.ldefs rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.ldefs diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86.opinion b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.opinion similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86.opinion rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.opinion diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86.pspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.pspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86.pspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.pspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86.slaspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.slaspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86.slaspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86.slaspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86borland.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86borland.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86borland.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86borland.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86delphi.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86delphi.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86delphi.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86delphi.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86gcc.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86gcc.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86gcc.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86gcc.cspec diff --git a/src/icicle/data/Ghidra/Processors/x86/data/languages/x86win.cspec b/src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86win.cspec similarity index 100% rename from src/icicle/data/Ghidra/Processors/x86/data/languages/x86win.cspec rename to src/backends/icicle-emulator/icicle-bridge/data/Ghidra/Processors/x86/data/languages/x86win.cspec diff --git a/src/icicle/src/icicle.rs b/src/backends/icicle-emulator/icicle-bridge/src/icicle.rs similarity index 100% rename from src/icicle/src/icicle.rs rename to src/backends/icicle-emulator/icicle-bridge/src/icicle.rs diff --git a/src/icicle/src/lib.rs b/src/backends/icicle-emulator/icicle-bridge/src/lib.rs similarity index 100% rename from src/icicle/src/lib.rs rename to src/backends/icicle-emulator/icicle-bridge/src/lib.rs diff --git a/src/icicle/src/registers.rs b/src/backends/icicle-emulator/icicle-bridge/src/registers.rs similarity index 100% rename from src/icicle/src/registers.rs rename to src/backends/icicle-emulator/icicle-bridge/src/registers.rs diff --git a/src/icicle-emulator/icicle_x64_emulator.cpp b/src/backends/icicle-emulator/icicle_x64_emulator.cpp similarity index 100% rename from src/icicle-emulator/icicle_x64_emulator.cpp rename to src/backends/icicle-emulator/icicle_x64_emulator.cpp diff --git a/src/icicle-emulator/icicle_x64_emulator.hpp b/src/backends/icicle-emulator/icicle_x64_emulator.hpp similarity index 100% rename from src/icicle-emulator/icicle_x64_emulator.hpp rename to src/backends/icicle-emulator/icicle_x64_emulator.hpp diff --git a/src/unicorn-emulator/CMakeLists.txt b/src/backends/unicorn-emulator/CMakeLists.txt similarity index 100% rename from src/unicorn-emulator/CMakeLists.txt rename to src/backends/unicorn-emulator/CMakeLists.txt diff --git a/src/unicorn-emulator/function_wrapper.hpp b/src/backends/unicorn-emulator/function_wrapper.hpp similarity index 100% rename from src/unicorn-emulator/function_wrapper.hpp rename to src/backends/unicorn-emulator/function_wrapper.hpp diff --git a/src/unicorn-emulator/unicorn.hpp b/src/backends/unicorn-emulator/unicorn.hpp similarity index 100% rename from src/unicorn-emulator/unicorn.hpp rename to src/backends/unicorn-emulator/unicorn.hpp diff --git a/src/unicorn-emulator/unicorn_hook.hpp b/src/backends/unicorn-emulator/unicorn_hook.hpp similarity index 100% rename from src/unicorn-emulator/unicorn_hook.hpp rename to src/backends/unicorn-emulator/unicorn_hook.hpp diff --git a/src/unicorn-emulator/unicorn_memory_regions.hpp b/src/backends/unicorn-emulator/unicorn_memory_regions.hpp similarity index 100% rename from src/unicorn-emulator/unicorn_memory_regions.hpp rename to src/backends/unicorn-emulator/unicorn_memory_regions.hpp diff --git a/src/unicorn-emulator/unicorn_x64_emulator.cpp b/src/backends/unicorn-emulator/unicorn_x64_emulator.cpp similarity index 100% rename from src/unicorn-emulator/unicorn_x64_emulator.cpp rename to src/backends/unicorn-emulator/unicorn_x64_emulator.cpp diff --git a/src/unicorn-emulator/unicorn_x64_emulator.hpp b/src/backends/unicorn-emulator/unicorn_x64_emulator.hpp similarity index 100% rename from src/unicorn-emulator/unicorn_x64_emulator.hpp rename to src/backends/unicorn-emulator/unicorn_x64_emulator.hpp