版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁計算機(jī)軟件移植可視化研究論文摘要:針對控制系統(tǒng)開發(fā)中程序調(diào)試難的問題,分析了計算機(jī)體系結(jié)構(gòu)和指令系統(tǒng),研究異構(gòu)計算機(jī)軟件移植可視化仿真技術(shù),并設(shè)計了軟件移植的可視化仿真系統(tǒng)。實(shí)驗(yàn)表明,該方法能解決異構(gòu)機(jī)之間軟件兼容和移植問題,提高了控制系統(tǒng)開發(fā)的效率。
關(guān)鍵詞:異構(gòu)計算機(jī);軟件移植;可視化仿真;指令系統(tǒng)
微機(jī)已經(jīng)廣泛應(yīng)用于各種控制系統(tǒng)、智能儀器儀表、智能家電等領(lǐng)域。單片機(jī)性價比的提高,使單片機(jī)成為嵌入式系統(tǒng)的主流芯片。
目前,控制系統(tǒng)開發(fā)的常用方法是在PC機(jī)上編寫和調(diào)試單片機(jī)系統(tǒng)程序。雖然,國內(nèi)外有不少單片機(jī)開發(fā)系統(tǒng),但由于單片機(jī)與PC機(jī)體系結(jié)構(gòu)不同,用單片機(jī)指令編寫的程序無法直接在PC機(jī)上運(yùn)行,因此,系統(tǒng)開發(fā)時要有仿真器、編程器等專用設(shè)備,程序運(yùn)行不能脫離單片機(jī)開發(fā)裝置。因此,基于單片機(jī)的系統(tǒng)開發(fā),源程序調(diào)試工作非常復(fù)雜,操作繁瑣,調(diào)試結(jié)果的顯示不夠直觀。針對上述情況,研究異構(gòu)計算機(jī)軟件移植可視化仿真技術(shù),設(shè)計獨(dú)立于單片機(jī)開發(fā)裝置的可視化仿真系統(tǒng),應(yīng)用于控制系統(tǒng)和嵌入式系統(tǒng)的開發(fā)和實(shí)驗(yàn)具有重要的意義。本文在研究異構(gòu)計算機(jī)軟件移植可視化仿真技術(shù)的基礎(chǔ)上,實(shí)現(xiàn)了在IBM-PC機(jī)上運(yùn)行51系列單片機(jī)指令的可視化仿真系統(tǒng),該仿真系統(tǒng)完全獨(dú)立于單片機(jī)開發(fā)裝置。
1軟件移植概述
1.1軟件移植方法
計算機(jī)系統(tǒng)層次模型[1]說明了各層次之間的關(guān)系及程序的執(zhí)行情況。指令在計算機(jī)中執(zhí)行的過程,實(shí)際上是指令由系統(tǒng)的高層逐級向低層轉(zhuǎn)換的過程,從應(yīng)用語言級直到微程序語言級,最后產(chǎn)生各種控制命令,驅(qū)動計算機(jī)的硬件完成指令功能。高層語言轉(zhuǎn)換為低層語言的實(shí)現(xiàn)方法有翻譯法和解釋法:翻譯法是將高層程序變換成低一層等效程序,其處理流程可描述為
while(excutingFlag)
{取指令;
分析指令;
轉(zhuǎn)換成本層指令并保存;
}
執(zhí)行轉(zhuǎn)換后的指令;
上述流程中變量excutingFlag為執(zhí)行程序是否結(jié)束標(biāo)志,其值為0表示程序結(jié)束。翻譯法又分為動態(tài)翻譯和靜態(tài)翻譯。動態(tài)翻譯在程序運(yùn)行過程中,將被仿真的指令逐條轉(zhuǎn)換成仿真程序代碼;靜態(tài)翻譯是代一次將所有被仿真的程序轉(zhuǎn)換為仿真代碼后執(zhí)行。解釋法是低層機(jī)器仿真高層機(jī)器級語句或指令,即對高層機(jī)器級語言進(jìn)行解釋并執(zhí)行。其處理流程可描述為
while(excutingFlag)
{取讀指令;
分析指令;
解釋執(zhí)行;
}
翻譯法速度快,但編程和調(diào)試?yán)щy;解釋法易實(shí)現(xiàn)和調(diào)試,但速度慢。異構(gòu)機(jī)之間的軟件移植實(shí)際上也可以看成是將一臺機(jī)器上所描述的語言在另一臺機(jī)器上從高層向低層轉(zhuǎn)換的過程。要實(shí)現(xiàn)異構(gòu)機(jī)之間的軟件移植,可以采用模擬和仿真兩種方法[1]。模擬就是用一臺機(jī)器(宿主機(jī))的機(jī)器語言解釋另一臺機(jī)器(虛擬機(jī))的指令系統(tǒng)來實(shí)現(xiàn)軟件移植方法。但是這種方法運(yùn)行速度顯著降低、實(shí)時性差、編寫程序困難。仿真是用微程序(宿主機(jī))直接解釋另一種機(jī)器(目標(biāo)機(jī))指令系統(tǒng)的方法。這種方法速度快,但微程序機(jī)器結(jié)構(gòu)依賴于傳統(tǒng)機(jī)器級結(jié)構(gòu),開發(fā)人員需要了解微程序機(jī)器的邏輯結(jié)構(gòu),當(dāng)兩種機(jī)器結(jié)構(gòu)差別較大時很難仿真。
1.2軟件移植步驟
在實(shí)際應(yīng)用中,為了解決異構(gòu)計算機(jī)之間軟件移植問題,可以根據(jù)設(shè)計人員的需要開發(fā)指令仿真系統(tǒng)。指令仿真系統(tǒng)開發(fā)的一般步驟為
(1)分析仿真計算機(jī)和被仿真計算機(jī)的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、指令功能和指令結(jié)構(gòu);
(2)需求分析,編寫程序模塊和各模塊流程圖;
(3)選擇合適的編程語言并編寫程序;
(4)程序調(diào)試和優(yōu)化;
2數(shù)據(jù)結(jié)構(gòu)描述
數(shù)據(jù)結(jié)構(gòu)描述關(guān)系到程序運(yùn)行效率。在實(shí)際應(yīng)用中,我們設(shè)計的仿真系統(tǒng)主要解決在IBM-PC機(jī)上執(zhí)行由MCS51系列單片機(jī)指令系統(tǒng)所編寫的匯編源程序,在分析MCS51單片機(jī)內(nèi)部結(jié)構(gòu)[2]的基礎(chǔ)上,根據(jù)C語言的特點(diǎn),同時兼顧程序運(yùn)行的效率,合理地描述了系統(tǒng)設(shè)計所需的數(shù)據(jù)結(jié)構(gòu)。
2.1程序存儲器結(jié)構(gòu)
MCS51內(nèi)部雖然只有4kB的程序存儲器,但在實(shí)際應(yīng)用中可以在外部擴(kuò)展至64kB,其內(nèi)部有一個16位的程序計數(shù)器PC可尋址64kB以訪問程序存儲器。根據(jù)單片機(jī)指令結(jié)構(gòu)[2]及C語言的數(shù)據(jù)類型關(guān)系,并考慮到程序仿真時并不會用到所有的存儲單元,因此采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。程序存儲器的數(shù)據(jù)結(jié)構(gòu)描述如下:
typedefstructprogMEM
{charopCode;
unsignedlabel;
//該條指令如果有標(biāo)號,則存放其地址
charopNum1;
charopNum2;
charopNum3;
pMEMrecAddr;
//存放當(dāng)前指令的地址
pMEMnextIs;
//指向下一條指令的地址
}MemData,*pMEM;
pMEMPC;
在結(jié)構(gòu)體中,幾個字符型變量分別用于存放指令的操作碼和操作數(shù),并用結(jié)構(gòu)體指針變量存放當(dāng)前指令及下一條指令的地址。仿真系統(tǒng)將單片機(jī)源程序翻譯成目標(biāo)代碼放在程序存儲器(結(jié)構(gòu)體)中,通過結(jié)構(gòu)體類型的指針變量可以訪問程序存儲器中的指令。
2.2數(shù)據(jù)存儲器結(jié)構(gòu)
MCS51將工作寄存器、端口和數(shù)據(jù)存儲器統(tǒng)一編址,存儲空間為256B。堆棧區(qū)設(shè)在30H~7FH,由堆棧指針SP指向棧頂。內(nèi)部RAM,除了工作寄存器、位標(biāo)志、堆棧以外的單元,其余都可以當(dāng)一般數(shù)據(jù)寄存器使用。如果內(nèi)部數(shù)據(jù)存儲器不夠用,可以外接數(shù)據(jù)存儲器,擴(kuò)展至64kB。內(nèi)部數(shù)據(jù)存儲器在程序調(diào)試時需經(jīng)常查看單元內(nèi)容,且數(shù)量不大,因此將內(nèi)部數(shù)據(jù)存儲器定義為數(shù)組,堆棧指針定義為整型,并初始化為30H。
chardataRAM[256];
intramSP=0x30;
數(shù)據(jù)存儲器單元的地址和數(shù)組的下標(biāo)對應(yīng),這樣在程序調(diào)試時,如果要查看內(nèi)部數(shù)據(jù)存儲器的內(nèi)容,只要查看數(shù)據(jù)相應(yīng)元素的值即可。另外定義一個結(jié)構(gòu)體類型,模擬外部擴(kuò)展的數(shù)據(jù)存儲器,結(jié)構(gòu)體定義如下:
typedefexDataRAM
{chardata;
unsignedaddrRAM;
//存放存儲單元的地址,用于查詢
exRAMptexDataP;
}RAMdata,*exRAMpt;
如果用到外部數(shù)據(jù)存儲器,則將數(shù)據(jù)存在動態(tài)鏈?zhǔn)酱鎯Y(jié)構(gòu)中,由于仿真程序運(yùn)行時使用本機(jī)的存儲器,因此其地址與仿真的單片機(jī)的地址不同,用一個變量addrRAM存放數(shù)據(jù)存儲器的地址,以便于地址單元內(nèi)的數(shù)據(jù)查詢。
3軟件移植的可視化仿真
軟件移植可視化仿真系統(tǒng),不僅要完成匯編指令的功能,而且應(yīng)該根據(jù)要求查詢程序執(zhí)行后各寄存器的內(nèi)容、端口的狀態(tài)和運(yùn)行結(jié)果。在系統(tǒng)開發(fā)過程中,我們詳細(xì)分析了單片機(jī)指令格式[2]和計算機(jī)執(zhí)行指令的過程[3],并根據(jù)仿真的速度要求,通過比較各語言的特點(diǎn),選用VisualC++語言和80x86匯編語言,采用C語言環(huán)境下的在線匯編技術(shù),用解釋法實(shí)現(xiàn)可視化指令仿真系統(tǒng)。
3.1軟件移植過程
解釋法完成異構(gòu)機(jī)指令仿真,需要對源程序中的每一條指令執(zhí)行如下操作:
step1對指令從右向左掃描,如果有注釋,則去掉注釋;
setp2對指令從左向右掃描,如果有標(biāo)號,則去掉標(biāo)號,并記錄標(biāo)號所在位置;
step3將無標(biāo)號和注釋的指令從左向右逐步分離出操作碼和操作數(shù);
step4保存操作碼和操作數(shù);
step5分析操作碼的功能并執(zhí)行該指令。重復(fù)執(zhí)行以上步驟直到程序結(jié)束,對分離出的操作碼和操作數(shù)存入結(jié)構(gòu)體progMEM定義的變量中。實(shí)現(xiàn)這一過程的函數(shù)結(jié)構(gòu)如下:
pMEMStringSplit(char*IstructionString)
{IsCode_Num=newMemData;
⋯
if(scan_char==’;’)
{去除分號后的內(nèi)容;}
if(scan_char==’:’)
{保存該指令所在單元地址;}
if(scan_char==’’)
{保存空格前的字符串;}
//得到的第一個字符串為操作碼
⋯
return(IsCode)
}
該函數(shù)入口參數(shù)為指令字符串,返回指向保存該指令的結(jié)構(gòu)體變量的指針。生成目標(biāo)代碼和執(zhí)行指令的過程可以用switch語句或事先設(shè)計函數(shù)跳轉(zhuǎn)表實(shí)現(xiàn)[4],本文采用switch語句實(shí)現(xiàn),實(shí)現(xiàn)函數(shù)結(jié)構(gòu)如下:
voidGetCode(pMEMinCode)
{⋯
switch(opCode)
{casecode1:excuCode1();break;
casecode2:excuCode2();break;
⋯
casecodeN:excuCodeN();break;
}
⋯
}
以上代碼中excuCodeN的入口參數(shù)為指令的操作碼和相應(yīng)的操作數(shù)。
3.2可視化仿真的實(shí)現(xiàn)
可視化仿真系統(tǒng)應(yīng)該提供一個集成開發(fā)環(huán)境,在此環(huán)境下可以編輯新的匯編程序和打開已經(jīng)存在的源程序,并能將用被仿真計算機(jī)語言所編寫的源程序匯編(編譯或解釋)成IBM-PC所能識別的代碼及執(zhí)行所需的操作,根據(jù)需要查詢相應(yīng)存儲器單元的內(nèi)容和端口的狀態(tài)并顯示查詢結(jié)果。本系統(tǒng)在實(shí)現(xiàn)集成開發(fā)環(huán)境時,設(shè)計一個文本窗口,在窗口內(nèi)輸入的每條指令占用一行,程序輸入后,選擇工具菜單中的“執(zhí)行”命令,則對窗口內(nèi)的指令逐行掃描,完成對程序的解釋執(zhí)行。程序執(zhí)行分單步執(zhí)行和連續(xù)執(zhí)行,如果是單步執(zhí)行,則執(zhí)行一條指令后顯示相應(yīng)存儲單元或寄存器的內(nèi)容。連續(xù)執(zhí)行,則在執(zhí)行完所有的指令后,彈出一個對話窗口,根據(jù)實(shí)際,可以查看所有數(shù)據(jù)存儲器和特殊功能寄存器的內(nèi)容,或者輸入要查看的寄存器或內(nèi)存單元的地址,顯示相應(yīng)單元內(nèi)容,結(jié)果顯示采用十進(jìn)制或二進(jìn)制。對于端口狀態(tài),顯示數(shù)據(jù)為二進(jìn)制形式。結(jié)果的可視化查詢對于存儲器和寄存器采用不同的技術(shù),為每一個寄存器設(shè)置一個文本框,用以顯示對應(yīng)寄存器的內(nèi)容,而所有程序中涉及到的存儲單元的內(nèi)容顯示在同一個文本窗口中。
4結(jié)束語
本文介紹的可視化仿真系統(tǒng)的開發(fā)技術(shù),使用圖形用戶界面(GUI),實(shí)驗(yàn)結(jié)果表明,該方法顯示直觀、結(jié)果查詢方便,而且應(yīng)用VC環(huán)境下在線匯編技術(shù),編寫的程序代碼占用系統(tǒng)資源少,又能保證系統(tǒng)運(yùn)行效率。雖然本文以IBM-PC和單片機(jī)作為應(yīng)用實(shí)例,但是詳細(xì)分析其它異構(gòu)計算機(jī)的體系結(jié)構(gòu)和指令功能,使用本文提出的軟件移植的可視化仿真技術(shù),不僅可以解決各種系統(tǒng)開發(fā)中的難題,而且可以解決各種異
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024物業(yè)維修與科技公司關(guān)于智能家居系統(tǒng)改造合同
- 2025年度特種貨物運(yùn)輸保險服務(wù)協(xié)議2篇
- 2024年食品行業(yè)分銷協(xié)議
- 2024牛肉餐飲行業(yè)供應(yīng)與服務(wù)合同
- 2024網(wǎng)絡(luò)云存儲服務(wù)提供商之間的數(shù)據(jù)共享與安全保密合同
- 2025年度互聯(lián)網(wǎng)+農(nóng)業(yè)合作經(jīng)營合同范本3篇
- 2024版職工勞動合同書模板
- 2025年水稻種植戶農(nóng)產(chǎn)品電商渠道拓展合同3篇
- 2024衣柜墻板吊頂裝修工程合同轉(zhuǎn)讓與權(quán)利義務(wù)繼承合同
- 二零二四年商業(yè)街區(qū)鋪面長期租賃合同樣本3篇
- 醫(yī)療護(hù)理員五級理論知識考核試題
- 法院執(zhí)行議價協(xié)議書模板
- 多感官交互對文化參與的影響
- 2024至2030年中國家庭維修行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 文化旅游場所運(yùn)營設(shè)備更新項(xiàng)目資金申請報告-超長期特別國債投資專項(xiàng)
- 【人教版】二年級數(shù)學(xué)上冊說課稿-第2課時 直角的認(rèn)識
- JTG F40-2004 公路瀝青路面施工技術(shù)規(guī)范
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)英語試卷(含答案)
- 江蘇省南京市玄武區(qū)2022-2023學(xué)年七年級下學(xué)期期末語文試題
- 《金屬非金屬地下礦山監(jiān)測監(jiān)控系統(tǒng)建設(shè)規(guī)范》
- 房建EPC項(xiàng)目施工部署及-物資、機(jī)械設(shè)備、勞動力投入計劃
評論
0/150
提交評論