CPU/Memory.py
2024-05-07 16:41:35 +08:00

58 lines
1.3 KiB
Python

from error import *
class Memory:
def __init__(self, size):
self.data = [0] * size
self.size = size
self.name = "内存"
def init(self):
self.data = [0] * self.size
def __getitem__(self, key: int):
if key > self.size:
raise AddressError(key)
return self.data[key]
def write(self, index: int, val: int):
if index > self.size:
raise AddressError(index)
self.data[index] = val
def write_batch(self, start, dt):
if start + len(dt) > self.size:
raise OutOfMemory("内存用尽")
for i in dt:
self.write(start, i)
start += 1
def __len__(self):
return self.size
def __str__(self):
return str(self.data)
def __setitem__(self, k, v):
if isinstance(k, slice):
if not k.start:
start = 0
else:
start = k.start
if not k.stop:
stop = self.size - 1
else:
stop = k.stop
if start > self.size or stop > self.size:
raise AddressError(start)
self.data[start:stop] = v
return
if k > self.size:
raise AddressError(k)
self.data[k] = v
return