资源简介
python+tkinter实现Tomasulo算法的可视化模拟。

代码片段和文件信息
import sysos
import time
import tkinter as tk
from tkinter import ttk
import threading
# 指令类
# name为指令名称,opr1~opr3为操作数
class instruction:
def __init__(selfnameopr1=‘None‘opr2=‘None‘opr3=‘None‘):
self.name=name
self.opr1=opr1
self.opr2=opr2
self.opr3=opr3
self.started=False
self.executed=False
self.written=False
# 指令状态类
# number指令序号,op该指令操作类型,start_time流出时钟,execute_time执行时钟,started是否流出,executed是否进入执行阶段,written是否写会
class ins_condition:
def __init__(selfnumberopexecute_timestart_time=0):
self.number=number
self.op=op
self.start_time=start_time
self.execute_time=execute_time
self.started=False
self.executed=False
self.ex_Rb_number=‘None‘
self.written=False
# 保留站类
# Op指示该保留站可执行何种类型的操作,cur_Op指示当前该保留站正在执行的操作类型,QjQk将产生操作数的保留站号,VjVk操作数的值,
# Busy为yes表示该保留站“忙”,A仅load和store指令有该项,表示立即数或计算后的地址,number为该保留站序号
class reservation_station:
def __init__(selfOpnumbercur_Op=‘None‘Qj=‘None‘Qk=‘None‘Vj=‘None‘Vk=‘None‘Busy=FalseA=‘None‘):
self.Op=Op
self.cur_Op=cur_Op
self.number=number
self.Qj=Qj
self.Qk=Qk
self.Vj=Vj
self.Vk=Vk
self.Busy=Busy
self.A=A
self.started_time=‘None‘
self.result=‘None‘
def finis(self):
self.Busy=False
self.cur_Op=‘None‘
self.Qj=‘None‘
self.Qk=‘None‘
self.Vj=‘None‘
self.Vk=‘None‘
self.A=‘None‘
self.started_time=‘None‘
self.result=‘None‘
class register:
def __init__(selfnameval=0):
self.name=name
self.val=val
#检查对应操作是否有保留站可用,可用则返回相应保留站号,否则返回-1
def available_reservation_station(op):
if op==‘L.D‘:
for i in range(13):
if not Reservation_station_state[i].Busy:
return i
elif op==‘ADD.D‘ or op==‘SUB.D‘:
for i in range(36):
if not Reservation_station_state[i].Busy:
return i
elif op==‘DIV.D‘ or op==‘MUL.D‘:
for i in range(68):
if not Reservation_station_state[i].Busy:
return i
else:
return -1
#用到的寄存器对应的编号
Regs={‘F0‘:0‘F2‘:2‘F4‘:4‘F6‘:6‘F8‘:8‘F10‘:10‘R2‘:11‘R3‘:12}
#不同指令对应的延迟时间
Delay_time={‘L.D‘:2‘ADD.D‘:3‘SUB.D‘:3‘DIV.D‘:41‘MUL.D‘:11}
try:
ins=open(‘instructions.txt‘)
except baseException:
print(‘未打开相应指令文本文件!‘)
os._exit(0)
ins=ins.readlines()
# 总指令数量
instruction_quantity=len(ins)
#指令表
instructions=[]
for x in ins:
x=x.replace(‘\t‘‘‘)
x=x.replace(‘ ‘‘‘)
i=0
while not(x[i-1]==‘.‘and x[i]==‘D‘):
i+=1
i+=1
op=str(x[1:i])
j=i+1
while x[j]!=‘‘:
j+=1
op1=str(x[i:j])
j+=1
if x[j]<=‘9‘ and x[j]>=‘0‘:
#load指令
#op3存立即数
i=j
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 175241 2019-05-20 17:48 data\Readme.docx
文件 109 2019-05-16 19:32 data\instructions.txt
文件 17418 2019-05-20 17:57 data\tomasulo_simulation.py
目录 0 2019-05-20 17:49 data\
- 上一篇:TF-ID算法实现Python源码
- 下一篇:python pmw模块
相关资源
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
评论
共有 条评论