Exemple #1
0
   def openImage(self, fn):
      """
      Open the tileset image and cut into tiles.

      fn - the path to the tileset image.
      """

      #get the image, and make sure it's pixel dimensions are consistent
      #tilesets have 1 spacing between each tile,
      #so adding 1 should give a multiple of the tilesize+1
      tilesetImage = data.getImage(fn)
      tilesetImage.set_colorkey(self.transparency)
      
      data.check(((tilesetImage.get_width()+1)%(self.tileSize[0]+1))==0, fn)
      data.check(((tilesetImage.get_height()+1)%(self.tileSize[1]+1))==0, fn)
      dimensions = ((tilesetImage.get_width()+1)/(self.tileSize[0]+1),
                    (tilesetImage.get_height()+1)/(self.tileSize[1]+1))

      #iterate over each tile, cutting it out and adding to our list
      #go across each row in turn to get index numbering correct
      self.tiles = []
      for y in range(0, dimensions[1]):
         for x in range(0, dimensions[0]):
            tile = tilesetImage.subsurface((x*(self.tileSize[0]+1), y*(self.tileSize[1]+1), self.tileSize[0], self.tileSize[1]))
            self.tiles.append(tile)

      #calculate offset
      self.tileOffset = ((globs.TILESIZE[0]-self.tileSize[0])/2,
                         globs.TILESIZE[1]-self.tileSize[1])
Exemple #2
0
    def openImage(self, fn):
        """
      Open the tileset image and cut into tiles.

      fn - the path to the tileset image.
      """

        #get the image, and make sure it's pixel dimensions are consistent
        #tilesets have 1 spacing between each tile,
        #so adding 1 should give a multiple of the tilesize+1
        tilesetImage = data.getImage(fn)
        tilesetImage.set_colorkey(self.transparency)

        data.check(
            ((tilesetImage.get_width() + 1) % (self.tileSize[0] + 1)) == 0, fn)
        data.check(
            ((tilesetImage.get_height() + 1) % (self.tileSize[1] + 1)) == 0,
            fn)
        dimensions = ((tilesetImage.get_width() + 1) / (self.tileSize[0] + 1),
                      (tilesetImage.get_height() + 1) / (self.tileSize[1] + 1))

        #iterate over each tile, cutting it out and adding to our list
        #go across each row in turn to get index numbering correct
        self.tiles = []
        for y in range(0, dimensions[1]):
            for x in range(0, dimensions[0]):
                tile = tilesetImage.subsurface(
                    (x * (self.tileSize[0] + 1), y * (self.tileSize[1] + 1),
                     self.tileSize[0], self.tileSize[1]))
                self.tiles.append(tile)

        #calculate offset
        self.tileOffset = ((globs.TILESIZE[0] - self.tileSize[0]) / 2,
                           globs.TILESIZE[1] - self.tileSize[1])
def login():
    user_id = request.args.get("uname",None)
    password = request.args.get("pass",None)
    if request.method == 'POST':
        #check login, send to private page if successful
        if data.check(user_id, password):
            session['username'] = request.args.get("uname",None)
            return redirect("/user1")
        else:
            flash("Invalid Username or Password!")
    else:
        if 'username' in session and data.check(user_id,password):
            return redirect("/user1")
    return render_template("login.html")
def checkPro():    
    print "获取当前平台的工程数量:\n",lib.getProjectCount()
    p_Num=lib.getProjectCount()
#SQL从数据库获取工程名列表_list 
    get_data=data.check()
    _list=get_data.getProName()
#比较接口获取工程数量同数据库工程数量
    if int(p_Num) == int(len(_list)):
        print('获取当前平台的总工程数量测试结果:Pass')
    else:
        print('获取当前平台的总工程数量测试结果:Fail')
        raise Exception,("Project num not match!")
    
    pN="s"*128
    p=[]
    flag=1
    for i in range(p_Num):      #查询所有工程名称
        lib.getProjectName(i,pN,len(pN))
        p.append(pN.split(a)[0])    #过去输出字符串中的a(空格)
        #将接口获取的工程名同数据库取出的工程列表_list进行匹配,flag=1为无匹配项
        for i in _list:
#             print i
            if pN.strip(a)==i:
                flag=0
            else:
                pass
        if flag==1:
            print pN.strip(a)
            break
    if flag==0:
        print('工程名称获取测试结果:Pass')
    else:
        print('工程名称获取测试结果:Fail')
        raise Exception,("Project not match!")
    time.sleep(5)
Exemple #5
0
    def testName_testCaseInfo(self):
        testCaseClassName  = testCaseName = classN = "t"*1024
        sqlInfo = data.check()
        testCaseClassName=sqlInfo.getTestCaseClassName(configList[4])       #从数据库获取测试用例类名称
        classCount = lib.getTestCaseClassCount()                            #从接口获取测试用例类总数

        
        for i in range(classCount):
            flag = 1
            lib.getTestCaseClassName(i, classN, len(classN))                #"根据索引,获取分类下的测试用例类名称"
            for sqlCaseClassName in testCaseClassName:
                i = sqlCaseClassName
#                 print "class=",i                           
                if classN.strip(a) == i.decode('utf-8').encode('GB18030'):  #从数据库获得的类名进行编码从unicode转成str                       #从接口获取的用例分类名与数据库内获得的用例分类名进行查找
                    flag = 0
                    sqlCaseName = sqlInfo.getTestCaseName(configList[4],i)  #从数据库获取测试用例名称
#                     print sqlCaseName 
                    caseCount = lib.getTestCaseCount(i.decode('utf-8').encode('GB18030')) #获取测试用例分类下测试用例数量
                    for c in range(caseCount):                              #调用接口遍历测试用例名称
                        caseFlag = 1
                        lib.getTestCaseName(i.decode('utf-8').encode('GB18030'),c,testCaseName,1024)  #根据索引c获取测试用例名称
                        for n in sqlCaseName:
                            if testCaseName.strip(a)==n:                    #数据库获得的用例名称和函数内获得的用例名称进行比较,找到匹配则caseFlag=0
                                caseFlag=0
                        if caseFlag == 1:                                   #数据库和函数获得的数据不匹配直接退出遍历
                            break

            if flag == 1:
                break
        assert flag == 0,"获取测试用例分类失败!"
        print "获取测试用例分类成功!" 
        assert caseFlag == 0,"获取测试用例名称失败!"
        print "获取测试用例名称成功!"                                           #获取用例失败时进行断言                                              #获取用例名称时进行断言
Exemple #6
0
def checkPro():    
    print "获取当前平台的工程数量:\n",lib.getProjectCount()
    p_Num=lib.getProjectCount()
    get_data=data.check()
    _list=get_data.getProName()
    print(_list)
    for i in _list:
        print i.encode('GB18030')

    if int(p_Num) == int(len(_list)):
        print('获取当前平台的总工程数量测试结果:Pass')
    else:
        print('获取当前平台的总工程数量测试结果:Fail')
    
    
    pN="s"*128
    p=[]
    flag=1
    for i in range(p_Num):      #查询所有工程名称
        lib.getProjectName(i,pN,len(pN))
        p.append(pN.split(a)[0])    #过去输出字符串中的a(空格)
        #将接口获取的工程名同数据库取出的工程列表_list进行匹配,flag=1为无匹配项
        for i in _list:
            if pN.strip(a)==i:
                flag=0
            else:
                pass
        if flag==1:
            print pN.strip(a)
            break
    if flag==0:
        print('工程名称获取测试结果:Pass')
    else:
        print('工程名称获取测试结果:Fail')
    time.sleep(5)
Exemple #7
0
def writeComment(usr, n, comment, parent, cid):
    """Writes a comment, adding it to the comment.txt file"""
    comment = data.check(comment)
    f = open('comments.txt', 'a')
    dts = data.timenow()
    f.write(usr + '@%' + n + '@%' + comment + '@%' + dts + '@%' + parent + '@%' + cid + '\n')
    f.close()
    print data.header
    print "<h1>Comment has been posted</h1>"
    print "<form action='pageform2.py' method='GET'>" + userdata
    print "<input type='hidden' name='n' value=" + n + "><input type='submit' name='display' value='Click to go back' class='linkbutton'></form>"
    print data.footer
Exemple #8
0
def newpage(name, newpost, usr):
    """Creates a new page in the pages.txt file"""
    name = data.check(name)
    newpost = data.check(newpost)
    f = open('posts.txt')
    s = f.read()
    f.close()
    lst = s.split('\n')
    lst = lst[:len(lst)-1]
    if len(lst) == 0:
        pagename = '1'
    else:
        newl = lst[len(lst)-1].split('@%')
        pagename = str(int(newl[1]) + 1)
    dts = data.timenow()
    f = open('posts.txt', 'a')
    f.write(name + '@%' + pagename + '@%' + usr + '@%' + newpost + "@%" + dts + '\n')
    f.close()
    print data.header
    print "Your page has been created. Click <form class='inform' action='pageform2.py' method='GET'><input type='hidden' name='n' value=" + pagename + ">" + userdata
    print "<input type='submit' class='linkbutton' name='display' value='Here'></form> to visit the page."
    print data.footer
Exemple #9
0
def writeComment(usr, n, comment, parent, cid):
    """Writes a comment, adding it to the comment.txt file"""
    comment = data.check(comment)
    f = open('comments.txt', 'a')
    dts = data.timenow()
    f.write(usr + '@%' + n + '@%' + comment + '@%' + dts + '@%' + parent +
            '@%' + cid + '\n')
    f.close()
    print data.header
    print "<h1>Comment has been posted</h1>"
    print "<form action='pageform2.py' method='GET'>" + userdata
    print "<input type='hidden' name='n' value=" + n + "><input type='submit' name='display' value='Click to go back' class='linkbutton'></form>"
    print data.footer
Exemple #10
0
def newpage(name, newpost, usr):
    """Creates a new page in the pages.txt file"""
    name = data.check(name)
    newpost = data.check(newpost)
    f = open('posts.txt')
    s = f.read()
    f.close()
    lst = s.split('\n')
    lst = lst[:len(lst) - 1]
    if len(lst) == 0:
        pagename = '1'
    else:
        newl = lst[len(lst) - 1].split('@%')
        pagename = str(int(newl[1]) + 1)
    dts = data.timenow()
    f = open('posts.txt', 'a')
    f.write(name + '@%' + pagename + '@%' + usr + '@%' + newpost + "@%" + dts +
            '\n')
    f.close()
    print data.header
    print "Your page has been created. Click <form class='inform' action='pageform2.py' method='GET'><input type='hidden' name='n' value=" + pagename + ">" + userdata
    print "<input type='submit' class='linkbutton' name='display' value='Here'></form> to visit the page."
    print data.footer
Exemple #11
0
def login():
    if 'user' in session:
        return private1()
    if request.method == 'GET':
        return render_template("login.html")
    else:
        user_id = request.form["uname"]
        password = request.form["pw"]
        #check login, send to private page if successful
        if data.check(user_id, password):
            session['user'] = user_id
            return private1()
        else:
            flash("Invalid Username or Password!")
            return redirect("/login")
Exemple #12
0
def submit(wrd, usr):
    print data.header
    txt = open('words.txt').read()
    open('words.txt').close()
    fle = open('words.txt', 'a')
    if wrd in txt:
        print """<font color="red"><h2><center>We're sorry, but that word has already been used. Try another one.</center></h2></font>"""
    elif not wordCheck(wrd, data.subsplit('words.txt', '@%')):
        print """<font color="red"><h2><center>We're sorry, but that word begins with a different letter than the last word ends with or is not a legal word. Try another one.</center></h2></font>"""
    else:
        fle.write(
            data.numbercheck(data.check(wrd)) + '@%' + usr + '@%' +
            data.timenow() + '\n')
        print """<font color="green"><h2><center>Thank you for your submission!</center></h2></font>"""
    print "<form action='game.py' method='GET'>" + userdata + "<input type='submit' class='linkbutton' value='Go Back' name='return'></form>"
    print data.footer
    fle.close()
 def test2OutputSignalInfo(self):
     exceptOutputSignal = []
     sqlInfo = data.check()
     signalInfo = sqlInfo.getSignalInfo(configList[4])         #从数据库中获取信号信息
     dom = xmlManage.lxmlReaderModify(signalInfo)
     signalName = dom.getTabNodeValue("//Routing/@name")    #获取数据库中的SignalName
     for signal in signalName: 
         recvFlag = dom.getTabNodeValue("//Routing[@name='%s']/@recvFlag"%signal)
         sendFlag = dom.getTabNodeValue("//Routing[@name='%s']/@sendFlag"%signal)
         if len(recvFlag[0]) == 0 or recvFlag[0] == sendFlag[0]:                        #如果recvFlag为空或者输入信号等于输出信号则为输出信号
             exceptOutputSignal.append(signal)
     print exceptOutputSignal
     exceptOutputSignalNum = len(exceptOutputSignal)         #从数据库得到的输出信号的数量       
     acutalOutputSignalNum = lib.getOutputSignalCount()      #从接口获取输出信号数量
     case1.isNotEqual(exceptOutputSignalNum,acutalOutputSignalNum,'','')
         
     if exceptOutputSignalNum == acutalOutputSignalNum:
         for i in range (acutalOutputSignalNum):
             outputSignalName = "getoutputSignalName"
             lib.getOutputSignalName(i,outputSignalName,len(outputSignalName))   #实际的输出信号名称
             acutalOutputSignalName = outputSignalName.strip('\x00')
             for j in range (exceptOutputSignalNum):
                 print "acutalOutputSignalName",acutalOutputSignalName
                 if acutalOutputSignalName == exceptOutputSignal[j]:
                     print "exceptOutputSignal",exceptOutputSignal[j]
                     packId = dom.getTabNodeValue("//Routing[@name='%s']/@packID"%exceptOutputSignal[j])    #在信号信息中根据信号名称获取到PackID
                     exceptParamName = dom.getTabNodeValue("//Struct[@ID='%s']/Param/@name"%packId[0])           #在Struct信息中根据ID信息获取到参数名称
                     exceptParamNameNum = len(exceptParamName)      #数据库中存储的信号的参数个数
                     actualParamNameNum = lib.getSignalParamCount(acutalOutputSignalName)   #接口获取的信号的参数个数
                     case1.isNotEqual(exceptParamNameNum,actualParamNameNum,'','')    #判断信号的参数个数是否相等
                     if  exceptParamNameNum == actualParamNameNum:
                         actualParaName = []   
                         for k in range(actualParamNameNum):
                             signalParamName = "getSignalParamName"
                             lib.getSignalParamName(acutalOutputSignalName,k,signalParamName,19)
                             actualParaName.append(signalParamName.strip('\x00'))     #获取接口信号参数的名称
                         case1.isNotEqual(exceptParamName,actualParaName,'','')
                     print exceptParamName,actualParaName
                     break
                 elif j == (len(exceptOutputSignal)-1) and acutalOutputSignalName != exceptOutputSignal[j]:    #循环至列表结尾且输出信号名称的实际值与期望值不一致则失败
                     case1.isNotEqual(exceptOutputSignal[j],acutalOutputSignalName,'','')            
Exemple #14
0
def fileTest():
    print "加载工程:\n",lib.loadProject('cl_test1')
    dir = "/"
    count=lib.getFileCount(dir)
    print "获取对应目录上的文件个数:\n",count
    get_data=data.check()
    SqlList=get_data.getFileResources('cl_test1')
    if count == len(SqlList):
        pass
    else:
        print "Wrong"
        exit()
    fileName = "fileName"*12
    flag=1
    for i in range(count):
        lib.getFileName(dir,i,fileName,len(fileName))
        print "根据目录与文件索引,返回文件名称:\n",fileName
        for c in SqlList:
            if fileName.strip(a).strip('/') == c:
                flag=0
            else:
                pass
        if flag==1:
            print fileName+"**********"
            break
    time.sleep(5)
    fileContent = "fileContent"*300
    print lib.getFileContent(fileName,fileContent,len(fileContent))
    print "修改之前根据文件名,返回文件内容:\n",fileContent
    
    setFileContent = '''<?xml version="1.0"?>
<Layout>
    <Config mdiarea="0"/>
</Layout>'''
    print "根据文件名,设置文件内容",lib.setFileContent(fileName,setFileContent)
    
    fileContent = "fileContent"*300
    lib.getFileContent(fileName,fileContent,len(fileContent))
    print "修改之后根据文件名,返回文件内容:\n",fileContent
    def testName_fileResource(self):
        dir = "/"
        count=lib.getFileCount(dir)
        print "获取对应目录上的文件个数:\n",count
        get_data=data.check()
        SqlList=get_data.getFileResources(configList[4])
        if count == len(SqlList):
            pass
        else:
            print "get File Count Wrong"
            exit()
        fileName = "fileName"*12
        flag=1
        for i in range(count):
            assert lib.getFileName(dir,i,fileName,len(fileName)) == 0,'获得资源文件名称失败'
            print "根据目录与文件索引,返回文件名称:\n",fileName
            for c in SqlList:
                if fileName.strip(a).strip('/') == c:
                    flag=0
                else:
                    pass
            if flag==1:
#                 print fileName+"**********"
                break
        time.sleep(5)
        fileContent = fileContent2 = "fileContent"*300
        assert lib.getFileContent(fileName,fileContent,len(fileContent)) == 0,'获得文件内容失败'
        print "修改之前根据文件名,返回文件内容:\n",fileContent
        
        setFileContent = '''<?xml version="1.0"?>
    <Layout>
        <Config mdiarea="0"/>
    </Layout>'''
        print "根据文件名,设置文件内容"
        assert lib.setFileContent(fileName,setFileContent) == 0,'设置文件内容失败'
#         fileContent = "fileContent"*300
        lib.getFileContent(fileName,fileContent2,len(fileContent))
        print "修改之后根据文件名,返回文件内容:\n",fileContent2
Exemple #16
0
 def build_tm_sim(self, file):
     lines = read_file(file)
     i = 0
     while i < len(lines):
         line = lines[i]
         if line[0] == 'bloco' and (len(line) == 3 or len(line) == 4):
             name = line[1]
             init_state = line[2]
             self.blocks[name] = Block(init_state)
             i += 1
             line = lines[i]
             while line[0] != 'fim':
                 if check(line):
                     self.blocks[name].add_state(line)
                 else:
                     self.finalize = True
                     break
                 i += 1
                 line = lines[i]
         else:
             print('Arquivo não está no formato correto.')
             self.finalize = True
         i += 1
Exemple #17
0
def execute():#执行一个clock周期中每一阶段的语句
    global ret_pc
    global jmp_pc
    global call_pc
    global pred_pc
    global w_icode
    global w_valE
    global w_valM
    global w_dstE
    global w_dstM
    global m_icode
    global m_valE
    global m_valM
    global m_dstE
    global m_dstM
    global e_icode
    global e_bch
    global e_valE
    global e_valM
    global e_dstE
    global e_dstM
    global d_icode
    global d_ifunc
    global d_valC
    global d_valA
    global d_valB
    global d_dstE
    global d_dstM
    global d_srcA
    global d_srcB
    global f_icode
    global f_ifunc
    global f_ra
    global f_rb
    global f_valC
    global f_valP
    global total_cycle
    global valid_cycle
    while(data.isend()==False):#如果程序的结束状态为假,继续执行
        #data.show()
        #global clocknum
        #clocknum+=1
        #print("CLOCK_NO:%d" %(clocknum))
        #PipeClock.PipeClock();
        ret_pc=""
        jmp_pc=""
        call_pc=""
        pred_pc=""
    
        valid_cycle=data.intread("valid_cycle")
        total_cycle=data.intread("total_cycle")
        total_cycle+=1
        #print("CLOCK-------------------------------")
#WriteBack---------------------------------
        #print("writeback:")
        w_icode=data.read("W_icode")#从外部寄存器读入信号
        w_valE=data.read("W_valE")
        w_valM=data.read("W_valM")
        w_dstE=data.read("W_dstE")
        w_dstM=data.read("W_dstM")
    
        if(w_icode=="0"):#nop
            nothing()
        elif(w_icode=="1"):#halt  如果halt阶段执行完writeback阶段,程序就结束了,并且强行清空之前的4个阶段
            data.write("M_index","X")
            data.write("M_icode","0")
            data.write("E_index","X")
            data.write("E_icode","0")
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("pc","X")
            data.write("F_icode","0")
            data.setend()
        elif(w_icode=="2"):#rrmovl
            data.RegWrite(w_dstE,w_valE)
        elif(w_icode=="3"):#irmovl
            data.RegWrite(w_dstE,w_valE)
        elif(w_icode=="4"):#rmmovl
            nothing()
        elif(w_icode=="5"):#mrmovl
            data.RegWrite(w_dstE,w_valM)
        elif(w_icode=="6"):#op
            data.RegWrite(w_dstE,w_valE)
        elif(w_icode=="7"):#jmp
            nothing()
        elif(w_icode=="8"):#call
            data.RegWrite("4",w_valE)
        elif(w_icode=="9"):#ret
            data.RegWrite("4",w_valE)
        elif(w_icode=="a"):#push
            data.RegWrite("4",w_valE)
        elif(w_icode=="b"):#popl
            data.RegWrite("4",w_valE)
            data.RegWrite(w_dstE,w_valM)
        elif(w_icode=="c"):#iaddl
            data.RegWrite(w_dstE,w_valE)
        elif(w_icode=="d"):#leave
            data.RegWrite("4",w_valE)
            data.RegWrite("5",w_valM)

        if(w_icode=="0"):
            nothing()
        else:
            valid_cycle+=1
#Memory--------------------------------------
        #print("Memory:")
    
        m_icode=""
        m_valE=""
        m_valM=""
        m_dstE=""
        m_dstM=""

        m_icode=data.read("M_icode")#从外部读入信号
        m_valE=data.read("M_valE")
        m_valM=data.read("M_valM")
        m_dstE=data.read("M_dstE")
        m_dstM=data.read("M_dstM")
    
        if(m_icode=="0"):#nop
            m_valE=""
            m_valM=""
            m_dstE=""
            m_dstM=""
        elif(m_icode=="1"):#halt 一旦halt出现就要强行结束之前的3个阶段
            data.write("E_index","X")
            data.write("E_icode","0")
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("pc","X")
            data.write("F_icode","0")
        elif(m_icode=="2"):#rrmovl
            nothing()
        elif(m_icode=="3"):#irmovl
            nothing()
        elif(m_icode=="4"):#rmmovl
            data.MemoryWrite(m_dstM,m_valM)
        elif(m_icode=="5"):#mrmovl
            m_valM=data.MemoryRead(m_dstM)
        elif(m_icode=="6"):#op
            nothing()
        elif(m_icode=="7"):#jmp
            nothing()
        elif(m_icode=="8"):#call
            data.MemoryWrite(m_valE,m_valM)
        elif(m_icode=="9"):#ret ret阶段也要清空之前的所有阶段,直到下一步的指令明确
            m_valM=data.MemoryRead(m_dstM)
            ret_pc=arc(m_valM)# 从内存中读取出来的pc,用于更新pred_pc
            data.write("E_index","X")
            data.write("E_icode","0")
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("pc","X")
            data.write("F_icode","0")
        elif(m_icode=="a"):#push
            data.MemoryWrite(m_valE,m_valM)
        elif(m_icode=="b"):#pop
            m_valM=data.MemoryRead(m_dstM)
        elif(m_icode=="c"):#iaddl
            nothing()
        elif(m_icode=="d"):#leave
            m_valM=data.MemoryRead(m_dstM)
    
        data.write("W_index",data.read("M_index"))
    
        data.write("W_icode",m_icode)#将信号写入下一阶段
        data.write("W_valE",m_valE)
        data.write("W_valM",m_valM)
        data.write("W_dstE",m_dstE)
        data.write("W_dstM",m_dstM)
#Execute----------------------------------------------
        #print("Execute:")

        e_icode=""
        e_bch=""
        e_valE=""
        e_valM=""
        e_dstE=""
        e_dstM=""

        e_icode=data.read("E_icode")#从外部读入信号
        e_ifunc=data.read("E_ifunc")
        e_valC=data.read("E_valC")
        e_valA=data.read("E_valA")
        e_valB=data.read("E_valB")
        e_dstE=data.read("E_dstE")
        e_dstM=data.read("E_dstM")
        srcA=data.read("srcA")
        srcB=data.read("srcB")

        if(e_icode=="0"):#nop
            nothing()
            e_bch=""
            e_valE=""
            e_valM=""
            e_dstE=""
            e_dstM=""
        elif(e_icode=="1"):#halt 清空之前所有阶段
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("pc","X")
            data.write("F_icode","0")
        elif(e_icode=="2"):#rrmovl
            e_valE=e_valA
        elif(e_icode=="3"):#irmovl
            e_valE=e_valC
        elif(e_icode=="4"):#rmmovl
            aluA=e_valB
            aluB=e_valC
            e_dstM=data.alu("0",aluA,aluB)
            e_valM=e_valA
        elif(e_icode=="5"):#mrmovl
            aluA=e_valB
            aluB=e_valC
            e_dstM=data.alu("0",aluA,aluB)
            e_dstE=srcA
        elif(e_icode=="6"):#op
            aluA=e_valA
            aluB=e_valB
            e_valE=data.alu(e_ifunc,aluA,aluB)
            e_dstE=srcB
        elif(e_icode=="7"):#jmp
            if(data.check(e_ifunc)):#根据CF,SF,OF,ZF判断是否跳转
                data.write("D_index","X")
                data.write("D_icode","0")
                data.write("pc","X")
                data.write("F_icode","0")
                jmp_pc=arc(e_valC)#如果要改变当前流程的话,记录对应的pc值
                e_bch=jmp_pc
        elif(e_icode=="8"):#call
            e_valM=e_valB#将返回地址存入栈中
            aluA=e_valA
            aluB="04000000"
            e_valE=data.alu("1",aluB,aluA)
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("pc","X")
            data.write("F_icode","0")
            call_pc=arc(e_valC)        
            e_bch=call_pc    
        elif(e_icode=="9"):#ret
            aluA=e_valA
            aluB="04000000"
            e_valE=data.alu("0",aluA,aluB)
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("pc","X")
            data.write("F_icode","0")
            e_dstM=e_valA
        elif(e_icode=="a"):#push
            aluA=e_valB
            aluB="04000000"
            e_valE=data.alu("1",aluB,aluA)
            e_valM=e_valA
        elif(e_icode=="b"):#popl
            aluA=e_valB
            aluB="04000000"
            e_valE=data.alu("0",aluA,aluB)
            e_dstM=e_valB
            e_dstE=srcA
        elif(e_icode=="c"):#iaddl
            aluA=e_valA
            aluB=e_valC
            e_valE=data.alu("0",aluA,aluB)
            e_dstE=srcA
        elif(e_icode=="d"):#leave
            aluA=e_valA
            aluB="04000000"
            e_valE=data.alu("0",aluB,aluA)
            e_dstM=e_valA
            e_dstE="4"
        data.write("M_index",data.read("E_index"))

        data.write("M_icode",e_icode)#把信号写入到下一阶段
        data.write("bch",e_bch)
        data.write("M_valE",e_valE)
        data.write("M_valM",e_valM)
        data.write("M_dstE",e_dstE)
        data.write("M_dstM",e_dstM)
#Decode----------------------------------
        #print("Decode:")

        d_icode=""
        d_ifunc=""
        d_valC=""
        d_valA=""
        d_valB=""
        d_dstE=""
        d_dstM=""
        d_srcA=""
        d_srcB=""
    
        d_icode=data.read("D_icode")#从外部读入信号
        d_ifunc=data.read("D_ifunc")
        ra=data.read("rA")
        rb=data.read("rB")
        d_valC=data.read("D_valC")
        d_valP=data.read("D_valP")

        if(d_icode=="0"):#nop
            nothing()
            d_ifunc=""
            d_valC=""
            d_valA=""
            d_valB=""
            d_dstE=""
            d_dstM=""
            d_srcA=""
            d_srcB=""
        elif(d_icode=="1"):#halt
            nothing()
        elif(d_icode=="2"):#rrmovl
            Temp=forwarding(ra)#判断是否存在加载使用冒险
            if(Temp=="X"):
                data.setstall()#存在就暂停
            else:
                d_valA=Temp#否则取得forwarding的值
            d_dstE=rb
            d_srcA=ra
            d_srcB=rb
        elif(d_icode=="3"):#irmovl
            d_valA=d_valC
            d_dstE=rb
        elif(d_icode=="4"):#rmmovl-------------------------------------------------------------
            Temp=forwarding(ra)#判断要读取的寄存器a是否存在冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            Temp=forwarding(rb)#判断要读取的寄存器b是否存在冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valB=Temp
            d_srcA=ra
            d_srcB=rb
        elif(d_icode=="5"):#mrmovl-------------------------------------------------------
            Temp=forwarding(rb)#判断寄存器b是否存在冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valB=Temp
            d_dstE=ra
            d_srcA=ra
            d_srcB=rb
        elif(d_icode=="6"):#op------------------------------------------------------------------------
            Temp=forwarding(ra)#判断寄存器a是否存在冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            Temp=forwarding(rb)#判断寄存器b是否存在冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valB=Temp
            d_srcA=ra
            d_srcB=rb
            d_dstE=rb
        elif(d_icode=="7"):#jmp----------------------
            nothing()
        elif(d_icode=="8"):#call---------------------
            Temp=forwarding("4")#特别要注意的是call隐式调用了esp,需要判断是否冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            d_valB=d_valP
            d_srcA="4"
            d_dstE="4"
        elif(d_icode=="9"):#ret--------------------------------------
            Temp=forwarding("4")#ret 调用了esp,需要判断冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            d_dstE="4"
            d_srcA="4"
        elif(d_icode=="a"):#push-------------------------------------
            Temp=forwarding(ra)#push 同时调用了esp ebp需要同时判断冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            Temp=forwarding("4")
            if(Temp=="X"):
                data.setstall()
            else:
                d_valB=Temp
            d_srcA=ra
            d_srcB="4"
            d_dstE="4"
        elif(d_icode=="b"):#popl---------------------------------------------------------------
            Temp=forwarding("4")#pop 调用了esp,需要判断冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valB=Temp
            d_dstE=ra
            d_srcA=ra
            d_srcB="4"
        elif(d_icode=="c"):#iaddl-------------------------------------------------------------
            Temp=forwarding(ra)#判断iaddl的寄存器冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            d_valB=d_valC
            d_dstE=ra
            d_srcA=ra
        elif(d_icode=="d"):#leave------------------------------------------------------------
            Temp=forwarding("5")#leave要读取ebp,需要判断冒险
            if(Temp=="X"):
                data.setstall()
            else:
                d_valA=Temp
            d_dstE="4"
            d_dstM="5"
            d_srcA="5"

        if(data.isstall()):#如果说cycle中的decode和fetch处于暂停状态的话,在下一个Execute阶段需要插入一个bubble
            data.write("E_icode","0")
            data.write("E_index","X")
        else:#其他情况下,正常复制信号到外部寄存器
            data.write("E_index",data.read("D_index"))
    
            data.write("E_icode",d_icode)
            data.write("E_ifunc",d_ifunc)
            data.write("E_valC",d_valC)
            data.write("E_valA",d_valA)
            data.write("E_valB",d_valB)
            data.write("E_dstE",d_dstE)
            data.write("E_dstM",d_dstM)
            data.write("srcA",d_srcA)
            data.write("srcB",d_srcB)
#Fetch---------------------------------------------
        #print("Fetch:")
    
        f_icode=""
        f_ifunc=""
        f_ra=""
        f_rb=""
        f_valC=""
        f_valP=""
    
        f_icode=data.read("F_icode")#从外部寄存器读入信号
        pc=data.read("pc")    
    
        if(pc=="X"):#如果Fetch阶段因为stall不能取指,那么Fetch阶段本次不执行,但是需要将stall的一回合锁定取消,以保证下次能取指
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("F_icode","1")
            f_ifunc=""
            f_ra=""
            f_rb=""
            f_valC=""
            f_valP=""
            data.write("D_ifunc",f_ifunc)
            data.write("rA",f_ra)
            data.write("rB",f_rb)
            data.write("D_valC",f_valC)
            data.write("D_valP",f_valP)
        elif(f_icode=="0"):#如果Fetch阶段是因为ret和jXX被清零,那么同样恢复合法状态,保证下次能取指
            data.write("D_index","X")
            data.write("D_icode","0")
            data.write("F_icode","1")
            f_ifunc=""
            f_ra=""
            f_rb=""
            f_valC=""
            f_valP=""
            data.write("D_ifunc",f_ifunc)
            data.write("rA",f_ra)
            data.write("rB",f_rb)
            data.write("D_valC",f_valC)
            data.write("D_valP",f_valP)
        else:#如果就是合法,那么就根据内容正常取指
            pred_pc=data.next(pc)
            s=data.MemoryGet(pc)
                    
            if(s[0]=="0"):#nop
                nothing()
            if(s[0]=="1"):#halt
                nothing()
            if(s[0]=="2"):#rrmovl
                f_ra=s[2]
                f_rb=s[3]
            if(s[0]=="3"):#irmovl
                f_rb=s[3]
                f_valC=s[4:12]
            if(s[0]=="4"):#rmmovl
                f_ra=s[2]
                f_rb=s[3]
                f_valC=s[4:12]
            if(s[0]=="5"):#mrmovl
                f_ra=s[2]
                f_rb=s[3]
                f_valC=s[4:12]
            if(s[0]=="6"):#op
                f_ra=s[2]
                f_rb=s[3]
            if(s[0]=="7"):#jmp
                f_valC=s[2:10]
            if(s[0]=="8"):#call
                f_valC=s[2:10]
                f_ra="4"
            if(s[0]=="9"):#ret
                f_ra="4"
                nothing()
            if(s[0]=="a"):#push
                f_ra=s[2] 
                f_rb="4"
            if(s[0]=="b"):#pop
                f_ra=s[2]
                f_rb="4"
            if(s[0]=="c"):#iaddl
                f_ra=s[3]
                f_valC=s[4:12]
            if(s[0]=="d"):#leave
                f_ra="5"

        
            f_icode=s[0]
            f_ifunc=s[1]
            
            if(data.isstall()):
                nothing()
            else:#不暂停的合法状态下,将信号写入下一个Decode阶段
                data.write("D_index",pc)
                data.write("D_icode",f_icode)
                data.write("D_ifunc",f_ifunc)
                data.write("rA",f_ra)
                data.write("rB",f_rb)
                data.write("D_valC",f_valC)
                if(pred_pc[0]!="X"):
                    data.write("D_valP",arc(pred_pc))
                else:
                    data.write("D_valP","X")
#PC------------------------------------
        data.intwrite("total_cycle",total_cycle)#将总周期数写入外部
        data.intwrite("valid_cycle",valid_cycle)#将实际执行的周期数写入外部
        #print("PC:")
        if(data.isstall()):
            data.start()
            return 0

        if(ret_pc!=""):#判断下一个pc应该取什么值
            data.write("pc",ret_pc)#有ret先取ret_pc
        elif(call_pc!=""):
            data.write("pc",call_pc)#有call,取call_pc
        elif(jmp_pc!=""):
            data.write("pc",jmp_pc)#有jXX,取jmp_pc
        elif(pred_pc!=""):
            data.write("pc",pred_pc)#都没有的情况下取得下一个pc
        return 0
Exemple #18
0
def execute():
    global ret_pc
    global jmp_pc
    global call_pc
    global pred_pc
    global w_icode
    global w_valE
    global w_valM
    global w_dstE
    global w_dstM
    global m_icode
    global m_valE
    global m_valM
    global m_dstE
    global m_dstM
    global e_icode
    global e_bch
    global e_valE
    global e_valM
    global e_dstE
    global e_dstM
    global d_icode
    global d_ifunc
    global d_valC
    global d_valA
    global d_valB
    global d_dstE
    global d_dstM
    global d_srcA
    global d_srcB
    global f_icode
    global f_ifunc
    global f_ra
    global f_rb
    global f_valC
    global f_valP
    while data.isend() == False:
        data.show()
        global clocknum
        clocknum += 1
        print("CLOCK_NO:%d" % (clocknum))
        PipeClock.PipeClock()
        ret_pc = ""
        jmp_pc = ""
        call_pc = ""
        pred_pc = ""

        # print("CLOCK-------------------------------")
        # WriteBack---------------------------------
        # print("writeback:")
        w_icode = data.read("W_icode")
        w_valE = data.read("W_valE")
        w_valM = data.read("W_valM")
        w_dstE = data.read("W_dstE")
        w_dstM = data.read("W_dstM")

        if w_icode == "0":  # nop
            nothing()
        elif w_icode == "1":  # halt
            data.write("M_index", "X")
            data.write("M_icode", "0")
            data.write("E_index", "X")
            data.write("E_icode", "0")
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
            data.setend()
        elif w_icode == "2":  # rrmovl
            data.RegWrite(w_dstE, w_valE)
        elif w_icode == "3":  # irmovl
            data.RegWrite(w_dstE, w_valE)
        elif w_icode == "4":  # rmmovl
            nothing()
        elif w_icode == "5":  # mrmovl
            data.RegWrite(w_dstE, w_valM)
        elif w_icode == "6":  # op
            data.RegWrite(w_dstE, w_valE)
        elif w_icode == "7":  # jmp
            nothing()
        elif w_icode == "8":  # call
            data.RegWrite("4", w_valE)
        elif w_icode == "9":  # ret
            data.RegWrite("4", w_valE)
        elif w_icode == "a":  # push
            data.RegWrite("4", w_valE)
        elif w_icode == "b":  # popl
            data.RegWrite("4", w_valE)
            data.RegWrite(w_dstE, w_valM)
        # Memory--------------------------------------
        # print("Memory:")

        m_icode = ""
        m_valE = ""
        m_valM = ""
        m_dstE = ""
        m_dstM = ""

        m_icode = data.read("M_icode")
        m_valE = data.read("M_valE")
        m_valM = data.read("M_valM")
        m_dstE = data.read("M_dstE")
        m_dstM = data.read("M_dstM")

        if m_icode == "0":  # nop
            nothing()
            m_valE = ""
            m_valM = ""
            m_dstE = ""
            m_dstM = ""
        elif m_icode == "1":  # halt
            data.write("E_index", "X")
            data.write("E_icode", "0")
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
        elif m_icode == "2":  # rrmovl
            nothing()
        elif m_icode == "3":  # irmovl
            nothing()
        elif m_icode == "4":  # rmmovl
            data.MemoryWrite(m_dstM, m_valM)
        elif m_icode == "5":  # mrmovl
            m_valM = data.MemoryRead(m_dstM)
        elif m_icode == "6":  # op
            nothing()
        elif m_icode == "7":  # jmp
            nothing()
        elif m_icode == "8":  # call
            data.MemoryWrite(m_valE, m_valM)
        elif m_icode == "9":  # ret
            m_valM = data.MemoryRead(m_dstM)
            ret_pc = arc(m_valM)
            data.write("E_index", "X")
            data.write("E_icode", "0")
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
        elif m_icode == "a":  # push
            data.MemoryWrite(m_valE, m_valM)
        elif m_icode == "b":  # pop
            m_valM = data.MemoryRead(m_dstM)

        data.write("W_index", data.read("M_index"))

        data.write("W_icode", m_icode)
        data.write("W_valE", m_valE)
        data.write("W_valM", m_valM)
        data.write("W_dstE", m_dstE)
        data.write("W_dstM", m_dstM)
        # Execute----------------------------------------------
        # print("Execute:")

        e_icode = ""
        e_bch = ""
        e_valE = ""
        e_valM = ""
        e_dstE = ""
        e_dstM = ""

        e_icode = data.read("E_icode")
        e_ifunc = data.read("E_ifunc")
        e_valC = data.read("E_valC")
        e_valA = data.read("E_valA")
        e_valB = data.read("E_valB")
        e_dstE = data.read("E_dstE")
        e_dstM = data.read("E_dstM")
        srcA = data.read("srcA")
        srcB = data.read("srcB")

        if e_icode == "0":  # nop
            nothing()
            e_bch = ""
            e_valE = ""
            e_valM = ""
            e_dstE = ""
            e_dstM = ""
        elif e_icode == "1":  # halt
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
        elif e_icode == "2":  # rrmovl
            e_valE = e_valA
        elif e_icode == "3":  # irmovl
            e_valE = e_valC
        elif e_icode == "4":  # rmmovl
            aluA = e_valB
            aluB = e_valC
            e_dstM = data.alu("0", aluA, aluB)
            e_valM = e_valA
        elif e_icode == "5":  # mrmovl
            aluA = e_valB
            aluB = e_valC
            e_dstM = data.alu("0", aluA, aluB)
            e_dstE = srcA
        elif e_icode == "6":  # op
            aluA = e_valA
            aluB = e_valB
            e_valE = data.alu(e_ifunc, aluA, aluB)
            e_dstE = srcB
        elif e_icode == "7":  # jmp
            if data.check(e_ifunc):
                data.write("D_index", "X")
                data.write("D_icode", "0")
                data.write("pc", "X")
                data.write("F_icode", "0")
                jmp_pc = arc(e_valC)
                e_bch = jmp_pc
        elif e_icode == "8":  # call
            e_valM = e_valB
            aluA = e_valA
            aluB = "04000000"
            e_valE = data.alu("1", aluB, aluA)
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
            call_pc = arc(e_valC)
            e_bch = call_pc
        elif e_icode == "9":  # ret
            aluA = e_valA
            aluB = "04000000"
            e_valE = data.alu("0", aluA, aluB)
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
            e_dstM = e_valA
        elif e_icode == "a":  # push
            aluA = e_valB
            aluB = "04000000"
            e_valE = data.alu("1", aluB, aluA)
            e_valM = e_valA
        elif e_icode == "b":  # popl
            aluA = e_valB
            aluB = "04000000"
            e_valE = data.alu("0", aluA, aluB)
            e_dstM = e_valB
            e_dstE = srcA

        data.write("M_index", data.read("E_index"))

        data.write("M_icode", e_icode)
        data.write("bch", e_bch)
        data.write("M_valE", e_valE)
        data.write("M_valM", e_valM)
        data.write("M_dstE", e_dstE)
        data.write("M_dstM", e_dstM)
        # Decode----------------------------------
        # print("Decode:")

        d_icode = ""
        d_ifunc = ""
        d_valC = ""
        d_valA = ""
        d_valB = ""
        d_dstE = ""
        d_dstM = ""
        d_srcA = ""
        d_srcB = ""

        d_icode = data.read("D_icode")
        d_ifunc = data.read("D_ifunc")
        ra = data.read("rA")
        rb = data.read("rB")
        d_valC = data.read("D_valC")
        d_valP = data.read("D_valP")

        if d_icode == "0":  # nop
            nothing()
            d_ifunc = ""
            d_valC = ""
            d_valA = ""
            d_valB = ""
            d_dstE = ""
            d_dstM = ""
            d_srcA = ""
            d_srcB = ""
        elif d_icode == "1":  # halt
            nothing()
        elif d_icode == "2":  # rrmovl
            Temp = forwarding(ra)
            if Temp == "X":
                data.setstall()
            else:
                d_valA = Temp
            d_dstE = rb
            d_srcA = ra
            d_srcB = rb
        elif d_icode == "3":  # irmovl
            d_valA = d_valC
            d_dstE = rb
        elif d_icode == "4":  # rmmovl-------------------------------------------------------------
            Temp = forwarding(ra)
            if Temp == "X":
                data.setstall()
            else:
                d_valA = Temp
            Temp = forwarding(rb)
            if Temp == "X":
                data.setstall()
            else:
                d_valB = Temp
            d_srcA = ra
            d_srcB = rb
        elif d_icode == "5":  # mrmovl-------------------------------------------------------
            Temp = forwarding(rb)
            if Temp == "X":
                data.setstall()
            else:
                d_valB = Temp
            d_dstE = ra
            d_srcA = ra
            d_srcB = rb
        elif d_icode == "6":  # op------------------------------------------------------------------------
            Temp = forwarding(ra)
            if Temp == "X":
                data.setstall()
            else:
                d_valA = Temp
            Temp = forwarding(rb)
            if Temp == "X":
                data.setstall()
            else:
                d_valB = Temp
            d_srcA = ra
            d_srcB = rb
            d_dstE = rb
        elif d_icode == "7":  # jmp----------------------
            nothing()
        elif d_icode == "8":  # call---------------------
            Temp = forwarding("4")
            if Temp == "X":
                data.setstall()
            else:
                d_valA = Temp
            d_valB = d_valP
            d_srcA = "4"
            d_dstE = "4"
        elif d_icode == "9":  # ret--------------------------------------
            Temp = forwarding("4")
            if Temp == "X":
                data.setstall()
            else:
                d_valA = Temp
            d_dstE = "4"
            d_srcA = "4"
        elif d_icode == "a":  # push-------------------------------------
            Temp = forwarding(ra)
            if Temp == "X":
                data.setstall()
            else:
                d_valA = Temp
            Temp = forwarding("4")
            if Temp == "X":
                data.setstall()
            else:
                d_valB = Temp
            d_srcA = ra
            d_srcB = "4"
            d_dstE = "4"
        elif d_icode == "b":  # popl---------------------------------------------------------------
            Temp = forwarding("4")
            if Temp == "4":
                data.setstall()
            else:
                d_valB = Temp
            d_dstE = ra
            d_srcA = ra
            d_srcB = "4"

        if data.isstall():
            data.write("E_icode", "0")
            data.write("E_index", "X")
        else:
            data.write("E_index", data.read("D_index"))

            data.write("E_icode", d_icode)
            data.write("E_ifunc", d_ifunc)
            data.write("E_valC", d_valC)
            data.write("E_valA", d_valA)
            data.write("E_valB", d_valB)
            data.write("E_dstE", d_dstE)
            data.write("E_dstM", d_dstM)
            data.write("srcA", d_srcA)
            data.write("srcB", d_srcB)
        # Fetch---------------------------------------------
        # print("Fetch:")

        f_icode = ""
        f_ifunc = ""
        f_ra = ""
        f_rb = ""
        f_valC = ""
        f_valP = ""

        f_icode = data.read("F_icode")
        pc = data.read("pc")

        if pc == "X":
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("F_icode", "1")
            f_ifunc = ""
            f_ra = ""
            f_rb = ""
            f_valC = ""
            f_valP = ""
            data.write("D_ifunc", f_ifunc)
            data.write("rA", f_ra)
            data.write("rB", f_rb)
            data.write("D_valC", f_valC)
            data.write("D_valP", f_valP)
        elif f_icode == "0":
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("F_icode", "1")
            f_ifunc = ""
            f_ra = ""
            f_rb = ""
            f_valC = ""
            f_valP = ""
            data.write("D_ifunc", f_ifunc)
            data.write("rA", f_ra)
            data.write("rB", f_rb)
            data.write("D_valC", f_valC)
            data.write("D_valP", f_valP)
        elif data.isstall():
            nothing()
        else:
            pred_pc = data.next(pc)
            s = data.MemoryGet(pc)

            if s[0] == "0":  # nop
                nothing()
            if s[0] == "1":  # halt
                nothing()
            if s[0] == "2":  # rrmovl
                f_ra = s[2]
                f_rb = s[3]
            if s[0] == "3":  # irmovl
                f_rb = s[3]
                f_valC = s[4:12]
            if s[0] == "4":  # rmmovl
                f_ra = s[2]
                f_rb = s[3]
                f_valC = s[4:12]
            if s[0] == "5":  # mrmovl
                f_ra = s[2]
                f_rb = s[3]
                f_valC = s[4:12]
            if s[0] == "6":  # op
                f_ra = s[2]
                f_rb = s[3]
            if s[0] == "7":  # jmp
                f_valC = s[2:10]
            if s[0] == "8":  # call
                f_valC = s[2:10]
                f_ra = "4"
            if s[0] == "9":  # ret
                f_ra = "4"
                nothing()
            if s[0] == "a":  # push
                f_ra = s[2]
                f_rb = "4"
            if s[0] == "b":  # pop
                f_ra = s[2]
                f_rb = "4"

            f_icode = s[0]
            f_ifunc = s[1]

            if data.isstall():
                nothing()
            else:
                data.write("D_index", pc)
                data.write("D_icode", f_icode)
                data.write("D_ifunc", f_ifunc)
                data.write("rA", f_ra)
                data.write("rB", f_rb)
                data.write("D_valC", f_valC)
                if pred_pc[0] != "X":
                    data.write("D_valP", arc(pred_pc))
                else:
                    data.write("D_valP", "X")
        # PC------------------------------------
        # print("PC:")
        if data.isstall():
            data.start()
            return 0

        if ret_pc != "":
            data.write("pc", ret_pc)
        elif call_pc != "":
            data.write("pc", call_pc)
        elif jmp_pc != "":
            data.write("pc", jmp_pc)
        elif pred_pc != "":
            data.write("pc", pred_pc)
        return 0
Exemple #19
0
    """Adds to the names.txt file the new info after checking if confirm is the same as password"""
    if confirm != password:
        return "<h1>Passwords not the same!</h1><a href='register.html'>Please try again</a>"
    else:
        d = data.namedict()
        if usr in d:
            return"<h1>Username Taken.</h1><a href='index.html'>Click to go Back</a>"
        else:
            f = open('names.txt', 'a')
            f.write(usr + '@%' + password + '@%1\n')
            f.close()
            return "<h1>Registration Complete.</h1><form method='GET' action='trivia.py'>" + userdata + "<input class='linkbutton' type='submit' name='submit' value='Click to Advance Further'></form>"

d = cgi.FieldStorage()
print '<html><head><title>Nerdit</title><link rel="stylesheet" type="text/css" href="nerdit.css"></head><body>'
if 'usr' in d.keys() and 'password' in d.keys():
    usr = data.check(d['usr'].value)
    password = d['password'].value
    password = hashlib.md5(password).hexdigest()
    if 'confirm' in d.keys():
        confirm = d['confirm'].value
        confirm = hashlib.md5(confirm).hexdigest()
    userdata = "<input type='hidden' name='usr' value='" + usr + "'><input type='hidden' name='password' value=" + password + ">"
    if 'login' in d.keys():
        print check(usr, password)
    elif 'register' in d.keys():
        print register(usr, password, confirm)
else:
    print "<h1>Username and Password Incorrect.</h1><a href='index.html'>Click to go Back</a>"
print '</body></html>'
Exemple #20
0
   def __init__(self, size, fn=None):
      """
      Initialize a surface and draw the box onto it.

      size - the size of the box.
      fn - the path to a box xml config file.
      """

      #initialize the pygame Surface
      pygame.Surface.__init__(self, size)

      #if no filename given, use the game default box
      if fn == None:
         fn = os.path.join(settings.path, "data", globs.DIALOG)

      #parse the box xml file
      root = data.getTreeRoot(fn)
      tilesetPath = os.path.join(settings.path, "data", data.getAttr(root, "file", data.D_STRING))
      tileset = data.getImage(tilesetPath)
      transparency = data.getAttr(root, "transparency", data.D_INT3LIST)
      tileset.set_colorkey(transparency)
      tileSize = data.getAttr(root, "tilesize", data.D_INT2LIST)
      data.check((tileSize[0]+1)*3==tileset.get_width()+1, tilesetPath)
      data.check((tileSize[1]+1)*3==tileset.get_height()+1, tilesetPath)

      #fill transparent
      self.fill((255,0,255))
      self.set_colorkey((255,0,255))

      #cut each of the nine tiles out from the tileset
      tileNW = tileset.subsurface((0,0), tileSize)
      tileN = tileset.subsurface((tileSize[0]+1,0), tileSize)
      tileNE = tileset.subsurface(((tileSize[0]+1)*2,0), tileSize)
      tileW = tileset.subsurface((0,tileSize[1]+1), tileSize)
      tileC = tileset.subsurface((tileSize[0]+1,tileSize[1]+1), tileSize)
      tileE = tileset.subsurface(((tileSize[0]+1)*2,tileSize[1]+1), tileSize)
      tileSW = tileset.subsurface((0,(tileSize[1]+1)*2), tileSize)
      tileS = tileset.subsurface((tileSize[0]+1,(tileSize[1]+1)*2), tileSize)
      tileSE = tileset.subsurface(((tileSize[0]+1)*2,(tileSize[1]+1)*2), tileSize)

      #calculate how much of the box is not covered by edge tiles - all this middle must be covered by the centre tile
      #work out how many tiles it will take to cover that, and where to start drawing from
      middleSize = size[0]-(2*tileSize[0]), size[1]-(2*tileSize[1])
      dimensions = (middleSize[0]/tileSize[0])+1, (middleSize[1]/tileSize[1])+1
      origin = (size[0]-(dimensions[0]*tileSize[0]))/2, (size[1]-(dimensions[1]*tileSize[1]))/2

      #iterate over the required dimensions, drawing in the centre tiles
      #as we go down the first column only, draw in the left and right side tiles on the edge of the box
      #after we finish each column, draw the top and bottom tiles on the edge
      for x in range(0, dimensions[0]):
         for y in range(0, dimensions[1]):
            self.blit(tileC, (origin[0]+(x*tileSize[0]), origin[1]+(y*tileSize[1])))
            if x == 0:
               self.blit(tileW, (0, origin[1]+(y*tileSize[1])))
               self.blit(tileE, (size[0]-tileSize[0], origin[1]+(y*tileSize[1])))
         self.blit(tileN, (origin[0]+(x*tileSize[0]), 0))
         self.blit(tileS, (origin[0]+(x*tileSize[0]), size[1]-tileSize[1]))

      #draw the corner tiles in the corners
      self.blit(tileNW, (0, 0))
      self.blit(tileNE, (size[0]-tileSize[0], 0))
      self.blit(tileSW, (0, size[1]-tileSize[1]))
      self.blit(tileSE, (size[0]-tileSize[0], size[1]-tileSize[1]))
Exemple #21
0
    def testName_testTaskInfo(self):
        testTaskClassName = testTask = testCase = pstartDoubleName = "t"*1024
        sqlInfo = data.check()
        sqlTaskClass = sqlInfo.getTestTaskClassName(configList[4])    #从数据库获取测试任务类名称
        taskClassNum = lib.getTestTaskClassCount()                    #从接口获取测试任务类数量             
        caseBase.isNotEqual(len(sqlTaskClass), taskClassNum, '', '')
            
        if taskClassNum == len(sqlTaskClass):
            for i in range (0,taskClassNum):      
                lib.getTestTaskClassName(i,testTaskClassName,len(testTaskClassName))         #从接口获取测试任务类名称
#                 print sqlTaskClass[i].decode('utf-8').encode('GB18030'),testTaskClassName.strip('\x00')
                sqlTaskClassName = sqlTaskClass[i].decode('utf-8').encode('GB18030')
                print sqlTaskClassName,testTaskClassName.strip('\00')
                caseBase.isNotEqual(sqlTaskClassName, testTaskClassName.strip('\x00'), '', '')     #判断测试任务类名称是否相等
                if sqlTaskClassName != testTaskClassName.strip('\x00'):      
                    assert sqlTaskClassName == testTaskClassName.strip('\x00')                        
                    
                #如果测试任务类名称相等则判断任务类下的测试任务信息    
                else:
                    sqlTaskNameList = sqlInfo.getTestTaskName(configList[4],sqlTaskClassName)     #数据库获取测试任务类下的测试任务名称
                    taskNum = lib.getTestTaskCount(sqlTaskClassName)                #从接口获取测试任务数量
                    if len(sqlTaskNameList) != taskNum:                             #判断任务数量是否相等
                        assert len(sqlTaskNameList) == taskNum
                        
                    else:
                        for j in range(0,taskNum):
                            lib.getTestTaskName(sqlTaskClassName,j,testTask,len(testTask))    #从接口获取特定测试任务类名称下的测试任务名称
                            sqlTaskName = sqlTaskNameList[j].decode('utf-8').encode('GB18030')    #从数据库中获取特定测试任务类名称下的测试任务名称
                            print sqlTaskName
                            if sqlTaskName != testTask.strip('\x00'):     #判断测试任务名称是否相等
                                assert sqlTaskName == testTask.strip('\x00')
                                
                            #如果测试任务名称相同则判断任务下用例信息
                            else:
                                useTestTask = lib.useTestTask(sqlTaskClassName,sqlTaskName)     #设置使用中的测试任务
                                caseBase.isNotEqual(0, useTestTask, '', '')   #判断启用测试任务接口是否启用成功                      
                                testCaseNum = lib.getTestTaskTestCaseCount()      #从接口获取测试用例数量
                                sqlTestCaseInfo = sqlInfo.getTestTaskTestCaseInfo(configList[4],sqlTaskClassName,sqlTaskName)   #从数据库获取用例信息
                                dom = xmlManage.lxmlReaderModify(sqlTestCaseInfo)
                                sqlTestCaseList = dom.getTabNodeValue("//Item/@testCaseName")    #获取数据库中的testCaseName
                                if testCaseNum != len(sqlTestCaseList):
                                    assert testCaseNum == len(sqlTestCaseList)
                                else:
                                    for k in range(0,testCaseNum):
                                        lib.getTestTaskTestCaseName(k,testCase,len(testCase))        #从接口获取测试用例名称
                                        sqlTestCaseName = sqlTestCaseList[k].decode('utf-8').encode('GB18030')    #从数据库中获取测试用例名称 
                                        print sqlTestCaseName
                                        if sqlTestCaseName != testCase.strip('\x00'):
                                            assert sqlTestCaseName == testCase.strip('\x00')
                                            
                                        else:
                                            initValueNum = lib.getTestTaskTestCaseDoubleCount(k)     #从接口获取初始值数量
                                            sqlInitValues = dom.getTabNodeValue("//Item/@initialValues")[k]    #从数据库获取  initialValues属性的值
                                            sqlInitValueList = re.split('[=;]',sqlInitValues)      #从数据库中获取初始值的变量名和对应的值
                                            if initValueNum != len(sqlInitValueList)/2:              #判断初始值数量是否相等
                                                assert initValueNum == len(sqlInitValueList)/2
                                            else:
                                                for l in range(0,initValueNum):
                                                    initValue = c_double()
                                                    pstartValue = pointer(initValue)
                                                    lib.getTestTaskTestCaseDoubleNameValue(k,l,pstartDoubleName,len(pstartDoubleName),pstartValue)      #从接口获取初始值变量名和对应的值
                                                    sqlInitParam = sqlInitValueList[l*2].decode('utf-8').encode('GB18030')   #从数据库中获取初始值的变量名
                                                    sqlInitValue = sqlInitValueList[l*2 + 1].decode('utf-8').encode('GB18030')    #从数据库中获取初始值的变量名对应的值
                                                    print sqlInitParam,sqlInitValue
                                                    if sqlInitParam != pstartDoubleName.strip('\x00') or float(sqlInitValue) != initValue.value:          #判断从接口和数据库中获取的变量名和初始值是否相等
                                                        assert sqlInitParam == pstartDoubleName.strip('\x00') and float(sqlInitValue) == initValue.value                                                    
Exemple #22
0
def execute():
    global ret_pc
    global jmp_pc
    global call_pc
    global pred_pc
    global w_icode
    global w_valE
    global w_valM
    global w_dstE
    global w_dstM
    global m_icode
    global m_valE
    global m_valM
    global m_dstE
    global m_dstM
    global e_icode
    global e_bch
    global e_valE
    global e_valM
    global e_dstE
    global e_dstM
    global d_icode
    global d_ifunc
    global d_valC
    global d_valA
    global d_valB
    global d_dstE
    global d_dstM
    global d_srcA
    global d_srcB
    global f_icode
    global f_ifunc
    global f_ra
    global f_rb
    global f_valC
    global f_valP
    while (data.isend() == False):
        data.show()
        global clocknum
        clocknum += 1
        print("CLOCK_NO:%d" % (clocknum))
        PipeClock.PipeClock()
        ret_pc = ""
        jmp_pc = ""
        call_pc = ""
        pred_pc = ""

        #print("CLOCK-------------------------------")
        #WriteBack---------------------------------
        #print("writeback:")
        w_icode = data.read("W_icode")
        w_valE = data.read("W_valE")
        w_valM = data.read("W_valM")
        w_dstE = data.read("W_dstE")
        w_dstM = data.read("W_dstM")

        if (w_icode == "0"):  #nop
            nothing()
        elif (w_icode == "1"):  #halt
            data.write("M_index", "X")
            data.write("M_icode", "0")
            data.write("E_index", "X")
            data.write("E_icode", "0")
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
            data.setend()
        elif (w_icode == "2"):  #rrmovl
            data.RegWrite(w_dstE, w_valE)
        elif (w_icode == "3"):  #irmovl
            data.RegWrite(w_dstE, w_valE)
        elif (w_icode == "4"):  #rmmovl
            nothing()
        elif (w_icode == "5"):  #mrmovl
            data.RegWrite(w_dstE, w_valM)
        elif (w_icode == "6"):  #op
            data.RegWrite(w_dstE, w_valE)
        elif (w_icode == "7"):  #jmp
            nothing()
        elif (w_icode == "8"):  #call
            data.RegWrite("4", w_valE)
        elif (w_icode == "9"):  #ret
            data.RegWrite("4", w_valE)
        elif (w_icode == "a"):  #push
            data.RegWrite("4", w_valE)
        elif (w_icode == "b"):  #popl
            data.RegWrite("4", w_valE)
            data.RegWrite(w_dstE, w_valM)
#Memory--------------------------------------
#print("Memory:")

        m_icode = ""
        m_valE = ""
        m_valM = ""
        m_dstE = ""
        m_dstM = ""

        m_icode = data.read("M_icode")
        m_valE = data.read("M_valE")
        m_valM = data.read("M_valM")
        m_dstE = data.read("M_dstE")
        m_dstM = data.read("M_dstM")

        if (m_icode == "0"):  #nop
            nothing()
            m_valE = ""
            m_valM = ""
            m_dstE = ""
            m_dstM = ""
        elif (m_icode == "1"):  #halt
            data.write("E_index", "X")
            data.write("E_icode", "0")
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
        elif (m_icode == "2"):  #rrmovl
            nothing()
        elif (m_icode == "3"):  #irmovl
            nothing()
        elif (m_icode == "4"):  #rmmovl
            data.MemoryWrite(m_dstM, m_valM)
        elif (m_icode == "5"):  #mrmovl
            m_valM = data.MemoryRead(m_dstM)
        elif (m_icode == "6"):  #op
            nothing()
        elif (m_icode == "7"):  #jmp
            nothing()
        elif (m_icode == "8"):  #call
            data.MemoryWrite(m_valE, m_valM)
        elif (m_icode == "9"):  #ret
            m_valM = data.MemoryRead(m_dstM)
            ret_pc = arc(m_valM)
            data.write("E_index", "X")
            data.write("E_icode", "0")
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
        elif (m_icode == "a"):  #push
            data.MemoryWrite(m_valE, m_valM)
        elif (m_icode == "b"):  #pop
            m_valM = data.MemoryRead(m_dstM)

        data.write("W_index", data.read("M_index"))

        data.write("W_icode", m_icode)
        data.write("W_valE", m_valE)
        data.write("W_valM", m_valM)
        data.write("W_dstE", m_dstE)
        data.write("W_dstM", m_dstM)
        #Execute----------------------------------------------
        #print("Execute:")

        e_icode = ""
        e_bch = ""
        e_valE = ""
        e_valM = ""
        e_dstE = ""
        e_dstM = ""

        e_icode = data.read("E_icode")
        e_ifunc = data.read("E_ifunc")
        e_valC = data.read("E_valC")
        e_valA = data.read("E_valA")
        e_valB = data.read("E_valB")
        e_dstE = data.read("E_dstE")
        e_dstM = data.read("E_dstM")
        srcA = data.read("srcA")
        srcB = data.read("srcB")

        if (e_icode == "0"):  #nop
            nothing()
            e_bch = ""
            e_valE = ""
            e_valM = ""
            e_dstE = ""
            e_dstM = ""
        elif (e_icode == "1"):  #halt
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
        elif (e_icode == "2"):  #rrmovl
            e_valE = e_valA
        elif (e_icode == "3"):  #irmovl
            e_valE = e_valC
        elif (e_icode == "4"):  #rmmovl
            aluA = e_valB
            aluB = e_valC
            e_dstM = data.alu("0", aluA, aluB)
            e_valM = e_valA
        elif (e_icode == "5"):  #mrmovl
            aluA = e_valB
            aluB = e_valC
            e_dstM = data.alu("0", aluA, aluB)
            e_dstE = srcA
        elif (e_icode == "6"):  #op
            aluA = e_valA
            aluB = e_valB
            e_valE = data.alu(e_ifunc, aluA, aluB)
            e_dstE = srcB
        elif (e_icode == "7"):  #jmp
            if (data.check(e_ifunc)):
                data.write("D_index", "X")
                data.write("D_icode", "0")
                data.write("pc", "X")
                data.write("F_icode", "0")
                jmp_pc = arc(e_valC)
                e_bch = jmp_pc
        elif (e_icode == "8"):  #call
            e_valM = e_valB
            aluA = e_valA
            aluB = "04000000"
            e_valE = data.alu("1", aluB, aluA)
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
            call_pc = arc(e_valC)
            e_bch = call_pc
        elif (e_icode == "9"):  #ret
            aluA = e_valA
            aluB = "04000000"
            e_valE = data.alu("0", aluA, aluB)
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("pc", "X")
            data.write("F_icode", "0")
            e_dstM = e_valA
        elif (e_icode == "a"):  #push
            aluA = e_valB
            aluB = "04000000"
            e_valE = data.alu("1", aluB, aluA)
            e_valM = e_valA
        elif (e_icode == "b"):  #popl
            aluA = e_valB
            aluB = "04000000"
            e_valE = data.alu("0", aluA, aluB)
            e_dstM = e_valB
            e_dstE = srcA

        data.write("M_index", data.read("E_index"))

        data.write("M_icode", e_icode)
        data.write("bch", e_bch)
        data.write("M_valE", e_valE)
        data.write("M_valM", e_valM)
        data.write("M_dstE", e_dstE)
        data.write("M_dstM", e_dstM)
        #Decode----------------------------------
        #print("Decode:")

        d_icode = ""
        d_ifunc = ""
        d_valC = ""
        d_valA = ""
        d_valB = ""
        d_dstE = ""
        d_dstM = ""
        d_srcA = ""
        d_srcB = ""

        d_icode = data.read("D_icode")
        d_ifunc = data.read("D_ifunc")
        ra = data.read("rA")
        rb = data.read("rB")
        d_valC = data.read("D_valC")
        d_valP = data.read("D_valP")

        if (d_icode == "0"):  #nop
            nothing()
            d_ifunc = ""
            d_valC = ""
            d_valA = ""
            d_valB = ""
            d_dstE = ""
            d_dstM = ""
            d_srcA = ""
            d_srcB = ""
        elif (d_icode == "1"):  #halt
            nothing()
        elif (d_icode == "2"):  #rrmovl
            Temp = forwarding(ra)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valA = Temp
            d_dstE = rb
            d_srcA = ra
            d_srcB = rb
        elif (d_icode == "3"):  #irmovl
            d_valA = d_valC
            d_dstE = rb
        elif (
                d_icode == "4"
        ):  #rmmovl-------------------------------------------------------------
            Temp = forwarding(ra)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valA = Temp
            Temp = forwarding(rb)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valB = Temp
            d_srcA = ra
            d_srcB = rb
        elif (
                d_icode == "5"
        ):  #mrmovl-------------------------------------------------------
            Temp = forwarding(rb)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valB = Temp
            d_dstE = ra
            d_srcA = ra
            d_srcB = rb
        elif (
                d_icode == "6"
        ):  #op------------------------------------------------------------------------
            Temp = forwarding(ra)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valA = Temp
            Temp = forwarding(rb)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valB = Temp
            d_srcA = ra
            d_srcB = rb
            d_dstE = rb
        elif (d_icode == "7"):  #jmp----------------------
            nothing()
        elif (d_icode == "8"):  #call---------------------
            Temp = forwarding("4")
            if (Temp == "X"):
                data.setstall()
            else:
                d_valA = Temp
            d_valB = d_valP
            d_srcA = "4"
            d_dstE = "4"
        elif (d_icode == "9"):  #ret--------------------------------------
            Temp = forwarding("4")
            if (Temp == "X"):
                data.setstall()
            else:
                d_valA = Temp
            d_dstE = "4"
            d_srcA = "4"
        elif (d_icode == "a"):  #push-------------------------------------
            Temp = forwarding(ra)
            if (Temp == "X"):
                data.setstall()
            else:
                d_valA = Temp
            Temp = forwarding("4")
            if (Temp == "X"):
                data.setstall()
            else:
                d_valB = Temp
            d_srcA = ra
            d_srcB = "4"
            d_dstE = "4"
        elif (
                d_icode == "b"
        ):  #popl---------------------------------------------------------------
            Temp = forwarding("4")
            if (Temp == "4"):
                data.setstall()
            else:
                d_valB = Temp
            d_dstE = ra
            d_srcA = ra
            d_srcB = "4"

        if (data.isstall()):
            data.write("E_icode", "0")
            data.write("E_index", "X")
        else:
            data.write("E_index", data.read("D_index"))

            data.write("E_icode", d_icode)
            data.write("E_ifunc", d_ifunc)
            data.write("E_valC", d_valC)
            data.write("E_valA", d_valA)
            data.write("E_valB", d_valB)
            data.write("E_dstE", d_dstE)
            data.write("E_dstM", d_dstM)
            data.write("srcA", d_srcA)
            data.write("srcB", d_srcB)
#Fetch---------------------------------------------
#print("Fetch:")

        f_icode = ""
        f_ifunc = ""
        f_ra = ""
        f_rb = ""
        f_valC = ""
        f_valP = ""

        f_icode = data.read("F_icode")
        pc = data.read("pc")

        if (pc == "X"):
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("F_icode", "1")
            f_ifunc = ""
            f_ra = ""
            f_rb = ""
            f_valC = ""
            f_valP = ""
            data.write("D_ifunc", f_ifunc)
            data.write("rA", f_ra)
            data.write("rB", f_rb)
            data.write("D_valC", f_valC)
            data.write("D_valP", f_valP)
        elif (f_icode == "0"):
            data.write("D_index", "X")
            data.write("D_icode", "0")
            data.write("F_icode", "1")
            f_ifunc = ""
            f_ra = ""
            f_rb = ""
            f_valC = ""
            f_valP = ""
            data.write("D_ifunc", f_ifunc)
            data.write("rA", f_ra)
            data.write("rB", f_rb)
            data.write("D_valC", f_valC)
            data.write("D_valP", f_valP)
        elif (data.isstall()):
            nothing()
        else:
            pred_pc = data.next(pc)
            s = data.MemoryGet(pc)

            if (s[0] == "0"):  #nop
                nothing()
            if (s[0] == "1"):  #halt
                nothing()
            if (s[0] == "2"):  #rrmovl
                f_ra = s[2]
                f_rb = s[3]
            if (s[0] == "3"):  #irmovl
                f_rb = s[3]
                f_valC = s[4:12]
            if (s[0] == "4"):  #rmmovl
                f_ra = s[2]
                f_rb = s[3]
                f_valC = s[4:12]
            if (s[0] == "5"):  #mrmovl
                f_ra = s[2]
                f_rb = s[3]
                f_valC = s[4:12]
            if (s[0] == "6"):  #op
                f_ra = s[2]
                f_rb = s[3]
            if (s[0] == "7"):  #jmp
                f_valC = s[2:10]
            if (s[0] == "8"):  #call
                f_valC = s[2:10]
                f_ra = "4"
            if (s[0] == "9"):  #ret
                f_ra = "4"
                nothing()
            if (s[0] == "a"):  #push
                f_ra = s[2]
                f_rb = "4"
            if (s[0] == "b"):  #pop
                f_ra = s[2]
                f_rb = "4"

            f_icode = s[0]
            f_ifunc = s[1]

            if (data.isstall()):
                nothing()
            else:
                data.write("D_index", pc)
                data.write("D_icode", f_icode)
                data.write("D_ifunc", f_ifunc)
                data.write("rA", f_ra)
                data.write("rB", f_rb)
                data.write("D_valC", f_valC)
                if (pred_pc[0] != "X"):
                    data.write("D_valP", arc(pred_pc))
                else:
                    data.write("D_valP", "X")


#PC------------------------------------
#print("PC:")
        if (data.isstall()):
            data.start()
            return 0

        if (ret_pc != ""):
            data.write("pc", ret_pc)
        elif (call_pc != ""):
            data.write("pc", call_pc)
        elif (jmp_pc != ""):
            data.write("pc", jmp_pc)
        elif (pred_pc != ""):
            data.write("pc", pred_pc)
        return 0
import time
import sys


import casebase.getReg as regInfo
import data
import readConfig


a='\x00' #C语言中的空格
configList = readConfig.readIniConfig('QuikLab3.0')
installSpace=regInfo.getRegVal("applicationPath")
workSpace=regInfo.getRegVal("workSpace")
# os.chdir(installSpace)
lib = ctypes.cdll.LoadLibrary(r"QuiKLabAPI.dll")
R=data.check()
sqlProName=R.getProName()    #数据库获取工程名称
class Test(unittest.TestCase):


    def setUp(self):
        lib.initQuiKLabPlatform()


    def tearDown(self):
        lib.releaseQuiKLabPlatform()


    def testName1_proInfo(self):

         
Exemple #24
0
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(Levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename='test.log',
                    filemode='w'
                    )
class Logger(object):
    def __init__(self,fileN='Default.log'):
        self.terminal=sys.stdout
        self.log=open(fileN,'w')
    def write(self,message):
        self.terminal.write(message)
        self.log.write(message)
    def flush(self):
        pass
sys.stdout=Logger('1.txt')
data=data.check()
os.chdir(r"D:\QuiKLab3.0")
lib = ctypes.cdll.LoadLibrary(r"D:\QuiKLab3.0\QuiKLabAPI.dll")
# temp='s'*128
# lib.getAppPath(temp)
# print '-------------------------',temp
# time.sleep(5)
print "初始化QuiKLab平台类:\n",lib.initQuiKLabPlatform()
time.sleep(5)
print("获取下位机数量:\n"),lib.getTargetCount()
print("根据索引获取下位机IP:")
IP="iP"*64
lib.getTargetIP(0,IP,len(IP))
print(IP)
a='\x00' #C语言中的空格
print"根据索引获取下位机状态:\n",lib.getTargetState(0)