999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

異構計算機軟件移植可視化仿真技術

2009-10-29 10:07:54鄭麗麗
中國新技術新產品 2009年17期

鄭麗麗

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

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

1軟件移植方法

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

while(excutingFlag)

{ 取指令;

分析指令;

轉換成本層指令并保存;

}

執行轉換后的指令;

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

while(excutingFlag)

{取讀指令;

分析指令;

解釋執行;

}

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

2 數據結構描述

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

2.1 程序存儲器結構

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

typedef struct progMEM

{ char opCode;

unsigned label;

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

char opNum1;

char opNum2;

char opNum3;

pMEM recAddr;

//存放當前指令的地址

pMEM nextIs;

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

}MemData, *pMEM;

pMEM PC;

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

2.2 數據存儲器結構

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

char dataRAM[256];

int ramSP=0x30;

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

typedef exDataRAM

{ char data;

unsigned addrRAM;

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

exRAMpt exDataP;

}RAMdata, *exRAMpt;

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

3軟件移植的可視化仿真

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

3.1 軟件移植過程

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

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

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

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

step4 保存操作碼和操作數;

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

pMEM StringSplit(char *IstructionString)

{ IsCode_Num=new MemData;

if(scan_char==';')

{ 去除分號后的內容; }

if(scan_char==':')

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

if(scan_char==' ')

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

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

return(IsCode)

}

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

void GetCode(pMEM inCode)

{ …

switch(opCode)

{ case code1: excuCode1();break;

case code2: excuCode2(); break;

case codeN: excuCodeN();break;

}

}

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

3.2 可視化仿真的實現

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

4 結束語

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

參考文獻

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

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

主站蜘蛛池模板: 在线精品亚洲国产| 国产第一页屁屁影院| 亚洲中文字幕在线一区播放| 一级毛片基地| 高清欧美性猛交XXXX黑人猛交 | 任我操在线视频| 成人国产精品一级毛片天堂| 亚洲毛片一级带毛片基地| 美女被狂躁www在线观看| 亚洲欧洲自拍拍偷午夜色| 亚洲h视频在线| 精品天海翼一区二区| 国产真实乱子伦精品视手机观看 | 久久精品国产精品国产一区| 无码高潮喷水专区久久| 国产亚洲欧美日韩在线观看一区二区| 四虎国产成人免费观看| 91区国产福利在线观看午夜| 国产成人综合久久精品尤物| 日日摸夜夜爽无码| 精品伊人久久大香线蕉网站| 91丝袜在线观看| 亚洲乱亚洲乱妇24p| 免费A级毛片无码免费视频| 亚洲自偷自拍另类小说| 亚洲国产综合精品一区| 91探花国产综合在线精品| 国产成人乱无码视频| 红杏AV在线无码| 国产一级小视频| 国产日韩欧美一区二区三区在线 | 91精品伊人久久大香线蕉| 青青操国产| 中文字幕免费视频| 国产xxxxx免费视频| 麻豆精品在线播放| 激情综合网激情综合| 亚洲视频在线网| 色婷婷亚洲十月十月色天| 亚洲国产精品日韩av专区| 蝌蚪国产精品视频第一页| 久久综合色天堂av| 婷婷色中文网| 中日韩欧亚无码视频| 亚洲精品天堂在线观看| 欧美v在线| 久久综合五月婷婷| 久热99这里只有精品视频6| 欧美在线国产| 亚洲一区波多野结衣二区三区| 91精品日韩人妻无码久久| 久久综合激情网| 欧美国产精品不卡在线观看| 国产精品大白天新婚身材| 亚洲天堂精品在线| 四虎永久在线| 国产日韩精品欧美一区喷| 亚洲成人一区在线| 亚洲日本中文字幕乱码中文| 亚洲天堂伊人| 黄色一级视频欧美| 国产在线自乱拍播放| 日本久久网站| 日韩欧美中文字幕在线韩免费| 亚洲国产日韩一区| 四虎影视永久在线精品| 无码粉嫩虎白一线天在线观看| 91无码人妻精品一区二区蜜桃| 九九热精品免费视频| 98精品全国免费观看视频| 国产中文一区二区苍井空| 美女一区二区在线观看| 真实国产乱子伦视频| 一本大道AV人久久综合| 99国产精品免费观看视频| 伊人AV天堂| 久久综合一个色综合网| a色毛片免费视频| 国产精品自在自线免费观看| 91在线日韩在线播放| 在线欧美一区| 国产无人区一区二区三区|