80C51虛擬指令執(zhí)行系統(tǒng)的設(shè)計與實現(xiàn)
摘要:文中以80C51的體系結(jié)構(gòu)和指令系統(tǒng)為基礎(chǔ),設(shè)計并實現(xiàn)了虛擬80C51指令執(zhí)行系統(tǒng),包括虛擬指令執(zhí)行器和虛擬存儲器。這種設(shè)計方法適用于存儲空間和指令規(guī)模與80C51相似的單片機(jī)指令系統(tǒng),也可根據(jù)需要,增加對80C51單片機(jī)的虛擬范圍。
關(guān)鍵字:80C51;虛擬;指令系統(tǒng)
0 引言
在進(jìn)行嵌入式系統(tǒng)開發(fā)時,通常是在宿主機(jī)上通過交叉編譯方式生成目標(biāo)機(jī)平臺的二進(jìn)制代碼,然后將其寫入目標(biāo)機(jī)中運行,這種開發(fā)方法的一個缺點是不易調(diào)試生成的目標(biāo)代碼邏輯,因此,目前許多交叉編譯工具都具有在宿主機(jī)上調(diào)試源代碼的功能。要讓目標(biāo)機(jī)平臺的二進(jìn)制代碼能夠在宿主機(jī)上運行,必須提供一個虛擬的能夠執(zhí)行目標(biāo)機(jī)指令的系統(tǒng)。本文以80C51單片機(jī)為目標(biāo)機(jī),基于X86平臺的PC機(jī)為宿主機(jī),給出了一種在宿主機(jī)上構(gòu)造虛擬目標(biāo)機(jī)指令執(zhí)行系統(tǒng)的方法。
1 虛擬指令執(zhí)行系統(tǒng)簡介
本文所述的80C51虛擬指令執(zhí)行系統(tǒng)是指用軟件來模擬80C51指令的執(zhí)行過程和執(zhí)行效果,它主要由虛擬指令執(zhí)行器和虛擬存儲器組成。虛擬指令執(zhí)行器是虛擬指令執(zhí)行系統(tǒng)的核心模塊,它將指令的執(zhí)行過程分為取指令、分析指令和執(zhí)行指令三個階段,模擬這三個階段的操作并虛擬出指令的執(zhí)行效果。虛擬存儲系統(tǒng)是虛擬指令執(zhí)行系統(tǒng)必不可少的模塊,它反映著虛擬指令執(zhí)行器執(zhí)行指令的效果,本文以80C51體系中存儲器的結(jié)構(gòu)為依據(jù),虛擬出存儲器空間和寄存器,并提供了虛擬指令執(zhí)行器訪問虛擬存儲器的接口。
圖1是虛擬80C51指令執(zhí)行系統(tǒng)的總體結(jié)構(gòu)圖,同時圖1也顯示了系統(tǒng)運行的三個基本過程:
(1)加載二進(jìn)制文件到虛擬存儲器的ROM中
(2)虛擬指令執(zhí)行器周期性地從虛擬存儲器的ROM中取指令、分析指令并且執(zhí)行指令
(3)指令在執(zhí)行過程中通過讀寫虛擬存儲器中的內(nèi)存和寄存器來反映指令執(zhí)行效果
顯然,上述過程是圍繞著虛擬指令執(zhí)行器和虛擬存儲器進(jìn)行的。
2 虛擬存儲器的設(shè)計與實現(xiàn)
加載過程和虛擬指令執(zhí)行器都依賴于虛擬存儲器,因此先介紹虛擬存儲器的實現(xiàn)是必要的。從訪問的角度分析,寄存器和存儲器具有同樣的屬性,可以使用類似的實現(xiàn)方法虛擬它們。本文虛擬存儲器的范圍包括虛擬的存儲空間和寄存器。
2.1 虛擬80C51存儲空間
80C51的存儲空間除了有ROM和RAM之分,還有片內(nèi)和片外之分。80C51指令在執(zhí)行的時候訪問的數(shù)據(jù)可以存在于以下四種類型的存儲單元中:片內(nèi)ROM,片外ROM,片內(nèi)RAM,片外RAM,它們的地址空間見表1。
評論