專利名稱:一種文件編譯方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種文件編譯方法及裝置。
背景技術(shù):
編譯(compilation)是把高級語言變成計(jì)算機(jī)可識別的二進(jìn)制語言的過程,也就是通過編譯程序?qū)⒃次募D(zhuǎn)換為目標(biāo)文件的過程。通常源文件指通過高級語言編寫的文件,例如,高級語言可以包括Pascal、C、C++、Java等,而目標(biāo)文件則為通過匯編語言或機(jī)器語言等低級語言編寫的文件。現(xiàn)有技術(shù)中通過編譯器實(shí)現(xiàn)從源文件到目標(biāo)文件的編譯過程,通常編譯生成的結(jié)果數(shù)據(jù)為可執(zhí)行文件,可執(zhí)行文件的內(nèi)容可以被計(jì)算機(jī)解釋為直接運(yùn)行的程序。在Windows操作系統(tǒng)下編寫源文件的過程中,如果有文件系統(tǒng)的支持,例如, 采用C語言代碼編寫源文件時(shí),可以有Windows下的文件系統(tǒng)的支持,即在編寫源文件時(shí), 可以使用fopen、fread、fclose等接口直接調(diào)用文件系統(tǒng)中的文件,這些文件通過調(diào)用直接鏈接到源文件中,通過鏈接文件的方式可以減少源文件的大小,提高編譯速度。但是發(fā)明人在對現(xiàn)有技術(shù)的研究過程中發(fā)現(xiàn),在嵌入式環(huán)境下編寫的源文件,其通常難以得到文件系統(tǒng)的支持,即嵌入式環(huán)境下不提供調(diào)用文件資源的接口,因此如果源文件需要使用大量文件作為資源,則只能直接將文件數(shù)據(jù)寫入到源文件的程序代碼中,從而導(dǎo)致待編譯的源文件較大,編譯時(shí)需要花費(fèi)大量時(shí)間,不僅降低了編譯速度,而且編譯過程也將耗費(fèi)大量系統(tǒng)資源。
發(fā)明內(nèi)容
本申請?zhí)峁┮环N文件編譯方法及裝置,以解決現(xiàn)有技術(shù)中在嵌入式環(huán)境下編譯包含純數(shù)據(jù)文本的源程序代碼編譯時(shí)間較長,耗費(fèi)系統(tǒng)資源的問題。為了解決上述技術(shù)問題,本申請實(shí)施例公開了如下技術(shù)方案一種文件編譯方法,所述方法包括將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件;根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件;對所述邏輯文件進(jìn)行編譯生成中間邏輯文件;將所述中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。還包括預(yù)先保存根據(jù)數(shù)據(jù)文件的匯編規(guī)律編寫的腳本文件,所述腳本文件用于對所述數(shù)據(jù)文件進(jìn)行匯編轉(zhuǎn)換。所述腳本文件為通過Perl語言編寫的腳本文件。所述數(shù)據(jù)文件中的數(shù)據(jù)為按照數(shù)組語法轉(zhuǎn)換后的十六進(jìn)制數(shù)據(jù)。所述根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換包括分析所述數(shù)據(jù)文件,獲取所述數(shù)據(jù)文件中原始數(shù)據(jù)的長度;
根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的開始部分;按照匯編文件的格式輸出所述數(shù)據(jù)文件中的數(shù)據(jù)部分;根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的結(jié)束部分;按照匯編文件的格式輸出所述原始數(shù)據(jù)的長度,所述開始部分、數(shù)據(jù)部分、結(jié)束部分和所述原始數(shù)據(jù)的長度組成匯編文件;通過匯編程序?qū)λ鰠R編文件進(jìn)行轉(zhuǎn)換,生成所述中間數(shù)據(jù)文件,所述中間數(shù)據(jù)文件與直接調(diào)用編譯命令對所述數(shù)據(jù)文件進(jìn)行編譯后生成的文件一致。所述方法應(yīng)用在嵌入式操作系統(tǒng)中。一種文件編譯裝置,所述裝置包括分割單元,用于將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件;轉(zhuǎn)換單元,用于根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件;編譯單元,用于對所述邏輯文件進(jìn)行編譯生成中間邏輯文件;合并單元,用于將所述中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。還包括保存單元,用于預(yù)先保存根據(jù)數(shù)據(jù)文件的匯編規(guī)律編寫的腳本文件,所述腳本文件用于對所述數(shù)據(jù)文件進(jìn)行匯編轉(zhuǎn)換。所述轉(zhuǎn)換單元包括文件分析子單元,用于分析所述數(shù)據(jù)文件,獲取所述數(shù)據(jù)文件中原始數(shù)據(jù)的長度;開始部分輸出子單元,用于根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的開始部分;數(shù)據(jù)部分輸出子單元,用于按照匯編文件的格式輸出所述數(shù)據(jù)文件中的數(shù)據(jù)部分;結(jié)束部分輸出子單元,用于根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的結(jié)束部分;數(shù)據(jù)長度輸出子單元,用于按照匯編文件的格式輸出所述原始數(shù)據(jù)的長度,所述開始部分、數(shù)據(jù)部分、結(jié)束部分和所述原始數(shù)據(jù)的長度組成匯編文件;匯編文件轉(zhuǎn)換子單元,用于通過匯編程序?qū)λ鰠R編文件進(jìn)行轉(zhuǎn)換,生成所述中間數(shù)據(jù)文件,所述中間數(shù)據(jù)文件與直接調(diào)用編譯命令對所述數(shù)據(jù)文件進(jìn)行編譯后生成的文件一致。所述裝置應(yīng)用在嵌入式操作系統(tǒng)中。由上述實(shí)施例可以看出,本申請實(shí)施例中將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件,根據(jù)預(yù)先設(shè)置的匯編規(guī)律對數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件,對邏輯文件進(jìn)行編譯生成中間邏輯文件,將中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。應(yīng)用本申請實(shí)施例,由于無需對數(shù)據(jù)文件進(jìn)行直接編譯,而是通過設(shè)置匯編規(guī)律對數(shù)據(jù)文件進(jìn)行直接轉(zhuǎn)換,因此提高了編譯生成目標(biāo)文件的速度,節(jié)約了對數(shù)據(jù)文件進(jìn)行編譯所耗費(fèi)的時(shí)間,以及編譯大量數(shù)據(jù)文件所耗費(fèi)的系統(tǒng)資源。
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請文件編譯方法的第一實(shí)施例流程圖;圖2為本申請文件編譯方法的第二實(shí)施例流程圖;圖3為本申請文件編譯裝置的第一實(shí)施例框圖;圖4為本申請文件編譯裝置的第二實(shí)施例框圖;圖5為圖4中轉(zhuǎn)換單元的實(shí)施例框圖。
具體實(shí)施例方式本發(fā)明如下實(shí)施例提供了一種文件編譯方法及裝置,本申請實(shí)施例設(shè)置匯編規(guī)律對數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,由此減少文件編譯時(shí)間,提高編譯速度。為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明實(shí)施例中技術(shù)方案作進(jìn)一步詳細(xì)的說明。參見圖1,為本申請文件編譯方法的第一實(shí)施例流程圖步驟101 將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件。當(dāng)本實(shí)施例應(yīng)用在嵌入式系統(tǒng)下時(shí),該數(shù)據(jù)文件中的數(shù)據(jù)為按照數(shù)組語法轉(zhuǎn)換后的十六進(jìn)制數(shù)據(jù)。步驟102 根據(jù)預(yù)先設(shè)置的匯編規(guī)律對數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件。其中,該匯編規(guī)律可以通過預(yù)先編寫的腳本文件進(jìn)行保存,例如通過Perl語言編寫的腳本文件。具體的,分析數(shù)據(jù)文件,獲取數(shù)據(jù)文件中原始數(shù)據(jù)的長度,根據(jù)數(shù)據(jù)文件的內(nèi)容輸出匯編文件的開始部分,按照匯編文件的格式輸出數(shù)據(jù)文件中的數(shù)據(jù)部分,根據(jù)數(shù)據(jù)文件的內(nèi)容輸出匯編文件的結(jié)束部分,按照匯編文件的格式輸出原始數(shù)據(jù)的長度,其中開始部分、數(shù)據(jù)部分、結(jié)束部分和原始數(shù)據(jù)的長度組成匯編文件,通過匯編程序?qū)R編文件進(jìn)行轉(zhuǎn)換,生成中間數(shù)據(jù)文件,本實(shí)施例中的中間數(shù)據(jù)文件與直接調(diào)用編譯命令對數(shù)據(jù)文件進(jìn)行編譯后生成的文件一致。步驟103 對邏輯文件進(jìn)行編譯生成中間邏輯文件。步驟104 將中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。在通過文件編譯方法的第二實(shí)施例詳細(xì)說明本申請實(shí)施例的文件編譯過程之前, 首先對現(xiàn)有技術(shù)中的文件編譯過程進(jìn)行描述,并結(jié)合該描述說明本申請實(shí)施例中獲取數(shù)據(jù)文件的匯編規(guī)律的過程。以C語言為例,C語言標(biāo)準(zhǔn)庫中提供了文件操作函數(shù),假設(shè)通過C語言編寫的源文件的文件名為file, c,該源文件中需要加載的數(shù)據(jù)在標(biāo)準(zhǔn)庫中的data, txt文件中,data, txt中的內(nèi)容為字符串“test data”。現(xiàn)有技術(shù)中,如果要對上述源文件file, c進(jìn)行編譯,
則可以通過執(zhí)行如下程序進(jìn)行實(shí)現(xiàn)
權(quán)利要求
1.一種文件編譯方法,其特征在于,所述方法包括 將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件;根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件;對所述邏輯文件進(jìn)行編譯生成中間邏輯文件;將所述中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括預(yù)先保存根據(jù)數(shù)據(jù)文件的匯編規(guī)律編寫的腳本文件,所述腳本文件用于對所述數(shù)據(jù)文件進(jìn)行匯編轉(zhuǎn)換。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述腳本文件為通過Perl語言編寫的腳本文件。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)文件中的數(shù)據(jù)為按照數(shù)組語法轉(zhuǎn)換后的十六進(jìn)制數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換包括分析所述數(shù)據(jù)文件,獲取所述數(shù)據(jù)文件中原始數(shù)據(jù)的長度; 根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的開始部分; 按照匯編文件的格式輸出所述數(shù)據(jù)文件中的數(shù)據(jù)部分; 根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的結(jié)束部分;按照匯編文件的格式輸出所述原始數(shù)據(jù)的長度,所述開始部分、數(shù)據(jù)部分、結(jié)束部分和所述原始數(shù)據(jù)的長度組成匯編文件;通過匯編程序?qū)λ鰠R編文件進(jìn)行轉(zhuǎn)換,生成所述中間數(shù)據(jù)文件,所述中間數(shù)據(jù)文件與直接調(diào)用編譯命令對所述數(shù)據(jù)文件進(jìn)行編譯后生成的文件一致。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法應(yīng)用在嵌入式操作系統(tǒng)中。
7.一種文件編譯裝置,其特征在于,所述裝置包括分割單元,用于將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件; 轉(zhuǎn)換單元,用于根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件;編譯單元,用于對所述邏輯文件進(jìn)行編譯生成中間邏輯文件;合并單元,用于將所述中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括保存單元,用于預(yù)先保存根據(jù)數(shù)據(jù)文件的匯編規(guī)律編寫的腳本文件,所述腳本文件用于對所述數(shù)據(jù)文件進(jìn)行匯編轉(zhuǎn)換。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述轉(zhuǎn)換單元包括文件分析子單元,用于分析所述數(shù)據(jù)文件,獲取所述數(shù)據(jù)文件中原始數(shù)據(jù)的長度; 開始部分輸出子單元,用于根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的開始部分; 數(shù)據(jù)部分輸出子單元,用于按照匯編文件的格式輸出所述數(shù)據(jù)文件中的數(shù)據(jù)部分; 結(jié)束部分輸出子單元,用于根據(jù)所述數(shù)據(jù)文件的內(nèi)容輸出匯編文件的結(jié)束部分; 數(shù)據(jù)長度輸出子單元,用于按照匯編文件的格式輸出所述原始數(shù)據(jù)的長度,所述開始部分、數(shù)據(jù)部分、結(jié)束部分和所述原始數(shù)據(jù)的長度組成匯編文件;匯編文件轉(zhuǎn)換子單元,用于通過匯編程序?qū)λ鰠R編文件進(jìn)行轉(zhuǎn)換,生成所述中間數(shù)據(jù)文件,所述中間數(shù)據(jù)文件與直接調(diào)用編譯命令對所述數(shù)據(jù)文件進(jìn)行編譯后生成的文件一致。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置應(yīng)用在嵌入式操作系統(tǒng)中。
全文摘要
本申請實(shí)施例公開了一種文件編譯方法及裝置,所述方法包括將待編譯的源文件分割成數(shù)據(jù)文件和邏輯文件;根據(jù)預(yù)先設(shè)置的匯編規(guī)律對所述數(shù)據(jù)文件直接進(jìn)行匯編轉(zhuǎn)換,生成中間數(shù)據(jù)文件;對所述邏輯文件進(jìn)行編譯生成中間邏輯文件;將所述中間數(shù)據(jù)文件和中間邏輯文件進(jìn)行合并,生成目標(biāo)文件。應(yīng)用本申請實(shí)施例,由于無需對數(shù)據(jù)文件進(jìn)行直接編譯,而是通過設(shè)置匯編規(guī)律對數(shù)據(jù)文件進(jìn)行直接轉(zhuǎn)換,因此提高了編譯生成目標(biāo)文件的速度,節(jié)約了對數(shù)據(jù)文件進(jìn)行編譯所耗費(fèi)的時(shí)間,以及編譯大量數(shù)據(jù)文件所耗費(fèi)的系統(tǒng)資源。
文檔編號G06F9/45GK102207884SQ20111014757
公開日2011年10月5日 申請日期2011年6月2日 優(yōu)先權(quán)日2011年6月2日
發(fā)明者朱呂亮 申請人:深圳市茁壯網(wǎng)絡(luò)股份有限公司