當(dāng)前位置:首頁 > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀] 匯編語言作為可以直接對計(jì)算機(jī)硬件進(jìn)行操作的語言,無論語言和架構(gòu)如何發(fā)展,其最高的執(zhí)行效率和最直接的硬件操作都是不可替代的,這也是為什么絕大多數(shù)語言中都可以內(nèi)嵌匯編語言的原因。而在實(shí)際工作中,能使用匯

 匯編語言作為可以直接對計(jì)算機(jī)硬件進(jìn)行操作的語言,無論語言和架構(gòu)如何發(fā)展,其最高的執(zhí)行效率和最直接的硬件操作都是不可替代的,這也是為什么絕大多數(shù)語言中都可以內(nèi)嵌匯編語言的原因。而在實(shí)際工作中,能使用匯編語言熟練編寫程序的工作人員卻相當(dāng)匱乏,究其原因,除了匯編語言比較抽象,難于掌握以外,一個主要的原因就是匯編語言的上機(jī)環(huán)境普遍使用的是基于命令行的編譯、鏈接程序,沒有集成開發(fā)環(huán)境,造成程序在編制和調(diào)試上的困難。

  基于上述原因及實(shí)際工作需要,我們開發(fā)一個專用于SI02匯編語言的集成開發(fā)環(huán)境,以改善程序開發(fā)環(huán)境、提高編程效率。

  2.SI02匯編語言簡介

  SI02是自行研制的一種16位的微處理器芯片,該芯片有自己的指令系統(tǒng)和匯編語言—SI02。SI02匯編語言不支持?jǐn)?shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型,但是在語法、格式和結(jié)構(gòu)等方面和C語言幾乎完全一致,從而使用戶更加易于掌握。SI02編程語言不區(qū)分大小寫,但建議用戶用小寫字母編寫程序,以便提高編譯效率;SI02編程語言支持十進(jìn)制和十六進(jìn)制兩種數(shù)據(jù)表示方法,其中十六進(jìn)制的數(shù)據(jù)應(yīng)以“0x”作為數(shù)據(jù)的開頭。在使用該匯編語言編程時,要求遵循圖1所示的程序結(jié)構(gòu)。

  


 

  以上各結(jié)構(gòu)之中,除主程序之外都不是必要部分,但如若用到,則必須按照圖中所示順序出現(xiàn)。另外,程序結(jié)構(gòu)中的數(shù)據(jù)塊是指在一些應(yīng)用問題中,需使用一些固定數(shù)據(jù),如變換表格等,這些數(shù)據(jù)在SI02編程語言中以數(shù)據(jù)塊的形式出現(xiàn),數(shù)據(jù)塊部分一般出現(xiàn)在程序的末尾,格式如下:

  標(biāo)號: 數(shù)據(jù)1;[注釋]

  ………………

  數(shù)據(jù)n;[注釋]

  此數(shù)據(jù)塊的標(biāo)號應(yīng)作為系統(tǒng)常量定義。需要操作該數(shù)據(jù)塊時,將標(biāo)號賦給某個通用地址寄存器RA,然后按照存儲器尋址方式操作就可以了。

  3. 功能設(shè)計(jì)

  通過詳細(xì)分析,確定該集成開發(fā)環(huán)境的功能。

  3.1 SI02IDE功能分析

  用戶針對SI02語言的程序進(jìn)行編輯、編譯和調(diào)試等相應(yīng)操作,需要一種相應(yīng)的集成開發(fā)工具,并且能在功能設(shè)置、使用方法和界面設(shè)計(jì)等方面盡量與主流集成開發(fā)環(huán)境相同或相似,從而便于用戶使用,在這種要求下開發(fā)的SI02IDE主要具有以下五部分內(nèi)容:菜單欄、工具欄、程序編輯窗口、工作環(huán)境窗口和信息輸出窗口。其中工作環(huán)境窗口和信息輸出窗口通過屬性頁或標(biāo)簽頁結(jié)構(gòu)可以同時顯示多項(xiàng)內(nèi)容。

  

 

  1) 菜單:用戶的文件、編輯、搜索、窗口等命令都可以通過菜單條上的命令發(fā)出。

  2) 工具條窗口:用戶的文件、編輯、搜索、窗口等命令都可以通過工具條窗口上的圖形快捷按鈕發(fā)出。

  3) 工作環(huán)境窗口:可以顯示系統(tǒng)目錄、正在編輯的文件,文件中的函數(shù)以樹形目錄顯示出來??梢酝ㄟ^雙擊打開文件,可以通過此窗口中的快捷菜單快速獲得函數(shù)的位置。

  4) 信息輸出窗口:顯示編譯過程中各個階段的狀態(tài)和編譯進(jìn)度,以免編譯時間較長時用戶誤會死機(jī),還要顯示編譯時發(fā)現(xiàn)的錯誤名稱及其類型和位置。顯示查找結(jié)果,標(biāo)明查找內(nèi)容所在文件和行號,可以通過雙擊名稱而使程序編輯窗口顯示相應(yīng)的內(nèi)容。

  5)文本編輯窗口:文本編輯窗口顯示程序源文件,對SI02語言中的語法關(guān)鍵字進(jìn)行高亮顯示,并可以直接修改程序,而在調(diào)試過程中,這里將顯示程序執(zhí)行到的地點(diǎn)以及斷點(diǎn)等信息。另外,目標(biāo)文件、臨時文件和頭文件等也可以在這里顯示。用戶可以很方便的選擇正在編輯的文件,并可以切換到全屏狀態(tài)編輯。

  另外,用戶要在脫離SI02處理器的情況下,在PC機(jī)實(shí)現(xiàn)對SI02匯編程序的執(zhí)行,那么需要使用軟件的手段來實(shí)現(xiàn)該過程。在此情形下,開發(fā)軟件仿真器也是很必要的,仿真(Emulator)就是在PC機(jī)中用軟件模擬微處理器CPU的特性,實(shí)現(xiàn)對算術(shù)邏輯單元(ALU)和指令系統(tǒng)的仿真,使得由匯編程序產(chǎn)生的目標(biāo)代碼可以在匯編語言集成開發(fā)環(huán)境中運(yùn)行,并具有調(diào)試功能。其必要性主要有以下因素:

  1)要脫離真實(shí)的硬件,在可視化程度較高的界面下執(zhí)行匯編程序,必須有仿真器模擬真實(shí)處理器的各項(xiàng)功能;

  2)用戶的匯編程序在執(zhí)行過程中可能會用到某些存儲空間,該仿真器能夠使用軟件手段為用戶提供該空間;

  3)在模擬執(zhí)行用戶程序時,用戶需要設(shè)置斷點(diǎn)、單步執(zhí)行、連續(xù)執(zhí)行、進(jìn)入子程序和越過子程序等各種執(zhí)行方式,仿真器應(yīng)能對用戶輸入的調(diào)試命令進(jìn)行識別并執(zhí)行相應(yīng)命令;

  4)執(zhí)行用戶命令后,能對該命令的執(zhí)行結(jié)果進(jìn)行判斷,并能根據(jù)判斷結(jié)果修改相應(yīng)的寄存器或存儲器的內(nèi)容;

  5)該仿真器執(zhí)行程序過程中應(yīng)能保存源程序的相關(guān)信息,以方便通過界面反饋給用戶。

  3.2 SI02IDE功能設(shè)計(jì)

  從以上對該集成開發(fā)環(huán)境的需求分析可以看出,該系統(tǒng)可以分為SI02語言編輯器、匯編和模擬執(zhí)行三大功能模塊。

  1)SI02語言編輯器:它的主要功能是為程序員提供一個開發(fā)SI02源程序的界面。該界面上包括三個主要窗口:

  (1)程序編輯窗口:主要用來編輯源程序,具有打開、關(guān)閉、復(fù)制、粘貼以及實(shí)現(xiàn)關(guān)鍵字變色等功能;而在程序調(diào)試過程中,這里將顯示程序執(zhí)行到的地點(diǎn)以及設(shè)置的斷點(diǎn)等信息,程序單步執(zhí)行時還跟蹤顯示程序執(zhí)行的過程。另外,目標(biāo)文件、臨時文件和頭文件等也可以在這里顯示。

  (2)工作環(huán)境窗口:該窗口以樹型結(jié)構(gòu)的形式來顯示當(dāng)前用戶工程中所使用的函數(shù)文件,雙擊該某個結(jié)點(diǎn)時程序編輯窗口中會自動顯示該結(jié)點(diǎn)上的文件或函數(shù)。

  (3)信息輸出窗口:主要用來顯示編譯信息和查找信息。

  2)匯編程序:該模塊的主要功能是把源程序匯編成目標(biāo)代碼文件。這里的源程序是SI02匯編語言程序,目標(biāo)代碼是SI02處理器的機(jī)器語言代碼。

  3)模擬執(zhí)行程序:它的主要功能是模擬SI02處理器執(zhí)行SI02機(jī)器語言文件。該模塊和編輯器相結(jié)合,為用戶提供設(shè)置斷點(diǎn)單步執(zhí)行、連續(xù)執(zhí)行、執(zhí)行到斷點(diǎn)等各種程序調(diào)試手段,極大的提高了程序的開發(fā)效率。

  

 

  根據(jù)以上對系統(tǒng)功能的劃分以及各個模塊的功能,可以得出系統(tǒng)的詳細(xì)設(shè)計(jì)圖如圖3所示:程程序編輯器和模擬執(zhí)行功能模塊細(xì)分如圖4所示。通過點(diǎn)擊菜單條上的調(diào)試菜單項(xiàng)中除編譯外的二級菜單,可以激發(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)試中可以打開特殊功能寄存器窗口、代碼窗口(顯示程序存儲器的內(nèi)容)和變量窗口,觀察指令運(yùn)行對特殊功能寄存器的影響,并可通過變量窗口查看變量的值

  

 

  3.3 SI02IDE接口說明

  1)List文件:列表文件List.lst提供源文件與目標(biāo)文件中各行指令的對應(yīng)關(guān)系,其一行格式為:

  [SL:源文件行號][TL:目標(biāo)文件行號]源程序內(nèi)容

  其中若源程序行沒有與之相對應(yīng)的目標(biāo)程序行存在(比如注釋),則與此源程序行對應(yīng)的目標(biāo)程序行號表示為[xxxxx]。

  2)Obj文件:目標(biāo)文件Obj.obj存儲將源程序匯編生成的中間代碼,其格式為三元式,描述一行如下:

  L:行號,操作符,操作數(shù)1,操作數(shù)2;

  其中,若兩個操作數(shù)之一或全部不存在,則相應(yīng)位置表示為xxxxx。

  3)錯誤信息文件:錯誤信息文件用來存儲程序匯編期間和模擬執(zhí)行時發(fā)現(xiàn)的錯誤信息,包括錯誤類型、錯誤位置等;它有匯編和模擬執(zhí)行程序?qū)懭?,由編輯模塊讀出。

  4)數(shù)據(jù)信息文件:用來存儲程序執(zhí)行結(jié)束后,存儲器和寄存器里的數(shù)據(jù)信息。它由模擬執(zhí)行程序?qū)懭?,?dāng)用戶需要這些信息時,由編輯器模塊負(fù)責(zé)讀出顯示到界面相應(yīng)的位置。

  4.SI02IDE的實(shí)現(xiàn)

  根據(jù)上節(jié)設(shè)計(jì)的系統(tǒng)功能可知,系統(tǒng)分別需要從以下三個方面實(shí)現(xiàn)。

  4.1匯編程序的實(shí)現(xiàn)

  匯編程序是將匯編語言轉(zhuǎn)換為機(jī)器代碼的軟件,該過程的源語言是SI02匯編語言,目標(biāo)語言是面向SI02芯片的機(jī)器代碼。利用C++語言中類的封裝性,將匯編程序作為整個軟件中的一個類來處理。以確保數(shù)據(jù)成員的有效性,有效防止編程錯誤。該類的功能是將匯編源程序逐行讀入,并進(jìn)行判斷、計(jì)算、分析,最后給出正確的機(jī)器碼。

  這需要對匯編源程序進(jìn)行兩次掃描,第一次掃描主要是對程序中所出現(xiàn)的變量以及標(biāo)號建立檔案,檔案用于存放變量和標(biāo)號的地址。第二次掃描主要是對整個源程序進(jìn)行正確的譯碼,若源程序有錯,給出所有出錯信息,以便于檢查和修改;源程序若無錯誤則生成可執(zhí)行的目標(biāo)代碼。

  匯編程序類中分別用三個數(shù)組保存了每條指令的行號、程序計(jì)數(shù)器地址、和字節(jié)數(shù),以便在軟件仿真類中使用。匯編結(jié)束要生成error.txt,list.txt和obj.txt三個配置文件,他們存放有關(guān)源匯編語言程序的相關(guān)信息,以便在調(diào)試模塊中使用。

  4.2 模擬執(zhí)行程序(仿真程序)的實(shí)現(xiàn)

  模擬執(zhí)行程序(仿真程序)由C++語言編寫的軟件仿真的類來實(shí)現(xiàn)。該類被說明為匯編程序類的友員,以便訪問匯編程序類的數(shù)據(jù)成員。

  類中構(gòu)造了一結(jié)構(gòu)型變量來實(shí)現(xiàn)對硬件方面的仿真,并用一個成員函數(shù)來模擬指令執(zhí)行的流程。該函數(shù)的參數(shù)是當(dāng)前正運(yùn)行的指令的PC值,返回將要運(yùn)行的下條指令的PC值。

  通過對匯編程序類中產(chǎn)生的每條指令所在的行號、程序計(jì)數(shù)器(PC)的地址、指令的機(jī)器碼和字節(jié)數(shù)的分析,確定該指令是否改變了特殊功能寄存器、片內(nèi)RAM、片外RAM以及程序計(jì)數(shù)器(PC) 的值。并根據(jù)分析的結(jié)果更新特殊功能寄存器和RAM的值。若該指令是跳轉(zhuǎn)指令,需根據(jù)跳轉(zhuǎn)條件判斷跳轉(zhuǎn)的地址,獲得跳轉(zhuǎn)到的行的PC值,作為函數(shù)的返回值。否則將源程序的PC值增加1。

  當(dāng)然,該開發(fā)環(huán)境還支持單步執(zhí)行、執(zhí)行到斷點(diǎn)等程序調(diào)試方式,它們在實(shí)現(xiàn)方法上和連續(xù)執(zhí)行基本一致,只是單步執(zhí)行時每次只執(zhí)行一條語句,然后等待用戶輸入新的命令才開始執(zhí)行下條程序;執(zhí)行到斷點(diǎn)的實(shí)現(xiàn),只需在連續(xù)執(zhí)行流程中增加一個是否執(zhí)行到斷點(diǎn)了的判斷語句:如果不是斷點(diǎn),則程序往下執(zhí)行;如果是斷點(diǎn)則停止執(zhí)行,等待用戶輸入新的命令。而新命令的輸入,則是通過編輯器界面上的調(diào)試菜單或鍵盤操作來實(shí)現(xiàn)。

  4.3 編輯器(集成開發(fā)環(huán)境界面)的實(shí)現(xiàn)

  界面設(shè)計(jì)的目的是為了提供良好的人機(jī)交互環(huán)境,集編輯、匯編、調(diào)試和通信于一體,便于使用。利用MFC的消息映像機(jī)制,通過鼠標(biāo)和鍵盤事件來驅(qū)動相應(yīng)程序的運(yùn)行。面向程序設(shè)計(jì)語言的符號化調(diào)試技術(shù)的特點(diǎn)就是能夠支持在源程序的任何程序語句上設(shè)置斷點(diǎn),并支持單步執(zhí)行、連續(xù)執(zhí)行、執(zhí)行到斷點(diǎn)等多種程序執(zhí)行方式。

  上述所有功能都要以交互的方式來完成,并且以調(diào)試時顯示合適的源代碼的行號的形式來達(dá)到這些目的。面向程序設(shè)計(jì)語言的符號調(diào)試,可以面向多種程序設(shè)計(jì)語言,我們做的這個開發(fā)環(huán)境主要面向SI02匯編語言的程序設(shè)計(jì),因此我們所要開發(fā)的調(diào)試環(huán)境就是為這個使用匯編語言編寫的程序提供調(diào)試服務(wù)。

  面向程序設(shè)計(jì)語言的符號化調(diào)試技術(shù)的實(shí)現(xiàn)需要從編譯或匯編連接系統(tǒng)中取得幫助,也就是說,編譯或匯編連接系統(tǒng)在進(jìn)行嵌入式軟件的編譯(匯編)生成時,要盡可能多的保留程序源代碼的信息,即在所產(chǎn)生的目標(biāo)代碼文件中保存目標(biāo)代碼與源代碼之間聯(lián)系的信息。包括從源代碼到目標(biāo)代碼的對應(yīng)關(guān)系的信息、程序調(diào)試過程中出現(xiàn)的錯誤信息、以及源代碼中所用到的符號的定義的信息。調(diào)試環(huán)境通過對目標(biāo)文件結(jié)構(gòu)進(jìn)行分析,從已存在的信息中建立以下幾種聯(lián)系的運(yùn)行時調(diào)試信息表,從而為實(shí)現(xiàn)面向程序設(shè)計(jì)語言的符號化調(diào)試提供了基礎(chǔ)。

  (1)目標(biāo)地址到源代碼的對應(yīng)關(guān)系表;

  (2)系統(tǒng)常量與內(nèi)存地址的對應(yīng)關(guān)系表;

  (3)系統(tǒng)變量與內(nèi)存地址的對應(yīng)關(guān)系表;

  (4)運(yùn)行代碼的標(biāo)號與目標(biāo)地址的對應(yīng)關(guān)系表;

  (5)匯編或運(yùn)行過程中出現(xiàn)的錯誤信息表

  其中,目標(biāo)地址到源代碼的對應(yīng)關(guān)系可以由匯編以后生成的List文件和Obj文件來表示;系統(tǒng)常量與內(nèi)存地址的對應(yīng)關(guān)系表可由系統(tǒng)常量表中所保存的地址信息來建立;系統(tǒng)變量與內(nèi)存地址的對應(yīng)關(guān)系可由系統(tǒng)變量表中的信息來建立。另外匯編或運(yùn)行過程中如果出現(xiàn)錯誤,調(diào)試器應(yīng)能夠到錯誤信息文件中進(jìn)行查找并顯示相應(yīng)的錯誤信息。

  建立這些聯(lián)系表,并不是在運(yùn)行時直接提供調(diào)試所需要的信息,從這一角度來看,應(yīng)用程序調(diào)試環(huán)境必須對下列現(xiàn)象進(jìn)行處理:

  (1)程序運(yùn)行的當(dāng)前行顯示;

  (2)變量跟蹤與變量內(nèi)容顯示;

  (3)斷點(diǎn)行顯示;

  (4)變量檢查及修改;

  (5)錯誤信息顯示。

  為解析上述現(xiàn)象,調(diào)試環(huán)境需要即時的取得模擬執(zhí)行模塊的執(zhí)行狀態(tài),并取得各種寄存器的值、內(nèi)存狀態(tài)以及模擬執(zhí)行的方式,再通過對各種聯(lián)系表的處理來實(shí)現(xiàn)面向程序設(shè)計(jì)語言的調(diào)試。開發(fā)完成后的系統(tǒng)如圖5所示。

  

 

  5.結(jié)論

  SI02IDE作為面向SI02語言的集成開發(fā)環(huán)境,將方便用戶使用SI02語言進(jìn)行各種開發(fā)工作。本文的創(chuàng)新點(diǎn)在于提高了軟件開發(fā)的速度、效率和質(zhì)量,使該軟件成為軟件開發(fā)最重要的和必不可少的開發(fā)工具。但該開發(fā)環(huán)境在功能上仍有一些缺陷和不夠理想的地方。比如,對斷點(diǎn)位置的處理不如主流IDE方便和直觀,仍需進(jìn)一步的改進(jìn)和提高。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉