SI02匯編語(yǔ)言集成開發(fā)環(huán)境的設(shè)計(jì)開發(fā)
根據(jù)以上對(duì)系統(tǒng)功能的劃分以及各個(gè)模塊的功能,可以得出系統(tǒng)的詳細(xì)設(shè)計(jì)圖如圖3所示:程程序編輯器和模擬執(zhí)行功能模塊細(xì)分如圖4所示。通過點(diǎn)擊菜單條上的調(diào)試菜單項(xiàng)中除編譯外的二級(jí)菜單,可以激發(fā)軟件仿真類中相應(yīng)的成員函數(shù),實(shí)現(xiàn)調(diào)試的功能。既可以采用連續(xù)執(zhí)行、跟蹤(StepInto細(xì)分圖單步運(yùn)行且進(jìn)入子程序)和步越(StepOver單步運(yùn)行但不進(jìn)入子程序)方式進(jìn)行調(diào)試,也可以設(shè)置斷點(diǎn)并使程序運(yùn)行至斷點(diǎn)處或運(yùn)行至光標(biāo)處進(jìn)行調(diào)試。調(diào)試中可以打開特殊功能寄存器窗口、代碼窗口(顯示程序存儲(chǔ)器的內(nèi)容)和變量窗口,觀察指令運(yùn)行對(duì)特殊功能寄存器的影響,并可通過變量窗口查看變量的值
3.3 SI02IDE接口說(shuō)明
1)List文件:列表文件List.lst提供源文件與目標(biāo)文件中各行指令的對(duì)應(yīng)關(guān)系,其一行格式為:
[SL:源文件行號(hào)][TL:目標(biāo)文件行號(hào)]源程序內(nèi)容
其中若源程序行沒有與之相對(duì)應(yīng)的目標(biāo)程序行存在(比如注釋),則與此源程序行對(duì)應(yīng)的目標(biāo)程序行號(hào)表示為[xxxxx]。
2)Obj文件:目標(biāo)文件Obj.obj存儲(chǔ)將源程序匯編生成的中間代碼,其格式為三元式,描述一行如下:
L:行號(hào),操作符,操作數(shù)1,操作數(shù)2;
其中,若兩個(gè)操作數(shù)之一或全部不存在,則相應(yīng)位置表示為xxxxx。
3)錯(cuò)誤信息文件:錯(cuò)誤信息文件用來(lái)存儲(chǔ)程序匯編期間和模擬執(zhí)行時(shí)發(fā)現(xiàn)的錯(cuò)誤信息,包括錯(cuò)誤類型、錯(cuò)誤位置等;它有匯編和模擬執(zhí)行程序?qū)懭?,由編輯模塊讀出。
4)數(shù)據(jù)信息文件:用來(lái)存儲(chǔ)程序執(zhí)行結(jié)束后,存儲(chǔ)器和寄存器里的數(shù)據(jù)信息。它由模擬執(zhí)行程序?qū)懭?,?dāng)用戶需要這些信息時(shí),由編輯器模塊負(fù)責(zé)讀出顯示到界面相應(yīng)的位置。
4.SI02IDE的實(shí)現(xiàn)
根據(jù)上節(jié)設(shè)計(jì)的系統(tǒng)功能可知,系統(tǒng)分別需要從以下三個(gè)方面實(shí)現(xiàn)。
4.1匯編程序的實(shí)現(xiàn)
匯編程序是將匯編語(yǔ)言轉(zhuǎn)換為機(jī)器代碼的軟件,該過程的源語(yǔ)言是SI02匯編語(yǔ)言,目標(biāo)語(yǔ)言是面向SI02芯片的機(jī)器代碼。利用C++語(yǔ)言中類的封裝性,將匯編程序作為整個(gè)軟件中的一個(gè)類來(lái)處理。以確保數(shù)據(jù)成員的有效性,有效防止編程錯(cuò)誤。該類的功能是將匯編源程序逐行讀入,并進(jìn)行判斷、計(jì)算、分析,最后給出正確的機(jī)器碼。
這需要對(duì)匯編源程序進(jìn)行兩次掃描,第一次掃描主要是對(duì)程序中所出現(xiàn)的變量以及標(biāo)號(hào)建立檔案,檔案用于存放變量和標(biāo)號(hào)的地址。第二次掃描主要是對(duì)整個(gè)源程序進(jìn)行正確的譯碼,若源程序有錯(cuò),給出所有出錯(cuò)信息,以便于檢查和修改;源程序若無(wú)錯(cuò)誤則生成可執(zhí)行的目標(biāo)代碼。
匯編程序類中分別用三個(gè)數(shù)組保存了每條指令的行號(hào)、程序計(jì)數(shù)器地址、和字節(jié)數(shù),以便在軟件仿真類中使用。匯編結(jié)束要生成error.txt,list.txt和obj.txt三個(gè)配置文件,他們存放有關(guān)源匯編語(yǔ)言程序的相關(guān)信息,以便在調(diào)試模塊中使用。
評(píng)論