Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sys import argv
- #============================================================================#
- # FONCTIONS #
- #============================================================================#
- #cache_slots = 8
- tableau = 8
- class txtError(Exception):
- def __init__(self, value):
- self.value = value
- def __str__(self):
- return repr(self.value)
- #----------------------------------------------------------------------------#
- def ouverture_fichier(filename, M, L1Addr, L1Data, L1Dirt, LastUse, compteur = 1):
- """
- Description:
- """
- fichier = open(filename, "r")
- liste = fichier.readlines()
- for i in range(len(liste)):
- ligne = liste[i].strip()
- ligne = ligne.split()
- if ligne[0] == "R":
- compteur=lecture(int(ligne[1]), M, L1Addr, L1Data, L1Dirt, LastUse, compteur)
- elif ligne[0] == "W":
- compteur= ecriture(int(ligne[1]),int(ligne[2]), M, L1Addr, L1Data, L1Dirt, LastUse, compteur)
- print(ligne)
- print(M)
- print(L1Addr)
- print(L1Data)
- fichier.close()
- #----------------------------------------------------------------------------#
- def lecture(i , M, L1Addr, L1Data, L1Dirt, LastUse, compteur):
- """
- Description:
- """
- res = False
- for j in range(len(L1Addr)):
- if L1Addr[j] == i:
- res = L1Data[j]
- if not res:
- v = M[i]
- k = choix_victime(LastUse)
- LastUse[j] = compteur
- if L1Dirt[k]:
- M[L1Addr[k]] = L1Data[k]
- #print("WR"+ str(k)+ "to" + str(v) +"\t miss: vitime"+ + "(LU"+ compteur+")")
- L1Addr[k] = i
- L1Data[k] = v
- L1Dirt[k] = False
- compteur += 1
- return res, compteur
- #----------------------------------------------------------------------------#
- def ecriture(v , i, M, L1Addr, L1Data, L1Dirt, LastUse, compteur):
- """
- Description:
- """
- res = False
- for j in range(len(L1Addr)):
- if L1Addr[j] == i:
- L1Data[j] = v
- L1Dirt[j] = True
- if not res:
- v = M[i]
- k = choix_victime(LastUse)
- LastUse[j] = compteur
- if L1Dirt:
- M[L1Addr[k]] = L1Data[k]
- L1Addr[k] = i
- L1Data[k] = v
- L1Dirt[k] = False
- compteur += 1
- return res, compteur
- #----------------------------------------------------------------------------#
- def choix_victime(LastUse):
- victime = min(LastUse)
- return LastUse.index(victime)
- #----------------------------------------------------------------------------#
- def affichage():
- pass
- #============================================================================#
- # FONCTIONS PRINCIPALE #
- #============================================================================#
- def main():
- """
- Description: le but de cet fonction est de rentrer en ligne de commande
- tous les données nécessaire pour effectuer la simulation de la mémoire
- cache.
- """
- #if (sys.argv[1] == "R"):
- # print("")
- #elif (sys.argv[1] == "W"):
- # print("")
- M=[0 for i in range(32)]
- L1Addr=[0 for i in range(8)]
- L1Data=[0 for i in range(8)]
- L1Dirt=[False for i in range(8)]
- LastUse = [0 for k in range(8)]
- filename = ouverture_fichier("instruction_file.txt", M, L1Addr, L1Data, L1Dirt, LastUse, compteur = 1)
- #============================================================================#
- # TEST #
- #============================================================================#
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement