Add source code
This commit is contained in:
parent
a31c566784
commit
27268a1253
8 changed files with 238 additions and 0 deletions
66
components/ram.py
Normal file
66
components/ram.py
Normal file
|
@ -0,0 +1,66 @@
|
|||
from components.ijvm import ijvm
|
||||
|
||||
class Ram:
|
||||
|
||||
def __init__(self,components,size):
|
||||
self.data=dict()
|
||||
self.lastAddr=size-1
|
||||
self.c=components
|
||||
|
||||
def loadRamFile(self,filepath):
|
||||
data=dict()
|
||||
addr=0
|
||||
f=open(filepath,"r")
|
||||
for line in f.readlines():
|
||||
line=line.rstrip() # remove \n
|
||||
if line in ijvm:
|
||||
data[addr]=int(ijvm[line])
|
||||
else:
|
||||
data[addr]=int(line,0)
|
||||
addr+=1
|
||||
f.close()
|
||||
self.data=data
|
||||
|
||||
def write(self):
|
||||
addr=self.c["MAR"]
|
||||
if addr>self.lastAddr:
|
||||
raise ValueError("You get out of the ram by trying to set a value at address {}, max address is {}".format(addr,self.lastAddr))
|
||||
self.data[addr]=self.c["MDR"]
|
||||
|
||||
def read(self):
|
||||
addr=self.c["MAR"]
|
||||
value=None
|
||||
try:
|
||||
value=self.data[addr]
|
||||
except:
|
||||
if addr>self.lastAddr:
|
||||
raise ValueError("You get out of the ram by trying to get value at address {}, max address is {}".format(addr,self.lastAddr))
|
||||
if(value==None):
|
||||
return(0)
|
||||
return(value)
|
||||
|
||||
def fetch(self):
|
||||
addr=self.c["PC"]
|
||||
value=None
|
||||
try:
|
||||
value=self.data[addr]
|
||||
except:
|
||||
if addr>self.lastAddr:
|
||||
raise ValueError("You get out of the ram by trying to get value at address {}, max address is {}".format(addr,self.lastAddr))
|
||||
if(value==None):
|
||||
return(0)
|
||||
return(value)
|
||||
|
||||
def dump(self):
|
||||
print("------- RAM --------")
|
||||
for key,value in self.data.items():
|
||||
#print("{}:{}".format(key,bin(value)[2:]))
|
||||
print("{}:{}".format(key,value))
|
||||
print("--------------------")
|
||||
|
||||
def dump(self,start,end):
|
||||
for i in range(start,end+1):
|
||||
try:
|
||||
print("{}:{}".format(i,self.data[i]))
|
||||
except:
|
||||
print("{}:0".format(i))
|
Loading…
Add table
Add a link
Reference in a new issue