計算機軟件移植可視化研究論文

時間:2022-07-25 07:01:00

導語:計算機軟件移植可視化研究論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

計算機軟件移植可視化研究論文

摘要:針對控制系統開發中程序調試難的問題,分析了計算機體系結構和指令系統,研究異構計算機軟件移植可視化仿真技術,并設計了軟件移植的可視化仿真系統。實驗表明,該方法能解決異構機之間軟件兼容和移植問題,提高了控制系統開發的效率。

關鍵詞:異構計算機;軟件移植;可視化仿真;指令系統

微機已經廣泛應用于各種控制系統、智能儀器儀表、智能家電等領域。單片機性價比的提高,使單片機成為嵌入式系統的主流芯片。

目前,控制系統開發的常用方法是在PC機上編寫和調試單片機系統程序。雖然,國內外有不少單片機開發系統,但由于單片機與PC機體系結構不同,用單片機指令編寫的程序無法直接在PC機上運行,因此,系統開發時要有仿真器、編程器等專用設備,程序運行不能脫離單片機開發裝置。因此,基于單片機的系統開發,源程序調試工作非常復雜,操作繁瑣,調試結果的顯示不夠直觀。針對上述情況,研究異構計算機軟件移植可視化仿真技術,設計獨立于單片機開發裝置的可視化仿真系統,應用于控制系統和嵌入式系統的開發和實驗具有重要的意義。本文在研究異構計算機軟件移植可視化仿真技術的基礎上,實現了在IBM-PC機上運行51系列單片機指令的可視化仿真系統,該仿真系統完全獨立于單片機開發裝置。

1軟件移植概述

1.1軟件移植方法

計算機系統層次模型[1]說明了各層次之間的關系及程序的執行情況。指令在計算機中執行的過程,實際上是指令由系統的高層逐級向低層轉換的過程,從應用語言級直到微程序語言級,最后產生各種控制命令,驅動計算機的硬件完成指令功能。高層語言轉換為低層語言的實現方法有翻譯法和解釋法:翻譯法是將高層程序變換成低一層等效程序,其處理流程可描述為

while(excutingFlag)

{取指令;

分析指令;

轉換成本層指令并保存;

}

執行轉換后的指令;

上述流程中變量excutingFlag為執行程序是否結束標志,其值為0表示程序結束。翻譯法又分為動態翻譯和靜態翻譯。動態翻譯在程序運行過程中,將被仿真的指令逐條轉換成仿真程序代碼;靜態翻譯是代一次將所有被仿真的程序轉換為仿真代碼后執行。解釋法是低層機器仿真高層機器級語句或指令,即對高層機器級語言進行解釋并執行。其處理流程可描述為

while(excutingFlag)

{取讀指令;

分析指令;

解釋執行;

}

翻譯法速度快,但編程和調試困難;解釋法易實現和調試,但速度慢。異構機之間的軟件移植實際上也可以看成是將一臺機器上所描述的語言在另一臺機器上從高層向低層轉換的過程。要實現異構機之間的軟件移植,可以采用模擬和仿真兩種方法[1]。模擬就是用一臺機器(宿主機)的機器語言解釋另一臺機器(虛擬機)的指令系統來實現軟件移植方法。但是這種方法運行速度顯著降低、實時性差、編寫程序困難。仿真是用微程序(宿主機)直接解釋另一種機器(目標機)指令系統的方法。這種方法速度快,但微程序機器結構依賴于傳統機器級結構,開發人員需要了解微程序機器的邏輯結構,當兩種機器結構差別較大時很難仿真。

1.2軟件移植步驟

在實際應用中,為了解決異構計算機之間軟件移植問題,可以根據設計人員的需要開發指令仿真系統。指令仿真系統開發的一般步驟為

(1)分析仿真計算機和被仿真計算機的系統結構、指令系統、指令功能和指令結構;

(2)需求分析,編寫程序模塊和各模塊流程圖;

(3)選擇合適的編程語言并編寫程序;

(4)程序調試和優化;

2數據結構描述

數據結構描述關系到程序運行效率。在實際應用中,我們設計的仿真系統主要解決在IBM-PC機上執行由MCS51系列單片機指令系統所編寫的匯編源程序,在分析MCS51單片機內部結構[2]的基礎上,根據C語言的特點,同時兼顧程序運行的效率,合理地描述了系統設計所需的數據結構。

2.1程序存儲器結構

MCS51內部雖然只有4kB的程序存儲器,但在實際應用中可以在外部擴展至64kB,其內部有一個16位的程序計數器PC可尋址64kB以訪問程序存儲器。根據單片機指令結構[2]及C語言的數據類型關系,并考慮到程序仿真時并不會用到所有的存儲單元,因此采用鏈式存儲結構。程序存儲器的數據結構描述如下:

typedefstructprogMEM

{charopCode;

unsignedlabel;

//該條指令如果有標號,則存放其地址

charopNum1;

charopNum2;

charopNum3;

pMEMrecAddr;

//存放當前指令的地址

pMEMnextIs;

//指向下一條指令的地址

}MemData,*pMEM;

pMEMPC;

在結構體中,幾個字符型變量分別用于存放指令的操作碼和操作數,并用結構體指針變量存放當前指令及下一條指令的地址。仿真系統將單片機源程序翻譯成目標代碼放在程序存儲器(結構體)中,通過結構體類型的指針變量可以訪問程序存儲器中的指令。

2.2數據存儲器結構

MCS51將工作寄存器、端口和數據存儲器統一編址,存儲空間為256B。堆棧區設在30H~7FH,由堆棧指針SP指向棧頂。內部RAM,除了工作寄存器、位標志、堆棧以外的單元,其余都可以當一般數據寄存器使用。如果內部數據存儲器不夠用,可以外接數據存儲器,擴展至64kB。內部數據存儲器在程序調試時需經常查看單元內容,且數量不大,因此將內部數據存儲器定義為數組,堆棧指針定義為整型,并初始化為30H。

chardataRAM[256];

intramSP=0x30;

數據存儲器單元的地址和數組的下標對應,這樣在程序調試時,如果要查看內部數據存儲器的內容,只要查看數據相應元素的值即可。另外定義一個結構體類型,模擬外部擴展的數據存儲器,結構體定義如下:

typedefexDataRAM

{chardata;

unsignedaddrRAM;

//存放存儲單元的地址,用于查詢

exRAMptexDataP;

}RAMdata,*exRAMpt;

如果用到外部數據存儲器,則將數據存在動態鏈式存儲結構中,由于仿真程序運行時使用本機的存儲器,因此其地址與仿真的單片機的地址不同,用一個變量addrRAM存放數據存儲器的地址,以便于地址單元內的數據查詢。

3軟件移植的可視化仿真

軟件移植可視化仿真系統,不僅要完成匯編指令的功能,而且應該根據要求查詢程序執行后各寄存器的內容、端口的狀態和運行結果。在系統開發過程中,我們詳細分析了單片機指令格式[2]和計算機執行指令的過程[3],并根據仿真的速度要求,通過比較各語言的特點,選用VisualC++語言和80x86匯編語言,采用C語言環境下的在線匯編技術,用解釋法實現可視化指令仿真系統。

3.1軟件移植過程

解釋法完成異構機指令仿真,需要對源程序中的每一條指令執行如下操作:

step1對指令從右向左掃描,如果有注釋,則去掉注釋;

setp2對指令從左向右掃描,如果有標號,則去掉標號,并記錄標號所在位置;

step3將無標號和注釋的指令從左向右逐步分離出操作碼和操作數;

step4保存操作碼和操作數;

step5分析操作碼的功能并執行該指令。重復執行以上步驟直到程序結束,對分離出的操作碼和操作數存入結構體progMEM定義的變量中。實現這一過程的函數結構如下:

pMEMStringSplit(char*IstructionString)

{IsCode_Num=newMemData;

if(scan_char==’;’)

{去除分號后的內容;}

if(scan_char==’:’)

{保存該指令所在單元地址;}

if(scan_char==’’)

{保存空格前的字符串;}

//得到的第一個字符串為操作碼

return(IsCode)

}

該函數入口參數為指令字符串,返回指向保存該指令的結構體變量的指針。生成目標代碼和執行指令的過程可以用switch語句或事先設計函數跳轉表實現[4],本文采用switch語句實現,實現函數結構如下:

voidGetCode(pMEMinCode)

{⋯

switch(opCode)

{casecode1:excuCode1();break;

casecode2:excuCode2();break;

casecodeN:excuCodeN();break;

}

}

以上代碼中excuCodeN的入口參數為指令的操作碼和相應的操作數。

3.2可視化仿真的實現

可視化仿真系統應該提供一個集成開發環境,在此環境下可以編輯新的匯編程序和打開已經存在的源程序,并能將用被仿真計算機語言所編寫的源程序匯編(編譯或解釋)成IBM-PC所能識別的代碼及執行所需的操作,根據需要查詢相應存儲器單元的內容和端口的狀態并顯示查詢結果。本系統在實現集成開發環境時,設計一個文本窗口,在窗口內輸入的每條指令占用一行,程序輸入后,選擇工具菜單中的“執行”命令,則對窗口內的指令逐行掃描,完成對程序的解釋執行。程序執行分單步執行和連續執行,如果是單步執行,則執行一條指令后顯示相應存儲單元或寄存器的內容。連續執行,則在執行完所有的指令后,彈出一個對話窗口,根據實際,可以查看所有數據存儲器和特殊功能寄存器的內容,或者輸入要查看的寄存器或內存單元的地址,顯示相應單元內容,結果顯示采用十進制或二進制。對于端口狀態,顯示數據為二進制形式。結果的可視化查詢對于存儲器和寄存器采用不同的技術,為每一個寄存器設置一個文本框,用以顯示對應寄存器的內容,而所有程序中涉及到的存儲單元的內容顯示在同一個文本窗口中。

4結束語

本文介紹的可視化仿真系統的開發技術,使用圖形用戶界面(GUI),實驗結果表明,該方法顯示直觀、結果查詢方便,而且應用VC環境下在線匯編技術,編寫的程序代碼占用系統資源少,又能保證系統運行效率。雖然本文以IBM-PC和單片機作為應用實例,但是詳細分析其它異構計算機的體系結構和指令功能,使用本文提出的軟件移植的可視化仿真技術,不僅可以解決各種系統開發中的難題,而且可以解決各種異構計算機之間的軟件兼容性和移植性問題。

參考文獻

1張吉鋒,徐煒民,嚴允中.計算機系統結構.北京:電子工業出版社,1997

2徐君毅,張友德,余寶洪等.單片微型計算機原理與應用.上海:上海科學技術出版社,1990

3KaiHwang.AdvancedComputerArchitecture.Beijing:ChinaMach-inePress,1999

4王萍,王險峰.CPU仿真程序的編程方法與優化.計算機應用研究,2000,(8)