Properly read and write registers

This commit is contained in:
momo5502
2025-01-19 10:18:45 +01:00
parent 192d5687ff
commit 77b4ee5e1e
7 changed files with 43 additions and 47 deletions

View File

@@ -12,8 +12,8 @@ struct cpu_interface
virtual void start(uint64_t start, uint64_t end = 0, std::chrono::nanoseconds timeout = {}, size_t count = 0) = 0;
virtual void stop() = 0;
virtual void read_raw_register(int reg, void* value, size_t size) = 0;
virtual void write_raw_register(int reg, const void* value, size_t size) = 0;
virtual size_t read_raw_register(int reg, void* value, size_t size) = 0;
virtual size_t write_raw_register(int reg, const void* value, size_t size) = 0;
virtual std::vector<std::byte> save_registers() = 0;
virtual void restore_registers(const std::vector<std::byte>& register_data) = 0;

View File

@@ -20,14 +20,14 @@ class typed_emulator : public emulator
this->start(this->read_instruction_pointer(), 0, timeout, count);
}
void write_register(registers reg, const void* value, const size_t size)
size_t write_register(registers reg, const void* value, const size_t size)
{
this->write_raw_register(static_cast<int>(reg), value, size);
return this->write_raw_register(static_cast<int>(reg), value, size);
}
void read_register(registers reg, void* value, const size_t size)
size_t read_register(registers reg, void* value, const size_t size)
{
this->read_raw_register(static_cast<int>(reg), value, size);
return this->read_raw_register(static_cast<int>(reg), value, size);
}
template <typename T = pointer_type>
@@ -90,6 +90,6 @@ class typed_emulator : public emulator
private:
emulator_hook* hook_instruction(int instruction_type, instruction_hook_callback callback) override = 0;
void read_raw_register(int reg, void* value, size_t size) override = 0;
void write_raw_register(int reg, const void* value, size_t size) override = 0;
size_t read_raw_register(int reg, void* value, size_t size) override = 0;
size_t write_raw_register(int reg, const void* value, size_t size) override = 0;
};