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

基于CPU仿真器的匯編語言學習系統設計與實現

2010-02-07 01:50:20盛羽余進陳松喬王建新
中南大學學報(自然科學版) 2010年6期
關鍵詞:指令調試

盛羽,余進,陳松喬,王建新

(中南大學 信息科學與工程學院,湖南 長沙,410083)

基于CPU仿真器的匯編語言學習系統設計與實現

盛羽,余進,陳松喬,王建新

(中南大學 信息科學與工程學院,湖南 長沙,410083)

提出一種基于CPU仿真器的匯編語言學習系統設計模型和實現方法。該系統利用JavaBean組件技術實現 CPU的仿真;結合多線程技術和鎖機制實現組件的數據觸發式調度機制,有效地解決了具有復雜關系的組件之間的調度運行問題,保證了微命令的有序執行;基于脈沖信號的事件觸發機制,實現了微指令的單步調試;基于所設計的CPU仿真器指令系統,采用現代編譯技術設計了一種匯編器,實現了CPU仿真器上匯編指令到機器指令的快速編譯。與已有的匯編語言學習系統相比,本系統不僅在通用性、交互性等方面都有較大提高,而且能形象直觀地展示虛擬寄存器等各個虛擬芯片的實時狀態,記錄對應的微指令流,從而更精確地監視匯編指令在CPU仿真器中的執行過程。

CPU仿真器;匯編語言;編譯技術;微指令流

匯編語言是計算機相關專業的重要基礎內容[1]。隨著信息技術的快速發展,各種高級語言和應用開發環境日趨完善。但不容忽視的是:在各種消費電子產品的內核程序開發、通信底層協議開發及各種DSP應用中,匯編語言繼續起著不可替代的作用[2]。匯編語言面向機器,它能夠為程序員操縱機器硬件系統提供最直接的途徑,而且可以使程序員編寫出在“時間”和“空間”2個方面最具效率的程序[3]。但在實際教學中,匯編語言一直是個難教難學的課程[4?5]。究其原因,主要有以下3個方面:首先,匯編語言教學重點之一是特定處理器結構的介紹[6],然而,真實處理器的內部結構對外界是不可見、透明的,僅僅通過文字描述和概念講解的傳統教學模式很難使學生對處理器的整體結構產生直觀、感性的認識;其次,機器執行匯編指令的過程,即指令的取指、譯碼、執行全過程,也是個抽象的概念,難以理解[7];此外,目前比較好的匯編語言集成開發環境不多見,而通常上機環境中采用DOS命令行的操作方式十分煩瑣。因此,迫切需要一個易于操作、功能完善、交互性強、高度仿真的匯編語言學習平臺來輔助教學。目前,針對匯編語言的各類學習平臺正在不斷開發和研究中,并取得了一定的成果。文獻[8]給出了基于多媒體與WEB技術的計算機結構與匯編語言CAL系統,該系統利用FLASH技術,能較好地演示指令運行過程中的數據流動,但其缺點是不支持用戶輸入和運行自己的程序,交互性較差;文獻[9?12]介紹了基于軟件仿真技術的可視化匯編語言學習平臺,它們針對特定處理器上的指令集進行了仿真,并且具有較好的交互性和可視化,但它們都沒能在微指令級對指令功能進行分解,因此,無法對指令的執行流程作微指令級的單步調試;文獻[13]介紹了基于Web的匯編語言仿真實驗系統,該系統為用戶提供了有針對性特點的示例程序,并支持用戶輸入程序。此外,Emu8086公司的emu8086以及文獻[14]中提到的Sim8086仿真了Intel8086處理器,支持8086匯編語言程序的調試運行。雖然這些仿真軟件針對特定處理器實現了匯編語言仿真,但是,它們僅通過寄存器數據變化來描述指令執行效果,而沒有對處理器其他重要部件(如控制器等)進行描述,因此,無法體現指令控制下處理器內部數據的流動與處理過程。鑒于現有匯編語言學習環境中存在的不足,本文作者提出基于 CPU仿真器(CPU_Simulator)的匯編語言學習平臺ASMLL。ASMLL模擬了CPU的內部器件及其運行機制,提供了該CPU仿真器上的指令系統SML,同時實現了一個集匯編語言源程序編輯、匯編、調試功能于一體的學習支撐環境。本平臺最大的特點是在指令調試過程中能對微指令流程進行記錄,并實時觀察處理器內部器件的結構及其狀態的變化,讓學習者真正體會和理解匯編指令對硬件的控制作用。

1 系統架構

ASMLL的系統架構如圖 1所示。系統采用 B/S模式開發,客戶端和服務器通過互聯網進行通信連接。Web服務器端主要提供已編譯好的Java類文件,并且根據用戶的請求將JavaBean組件和普通Java類文件傳給客戶端。CPU_Simulator所需的虛擬器件以JavaBean組件的方式封裝,存于服務器端的組件庫中,實驗配置文件庫用于存儲CPU_Simulator裝配文件,資源文件庫用于存儲相關的資源文件。

客戶端主要提供匯編語言源程序的編輯、編譯環境和目標程序的調試、運行服務。客戶端采用瀏覽器中嵌入Java Applet的方式,用戶可以通過客戶端提供的菜單欄、代碼編輯窗口、調試控制窗口、程序流程記錄窗口、CPU_Simulator窗口等,方便地創建、編輯和保存匯編語言源文件,編譯加載源文件,調試運行目標程序并觀察CPU_Simulator的圖形結構及其運行狀態。整個系統具有良好的交互性、實時性和靈活性。

圖1 ASMLL的系統架構Fig.1 System architecture of ASMLL

圖2 ASMLL的功能模塊Fig.2 Function modules in ASMLL

平臺的功能模塊如圖2所示。ASMLL主要由編譯加載、調試控制、CPU_Simulator三大模塊構成。編譯加載模塊主要為用戶提供匯編語言源程序到目標程序的匯編功能和目標程序到CPU_Simulator的加載服務。調試控制模塊主要在微指令級別對目標程序進行單步調試、對寄存器狀態進行實時監控。CPU_Simulator模塊主要為目標程序提供模擬運行環境,采用Java2D技術為用戶提供機器內部各個單元部件的可視化視圖。

整個系統的處理過程如下:用戶使用代碼編輯窗口創建匯編語言源程序后,通過內置的匯編器對其進行編譯,并通知CPU_Simulator加載匯編出的目標程序;CPU_Simulator收到通知后,將目標程序加載到虛擬內存器件中,并等待調試控制模塊發出控制信號;調試控制模塊通過命令接口通知脈沖發生器產生脈沖,引導程序進入調試運行狀態,并接收虛擬器件傳回的反饋信息,將實時狀態在界面上顯示。

2 CPU_Simulator的設計與實現

仿真器是一種用以模擬程序在目標芯片上運行情況的工具,它執行用戶輸入的源程序,能較為逼真地模擬出程序在芯片上的運行效果。現在的仿真器主要分為硬件仿真器與軟件仿真器兩大類,而軟件仿真器又可細分為結構仿真器與指令仿真器[15]。對CPU_Simulator進行結構仿真,由它來提供匯編語言程序的運行環境。由于CPU_Simulator主要由微程序控制器、時序系統、運算器和存儲器等功能部件構成,每個部件又由類型多樣、顆粒度更小的芯片構成,采用怎樣的芯片模型對這些芯片的物理結構和邏輯功能進行統一描述和管理,以及如何保證機器指令在眾多芯片中有序執行成為該模塊設計的難點。

2.1 芯片模型的設計與實現

結合Java2D技術和JavaBean組件技術構造了可視化組件DeviceCarrier。該組件定義了虛擬芯片共同的屬性和行為,芯片的長寬、名稱、位置以及表示輸入與輸出數據的引腳等屬性,同時提供了這些屬性的讀寫接口與2D繪圖接口。以DeviceCarrier為芯片父類,在開發具體芯片對象時只需增加組件的特有屬性和功能方法來實現其內部邏輯功能。當芯片組件加載時,運行面板上將繪出其物理形態;當芯片組件從引腳處獲得控制信號與數據時,它將調用相應功能方法進行數據處理并產生輸出。這樣,芯片組件在結構、功能和信號傳遞方式上都對硬件芯片進行模擬,從而達到了一個很好的仿真效果。

以 CPU_Simulator中的微控制存儲器組件MicroControl為例。SML指令集中的每條指令被譯成微指令,形成各自的一段微程序后保存在MicroControl中。經譯碼器組件譯碼后,這些微指令產生的微控制信號可控制CPU_Simulator內部數據的傳遞,進而完成對應指令的功能。其中,MicroControl的具體工作為:首先根據外部輸入信息(如機器指令,節拍脈沖,執行部件反饋的狀態標志等),MicroControl產生微地址,然后從該微地址處讀取相應的微指令并輸出到譯碼器組件,同時生成后繼微指令地址。由于微控制存儲器工作時具有很強的時序性,在CPU_Simulator中,以時鐘電路組件的T2和T4脈沖引腳端的輸出作為MicroControl的脈沖輸入,來實現微控制存儲器組件的時序功能。在繼承DeviceCarrier后,MicroControl組件采用一個整型的二維數組來存儲微程序,其中一維用來記錄微指令地址,二維用來記錄微指令,而微控制存儲器組件的內部邏輯功能則交由control( )方法來實現。MicroControl的主要實現代碼如下所示:

2.2 調度控制模塊的設計與實現

CPU_Simulator由大量具有獨立邏輯功能的芯片組件按照一定的數據通路構成。芯片間控制信號與數據的傳遞不是單純的并行或串行。如何描述組件間的連接關系和調度機制,從而保證CPU_Simulator運行的正確性和穩定性是整個仿真設計的關鍵。

2.2.1 組件連接關系

組成CPU_Simulator的絕大多數組件都是多輸入多輸出接口,導致了組件的連接關系復雜。本文采用組件自我記錄的方式,為每個組件定義一張連接關系表 ConnectTable,用于記錄其輸出引腳上的所有關聯組件信息。由于每個組件的輸出引腳個數不等,所以,采用初始為3的可動態擴展的二維數組表示,數組的元素是一個二元組(關聯組件,引腳),其中,表的一維代表組件的輸出引腳,二維代表組件的關聯信息。ConnectTable類定義了為指定的引腳新增連接信息、刪除連接信息和獲得其所有關聯組件信息的 3個方法,使表易于擴充和維護。連接關系表有效地記錄了組件之間的復雜關系,使得CPU_Simulator在調度的過程中便于對引腳數據進行實時、動態的修改,同時為組件的調度控制提供依據。

2.2.2 組件的調度控制

CPU_Simulator可以看作是由多個功能獨立的虛擬元件通過數據流通道互聯構成,其每個組件帶有若干輸入口和輸出口。組件的功能是將其輸入口的數據進行變換后形成數據流從輸出口傳遞給與之關聯的其他組件。為協調控制各個組件的執行次序,實現系統的并行性和實時性,本文采用基于多線程的數據觸發式調度機制來控制組件的執行。

基于多線程的數據觸發式調度機制是把每個組件都作為一個線程,線程之間的通信采用 wait( )和notify( )機制和鎖機制來控制[16],線程之間的數據傳遞采用直接傳遞方式。初始化時,每個組件會根據模型機內部結構,建立自己的連接關系表。在運行過程中,存儲在其引腳中的數據會隨著組件功能方法的執行而動態更新。組件產生的結果數據會根據連接關系表中的連接關系從輸出引腳傳送到與它相連的下一級組件的輸入引腳上。這種調度機制有效地保證了數據源不斷產生的信號都能被及時接收和處理的實時性。

具體過程如下:調度控制模塊把 CPU_Simulator中每個芯片組件構造成一個線程對象,放到運行隊列線程組中。在初始狀態,所有組件的引腳值為空,標志位為0。當 CPU_Simulator啟動時,所有線程以等概率的機會搶占CPU得到運行權,除了脈沖組件線程外,其他線程運行時都會先調用wait( )方法使其處于等待狀態而迅速放棄CPU的使用權,直到其上級線程調用 notify( )方法喚醒并驅動它們運行。按照這種調用過程,當脈沖組件得到運行權后,它將根據連接關系表查找與它相連的所有下級組件,依次檢查這些組件的輸入引腳的標志位是否全為 0。若滿足條件,則它先通過 JavaBean的反射技術動態獲得組件的功能方法,并調用該方法產生輸出信號,然后,根據連接關系表依次把輸出值賦值給與它相連的下一級等待線程組件的輸入引腳上,再喚醒它們,之后自己重新進入等待狀態;否則,它將隨機等待一段時間,直到下次運行權的獲得。下級等待線程被喚醒后便進入可執行狀態,并可以再次競爭CPU從而獲得運行權。下級線程組件擁有運行權后,進行與脈沖組件相同的上述動作。通過這種數據觸發機制建立起各個獨立組件之間的因果關聯,從而使它們形成一個能夠協調工作的有機整體。

3 編譯加載功能的設計與實現

由于 SML匯編語言源程序只是符號化的機器語言程序,無法直接在CPU_Simulator上運行,因此,在ASMLL中設計了SML匯編器,由其完成匯編語言源程序到目標程序的轉換任務。該匯編器利用面向對象設計思想,進行模塊化設計,并采用遞歸分析法與工廠模式分別實現了語法分析和代碼生成模塊。

3.1 匯編器的模塊化設計

匯編器采用模塊化設計,包含主控模塊、詞法分析、語法分析、目標代碼生成、錯誤處理、表格管理等多個模塊。其中,詞法分析器模塊對源程序進行詞法規則檢查、構造Token流。語法分析模塊則對Token流進行語法規則檢查,生成語法樹并構造符號表。最后,代碼生成模塊對符合語法規則的每行匯編語句進行目標代碼生成。在整個匯編過程中,表格管理模塊負責提供符號表、指令表的查找、修改功能,而錯誤處理模塊則負責管理詞法、語法分析過程中檢測出的錯誤信息。主控模塊負責組織全盤的工作流程,其具體過程為:首先將內部變量LC初始化為0,然后從上向下一次一行地掃描程序,并進行詞法和語法分析。每次移到下一行,就將LC加上當前指令長度。因此,LC總是等于當前行的地址。如果在某行的開始發現標號,就將該標號和LC中的當前值輸入到符號表中。在第1遍掃描結束時,匯編器已經建立符號表與對應指令的語法樹。匯編器然后執行第2遍掃描,使用指令表和符號表中的信息匯編每條匯編指令。主控模塊的工作流程如圖3所示。

圖3 主控模塊的工作流程Fig.3 Work flow of main_control model

在匯編器的結構中,語法分析和代碼生成模塊是匯編功能的核心模塊。語法分析和目標代碼生成過程中反復用到包括 Token、語法樹、指令表等多種數據結構,因此,用于實現語法分析和匯編機器字的算法是匯編器設計的重點。

遞歸分析法對Token流進行語法分析的思路是:將語法中每一個非終結符U的語法規則看作是識別U的一個過程定義,為其構造子程序,以完成該非終結符所對應的語法成分的分析和識別。若U的文法規則的右部只有1個候選式,則按從左向右的順序依次構造非終結符的識別過程代碼;若有終結符號,則判斷能否與輸入的符號匹配:若相等,則表示識別成功,移動讀入指針指向下一個輸入符號;若不等,則意味著輸入串此時有語法錯誤;若是非終結符,則簡單調用該非終結符的子程序,由這個子程序完成該非終結符所對應的語法成分的分析和識別任務。只有被調用的分析和識別某語法成分的子程序匹配輸入串成功,且正確返回時,該語法成分才算真正獲得識別。在本系統中,匯編器為每條匯編指令構造了語法規則方法,用來識別該指令中的操作碼和操作數。每當識別出 1個語法成分,就向語法樹中增加1個節點,使得該語句的語法樹向下生長,直至語句中所有語法成分識別完畢、生成1棵完整的語法樹為止。若語句中出現語法錯誤,則將相應的信息交由錯誤處理模塊管理。

目標代碼生成模塊是由Assembler組件完成的。通過對語法樹中語法成分的查找,Assembler將找到的操作碼和操作數按一定的指令格式匯編成機器字,并將結果返回給調用者。由于 SML匯編語言涉及到變長指令和多種尋址模式,不同指令的匯編模式是不同的。如所有轉移指令的指令長度均為雙字節,它們由尋址模式、操作碼、目的寄存器以及位移量4個字段組成;而算術邏輯指令的指令長度則為單字節,它們由操作碼、源寄存器以及目的寄存器3個字段組成,因此,需要為不同類型的指令實現各自的匯編功能。Assembler采用工廠模式統一匯編操作接口,為不同類型的匯編操作構建實現模塊,交由匯編操作工廠管理。當對語法成分進行匯編時,先由匯編操作工廠來實例化相應的匯編操作對象,然后,調用具體的匯編方法來完成匯編任務。這樣,若需要支持新的指令格式,則只需將新的匯編操作實現后加入匯編操作工廠即可,從而使得匯編器具有良好的可擴充性。

3.2 目標程序的加載

源程序匯編成功后,匯編器將生成的目標文件保存在本地,而此時CPU_Simulator中內存組件的初始值為0。由于內存組件采用二維整型數組模擬256字節的存儲空間,以此來存放目標程序(默認低地址存放代碼,高地址存放數據,兩段以停機指令HALT為邊界),所以,程序的加載即為對該數組進行讀寫操作。為方便目標程序到內存的加載,編譯加載模塊將程序匯編功能與加載功能進行了集成。具體過程為:當目標程序保存本地后,匯編器繼續對該目標文件讀操作,并把讀取到的數據傳入內存組件的數組讀寫接口,由該接口完成數組中數據的寫操作,實現目標程序到內存組件的加載。

4 調試模塊的設計與實現

微指令流面板、存儲器面板以及寄存器面板構成了整個調試界面,其上各種GUI組件的數據顯示由控制接口模塊負責控制。作為界面與CPU_Simulator之間的橋梁,控制接口模塊可被芯片組件直接調用。當芯片組件因新數據到來觸發時,控制接口馬上被該組件調用并接收到新數據,從而使控制接口模塊能實時地得到CPU仿真器內部數據的流動及處理信息。在獲得數據后,控制接口模塊先判斷該數據的來源,再做相應處理:若該數據來自寄存器組件,則將數據直接顯示在寄存器面板相應的寄存器顯示欄上;若該數據來自內存組件,則在存儲器面板中找到對應指令行或數據行,然后將其高亮顯示;若該數據來自微控制存儲器,則根據微地址查找調試模塊中內置的微代碼表,在獲得微指令、微操作說明以及后繼微地址后,將上述信息顯示在微指令流面板中。

在程序調試運行時,運行面板上 CPU_Simulator芯片組件的狀態將同步更新,其更新效果由芯片組件的繪畫接口完成。繪畫接口被調用時,1個標注芯片名稱的矩形將畫在運行面板上,同時該矩形上擁有相應數目的引腳,其引腳值以不同顏色區分(黑色表示低電平,紅色代表高電平)。而微控制存儲芯片則比較特別,其繪畫接口被調用時,除了顯示芯片的輸入輸出引腳值以外,還將在芯片的左側顯示當前微指令的地址。在CPU_Simulator被加載時,繪畫接口在運行面板上繪畫出各個芯片的初始狀態及芯片間連接關系。在程序調試運行、芯片組件因數據到來被激活時,繪畫接口將對該芯片進行重畫,以顯示芯片引腳的當前輸入輸出值。若該芯片是微控制存儲芯片,則在芯片上還將顯示出當前微指令的微地址。這樣,CPU_Simulator內部芯片狀態以圖形化的方式在運行面板上實時顯示,大大增加了系統的可視化效果和可理解性。

單步微調是本調試接口設計中的一個特點。由于微程序存儲器組件的調度由時鐘電路組件的脈沖信號觸發,若能控制時鐘電路組件產生脈沖的節拍,即可實現微指令的單步調試。本文設計了單脈沖組件PulseSignal,由單脈沖組件PulseSignal發出的脈沖來觸發時鐘電路,進而觸發一次微程序存儲器。其中,單脈沖組件PlusSignal信號的由用戶按鈕事件負責響應。系統的整個調試過程為:CPU_Simulator啟動時,從內存組件地址00處取出第1條指令,交由微程序控制器組件準備譯碼執行,用戶通過點擊按鈕觸發脈沖組件,發出信號觸發微控制器讀取1條微指令,并將其反饋到界面顯示該微指令及對應的微操作說明,繼而取第2條,以此反復,直到執行停機指令HALT為止。

5 ASMLL系統的運行實例

ASMLL為匯編語言初學者提供了全真的編程環境、強大的調試功能和多種虛擬器件的可視化視圖。通過這個平臺,學習者能很好地進行匯編語言編程訓練,快速掌握常用指令功能以及指令在機器中的執行流程,體會匯編語言控制硬件的本質作用。

用戶首先通過瀏覽器下載嵌有該平臺的Applet頁面,可獲得匯編學習平臺所需的class文件,運行后系統將進入客戶端主界面。主界面主要分為兩部分:上部為工具欄,為用戶提供編程和CPU_Simulator加載功能;中間為 CPU_Simulator運行面板,用來顯示CPU_Simulator可視化結構。當用戶點擊加載按鈕時,CPU_Simulator將被加載到運行面板,同時,系統進入初始狀態。用戶可繼續點擊工具欄上的編程按鈕,進入匯編語言編程窗口,在該窗口中編寫源程序。當程序編寫完成后,則可以點擊窗口工具欄中的編譯加載按鈕,利用系統內置的 SML匯編器匯編對當前程序進行匯編,并將生成的目標程序加載到CPU_Simulator的內存中。

此時,CPU_Simulator被啟動,系統進入目標程序的調試運行狀態:當用戶每點擊1次控制面板中的單步微指令按鈕,系統將單步執行1條微指令,同時在左側的微指令流窗口顯示當前微指令和對應的微操作,右側的寄存器窗口則顯示各寄存器中的實時數據。當用戶每點擊1次單步機器指令按鈕,系統將單步執行1條機器指令,寄存器窗口中的程序計數器PC內指針加 1,中間的存儲器窗口將以高亮顯示方式來表達當前指令的跳變過程,左側的指令流窗口同時將顯示對應的微程序流。用戶若需要連續運行程序,則可點擊運行按鈕。而按動停止按鈕,則可以停止整個目標程序的運行。該功能只有在程序進行單步機器指令和連續運行時才有效,按動該按鈕即可停止程序的運行。

從實際應用情況來看,ASMLL能為用戶提供機器指令取值、譯碼和執行全過程的微指令級單步調試,并記錄相應微指令流程,彌補了現有支撐平臺無法在微指令級對指令進行跟蹤的不足。此外,ASMLL還提供了一個良好的視圖,將CPU及存儲器的內容以具體的形式進行展示,讓學習者對處理器結構及程序、數據存放方式有更深的認識。

6 結論

(1) ASMLL采用 JavaBean組件技術實現了CPU_Simulator,結合多線程技術以及鎖的同步控制技術,提出了一種組件數據觸發調度機制,有效解決了具有復雜關系組件之間的調度運行問題,保證了微命令的有序執行。

(2) ASMLL利用面向對象設計思想和匯編程序兩遍掃描機制,設計了基于CPU_Simulator的匯編器,實現了匯編語言源程序到CPU_Simulator上目標程序的快速編譯。

(3) 該學習系統支持對程序進行微指令級單步調試,并提供指令執行時CPU_Simulator內部寄存器數據變化的結構視圖,使得學生能直觀地查看指令的執行情況,有助于學生理解指令功能與程序執行過程。

(4) ASMLL具有功能完整、交互性強、功能模塊化清晰的特點,軟硬件視圖形象直觀,能為開發計算機相關課程學習平臺如微機原理組成原理等提供很好的參考模型。

[1] Goda B S, Gray D C, Loy J R. Teaching computer architecture in a pc equipped lab using turbo and sun assembly language[C]//Budny D. Proceedings of the Frontiers in Education Conference on 1995. Washington: IEEE Computer Society, 1995: 14?17.

[2] Shi Z M, Cox P T. EasyAssembly: A real visual assembly language[C]//Proceedings of Newfoundland Electrical and Computer Engineering Conference (NECEC 2001). St. John’s,Canada: IEEE, 2001: 31?37.

[3] Martin J J. Integrated software support for a course on computer organization and assembly language[C]//Cook G E.SoutheastCon 1999 Proceedings of IEEE. Nashville: IEEE, 1999:134?137.

[4] Agarwal K K, Agarwal A. Do we need a separate assembly language programming course[J]. Journal of Computing Sciences in Colleges, 2004, 19(4): 246?251.

[5] Imamura K. Assembly language is more than a teaching tool[J].Journal of Computing Sciences in Colleges, 2004, 20(1): 49?54.

[6] Buckner K. A non-traditonal approach to an assembly language course[J]. Journal of Computing Sciences in Colleges, 2006,22(1): 179?186.

[7] Quintana F, Herrera L. Tutor68: Educational software for the learning of the mc68000 assembly language[C]//Budny D.Proceedings of the Frontiers in Education Conference.Washington: IEEE Computer Society, 1995: 5?9.

[8] Yip K K R, Li K C D. A web-based call system on computer architecture and assembly language programming[C]//Kinshuk.Proceedings of the International Conference on Computers in Education. Auckland, New Zealand: IEEE Computer Society,2002: 1313?1314.

[9] Cecile Y, Matzi E, Miky R. Learning computer organization and assembly language with the easy CPU visual environment[C]//Demetrios G S. Proceedings of the 3rd IEEE International Conference on Advanced Learning Technologies. Athens: IEEE,2003: 491?491.

[10] Barnett B L. A visual simulator for a simple machine and assembly language[C]//Proceedings of the Twenty-sixth SIGCSE Technical Symposium on Computer Science Education. New York: ACM, 1995: 233?237.

[11] Ramirez J M, Navarro A, Gallardo V, et al. A graphical simulation tool for teaching microprocessors architecture and assembly language[C]//Budny D. Proceedings of the Frontiers in Education Conference on 1997. Chicago: IEEE Computer Society, 1997: 701?701.

[12] Kenneth V, Pete S. Mars: An education-oriented mips assembly language simulator[C]//Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education. New York: ACM, 2006: 239?243.

[13] 楊曉暉, 田俊. 基于 Web的匯編語言實驗仿真[J]. 計算機應用與軟件, 2005, 22(10): 133?134.

YAN Xiao-Hui, TIAN Jun. Web-based experimentation simulation of assembling language[J]. Computer Application and Software, 2005, 22(10): 133?134.

[14] Andrew W. The development of a computer-aided learning tool for supporting the teaching of assembly language programming[C]//Bruce D S. Proceedings of the 29th Annual Hawaii International Conference on System Sciences. Hawaii:HICSS, 1996: 323?331.

[15] 邢文峰, 姚慶棟, 史姍, 等. 一種高速靈活的指令仿真器[J].計算機工程, 2004, 30(22): 74?76.

XING Wen-feng, YAO Qing-dong, SHI Shan, et al. A fast and flexible instruction set simulator[J]. Computer Engineering, 2004,30(22): 74?76.

[16] 嚴暉, 楊路明. 基于多線程的計算機硬件虛擬實驗室的設計與實現[J]. 中南大學學報: 自然科學版, 2004, 35(2): 290?294.

YAN Hui,YANG Lu-ming. Multithread-based design and implementation of computer hardware system virtual laboratory[J]. Journal of Central South University of Technology:Natural Science, 2004, 35(2): 290?294.

(編輯 趙俊)

Design and implementation of assembly language learning system based on CPU simulator

SHENG Yu, YU Jin, CHEN Song-qiao, WANG Jian-xin

(School of Information Science and Engineering, Central South University, Changsha 410083, China)

An assembly language learning system (ASMLL), which is based on the CPU simulator, was presented.ASMLL simulated CPU with the JavaBean component technology. By using multi-thread technology and lock mechanism, ASMLL realized a scheduling mechanism based on component data triggered, which is an effective solution to deal with the scheduling problems of these components with complex relationship between each other, and can ensure micro-orders to run in an orderly implementation. Pulse signal based event triggered mechanism can implement the single-step debugging of enables microinstruction. Based on the instruction system of CPU simulator, a kind of assembler with modern compiler technology was designed, which can translate assembly instructions to machine instructions quickly on the CPU Simulator. ASMLL can display the status of virtual register and other virtual chips in real-time,record the corresponding microinstruction flow to monitor the implementation process of compiler command on CPU simulator.

CPU simulator; assembly language; compiling technique; micro-instructions flow

TP391.9

A

1672?7207(2010)06?2224?07

2009?10?21;

2009?12?28

國家自然科學基金資助項目(60773111);湖南省科技計劃項目(2010FJ4052);長江學者和創新團隊發展計劃項目(IRT0661)

王建新(1969?),男,湖南邵東人,博士,教授,從事計算機網絡優化算法、虛擬實驗環境研究;電話:0731-88830212;E-mail:jxwang@mail.csu.edu.cn

猜你喜歡
指令調試
聽我指令:大催眠術
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
基于航拍無人機的設計與調試
電子制作(2018年12期)2018-08-01 00:47:44
核電廠主給水系統調試
中國核電(2017年1期)2017-05-17 06:10:11
無線通信中頻線路窄帶臨界調試法及其應用
電子制作(2017年19期)2017-02-02 07:08:38
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
調壓柜的調試與試運行探討
工業電氣設備控制系統的安裝與調試
音頻處理器的調試
主站蜘蛛池模板: 中文成人无码国产亚洲| 国产二级毛片| 岛国精品一区免费视频在线观看| 国产午夜一级淫片| 2020精品极品国产色在线观看| 大陆国产精品视频| 狠狠干综合| 成人欧美在线观看| 国产亚洲高清视频| 毛片视频网| 亚洲人成网站色7777| 久久久精品国产SM调教网站| 奇米影视狠狠精品7777| 免费又爽又刺激高潮网址| 日韩国产高清无码| 日本成人福利视频| 67194亚洲无码| 国产成本人片免费a∨短片| 成人免费一级片| 最新日韩AV网址在线观看| 熟女日韩精品2区| 精品视频第一页| 99在线视频网站| 国模极品一区二区三区| 中文字幕欧美成人免费| 国产精品亚洲а∨天堂免下载| 91小视频在线播放| 亚洲中文字幕国产av| 一本色道久久88| 五月天在线网站| 香蕉视频国产精品人| 欧美.成人.综合在线| 欧美日韩导航| 伊人久热这里只有精品视频99| 91最新精品视频发布页| 日本高清成本人视频一区| 天天综合亚洲| 四虎在线观看视频高清无码| 日韩毛片免费| 浮力影院国产第一页| 人妻丰满熟妇av五码区| 91www在线观看| 亚洲乱码精品久久久久..| 在线亚洲精品自拍| 高清欧美性猛交XXXX黑人猛交 | 国产福利免费观看| lhav亚洲精品| 欧美一级片在线| 手机永久AV在线播放| 亚洲天堂网站在线| 高清精品美女在线播放| 毛片一级在线| 天堂亚洲网| 一本大道无码高清| 波多野结衣久久精品| 日韩人妻无码制服丝袜视频| 免费视频在线2021入口| 亚洲人人视频| 欧美啪啪视频免码| 日本不卡免费高清视频| 国产一区自拍视频| 91啪在线| 精品欧美视频| 毛片一区二区在线看| 精品人妻一区无码视频| 女人天堂av免费| 青青操视频免费观看| 91亚洲视频下载| 伊大人香蕉久久网欧美| 亚洲欧美日韩久久精品| 久久成人国产精品免费软件 | 在线看片免费人成视久网下载| 国产在线91在线电影| 亚洲有无码中文网| 国产不卡国语在线| 又爽又大又黄a级毛片在线视频| 999在线免费视频| 青草91视频免费观看| 婷婷在线网站| 中文字幕亚洲精品2页| 成人福利在线视频| 久久久91人妻无码精品蜜桃HD|