版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第第頁計算機軟件移植可視化研究論文摘要:針對控制系統(tǒng)開發(fā)中程序調試難的問題,分析了計算機體系結構和指令系統(tǒng),研究異構計算機軟件移植可視化仿真技術,并設計了軟件移植的可視化仿真系統(tǒng)。實驗表明,該方法能解決異構機之間軟件兼容和移植問題,提高了控制系統(tǒng)開發(fā)的效率。
關鍵詞:異構計算機;軟件移植;可視化仿真;指令系統(tǒng)
微機已經廣泛應用于各種控制系統(tǒng)、智能儀器儀表、智能家電等領域。單片機性價比的提高,使單片機成為嵌入式系統(tǒng)的主流芯片。
目前,控制系統(tǒng)開發(fā)的常用方法是在PC機上編寫和調試單片機系統(tǒng)程序。雖然,國內外有不少單片機開發(fā)系統(tǒng),但由于單片機與PC機體系結構不同,用單片機指令編寫的程序無法直接在PC機上運行,因此,系統(tǒng)開發(fā)時要有仿真器、編程器等專用設備,程序運行不能脫離單片機開發(fā)裝置。因此,基于單片機的系統(tǒng)開發(fā),源程序調試工作非常復雜,操作繁瑣,調試結果的顯示不夠直觀。針對上述情況,研究異構計算機軟件移植可視化仿真技術,設計獨立于單片機開發(fā)裝置的可視化仿真系統(tǒng),應用于控制系統(tǒng)和嵌入式系統(tǒng)的開發(fā)和實驗具有重要的意義。本文在研究異構計算機軟件移植可視化仿真技術的基礎上,實現(xiàn)了在IBM-PC機上運行51系列單片機指令的可視化仿真系統(tǒng),該仿真系統(tǒng)完全獨立于單片機開發(fā)裝置。
1軟件移植概述
1.1軟件移植方法
計算機系統(tǒng)層次模型[1]說明了各層次之間的關系及程序的執(zhí)行情況。指令在計算機中執(zhí)行的過程,實際上是指令由系統(tǒng)的高層逐級向低層轉換的過程,從應用語言級直到微程序語言級,最后產生各種控制命令,驅動計算機的硬件完成指令功能。高層語言轉換為低層語言的實現(xiàn)方法有翻譯法和解釋法:翻譯法是將高層程序變換成低一層等效程序,其處理流程可描述為
while(excutingFlag)
{取指令;
分析指令;
轉換成本層指令并保存;
}
執(zhí)行轉換后的指令;
上述流程中變量excutingFlag為執(zhí)行程序是否結束標志,其值為0表示程序結束。翻譯法又分為動態(tài)翻譯和靜態(tài)翻譯。動態(tài)翻譯在程序運行過程中,將被仿真的指令逐條轉換成仿真程序代碼;靜態(tài)翻譯是代一次將所有被仿真的程序轉換為仿真代碼后執(zhí)行。解釋法是低層機器仿真高層機器級語句或指令,即對高層機器級語言進行解釋并執(zhí)行。其處理流程可描述為
while(excutingFlag)
{取讀指令;
分析指令;
解釋執(zhí)行;
}
翻譯法速度快,但編程和調試困難;解釋法易實現(xiàn)和調試,但速度慢。異構機之間的軟件移植實際上也可以看成是將一臺機器上所描述的語言在另一臺機器上從高層向低層轉換的過程。要實現(xiàn)異構機之間的軟件移植,可以采用模擬和仿真兩種方法[1]。模擬就是用一臺機器(宿主機)的機器語言解釋另一臺機器(虛擬機)的指令系統(tǒng)來實現(xiàn)軟件移植方法。但是這種方法運行速度顯著降低、實時性差、編寫程序困難。仿真是用微程序(宿主機)直接解釋另一種機器(目標機)指令系統(tǒng)的方法。這種方法速度快,但微程序機器結構依賴于傳統(tǒng)機器級結構,開發(fā)人員需要了解微程序機器的邏輯結構,當兩種機器結構差別較大時很難仿真。
1.2軟件移植步驟
在實際應用中,為了解決異構計算機之間軟件移植問題,可以根據(jù)設計人員的需要開發(fā)指令仿真系統(tǒng)。指令仿真系統(tǒng)開發(fā)的一般步驟為
(1)分析仿真計算機和被仿真計算機的系統(tǒng)結構、指令系統(tǒng)、指令功能和指令結構;
(2)需求分析,編寫程序模塊和各模塊流程圖;
(3)選擇合適的編程語言并編寫程序;
(4)程序調試和優(yōu)化;
2數(shù)據(jù)結構描述
數(shù)據(jù)結構描述關系到程序運行效率。在實際應用中,我們設計的仿真系統(tǒng)主要解決在IBM-PC機上執(zhí)行由MCS51系列單片機指令系統(tǒng)所編寫的匯編源程序,在分析MCS51單片機內部結構[2]的基礎上,根據(jù)C語言的特點,同時兼顧程序運行的效率,合理地描述了系統(tǒng)設計所需的數(shù)據(jù)結構。
2.1程序存儲器結構
MCS51內部雖然只有4kB的程序存儲器,但在實際應用中可以在外部擴展至64kB,其內部有一個16位的程序計數(shù)器PC可尋址64kB以訪問程序存儲器。根據(jù)單片機指令結構[2]及C語言的數(shù)據(jù)類型關系,并考慮到程序仿真時并不會用到所有的存儲單元,因此采用鏈式存儲結構。程序存儲器的數(shù)據(jù)結構描述如下:
typedefstructprogMEM
{charopCode;
unsignedlabel;
//該條指令如果有標號,則存放其地址
charopNum1;
charopNum2;
charopNum3;
pMEMrecAddr;
//存放當前指令的地址
pMEMnextIs;
//指向下一條指令的地址
}MemData,*pMEM;
pMEMPC;
在結構體中,幾個字符型變量分別用于存放指令的操作碼和操作數(shù),并用結構體指針變量存放當前指令及下一條指令的地址。仿真系統(tǒng)將單片機源程序翻譯成目標代碼放在程序存儲器(結構體)中,通過結構體類型的指針變量可以訪問程序存儲器中的指令。
2.2數(shù)據(jù)存儲器結構
MCS51將工作寄存器、端口和數(shù)據(jù)存儲器統(tǒng)一編址,存儲空間為256B。堆棧區(qū)設在30H~7FH,由堆棧指針SP指向棧頂。內部RAM,除了工作寄存器、位標志、堆棧以外的單元,其余都可以當一般數(shù)據(jù)寄存器使用。如果內部數(shù)據(jù)存儲器不夠用,可以外接數(shù)據(jù)存儲器,擴展至64kB。內部數(shù)據(jù)存儲器在程序調試時需經常查看單元內容,且數(shù)量不大,因此將內部數(shù)據(jù)存儲器定義為數(shù)組,堆棧指針定義為整型,并初始化為30H。
chardataRAM[256];
intramSP=0x30;
數(shù)據(jù)存儲器單元的地址和數(shù)組的下標對應,這樣在程序調試時,如果要查看內部數(shù)據(jù)存儲器的內容,只要查看數(shù)據(jù)相應元素的值即可。另外定義一個結構體類型,模擬外部擴展的數(shù)據(jù)存儲器,結構體定義如下:
typedefexDataRAM
{chardata;
unsignedaddrRAM;
//存放存儲單元的地址,用于查詢
exRAMptexDataP;
}RAMdata,*exRAMpt;
如果用到外部數(shù)據(jù)存儲器,則將數(shù)據(jù)存在動態(tài)鏈式存儲結構中,由于仿真程序運行時使用本機的存儲器,因此其地址與仿真的單片機的地址不同,用一個變量addrRAM存放數(shù)據(jù)存儲器的地址,以便于地址單元內的數(shù)據(jù)查詢。
3軟件移植的可視化仿真
軟件移植可視化仿真系統(tǒng),不僅要完成匯編指令的功能,而且應該根據(jù)要求查詢程序執(zhí)行后各寄存器的內容、端口的狀態(tài)和運行結果。在系統(tǒng)開發(fā)過程中,我們詳細分析了單片機指令格式[2]和計算機執(zhí)行指令的過程[3],并根據(jù)仿真的速度要求,通過比較各語言的特點,選用VisualC++語言和80x86匯編語言,采用C語言環(huán)境下的在線匯編技術,用解釋法實現(xiàn)可視化指令仿真系統(tǒng)。
3.1軟件移植過程
解釋法完成異構機指令仿真,需要對源程序中的每一條指令執(zhí)行如下操作:
step1對指令從右向左掃描,如果有注釋,則去掉注釋;
setp2對指令從左向右掃描,如果有標號,則去掉標號,并記錄標號所在位置;
step3將無標號和注釋的指令從左向右逐步分離出操作碼和操作數(shù);
step4保存操作碼和操作數(shù);
step5分析操作碼的功能并執(zhí)行該指令。重復執(zhí)行以上步驟直到程序結束,對分離出的操作碼和操作數(shù)存入結構體progMEM定義的變量中。實現(xiàn)這一過程的函數(shù)結構如下:
pMEMStringSplit(char*IstructionString)
{IsCode_Num=newMemData;
⋯
if(scan_char==’;’)
{去除分號后的內容;}
if(scan_char==’:’)
{保存該指令所在單元地址;}
if(scan_char==’’)
{保存空格前的字符串;}
//得到的第一個字符串為操作碼
⋯
return(IsCode)
}
該函數(shù)入口參數(shù)為指令字符串,返回指向保存該指令的結構體變量的指針。生成目標代碼和執(zhí)行指令的過程可以用switch語句或事先設計函數(shù)跳轉表實現(xiàn)[4],本文采用switch語句實現(xiàn),實現(xiàn)函數(shù)結構如下:
voidGetCode(pMEMinCode)
{⋯
switch(opCode)
{casecode1:excuCode1();break;
casecode2:excuCode2();break;
⋯
casecodeN:excuCodeN();break;
}
⋯
}
以上代碼中excuCodeN的入口參數(shù)為指令的操作碼和相應的操作數(shù)。
3.2可視化仿真的實現(xiàn)
可視化仿真系統(tǒng)應該提供一個集成開發(fā)環(huán)境,在此環(huán)境下可以編輯新的匯編程序和打開已經存在的源程序,并能將用被仿真計算機語言所編寫的源程序匯編(編譯或解釋)成IBM-PC所能識別的代碼及執(zhí)行所需的操作,根據(jù)需要查詢相應存儲器單元的內容和端口的狀態(tài)并顯示查詢結果。本系統(tǒng)在實現(xiàn)集成開發(fā)環(huán)境時,設計一個文本窗口,在窗口內輸入的每條指令占用一行,程序輸入后,選擇工具菜單中的“執(zhí)行”命令,則對窗口內的指令逐行掃描,完成對程序的解釋執(zhí)行。程序執(zhí)行分單步執(zhí)行和連續(xù)執(zhí)行,如果是單步執(zhí)行,則執(zhí)行一條指令后顯示相應存儲單元或寄存器的內容。連續(xù)執(zhí)行,則在執(zhí)行完所有的指令后,彈出一個對話窗口,根據(jù)實際,可以查看所有數(shù)據(jù)存儲器和特殊功能寄存器的內容,或者輸入要查看的寄存器或內存單元的地址,顯示相應單元內容,結果顯示采用十進制或二進制。對于端口狀態(tài),顯示數(shù)據(jù)為二進制形式。結果的可視化查詢對于存儲器和寄存器采用不同的技術,為每一個寄存器設置一個文本框,用以顯示對應寄存器的內容,而所有程序中涉及到的存儲單元的內容顯示在同一個文本窗口中。
4結束語
本文介紹的可視化仿真系統(tǒng)的開發(fā)技術,使用圖形用戶界面(GUI),實驗結果表明,該方法顯示直觀、結果查詢方便,而且應用VC環(huán)境下在線匯編技術,編寫的程序代碼占用系統(tǒng)資源少,又能保證系統(tǒng)運行效率。雖然本文以IBM-PC和單片機作為應用實例,但是詳細分析其它異構計算機的體系結構和指令功能,使用本文提出的軟件移植的可視化仿真技術,不僅可以解決各種系統(tǒng)開發(fā)中的難題,而且可以解決各種異
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度批量貨物搬運與運輸合同
- 2024年度某大型工程建設項目施工合同
- 2024年人工智能研究員全職合同
- 2024國際許可合同的格式國際許可合同的種類
- 2024年廣告牌更新改造施工合同
- 2024規(guī)范的辦公室裝修合同范本
- 2024店面租房合同范本下載
- 2024年店面租賃升級協(xié)議
- 2024年度區(qū)塊鏈技術應用合作協(xié)議
- 2024年雙方自愿離婚協(xié)議書指南
- 租地種香蕉合同
- 舊市場提升改造方案
- 統(tǒng)編版 七年級上冊(2024修訂) 第四單元 13 紀念白求恩 課件
- 外匯兌換居間勞務協(xié)議
- 少兒趣味編程Scratch綜合實戰(zhàn)《小車巡線》教學設計
- 第4課《公民的基本權利和義務》(課件)-部編版道德與法治六年級上冊
- 國開(甘肅)2024年春《地域文化(專)》形考任務1-4終考答案
- 檔案整理及數(shù)字化服務方案(技術標 )
- 村紀檢監(jiān)督小組工作職責
- 《宏觀經濟學乘數(shù)論》PPT課件.ppt
- 警務監(jiān)督員表態(tài)發(fā)言(共4篇)
評論
0/150
提交評論