新四季網

一種應用於高速數字io波形引擎的編譯器的製作方法

2023-05-04 15:10:16 2

專利名稱:一種應用於高速數字io波形引擎的編譯器的製作方法
技術領域:
本發明屬於軟體編譯算法領域,特別涉及一種應用於高速數字IO波形引擎的小型編譯器。
背景技術:
在傳統意義上,儀器廠商為用戶提供控制程序或者驅動程序都以函數和屬性為單位,這些函數和屬性都偏重於實現某一項或幾項特定功能,用戶僅可固定使用廠商提供的控制方式而不能將更底層的功能按照自己的需求任意組合,這樣就對用戶的使用方式做出了限制,無法滿足用戶更高層次的需求。例如,用戶需要使用高速數字IO模塊提供的原有函數實現多個波形帶有多個marker標記,同時滿足多個觸發條件,還要實現N層循環嵌套和條件分支,這幾乎是不可能實現的。本申請人於2011年12月20日提出了一項專利申請「一種用於任意波形產生系統的處理器」(申請號為201110430689. 8),該申請提供了一種精簡指令集的高速數字IO波形引擎,該引擎只採用Generate、Repeat/end Repeat、If/endIf、Wait、Clear這幾條簡單的指令即可覆蓋波形引擎的絕大部分功能需求。在採用上述精簡指令集進行程序代碼編寫完成後,需要對程序代碼進行編譯,從而轉化為二進位目標碼。一般編譯過程分為詞法分析,語法分析,語法制導翻譯,中間碼生成,存儲管理,代碼優化和目標代碼生成過程。而且由於編譯器比較複雜,因此編譯過程通常是在上位機上完成的,編譯完成後將目標碼下載到下位機運行。傳統編譯方法所面臨的問題1、執行這些步驟的過程中,會生成堆棧,鍊表,二叉樹等結構變量,需要大量內存空間來存儲這些變量,這些資源大多需要預先申請,用戶編寫代碼過長過短都會造成空間浪費。2、需要通過上位機完成程序編譯之後才能通過總線發送到下位機執行,是因為上述過程對速度和空間的要求較高,下位機一般無法提供上述步驟所需要的足夠的資源完成編譯過程。3、傳統編譯過程的環節比較多,且是順序執行的關係,下一個步驟的輸入依賴於上一個步驟的輸出,如果上一個步驟的結果不符合語法定義的規則,下一個步驟將不能正常執行,這時候環境將會停止編譯並報錯返回。這樣繁冗的操作是為了整個IDE環境的穩定,但是對於用戶來講相當於增加了諸多的限制,而且越往後面的步驟報錯之後用戶越是無法幹預,甚至迷惑不解。

發明內容
有鑑於此,本發明提供了一種應用於高速數字IO波形引擎的小型編譯器,能夠簡化編譯過程,減小編譯器大小,在編譯過程中使用資源可靈活申請,不會浪費,且該編譯器能夠設置在下位機中,免去了上位機編譯下載過程,減少開銷和調試時間。為了解決上述技術問題,本發明是這樣實現的
一種應用於高速數字IO波形引擎的小型編譯器,該編譯器包括第一模塊、第二模塊和第二模塊;第一模塊,用於關鍵字和變量的識別及分類處理;具體為讀取待編譯程序,進行逐字處理;如果當前讀取到的為關鍵字,則按照預先設定的關鍵字使用規則,先對關鍵字的前後詞句進行檢查,看其是否符合語法定義;如果不符合,則停止編譯並返回相應錯誤碼;如果符合,則將當前關鍵字對應的出現次數變量加1,並且在順序鍊表LO的尾部增加一個結點,將當前關鍵字的代碼添加到尾部結點中;如果當前關鍵字具有參數,則將參數記錄到第一參數數組,並在當前關鍵字的鍊表結點中記錄 參數在第一參數數組中的索引;如果當前讀取到的為特殊符號,包括begin、end、小括號、大括號、雙引號、分號,則將當前特殊符號對應的出現次數變量加1,並且在順序鍊表LO的尾部增加一個結點,將當前特殊符號的代碼添加到尾部結點中;第二模塊,用於語法檢查和代碼優化;具體為所述語法檢查包括檢驗關鍵字和特殊符號對應的出現次數變量的值是否與順序鍊表LO中相應關鍵字和特殊符號出現次數相同;根據順序鍊表LO中具有配對關係的特殊符號的出現次數和位置檢驗配對關係是否正常;如果語法檢查有錯誤,則停止編譯並返回相應錯誤碼;所述代碼優化為將所述第一參數數組中的元素轉化為參數鍊表中的結點,採用參數鍊表結點地址代替順序鍊表LO中的第一參數數組索引;釋放第一參數數組空間;第三模塊,用於實現目標代碼生成;具體為逐個訪問順序鍊表LO中的每個結點,如果當前結點為關鍵字且沒有參數,則直接根據目標碼生成規則生成目標碼,如果當前結點為關鍵字且有參數,則根據結點中記錄的參數鍊表結點地址,從參數鍊表中提取參數,將關鍵字與參數組合後根據目標碼生成規則生成目標碼;如果當前結點為特殊符號,則直接根據目標碼生成規則生成目標碼。優選地,所述第一模塊進一步用於,如果關鍵字跟隨的參數為trigger n,則只將η的值存儲到第二參數數組中;步驟三目標代碼生成時,如果當前結點為關鍵字且參數η從第二參數數組中提取,則為提取的η加上trigger的前綴,然後再生成目標碼。有益效果1、本發明採用鍊表形式記錄關鍵字,並且將變量的記錄形式也轉化為鍊表,這樣可以靈活申請空間,減少編譯過程中的空間利用。編譯過程中會根據變量長度靈活申請空間並及時釋放,生成的堆棧長度隨結構增減,最大化減少編譯過程中空間的申請。2、本發明的編譯器所用資源較少,用戶可將寫好的代碼放入下位機直接進行編譯執行,免去上位機編譯下載過程,減少硬體開銷和調試時間。因此本發明可應用於板載S0C,免去交叉編譯過程。3、本發明將原有的7項過程統編為2個階段,提高編譯效率,降低過程之間依賴性,檢查報錯功能融入到整個過程,可準確定位錯誤。


圖1為本發明流程圖。
圖2為順序鍊表和參數數組的示意圖。
具體實施例方式下面結合附圖並舉實施例,對本發明進行詳細描述。本發明提供了一種高速數字IO波形引擎的小型編譯器,其包括三個模塊,第一模塊、第二模塊和第三模塊分別執行如下步驟一、二、三。圖1是本發明流程圖。步驟一、第一模塊進行關鍵字和變量的識別及分類處理。如圖1所示,用戶代碼作為輸入數據進入編譯器,編譯器會對代碼進行預編譯處理,這一階段主要是檢查語法錯誤,關鍵字識別,簡單的存儲等,為後續過程做準備,如果有錯誤會返回相應的十六位錯誤碼,對照提供的文檔可查出對應的錯誤。具體執行過程如下步驟11、讀取待編譯程序,進行逐字處理;如果當前讀取到的為關鍵字,則執行步驟12 ;如果當前讀取到的為特殊符號,包括begin、end、小括號、大括號、雙引號、分號,則執行步驟13。其中,讀取待編譯程序的方式可以為參數方式和文件方式。文件方式是指用戶已經編輯好的外部文件,使用的時候調用使用文件讀取的函數將文件內容讀入;參數方式是指將編輯好的程序保存在庫文件中,通過在庫文件中打開函數的參數形式引入待編譯程序。讀入過程使用簡單的C語言函數即可實現。為節省整個編譯過程的執行時間,在讀入文件的時候,編譯器會同時進行關鍵字和特殊符號的識別並進行分類處理。關鍵字為高速數字IO波形引擎中精簡指令集中的指令,包括 Generate, Repeat/end Repeat、If/else/end If, Wait, Clear。特殊符號包括begin、end、小括號、大括號、雙引號、分號(作為一條語句的結束符,用法同C語言)。步驟12、按照預先設定的關鍵字使用規則,先對關鍵字的前後詞句進行檢查,看其是否符合語法定義;如果不符合,則停止編譯並返回相應錯誤碼;如果符合,則將當前關鍵字對應的出現次數變量加1,並且在順序鍊表LO的尾部增加一個結點,將當前關鍵字的代碼添加到尾部結點中;如果當前關鍵字具有參數,該參數可以為變量,可以為常量,則將參數的信息記錄到參數數組,並在當前關鍵字的鍊表結點中記錄參數在參數數組中的索引;當然,鍊表結點中還會有下一個節點的指向信息。以下面這段代碼為例,第一個詞為Generate,是關鍵字,檢查該關鍵字後面是否為波形名,如果不是,則返回錯誤代碼例如22,如果是,則將該關鍵字的代碼0411添加在如圖2所示的順序鍊表LO的第一個結點中,並且將Generate對應的次數變量G加1,而且,Generate具有參數wave I,則將該wave I存儲到參數數組的第一個元素中,將該元素的索引記錄到順序鍊表LO的第一個結點。對於Repeat 10,與Generate wavel類似,只是存儲在參數數組中的不是變量名,而是10。對於「end r印eat」和「end if」,會認為其屬於關鍵字,按照沒有參數的關鍵字進行處理。在實際實現中,編譯器在遇到end時會檢查其後續單詞,如果是需要配對的關鍵字,如「end repeat, end if」這兩個單詞,會將「endrepeat」、「end if」作為一個整體關鍵字進行處理,其他end均會按照特殊符號處理。Generate wavel Repea! 10
WavcformB End Repeat Clear Tigge.rO Walt 100 Ifll^erO
Generate waveformC1
Else
Generaic wavefonnD End if本步驟一的過程只提供簡單的語法檢查功能,並不能發現深層次的語法和邏輯錯誤,如檢查括號是否配對等。這個過程相當於把傳統編譯過程的詞法分析,語法分析,語法制導翻譯和存儲管理的部分功能結合為一個過程,簡化中間處理,在處理數據的過程中進代碼檢查,提高編譯效率。步驟二、第二模塊進行語法檢查和代碼優化。第二階段去除了傳統編譯過程的中間代碼生成階段,結合語法檢查和代碼優化直接進行目標代碼生成,如果有錯誤出現則返回相應錯誤碼。具體為所述語法檢查包括檢驗關鍵字和特殊符號對應的出現次數變量的值是否與順序鍊表LO中相應關鍵字和特殊符號出現次數相同;根據順序鍊表LO中具有配對關係的特殊符號的出現次數和位置檢驗配對關係是否正常,包括beginend的配對關係、{}的配對,的配對等;如果語法檢查有錯誤,則停止編譯並返回相應錯誤碼。所述代碼優化為將所述參數數組中的元素轉化為參數鍊表中的結點,採用參數鍊表結點地址代替順序鍊表LO中的參數變量索引,釋放參數數組空間,從而實現壓縮空間存儲。由於編譯前不知道程序中有多少個變量,也不知道變量長度,因此需要預先申請比較大的數組,本發明在第二階段中,將數組轉化為鍊表,並釋放數組空間,從而實現了空間壓縮。步驟三、第三模塊實現目標代碼生成;逐個訪問順序鍊表LO中的每個結點,如果當前結點為關鍵字且沒有參數,則直接根據目標碼生成規則生成目標碼,如果當前結點為關鍵字且有參數,則根據結點中記錄的參數鍊表結點地址,從參數鍊表中提取參數,將關鍵字與參數組合後根據目標碼生成規則生成目標碼;如果當前結點為特殊符號,則直接根據目標碼生成規則生成目標碼。至此,本流程結束。為了進一步節省存儲空間,在步驟12中,如果關鍵字跟隨的變量為trigger n,則只將η的值存儲到第二參數數組中;步驟三目標代碼生成時,如果當前結點為關鍵字且參數η從第二參數數組中提取,則為提取的η加上trigger的前綴,然後再生成目標碼。前面步驟中所述的參數數組與這裡的第二參數數組是兩個數組,通過數組名可以實現區分。綜上所述,以上僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。
凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種應用於高速數字IO波形引擎的小型編譯器,其特徵在於,該編譯器包括第一模塊、第二模塊和第三模塊; 第一模塊,用於關鍵字和變量的識別及分類處理;具體為 讀取待編譯程序,進行逐字處理; 如果當前讀取到的為關鍵字,則按照預先設定的關鍵字使用規則,先對關鍵字的前後詞句進行檢查,看其是否符合語法定義;如果不符合,則停止編譯並返回相應錯誤碼;如果符合,則將當前關鍵字對應的出現次數變量加1,並且在順序鍊表LO的尾部增加一個結點,將當前關鍵字的代碼添加到尾部結點中;如果當前關鍵字具有參數,則將參數記錄到第一參數數組,並在當前關鍵字的鍊表結點中記錄參數在第一參數數組中的索引; 如果當前讀取到的為特殊符號,包括begin、end、小括號、大括號、雙引號、分號,則將當前特殊符號對應的出現次數變量加1,並且在順序鍊表LO的尾部增加一個結點,將當前特殊符號的代碼添加到尾部結點中; 第二模塊,用於語法檢查和代碼優化;具體為 所述語法檢查包括檢驗關鍵字和特殊符號對應的出現次數變量的值是否與順序鍊表LO中相應關鍵字和特殊符號出現次數相同;根據順序鍊表LO中具有配對關係的特殊符號的出現次數和位置檢驗配對關係是否正常;如果語法檢查有錯誤,則停止編譯並返回相應錯誤碼; 所述代碼優化為將所述第一參數數組中的元素轉化為參數鍊表中的結點,採用參數鍊表結點地址代替順序鍊表LO中的第一參數數組索引;釋放第一參數數組空間; 第三模塊,用於實現目標代碼生成;具體為 逐個訪問順序鍊表LO中的每個結點,如果當前結點為關鍵字且沒有參數,則直接根據目標碼生成規則生成目標碼,如果當前結點為關鍵字且有參數,則根據結點中記錄的參數鍊表結點地址,從參數鍊表中提取參數,將關鍵字與參數組合後根據目標碼生成規則生成目標碼;如果當前結點為特殊符號,則直接根據目標碼生成規則生成目標碼。
2.如權利要求1所述的編譯器,其特徵在於,所述第一模塊進一步用於,如果關鍵字跟隨的參數為trigger n,則只將η的值存儲到第二參數數組中;步驟三目標代碼生成時,如果當前結點為關鍵字且參數η從第二參數數組中提取,則為提取的η加上trigger的前綴,然後再生成目標碼。
全文摘要
本發明公開了一種應用於高速數字IO波形引擎的小型編譯器,其處理分為三步,關鍵字和變量的識別及分類處理,語法檢查和代碼優化,目標代碼生成。在第一步中,採用鍊表的形式記錄關鍵字和特殊符號的出現順序,關鍵字的參數記錄在數組中,第二步將數組轉換為鍊表,減小空間佔用;最後一步根據鍊表出棧,生成目標碼。本發明能夠簡化編譯過程,減小編譯器大小,在編譯過程中使用資源可靈活申請,不會浪費,且該編譯器能夠設置在下位機中,免去了上位機編譯下載過程,減少開銷和調試時間。
文檔編號G06F9/45GK103019801SQ201210560608
公開日2013年4月3日 申請日期2012年12月20日 優先權日2012年12月20日
發明者王凱, 王石記, 劉金川, 史浩, 辛麗霞 申請人:北京航天測控技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀