mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-30 08:11:01 +00:00
Implement serialization
This commit is contained in:
@@ -15,7 +15,7 @@ struct cpu_interface
|
|||||||
virtual size_t read_raw_register(int reg, 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 size_t write_raw_register(int reg, const void* value, size_t size) = 0;
|
||||||
|
|
||||||
virtual std::vector<std::byte> save_registers() = 0;
|
virtual std::vector<std::byte> save_registers() const = 0;
|
||||||
virtual void restore_registers(const std::vector<std::byte>& register_data) = 0;
|
virtual void restore_registers(const std::vector<std::byte>& register_data) = 0;
|
||||||
|
|
||||||
// TODO: Remove this
|
// TODO: Remove this
|
||||||
|
|||||||
@@ -285,19 +285,26 @@ namespace icicle
|
|||||||
|
|
||||||
void serialize_state(utils::buffer_serializer& buffer, const bool is_snapshot) const override
|
void serialize_state(utils::buffer_serializer& buffer, const bool is_snapshot) const override
|
||||||
{
|
{
|
||||||
(void)buffer;
|
if (is_snapshot)
|
||||||
(void)is_snapshot;
|
{
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error("Not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer.write_vector(this->save_registers());
|
||||||
}
|
}
|
||||||
|
|
||||||
void deserialize_state(utils::buffer_deserializer& buffer, const bool is_snapshot) override
|
void deserialize_state(utils::buffer_deserializer& buffer, const bool is_snapshot) override
|
||||||
{
|
{
|
||||||
(void)buffer;
|
if (is_snapshot)
|
||||||
(void)is_snapshot;
|
{
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error("Not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto data = buffer.read_vector<std::byte>();
|
||||||
|
this->restore_registers(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::byte> save_registers() override
|
std::vector<std::byte> save_registers() const override
|
||||||
{
|
{
|
||||||
std::vector<std::byte> data{};
|
std::vector<std::byte> data{};
|
||||||
auto* accessor = +[](void* user, const void* data, const size_t length) {
|
auto* accessor = +[](void* user, const void* data, const size_t length) {
|
||||||
|
|||||||
@@ -647,7 +647,7 @@ namespace unicorn
|
|||||||
serializer.deserialize(buffer);
|
serializer.deserialize(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::byte> save_registers() override
|
std::vector<std::byte> save_registers() const override
|
||||||
{
|
{
|
||||||
utils::buffer_serializer buffer{};
|
utils::buffer_serializer buffer{};
|
||||||
const uc_context_serializer serializer(this->uc_, false);
|
const uc_context_serializer serializer(this->uc_, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user