diff --git a/include/memory.h b/include/memory.h index c1ed896..72a69d0 100644 --- a/include/memory.h +++ b/include/memory.h @@ -14,6 +14,7 @@ public: uint8_t read_uint8(uint32_t addr); int8_t read_int8(uint32_t addr); uint32_t read_uint32(uint32_t addr); + int32_t read_int32(uint32_t addr); void write_uint8(uint32_t addr, uint8_t data); void write_uint32(uint32_t addr, uint32_t data); size_t get_memsize(); diff --git a/memory.cpp b/memory.cpp index 3bc3403..f014056 100644 --- a/memory.cpp +++ b/memory.cpp @@ -24,6 +24,15 @@ uint32_t Memory::read_uint32(uint32_t addr){ return data; } +int32_t Memory::read_int32(uint32_t addr){ + int32_t data = 0x00; + for (int i = 0;i < 4;i++) { + data = data << 8; + data += this->memory[addr + i]; + } + return data; +} + void Memory::write_uint8(uint32_t addr, uint8_t data){ this->memory[addr] = data; }