專利名稱:混和計算機(jī)程序設(shè)計環(huán)境的制作方法
背景技術(shù):
和領(lǐng)域本發(fā)明涉及計算機(jī)程序設(shè)計語言環(huán)境,尤其它涉及用于簡化編寫和調(diào)試匯編語言程序的系統(tǒng)。
匯編語言程序設(shè)計對于編程過程中的代碼編寫和調(diào)試階段均是一種尤其困難的任務(wù)。高級語言,如C++,能被用于編寫根據(jù)與人類語言密切相關(guān)的抽象符號描述算法的程序。而另一方面,匯編語言本質(zhì)上是機(jī)器的,它僅僅根據(jù)簡單的微處理器指令描述算法。因此,匯編語言程序設(shè)計與用高級語言編寫的程序相比通常冗長而且難于理解。
對于匯編語言程序設(shè)計,調(diào)試過程尤其困難。調(diào)試過程是測試計算機(jī)程序的錯誤(故障),這些錯誤導(dǎo)致程序給出與設(shè)計技術(shù)要求不相符的結(jié)果。錯誤可能源于作為編程基礎(chǔ)的下面的算法的缺陷,或是源于算法的錯誤的執(zhí)行。當(dāng)出現(xiàn)這樣的錯誤結(jié)果時,軟件工程師們要找到包含這些錯誤的計算機(jī)程序段,并重編寫。然后,工程師們再編譯程序并測試。調(diào)試過程反復(fù)進(jìn)行直到這些錯誤從程序中被除去。
對于匯編語言而言,調(diào)試過程相對困難,這是因?yàn)橄旅娴乃惴ū淮罅康奶囟ǖ奈⑻幚砥鞯臋C(jī)器指令所遮蔽,然而在高級語言中下面的算法易于分辨。而且,目前的匯編語言程序設(shè)計環(huán)境不能提供通常能在高級程序設(shè)計環(huán)境中找到的很多功能。例如,高級語言和程序設(shè)計環(huán)境具有許多功能用于存儲于硬盤上的文件的處理。當(dāng)程序被調(diào)試時,這些文件能用于存儲程序得到的測試輸出結(jié)果。
匯編語言程序的調(diào)試過程的另一個問題是每一種匯編語言都有其自己的一套調(diào)試程序,要求軟件工程師們在一種新的微處理器被開發(fā)時,學(xué)習(xí)應(yīng)用一種新的調(diào)試程序。
仿真器是檢測匯編程序執(zhí)行情況的最精確的工具,它是一種特殊的硬件設(shè)備,它與使用匯編語言的微處理器直接相連,以持續(xù)監(jiān)測微處理器的輸入輸出狀態(tài)。這種設(shè)備很昂貴,在微處理器開發(fā)的初級階段不總是可得到,因而耽擱軟件的開發(fā)。
歐洲專利申請90114711說明了一種特殊的開發(fā)計算機(jī),它能用于將高級語言編寫的控制程序翻譯成機(jī)器語言,并將機(jī)器語言控制程序傳遞給開發(fā)微處理器。盡管這確實(shí)在一定程度上簡化了開發(fā)過程,但是它并未提供在單一程序中既包括高級語言又包括匯編語言的程序的編寫、測試和調(diào)試。另外,這種開發(fā)方式要求特殊的硬件和一個用于接口的額外的開發(fā)計算機(jī)。
一種更為有效的系統(tǒng)應(yīng)要求較少的電子硬件。這種硬件一般在通用個人計算機(jī)上實(shí)現(xiàn),以便公司能允許他們的員工使用和利用現(xiàn)有的個人計算機(jī)技術(shù)編寫和調(diào)試匯編語言程序。一種更有效的系統(tǒng)也應(yīng)讓在有競爭力的高級程序設(shè)計語言市場上的工具能用在匯編語言程序設(shè)計中。
因此需求這樣一種系統(tǒng),它能將編寫和調(diào)試的高級語言程序的輕松自如帶入到匯編語言程序設(shè)計中。
發(fā)明概述本發(fā)明的目的是提供一種高度發(fā)展的匯編語言程序設(shè)計環(huán)境,它能簡化匯編語言程序的編寫和調(diào)試。該目的是通過提供一種混和程序設(shè)計環(huán)境實(shí)現(xiàn)的,該環(huán)境能夠編輯既包含高級程序設(shè)計語言指令又包含匯編語言程序設(shè)計指令的程序。
根據(jù)本發(fā)明的教導(dǎo),這里提供了一種簡化匯編語言程序設(shè)計的系統(tǒng),它由一種高度發(fā)達(dá)的混和程序設(shè)計環(huán)境所提供,該程序設(shè)計環(huán)境包含一個模塊,它用于分析包含至少一種高級指令的輸入混和源代碼文件;一個函數(shù)庫,用于從相應(yīng)的高級指令中,定義混和源代碼文件中的至少一種匯編指令;一個根據(jù)該庫將高級指令翻譯成機(jī)器語言指令的模塊;和一個將翻譯好的機(jī)器語言指令輸出到目標(biāo)文件中的模塊。
根據(jù)本發(fā)明的教導(dǎo),這里也提供了一種方法,它能夠處理包含任意數(shù)量高級和匯編語言指令的混和源代碼文件,它包括分析含有至少一種高級指令的輸入混和源代碼文件,將混和源代碼文件中的匯編語言指令轉(zhuǎn)換成高級語言指令,將高級語言指令翻譯成機(jī)器指令,并編譯翻譯后的機(jī)器語言指令到目標(biāo)文件中。
根據(jù)本發(fā)明的教導(dǎo),這里也提供了一種方法,用于編寫和調(diào)試匯編語言程序,包括編寫含有至少一種高級指令的源代碼文件;調(diào)試含有至少一種高級指令的源代碼文件;用匯編語言指令替換源代碼文件中的高級指令;并調(diào)試產(chǎn)生的包含高級和匯編語言指令的混和源代碼文件。
附圖簡述本文中的發(fā)明僅僅通過實(shí)例的方式來參考了相應(yīng)的
,其中圖1是說明本發(fā)明提供的匯編語言程序設(shè)計過程中的步驟的方框圖。
發(fā)明簡述本發(fā)明中,程序員首先使用高級編譯器和程序設(shè)計環(huán)境編譯和調(diào)試用高級語言編寫的程序。程序員調(diào)試高級程序代碼直到程序員滿意生成的高級代碼。程序員逐漸將高級指令替換成匯編語言指令,并調(diào)試結(jié)果,直到所有的高級語言指令被匯編語言指令所替代。
本發(fā)明中的混和程序設(shè)計環(huán)境是一種由函數(shù)庫提供的高級語言編譯器,函數(shù)庫模擬匯編語言指令。這些函數(shù)被寫成編譯器的標(biāo)準(zhǔn)高級語言指令組,因此能與標(biāo)準(zhǔn)高級語言指令同時使用。本發(fā)明提供的特定函數(shù)庫中的函數(shù)仿真匯編語言指令的執(zhí)行。通過將庫增加到能夠被編譯器識別的庫列表中,庫即能和其他庫一起被編譯器利用,而不需要特定的硬件。
計算機(jī)程序員通過將由高級程序設(shè)計語言指令編寫的程序輸出到計算機(jī)文件中而開始程序設(shè)計過程。此文件被稱作源代碼。然后,程序員應(yīng)用標(biāo)準(zhǔn)高級程序設(shè)計語言編譯器編譯源代碼。校正完錯誤后,程序員再次編譯源代碼。這一過程反復(fù)進(jìn)行直到得到編譯好的文件。
這時,程序員使用標(biāo)準(zhǔn)連接器連接編譯好的文件,產(chǎn)生可執(zhí)行程序。程序員測試這一程序以便與設(shè)計要求一致。通過修改源代碼程序員糾正背離設(shè)計要求任何偏差,然后重復(fù)編譯和連接步驟。程序員重復(fù)該過程直到程序員滿意源代碼能正確地實(shí)現(xiàn)設(shè)計要求。
程序員用匯編語言指令替換某些高級語言指令,得到既包含高級語言又包括匯編語言代碼的混和源代碼。通過使用特殊的函數(shù)庫,程序員可以編譯和連接混和源代碼。此函數(shù)庫允許編譯器編譯匯編語言指令和高級指令。在測試了結(jié)果可執(zhí)行程序后,程序員對引入到混和源代碼中的匯編語言指令進(jìn)行必要的修改,并重復(fù)編譯和連接步驟。
用此種方法,程序員逐漸將所有的高級語言指令替換成匯編語言指令。
此過程的最后步驟中,程序員針對當(dāng)時的微處理器通過使用當(dāng)時標(biāo)準(zhǔn)匯編器匯編和調(diào)試匯編語言程序。
最優(yōu)實(shí)施方案說明本發(fā)明是一種混和程序設(shè)計環(huán)境,它讓程序員能夠編寫既包含高級語言又包含匯編語言指令的程序。
根據(jù)本發(fā)明,混和程序設(shè)計環(huán)境的原理和執(zhí)行可以通過參考附圖和相應(yīng)的說明來更好地理解。
現(xiàn)在,參考附圖,圖1示出本發(fā)明使用在高級和匯編語言混和程序設(shè)計過程中。
塊10-40代表現(xiàn)有技術(shù)。它們表示傳統(tǒng)的高級計算機(jī)語言程序設(shè)計過程,其中程序員編寫高級源代碼程序,并使用傳統(tǒng)的高級語言編譯器和程序設(shè)計環(huán)境來編譯和調(diào)試源代碼,得到調(diào)試后的高級源代碼程序。
塊10代表程序員用高級程序設(shè)計語言(如C和C++)編寫的程序,它用于實(shí)現(xiàn)所期望的程序下面的算法。該程序被稱為源代碼。
塊20代表編譯器和程序設(shè)計環(huán)境,程序員用它編譯和調(diào)試塊10代表的高級源代碼程序。它可以是標(biāo)準(zhǔn)編譯器和程序設(shè)計環(huán)境,或者是本發(fā)明提供的編譯器和程序設(shè)計環(huán)境。在任何一種情形下,編譯器和程序設(shè)計環(huán)境可以是用在標(biāo)準(zhǔn)個人計算機(jī)上進(jìn)行軟件開發(fā)的普通軟件工具。
編譯器包含工業(yè)標(biāo)準(zhǔn)函數(shù)庫,和其他由程序員購買或定義的特殊庫。例如,一種特殊庫可能包括用于程序設(shè)計文字處理軟件的函數(shù)。這種庫將包括能實(shí)現(xiàn)在一頁的各個方向上顯示字符和文字,或在文件中查找文字,或更正文件中的文字拼寫的函數(shù)。
編譯器是一種程序,能一行一行的讀取源代碼文件,將每條指令翻譯成匯編語言指令。然后,編譯器將這些匯編語言指令放到一個稱作目標(biāo)文件的文件中。編譯器產(chǎn)生的匯編語言指令要與開發(fā)個人計算機(jī)中的微處理器相匹配。
顯然,連接器,程序設(shè)計環(huán)境的另一部分,被用于從編譯器產(chǎn)生的目標(biāo)文件中得到可執(zhí)行程序。編譯和連接過程的結(jié)果即是可執(zhí)行程序。
塊30代表高級調(diào)試過程。該過程包括測試在塊20編譯過程中編譯得到的可執(zhí)行程序和將結(jié)果與程序員想要的結(jié)果相比較。如果結(jié)果與程序員想要的結(jié)果不相符,程序員將在源代碼中查找對這種情況負(fù)責(zé)的高級指令,并修改它。
為了找到負(fù)責(zé)這一非期望情況的高級指令,程序員利用普通高級調(diào)試工具。一種這樣的工具是在程序中設(shè)置斷點(diǎn)。在這些斷點(diǎn)處執(zhí)行停止,讓程序員檢查程序中用到的變量的值。另一種這樣的工具是程序執(zhí)行中,當(dāng)變量被置為由程序員設(shè)定的特定值時,觸發(fā)斷點(diǎn)。另一種調(diào)試工具是能使程序員逐條指令地執(zhí)行程序,允許程序員在程序進(jìn)行中同時檢測變量值和執(zhí)行指令流。
然后,程序員再次編譯源代碼。程序員重復(fù)這一調(diào)試過程直到程序員滿意結(jié)果源代碼。
塊40表示調(diào)試后的高級程序設(shè)計語言代碼,它是塊30表示的高級調(diào)試過程的結(jié)果。這是標(biāo)準(zhǔn)高級語言程序設(shè)計過程停止的地方。
塊50表示程序員開始將高級程序設(shè)計語言指令替換成匯編語言指令的過程。結(jié)果是混和源代碼文件,包括匯編和高級語言指令。
決60表示本發(fā)明,它是一種標(biāo)準(zhǔn)的高級程序設(shè)計語言編譯器,帶有函數(shù)庫,這些函數(shù)根據(jù)編譯器編譯的高級程序設(shè)計語言定義匯編語言指令。該庫使編譯器能夠編譯既包括高級語言又包括匯編語言指令的混和源代碼文件。程序員使用編譯器編譯來自于混和程序代碼生成可執(zhí)行程序,該混和程序代碼包括高級和匯編語言指令,該混合程序代碼來自塊50代表的過程。
塊70表示塊50代表的過程得到的混和代碼的調(diào)試過程。如塊20代表的高級調(diào)試過程,程序員把在塊60處使用混和程序設(shè)計環(huán)境準(zhǔn)備好的可執(zhí)行程序的結(jié)果與程序員期望的結(jié)果相比較,在塊50處對源代碼進(jìn)行適當(dāng)?shù)募m正,然后,再次編譯源代碼。在混和代碼調(diào)試時,程序員利用高級程序設(shè)計環(huán)境中可用的多種調(diào)試工具。
這一過程重復(fù)進(jìn)行直到從混和源代碼得到的可執(zhí)行程序得到與程序員期望一致的結(jié)果。
然后,程序員返回到塊50表示的過程,把其他高級程序設(shè)計指令代換成匯編語言程序設(shè)計指令,并重復(fù)塊60和塊70代表的過程,直到所有的高級代碼均被用匯編語言代碼所替換,并且僅包含匯編語言指令的結(jié)果源代碼文件被徹底地調(diào)試。
塊80表示匯編語言匯編器程序,塊90表示匯編語言調(diào)試器,塊80和塊90代表該過程的最后一步,其中程序員利用當(dāng)前的微處理器的標(biāo)準(zhǔn)編譯器和調(diào)試工具匯編和調(diào)試匯編語言程序。
應(yīng)當(dāng)了解以上的說明僅期望于作為實(shí)例,并且在本發(fā)明的實(shí)質(zhì)和作用范圍內(nèi)還可能有許多其他的實(shí)施方案。
權(quán)利要求
1.一種通過提供高度發(fā)展的混和程序設(shè)計環(huán)境來簡化匯編語言程序設(shè)計的系統(tǒng),包括(a)一個用于分析包含至少一種高級指令的源代碼文件的模塊;(b)一個根據(jù)相應(yīng)的高級指令定義混和源代碼文件中的至少一種匯編語言指令的函數(shù)庫;(c)一個根據(jù)該函數(shù)庫將高級指令翻譯成機(jī)器語言指令的模塊;和(d)一個用于將翻譯好的機(jī)器語言指令輸出到目標(biāo)文件中的模塊。
2.一種用于處理包括任意數(shù)量高級和匯編語言指令的混和源代碼文件的方法,包括以下步驟(a)分析包括至少一種高級指令的混和源代碼文件;(b)將混和源代碼文件中的匯編語言指令轉(zhuǎn)換成高級語言指令;(c)將高級指令翻譯成機(jī)器語言指令;(d)將翻譯后的機(jī)器語言指令編譯成目標(biāo)文件。
3.一種編寫和調(diào)試匯編語言程序的方法應(yīng)包括(a)根據(jù)多個高級語言指令中的每一個定義多個匯編語言指令中的每一個;(b)編寫包含該多個高級指令中至少一個的源代碼文件;(c)調(diào)試該源代碼文件直到該多個高級指令中的該至少一個正常運(yùn)行;(d)用至少一個匯編語言指令替代源代碼文件中的該多個高級指令中的該至少一個指令;(e)調(diào)試包含高級和生成的匯編語言指令的混和源代碼文件。
全文摘要
一種通過提供高度發(fā)展的混和程序設(shè)計環(huán)境來簡化匯編語言程序設(shè)計的系統(tǒng)包括:一個用于分析包含至少一種高級指令的輸入混和源代碼文件的模塊;一個用于從相應(yīng)的高級指令中定義在混和源代碼文件中的至少一種匯編語言指令的函數(shù)庫;一個根據(jù)庫將高級指令翻譯成機(jī)器語言指令的模塊;和一個將翻譯好的機(jī)器語言指令輸出到目標(biāo)文件的模塊。
文檔編號G06F9/44GK1299482SQ99804945
公開日2001年6月13日 申請日期1999年12月14日 優(yōu)先權(quán)日1998年12月14日
發(fā)明者G·申德洛維奇 申請人:因芬尼昂技術(shù)股份公司