aboutsummaryrefslogtreecommitdiff
path: root/mem.py
diff options
context:
space:
mode:
Diffstat (limited to 'mem.py')
-rw-r--r--mem.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/mem.py b/mem.py
index 7137ede..c83d69d 100644
--- a/mem.py
+++ b/mem.py
@@ -8,6 +8,7 @@ class Memory:
8 def __init__(self, main_size, virt_size): 8 def __init__(self, main_size, virt_size):
9 self.main = [None] * main_size 9 self.main = [None] * main_size
10 self.virt = [None] * virt_size 10 self.virt = [None] * virt_size
11 self._virt_cursor = 0
11 12
12 def _mem_to_string(self, mem): 13 def _mem_to_string(self, mem):
13 return ''.join(['%d' % n if n is not None else 'x' for n in mem]) 14 return ''.join(['%d' % n if n is not None else 'x' for n in mem])
@@ -18,6 +19,18 @@ class Memory:
18 def dump_virt(self): 19 def dump_virt(self):
19 return self._mem_to_string(self.virt) 20 return self._mem_to_string(self.virt)
20 21
21 def has_page(self, page): 22 def page_in_range(self, page):
22 return 0 <= page < len(self.virt) 23 return 0 <= page < len(self.main + self.virt)
24
25 def put_virt(self, page):
26 self.virt[self._virt_cursor] = page
27 self._virt_cursor += 1
28
29 def remove_virt(self, page):
30 for i in range(len(self.virt)):
31 if self.virt[i] == page:
32 self._virt_cursor -= 1
33 self.virt[i] = self.virt[self._virt_cursor]
34 self.virt[self._virt_cursor] = None
35 break
23 36