/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2020 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #ifndef XENIA_CPU_TEST_MODULE_H_ #define XENIA_CPU_TEST_MODULE_H_ #include #include #include #include "xenia/cpu/backend/assembler.h" #include "xenia/cpu/compiler/compiler.h" #include "xenia/cpu/hir/hir_builder.h" #include "xenia/cpu/module.h" namespace xe { namespace cpu { class TestModule : public Module { public: TestModule(Processor* processor, const std::string_view name, std::function contains_address, std::function generate); ~TestModule() override; const std::string& name() const override { return name_; } bool is_executable() const override { return false; } bool ContainsAddress(uint32_t address) override; Symbol::Status DeclareFunction(uint32_t address, Function** out_symbol) override; protected: std::unique_ptr CreateFunction(uint32_t address) override; private: std::string name_; std::function contains_address_; std::function generate_; std::unique_ptr builder_; std::unique_ptr compiler_; std::unique_ptr assembler_; }; } // namespace cpu } // namespace xe #endif // XENIA_CPU_TEST_MODULE_H_