一種避免寄存器沖突的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機(jī)領(lǐng)域,特別涉及一種避免寄存器沖突的方法及裝置。
【背景技術(shù)】
[0002] 現(xiàn)今計算機(jī)、手機(jī)、平板電腦等電子設(shè)備的使用已經(jīng)非常的普遍,這些電子設(shè)備中 的軟件都是由編程人員編寫的程序組成的。在程序中會使用到變量,變量通常存儲于寄存 器中,以微碼為例,微碼是程序的一種,它是存儲于網(wǎng)絡(luò)處理器中的指令集,駐留于網(wǎng)絡(luò)處 理器的微引擎中,是整個數(shù)據(jù)轉(zhuǎn)發(fā)層面的核心。寄存器是網(wǎng)絡(luò)處理器微引擎中的重要資源, 微碼編程利用寄存器存儲一些臨時變量,根據(jù)轉(zhuǎn)發(fā)邏輯實現(xiàn)各種業(yè)務(wù)。在程序中,每個變量 在寄存器中都有各自的生命周期,即從開始使用該變量到該變量不再使用之間的指令周期 間隔。因程序中的變量會有多個,寄存器的數(shù)量又有限,所以經(jīng)常會將多個變量放置于同一 個寄存器中,如果同一寄存器的兩個變量的生命周期出現(xiàn)重疊,就會出現(xiàn)寄存器沖突的情 況。
[0003] 由于編程人員在編寫程序的過程中,并不知道寄存器的使用情況,所以在定義變 量的時候,經(jīng)常是憑感覺確定寄存器的使用情況,這樣導(dǎo)致的后果就是經(jīng)常會出現(xiàn)寄存器 沖突的情況。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明要解決的主要技術(shù)問題是,提供了一種避免寄存器沖突的方法及裝置,能 夠避免在程序運行的過程中寄存器發(fā)生沖突。
[0005] 為解決上述技術(shù)問題,本發(fā)明提供一種避免寄存器沖突的方法,包括:獲取程序在 寄存器中各變量的生命周期;檢測所述寄存器中各變量的生命周期是否重疊,如是,則進(jìn)行 生敬 I=I 目 〇
[0006] 在本發(fā)明的一種實施例中,獲取程序在寄存器中各變量的生命周期的步驟包括: 利用正則表達(dá)式對程序進(jìn)行解析獲取寄存器中各變量的生命周期。
[0007] 在本發(fā)明的一種實施例中,利用正則表達(dá)式對程序進(jìn)行解析獲取寄存器中各變量 的生命周期的步驟包括:利用正則表達(dá)式對程序變量定義部分進(jìn)行解析,獲取程序的各變 量及其寄存器定義;利用正則表達(dá)式對程序指令行進(jìn)行解析,獲取各個變量的生命周期; 根據(jù)程序的各變量及其寄存器定義、各個變量的生命周期統(tǒng)計各個寄存器中各變量的生命 周期。
[0008] 在本發(fā)明的一種實施例中,所述進(jìn)行告警的步驟包括:通過腳本向用戶提示錯誤 來實現(xiàn)告警。
[0009] 在本發(fā)明的一種實施例中,所述方法還包括:當(dāng)所述寄存器中各變量的生命周期 沒有重疊時,輸出所述程序在寄存器中各變量的生命周期到文本文件中。
[0010] 本發(fā)明還提供了一種避免寄存器沖突的裝置,包括:獲取模塊、檢測模塊及告警模 塊;獲取模塊用于獲取程序在寄存器中各變量的生命周期;檢測模塊用于檢測所述寄存器 中各變量的生命周期是否重疊,如是,則發(fā)送通知給告警模塊;告警模塊用于在收到檢測模 塊發(fā)送的通知后進(jìn)行告警。
[0011] 在本發(fā)明的一種實施例中,獲取模塊還包括解析模塊,解析模塊利用正則表達(dá)式 對程序進(jìn)行解析獲取寄存器中各變量的生命周期。
[0012] 在本發(fā)明的一種實施例中,解析模塊包括第一獲取模塊、第二獲取模塊及統(tǒng)計模 塊;第一獲取模塊利用正則表達(dá)式對程序變量定義部分進(jìn)行解析,獲取程序的各變量及其 寄存器定義;第二獲取模塊利用正則表達(dá)式對程序指令行進(jìn)行解析,獲取各個變量的生命 周期;統(tǒng)計模塊用于根據(jù)程序的各變量及其寄存器定義、各個變量的生命周期統(tǒng)計各個寄 存器中各變量的生命周期。
[0013] 在本發(fā)明的一種實施例中,告警模塊通過腳本向用戶提示錯誤來實現(xiàn)告警。
[0014] 在本發(fā)明的一種實施例中,該裝置還包括文本輸出模塊;當(dāng)寄存器中各變量的生 命周期沒有重疊時,檢測模塊將告知文本輸出模塊,文本輸出模塊用于輸出程序在寄存器 中各變量的生命周期到文本文件中。
[0015] 本發(fā)明的有益效果是:
[0016] 本發(fā)明提供的一種避免寄存器沖突的方法及裝置,能夠避免在程序運行的過程中 寄存器發(fā)生沖突。本發(fā)明的方法具體包括:獲取程序在寄存器中各變量的生命周期;檢測 所述寄存器中各變量的生命周期是否重疊,如是,則進(jìn)行告警;本發(fā)明的方法可以在編程過 程中或編寫好程序的初稿后,獲取寄存器中程序各變量具體的生命周期,當(dāng)發(fā)現(xiàn)寄存器中 有變量重疊時,便對編程人員進(jìn)行告警,使編程人員獲知寄存器存在沖突,從而才能及時地 對程序進(jìn)行修改,使程序在各寄存器中的變量不再重疊,與現(xiàn)有技術(shù)相比,本發(fā)明的方法能 夠有效地避免在程序運行的過程中寄存器發(fā)生沖突的情況,提高編程的效率。
【附圖說明】
[0017] 圖1為本發(fā)明實施例一提供的方法的流程示意圖;
[0018] 圖2為本發(fā)明實施例三提供的方法的流程示意圖;
[0019] 圖3為本發(fā)明實施例三提供的微碼文件的部分內(nèi)容;
[0020] 圖4為本發(fā)明實施例三提供的輸出的變量生命周期的文本文件;
[0021] 圖5為本發(fā)明實施例四提供的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0022] 下面通過【具體實施方式】結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0023] 實施例一:
[0024] 本實施例提供了一種避免寄存器沖突的方法,該方法的流程如圖1所示:
[0025] 步驟S101:開始。
[0026] 步驟S102 :獲取程序在寄存器中各變量的生命周期。
[0027] 因本發(fā)明主要解決的是避免編程人員編寫的程序在運行的過程中出現(xiàn)寄存器沖 突的情況,所以一般在編程人員在編寫程序的過程中、或者在編程人員編寫好程序的初稿 后獲取寄存器中各變量的生命周期。
[0028] 以下用一個具體的例子來說明變量的生命周期的含義。比如程序中定義了一個變 量存儲報文的目的IP地址,取名destlp,存儲于寄存器Rl中,如果在程序中從第m行開始 使用destlp,第η行使用完畢,則其生命周期值為n-m,并且在第η行以后寄存器Rl便釋放 出來,可以定義為其他變量。上述第m行就是生命周期的起始位置,第η行就是生命周期的 終止位置,n-m為變量的生命周期值。因此,變量的生命周期包括起始位置、終止位置和變 量的生命周期值。
[0029] 獲取程序在寄存器中各變量的生命周期的方式有多種,因目前大部分腳本語言都 帶有正則表達(dá)式解析功能,比如python