mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
25 lines
883 B
C++
25 lines
883 B
C++
#ifndef CODEGEN_IINSTRUCTIONSCANNER_HPP
|
|
#define CODEGEN_IINSTRUCTIONSCANNER_HPP
|
|
|
|
#include <codegen/CodegenTypes.hpp>
|
|
#include <cstdint>
|
|
#include <functional>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
namespace Codegen {
|
|
|
|
class IInstructionScanner {
|
|
public:
|
|
virtual ~IInstructionScanner() = default;
|
|
|
|
[[nodiscard]] virtual std::vector<InstructionMatch> ScanCodeSection(const std::vector<std::uint8_t>& codeSection, Domain::FileByteOffset codeSectionOffset, Domain::FileByteOffset codeSectionSize) const = 0;
|
|
virtual void VisitCodeSection(const std::vector<std::uint8_t>& codeSection, Domain::FileByteOffset codeSectionOffset, Domain::FileByteOffset codeSectionSize, const std::function<void(const InstructionMatch&)>& visit) const = 0;
|
|
};
|
|
|
|
std::unique_ptr<IInstructionScanner> MakeInstructionScanner(std::function<void(std::uint64_t, std::uint64_t)> progress = {});
|
|
|
|
}
|
|
|
|
#endif
|