Skip to content

Commit

Permalink
Merge pull request #25 from icicle-emu/memory-capacity
Browse files Browse the repository at this point in the history
Add support for dynamically updating the memory capacity
  • Loading branch information
mrexodia authored Jan 13, 2025
2 parents 8acc071 + e9c03d5 commit e2d2f46
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
8 changes: 7 additions & 1 deletion python/icicle/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ def exception_value(self) -> int: ...

sp: int

"""
Physical memory capacity in pages (adjust when seeing OutOfMemory)
The default limit is set so that the maximum corresponds to ~400 MB of host memory.
"""
mem_capacity: int

# TODO: API to get memory information?

def mem_map(self, address: int, size: int, protection: MemoryProtection): ...
Expand Down Expand Up @@ -146,7 +152,7 @@ def __init__(self, message: str, code: MemoryExceptionCode):
self.code = code

def __str__(self):
return f"{super().__str__()}: {self.code}"
return f"{super().__str__()} ({self.code})"

def __ghidra_init():
import os
Expand Down
18 changes: 18 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,24 @@ impl Icicle {
self.vm.cpu.write_reg(self.vm.cpu.arch.reg_sp, address)
}

#[getter]
pub fn get_mem_capacity(&self) -> usize {
self.vm.cpu.mem.capacity()
}

#[setter]
pub fn set_mem_capacity(&mut self, capacity: usize) -> PyResult<()> {
if self.vm.cpu.mem.set_capacity(capacity) {
return Ok(());
}
Err(
raise_MemoryException(
format!("Reducing memory capacity is not supported"),
MemError::Unknown,
)
)
}

#[new]
#[pyo3(signature = (
architecture,
Expand Down

0 comments on commit e2d2f46

Please sign in to comment.