SI02匯編語言集成開發(fā)環(huán)境介紹
4.2 模擬執(zhí)行程序(仿真程序)的實現(xiàn)本文引用地址:http://cafeforensic.com/article/165830.htm
模擬執(zhí)行程序(仿真程序)由C++語言編寫的軟件仿真的類來實現(xiàn)。該類被說明為匯編程序類的友員,以便訪問匯編程序類的數(shù)據(jù)成員。
類中構造了一結構型變量來實現(xiàn)對硬件方面的仿真,并用一個成員函數(shù)來模擬指令執(zhí)行的流程。該函數(shù)的參數(shù)是當前正運行的指令的PC值,返回將要運行的下條指令的PC值。
通過對匯編程序類中產生的每條指令所在的行號、程序計數(shù)器(PC)的地址、指令的機器碼和字節(jié)數(shù)的分析,確定該指令是否改變了特殊功能寄存器、片內RAM、片外RAM以及程序計數(shù)器(PC) 的值。并根據(jù)分析的結果更新特殊功能寄存器和RAM的值。若該指令是跳轉指令,需根據(jù)跳轉條件判斷跳轉的地址,獲得跳轉到的行的PC值,作為函數(shù)的返回值。否則將源程序的PC值增加1。
當然,該開發(fā)環(huán)境還支持單步執(zhí)行、執(zhí)行到斷點等程序調試方式,它們在實現(xiàn)方法上和連續(xù)執(zhí)行基本一致,只是單步執(zhí)行時每次只執(zhí)行一條語句,然后等待用戶輸入新的命令才開始執(zhí)行下條程序;執(zhí)行到斷點的實現(xiàn),只需在連續(xù)執(zhí)行流程中增加一個是否執(zhí)行到斷點了的判斷語句:如果不是斷點,則程序往下執(zhí)行;如果是斷點則停止執(zhí)行,等待用戶輸入新的命令。而新命令的輸入,則是通過編輯器界面上的調試菜單或鍵盤操作來實現(xiàn)。
4.3 編輯器(集成開發(fā)環(huán)境界面)的實現(xiàn)
界面設計的目的是為了提供良好的人機交互環(huán)境,集編輯、匯編、調試和通信于一體,便于使用。利用MFC的消息映像機制,通過鼠標和鍵盤事件來驅動相應程序的運行。面向程序設計語言的符號化調試技術的特點就是能夠支持在源程序的任何程序語句上設置斷點,并支持單步執(zhí)行、連續(xù)執(zhí)行、執(zhí)行到斷點等多種程序執(zhí)行方式。
上述所有功能都要以交互的方式來完成,并且以調試時顯示合適的源代碼的行號的形式來達到這些目的。面向程序設計語言的符號調試,可以面向多種程序設計語言,我們做的這個開發(fā)環(huán)境主要面向SI02匯編語言的程序設計,因此我們所要開發(fā)的調試環(huán)境就是為這個使用匯編語言編寫的程序提供調試服務。
面向程序設計語言的符號化調試技術的實現(xiàn)需要從編譯或匯編連接系統(tǒng)中取得幫助,也就是說,編譯或匯編連接系統(tǒng)在進行嵌入式軟件的編譯(匯編)生成時,要盡可能多的保留程序源代碼的信息,即在所產生的目標代碼文件中保存目標代碼與源代碼之間聯(lián)系的信息。包括從源代碼到目標代碼的對應關系的信息、程序調試過程中出現(xiàn)的錯誤信息、以及源代碼中所用到的符號的定義的信息。調試環(huán)境通過對目標文件結構進行分析,從已存在的信息中建立以下幾種聯(lián)系的運行時調試信息表,從而為實現(xiàn)面向程序設計語言的符號化調試提供了基礎。
(1)目標地址到源代碼的對應關系表;
(2)系統(tǒng)常量與內存地址的對應關系表;
(3)系統(tǒng)變量與內存地址的對應關系表;
(4)運行代碼的標號與目標地址的對應關系表;
(5)匯編或運行過程中出現(xiàn)的錯誤信息表
其中,目標地址到源代碼的對應關系可以由匯編以后生成的List文件和Obj文件來表示;系統(tǒng)常量與內存地址的對應關系表可由系統(tǒng)常量表中所保存的地址信息來建立;系統(tǒng)變量與內存地址的對應關系可由系統(tǒng)變量表中的信息來建立。另外匯編或運行過程中如果出現(xiàn)錯誤,調試器應能夠到錯誤信息文件中進行查找并顯示相應的錯誤信息。
建立這些聯(lián)系表,并不是在運行時直接提供調試所需要的信息,從這一角度來看,應用程序調試環(huán)境必須對下列現(xiàn)象進行處理:
(1)程序運行的當前行顯示;
(2)變量跟蹤與變量內容顯示;
(3)斷點行顯示;
(4)變量檢查及修改;
(5)錯誤信息顯示。
為解析上述現(xiàn)象,調試環(huán)境需要即時的取得模擬執(zhí)行模塊的執(zhí)行狀態(tài),并取得各種寄存器的值、內存狀態(tài)以及模擬執(zhí)行的方式,再通過對各種聯(lián)系表的處理來實現(xiàn)面向程序設計語言的調試。開發(fā)完成后的系統(tǒng)如圖5所示。
5.結論
SI02IDE作為面向SI02語言的集成開發(fā)環(huán)境,將方便用戶使用SI02語言進行各種開發(fā)工作。本文的創(chuàng)新點在于提高了軟件開發(fā)的速度、效率和質量,使該軟件成為軟件開發(fā)最重要的和必不可少的開發(fā)工具。但該開發(fā)環(huán)境在功能上仍有一些缺陷和不夠理想的地方。比如,對斷點位置的處理不如主流IDE方便和直觀,仍需進一步的改進和提高。
c語言相關文章:c語言教程
評論