|
|
|
@ -69,7 +69,8 @@ class instruction:
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def Load(ins : list , immediate: bool = False) -> None:
|
|
|
|
|
regfile.write(ins[1] , mem.read(ins[2]))
|
|
|
|
|
mem_val : np.int32 = mem.read(ins[2]) + mem.read(ins[2] + 1) << 8 + mem.read(ins[2] + 2) << 16 + mem.read(ins[2] + 3) << 24
|
|
|
|
|
regfile.write(ins[1] , mem_val)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def Loadi(ins : list):#load immediate to register , just for test , style of instruction : Loadi r1 , i100
|
|
|
|
@ -77,7 +78,11 @@ class instruction:
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def Store(ins : list) -> None:
|
|
|
|
|
mem.write(ins[2] , regfile.read(ins[1] , 0)[0])#just use one read port of regfile
|
|
|
|
|
reg_val : np.int32 = regfile.read(ins[1] , 0)[0]#just use one read port of regfile
|
|
|
|
|
mem.write(ins[2] , np.int8(reg_val & 0xff))
|
|
|
|
|
mem.write(ins[2] + 1 , np.int8((reg_val >> 8) & 0xff))
|
|
|
|
|
mem.write(ins[2] + 2 , np.int8((reg_val >> 16) & 0xff))
|
|
|
|
|
mem.write(ins[2] + 3 , np.int8((reg_val >> 24) & 0xff))
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def Add(ins : list) -> None:
|
|
|
|
|