2020-11-18 22:03:45 +01:00
|
|
|
import os
|
|
|
|
import struct
|
|
|
|
|
2020-11-18 21:20:04 +01:00
|
|
|
class Memory():
|
2020-11-18 22:03:45 +01:00
|
|
|
def __init__(self, source, size):
|
|
|
|
self.memory = [0] * size
|
|
|
|
cells = int(os.path.getsize(source) / 4)
|
|
|
|
f = open(source, "rb")
|
|
|
|
i = 0
|
|
|
|
for cell in list(struct.unpack(cells * "i", f.read())):
|
|
|
|
self.memory[i] = cell
|
|
|
|
i = i + 1
|
|
|
|
f.close()
|
2020-11-19 00:57:17 +01:00
|
|
|
self.length = size
|
2020-11-18 21:20:04 +01:00
|
|
|
|
2020-11-18 22:03:45 +01:00
|
|
|
def store(self, value, address):
|
|
|
|
self.memory[address] = value
|
2020-11-18 21:20:04 +01:00
|
|
|
|
2020-11-18 22:03:45 +01:00
|
|
|
def fetch(self, address):
|
|
|
|
return self.memory[address]
|
2020-11-19 00:57:17 +01:00
|
|
|
|
|
|
|
def size(self):
|
|
|
|
return self.length
|