欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

模擬器及模擬方法

文檔序號:6433869閱讀:245來源:國知局
專利名稱:模擬器及模擬方法
技術(shù)領(lǐng)域
本發(fā)明涉及用軟件模擬DSP(Digital Signal Processor)等處理器的動作的模擬器(simulator)及其相關(guān)技術(shù)。
背景技術(shù)
在面向合并的軟件開發(fā)中,采用以下的過程。首先,用C/C++等高級語言來記述源碼。此外,對于重視性能(處理量、資源使用量等)的部分,進(jìn)行使用匯編語言的編碼。
接著,將編碼后的軟件在模擬作為靶的DSP等資源(寄存器、存儲器等)和動作的模擬器上執(zhí)行,進(jìn)行源碼的調(diào)試等。
這里,模擬器在調(diào)試時使用,具有在個人計算機(jī)(PC)和工作站(WS)等主處理器上進(jìn)行動作,使執(zhí)行中的軟件按某一定時停止,參照各種資源(寄存器、存儲器等)的狀態(tài),同時將值置位(set)在各種資源中等的功能。
而在專利文獻(xiàn)1(日本特開平5-233317號公報)公開了具有在軟件執(zhí)行后,顯示對預(yù)先用命令指定的存儲器進(jìn)行寫入的函數(shù)名的功能的模擬器。
以下,說明專利文件1公開的軟件模擬器。
圖33(a)是專利文獻(xiàn)1的軟件模擬器的流程圖,圖33(b)表示由專利文件1公開的軟件模擬器編制的區(qū)域訪問用表。
在圖33(a)的步驟3300中,輸入命令,在步驟3301中,輸入的命令被解析。
解析的結(jié)果,如果輸入的命令是區(qū)域訪問命令,則在步驟3303中進(jìn)行區(qū)域訪問的處理。
在步驟3303中,在輸入的命令為setacc命令的情況下,根據(jù)用命令指定的地址信息,編制圖33(b)所示的區(qū)域訪問用表3308。
而在輸入的命令不是setacc命令,而是getacc命令的情況下,在區(qū)域訪問用表3308中,顯示與用命令指定的地址信息一致的函數(shù)名。
接著,在步驟3304中,進(jìn)行是否為命令的執(zhí)行命令的判定,在不是命令的執(zhí)行命令時,處理返回步驟3300。
在是命令的執(zhí)行命令時,在步驟3305中命令被執(zhí)行,在步驟3306中,進(jìn)行是否在用setacc命令指定的區(qū)域中進(jìn)行寫入的判定。
在步驟3306中,判定執(zhí)行的命令是否為存儲器訪問命令,在不是存儲器訪問命令的情況下處理結(jié)束。
在執(zhí)行的命令是存儲器訪問命令,寫入目的地包含在存儲于區(qū)域訪問用表3308中的地址信息的情況下,包含執(zhí)行命令的函數(shù)名被存儲在區(qū)域訪問用表3308中。
接著,在步驟3307中,判斷命令的執(zhí)行是否結(jié)束,在繼續(xù)進(jìn)行命令的執(zhí)行時,處理進(jìn)至步驟3305,在結(jié)束的情況下,處理返回步驟3300。
按以上那樣的結(jié)構(gòu),專利文獻(xiàn)1的模擬器在軟件執(zhí)行后,顯示向預(yù)先用命令指定的存儲器進(jìn)行寫入的函數(shù)名。
但是,在現(xiàn)有的模擬器中,不具備軟件開發(fā)者檢驗沒有意圖的對資源(寄存器、存儲器等)的訪問(讀取、寫入)的功能,以及檢驗對資源(寄存器、存儲器等)的訪問時的數(shù)據(jù)是否為軟件開發(fā)者意圖的值的功能。在由于沒有意圖的訪問和數(shù)據(jù)(讀取、寫入)而使軟件產(chǎn)生異常動作時,軟件開發(fā)者重復(fù)進(jìn)行軟件的執(zhí)行、停止、資源狀態(tài)的參照,需要鑒別軟件上的問題場所,軟件開發(fā)效率顯著下降。
此外,現(xiàn)有的模擬器在模擬時,以執(zhí)行命令為單位,具有某一命令是否被執(zhí)行的檢驗和保留歷史的功能。但是,在執(zhí)行命令為按照某一寄存器值而切換處理(例如寄存器值為0時分支到指定的地址等)的附帶條件命令的情況下,由于沒有檢驗附帶條件命令在什么條件下執(zhí)行的功能,所以不能確認(rèn)開發(fā)的軟件在所有條件下是否進(jìn)行有意圖的動作。
在專利文獻(xiàn)1中公開的軟件模擬器中,也不能檢驗對寄存器的訪問及來自存儲器的讀取。而且,即使對于對存儲器的寫入,僅在軟件執(zhí)行后顯示函數(shù)名的歷史,所以不能鑒別有問題的寫入在哪兒。

發(fā)明內(nèi)容
本發(fā)明的第一目的在于,提供能夠提高軟件開發(fā)效率的模擬器。本發(fā)明的第二目的在于,提供能夠提高開發(fā)的軟件的完成性的模擬器。
第一發(fā)明的模擬器用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬處理器的動作,多個模擬單元具有表現(xiàn)存儲處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)處理器的寄存器的寄存器單元;以及表現(xiàn)對存儲器單元和/或寄存器進(jìn)行訪問的控制器的控制單元。模擬器包括對輸入的命令進(jìn)行解析并操作多個模擬單元的命令輸入部件;以及檢驗控制單元對存儲器單元和/或寄存器單元進(jìn)行訪問的資源訪問的部件。
在第二發(fā)明的模擬器中,檢驗資源訪問的部件包括存儲資源信息的資源信息存儲部件,資源信息包含存儲器單元的存儲區(qū)范圍和存儲器單元的讀寫類別、寄存器單元的寄存器類別和寄存器單元的讀寫類別;以及資源訪問分析部件,參照資源信息來分析資源訪問是否合適。
在第三發(fā)明的模擬器中,資源信息由命令指定。
在第四發(fā)明的模擬器中,資源信息被作為數(shù)據(jù)來準(zhǔn)備,數(shù)據(jù)由命令指定。
在第五發(fā)明的模擬器中,資源信息存儲部件還存儲處理器的執(zhí)行命令的地址范圍信息,資源訪問分析部件還參照處理器的執(zhí)行命令的地址范圍信息來分析執(zhí)行命令是否合適。
根據(jù)這些結(jié)構(gòu),預(yù)先指定執(zhí)行命令地址范圍、許可訪問的資源、訪問類別(讀取、寫入)等的分配信息,可以進(jìn)行命令的執(zhí)行。因此,可以檢測違反指定的分配信息的處理,并通知軟件開發(fā)者。其結(jié)果,在因軟件的問題而產(chǎn)生沒有意圖的對資源的訪問時,容易鑒別問題場所,提高軟件開發(fā)效率。
第六發(fā)明的模擬器用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬處理器的動作,多個模擬單元具有表現(xiàn)存儲處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)處理器的寄存器的寄存器單元;以及表現(xiàn)對存儲器單元和/或寄存器進(jìn)行訪問的控制器的控制單元。模擬器包括對輸入的命令進(jìn)行解析并操作多個模擬單元的命令輸入部件;以及檢驗控制單元對存儲器單元和/或寄存器單元進(jìn)行訪問的數(shù)據(jù)訪問的部件。
在第七發(fā)明的模擬器中,檢驗數(shù)據(jù)訪問的部件包括存儲數(shù)據(jù)信息的數(shù)據(jù)信息存儲部件,數(shù)據(jù)信息包含存儲器單元的存儲區(qū)范圍和存儲器單元的讀寫類別、寄存器單元的寄存器類別和寄存器單元的讀寫類別;以及數(shù)據(jù)訪問分析部件,參照數(shù)據(jù)信息來分析數(shù)據(jù)訪問是否合適。
在第八發(fā)明的模擬器中,數(shù)據(jù)信息由命令指定。
在第九發(fā)明的模擬器中,所述數(shù)據(jù)信息被作為數(shù)據(jù)而準(zhǔn)備,數(shù)據(jù)由命令指定。
在第十發(fā)明的模擬器中,數(shù)據(jù)信息存儲部件還存儲處理器的執(zhí)行命令的地址范圍信息,數(shù)據(jù)訪問分析部件還參照處理器的執(zhí)行命令的地址范圍信息來分析執(zhí)行命令是否合適。
根據(jù)這些結(jié)構(gòu),預(yù)先指定執(zhí)行命令地址范圍、許可訪問的資源、數(shù)據(jù)范圍(最小值、最大值)等的模擬信息,進(jìn)行命令的執(zhí)行。因此,可以檢測與違反了指定的模擬信息的處理,可以通知軟件開發(fā)者。其結(jié)果,在因軟件的問題,產(chǎn)生沒有意義的對資源的數(shù)據(jù)訪問時,容易鑒別問題場所,提高軟件開發(fā)效率。
在第十一發(fā)明的模擬器中,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬處理器的動作,多個模擬單元具有表現(xiàn)存儲處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)處理器的寄存器的寄存器單元;以及表現(xiàn)對存儲器單元和/或寄存器進(jìn)行訪問的控制器的控制單元;模擬器包括對輸入的命令進(jìn)行解析并操作多個模擬單元的命令輸入部件;以及檢驗存儲器單元和/或寄存器單元是否在被初始化的部件。
在第十二發(fā)明的模擬器中,檢驗存儲器單元和/或寄存器單元是否被初始化的部件包括資源初始化信息存儲部件,存儲表示存儲器單元和/或寄存器單元是否在被初始化的信息;以及資源初始化分析部件,參照資源初始化信息存儲部件,分析控制單元在對存儲器單元和/或寄存器單元進(jìn)行訪問時訪問目的地是否被初始化。
根據(jù)這些結(jié)構(gòu),準(zhǔn)備對各資源的初始化信息,可在進(jìn)行對資源的訪問的命令執(zhí)行時檢測對未初始化資源的訪問處理,并且可通知軟件開發(fā)者。其結(jié)果,在因軟件的問題而產(chǎn)生對未初始化資源的訪問時,容易鑒別問題場所,提高軟件開發(fā)效率。
第十三發(fā)明的模擬器用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬處理器的動作,多個模擬單元具有表現(xiàn)存儲處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)處理器的寄存器的寄存器單元;以及表現(xiàn)對存儲器單元和/或寄存器進(jìn)行訪問的控制器的控制單元。模擬器包括對輸入的命令進(jìn)行解析并操作多個模擬單元的命令輸入部件;以及檢驗控制單元執(zhí)行的附帶條件命令的執(zhí)行狀態(tài)的部件。
在第十四的模擬器中,檢驗存儲器單元執(zhí)行的附帶條件命令的執(zhí)行狀態(tài)的部件包括附帶條件命令執(zhí)行狀態(tài)分析部件,在控制單元執(zhí)行附帶條件命令時,存儲附帶條件命令的地址信息和執(zhí)行時參照的寄存器值。
根據(jù)這些結(jié)構(gòu),在按照參照寄存器等的結(jié)果而執(zhí)行處理的附帶條件命令執(zhí)行時,可以存儲附帶條件命令的存儲器地址和為了條件判定而參照的寄存器值,而且可以將存儲的信息通知軟件開發(fā)者。因此,軟件開發(fā)者可以確認(rèn)執(zhí)行命令地址范圍的執(zhí)行狀態(tài),可以驗證軟件在所有的條件下是否如開發(fā)者的意圖那樣進(jìn)行動作,提高軟件的完成性(動作的準(zhǔn)確性)。


圖1是本發(fā)明實施方式1的模擬器的方框圖。
圖2是本發(fā)明實施方式1的命令一覽圖。
圖3是本發(fā)明實施方式1的命令輸入部件的流程圖。
圖4是本發(fā)明實施方式1的步驟306的流程圖。
圖5是本發(fā)明實施方式1的程序文件的說明圖。
圖6是本發(fā)明實施方式1的步驟307的流程圖。
圖7是本發(fā)明實施方式1的分配信息表的說明圖。
圖8是本發(fā)明實施方式1的步驟308的流程圖。
圖9是本發(fā)明實施方式1的分配文件的說明圖。
圖10是本發(fā)明實施方式1的步驟309的流程圖。
圖11是本發(fā)明實施方式1的資源訪問分析部件的流程圖。
圖12是本發(fā)明實施方式1的步驟1103的流程圖。
圖13是本發(fā)明實施方式1的步驟1104的流程圖。
圖14是本發(fā)明實施方式2的模擬器的方框圖。
圖15是本發(fā)明實施方式2的命令一覽圖。
圖16是本發(fā)明實施方式2的命令輸入部件的流程圖。
圖17是本發(fā)明實施方式2的步驟1607的流程圖。
圖18是本發(fā)明實施方式2的分配信息表的說明圖。
圖19是本發(fā)明實施方式2的步驟1608的流程圖。
圖20是本發(fā)明實施方式2的分配文件的說明圖。
圖21是本發(fā)明實施方式2的步驟1103的流程圖。
圖22是本發(fā)明實施方式2的步驟1104的流程圖。
圖23是本發(fā)明實施方式3的模擬器的方框圖。
圖24是本發(fā)明實施方式3的命令一覽圖。
圖25是本發(fā)明實施方式3的命令輸入部件的流程圖。
圖26是本發(fā)明實施方式3的步驟2506的流程圖。
圖27是本發(fā)明實施方式3的步驟1103的流程圖。
圖28是本發(fā)明實施方式3的資源初始化信息表的說明圖。
圖29是本發(fā)明實施方式3的步驟1104的流程圖。
圖30是本發(fā)明實施方式4的模擬器的方框圖。
圖31是本發(fā)明實施方式4的附帶條件命令執(zhí)行狀態(tài)分析部件的流程圖。
圖32是本發(fā)明實施方式4的附帶條件命令“JP/CC”的說明圖。
圖33(a)是現(xiàn)有的模擬器的流程圖。
圖33(b)是現(xiàn)有的區(qū)域訪問用表的說明圖。
具體實施例方式
以下,參照附圖來說明本發(fā)明的實施方式。
(實施方式1)以下參照圖1~圖13來說明本發(fā)明的實施方式1。
圖1是本發(fā)明實施方式1的模擬器的方框圖。
存儲器單元100表現(xiàn)存儲有處理器的執(zhí)行命令和數(shù)據(jù)的存儲器。
寄存器單元101表現(xiàn)存儲有運(yùn)算數(shù)據(jù)的至少一個寄存器。
控制單元102表現(xiàn)控制器,該控制器讀取被存儲在存儲器單元100中的執(zhí)行命令,根據(jù)執(zhí)行命令而訪問存儲器單元100和寄存器單元101并進(jìn)行數(shù)據(jù)讀取、寫入。
存儲器單元100、寄存器單元101及控制單元102是構(gòu)成表現(xiàn)處理器及其周邊的單元的模擬單元。
資源信息存儲部件103存儲指定的存儲器單元100的存儲器區(qū)域范圍、寄存器單元101中包含的寄存器類別(資源信息)和每個資源信息的讀取/寫入類別(Read/Write信息)。
資源訪問分析部件104將對控制單元102中的存儲器單元100和寄存器單元101的訪問目的地及讀取/寫入類別和存儲在資源信息存儲部件103中的資源信息及Read/Write信息進(jìn)行比較,進(jìn)行訪問目的地未包含在資源信息,或訪問目的地包含在資源信息內(nèi)并且讀取/寫入類別和Read/Write信息是否不同的資源訪問分析。
命令輸入部件111對輸入的命令進(jìn)行解析,對控制單元102、存儲器單元100及寄存器單元101進(jìn)行操作,執(zhí)行與命令對應(yīng)的處理。
而控制單元102和存儲器單元100在從控制單元102對存儲器單元100進(jìn)行訪問的情況下通過發(fā)送指定地址的地址線105、以及發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線106、表示訪問為讀取還是寫入的RW線107、表示是否在訪問中的啟動線112來連接。
同樣,控制單元102和寄存器單元101在從控制單元102對寄存器單元101進(jìn)行訪問的情況下通過發(fā)送指定寄存器類別的選擇線108、以及發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線109、表示訪問為讀取還是寫入的RW線110、表示是否在訪問中的啟動線113來連接。
這些線105、106、107、112、108、109、110、113都包含在模擬單元中。
再有,圖1所示的模擬器由個人計算機(jī)(PC)和工作站(WS)等的主處理器上動作的軟件模塊組來實現(xiàn)。
這樣,在本實施方式的模擬器中,檢驗資源訪問的部件包括存儲資源信息的資源信息存儲部件103,資源信息包含存儲器單元的存儲器區(qū)域范圍及存儲器單元的讀寫類別、以及寄存器單元的寄存器類別及寄存器單元的讀寫類別;以及資源訪問分析部件104,參照資源信息分析資源訪問是否合適。
這里,資源信息也可以由命令指定,資源信息被作為數(shù)據(jù)準(zhǔn)備,這種數(shù)據(jù)也可以由命令指定。此外,資源信息存儲部件103存儲處理器的執(zhí)行命令的地址范圍信息,資源訪問分析部件104參照處理器的執(zhí)行命令的地址范圍信息來分析執(zhí)行命令是否合適。
圖2是本發(fā)明實施方式1的模擬器應(yīng)對的命令一覽圖。在本實施方式中,應(yīng)對“LOAD命令”、“GO命令”、“ALLOC命令”、“LOADALLOC命令”、“QUIT命令”。但是,這不過是一例,可以進(jìn)行各種變更。
以下,說明各命令的格式和功能。
首先,“LOAD命令”被輸入為“LOAD<file>”,執(zhí)行命令從用文件名<file>指定的程序文件被加載到存儲器單元100。例如,在程序文件被作為文件名“program.lst”準(zhǔn)備的情況下,被輸入為“LOAD program.lst”。
接著,“GO命令”被輸入為“GO”,如果有這種輸入,則控制單元102執(zhí)行被存儲在存儲器單元100中的執(zhí)行命令。
接著,“ALLOC命令”是設(shè)定用于進(jìn)行資源訪問分析的資源信息、PC信息、Read/Write信息的命令。在指定的資源為存儲器單元100的情況下,輸入為“ALLOC MEM<SA><EA><SPC><EPC><RW>”。
<SA>、<EA>是進(jìn)行資源訪問分析的存儲器區(qū)域范圍(起始地址、結(jié)束地址),用十六進(jìn)制數(shù)指定。<SPC>、<EPC>是進(jìn)行資源訪問分析的執(zhí)行命令的地址范圍(起始地址、結(jié)束地址),用十六進(jìn)制數(shù)指定。<RW>是指定對由<SA>及<EA>指定的存儲器區(qū)域的訪問權(quán)的信息,在只許可讀取時指定為“R”,在只許可寫入時指定為“W”,在許可讀取、寫入兩者時指定為“RW”。例如,對于存儲在存儲器單元100的地址0x000~0x00F中的16個執(zhí)行命令,在只許可對存儲器單元100的地址0x100~0x1FF讀取的情況下,指定為“ALLOCMEM 100 1FF 0 F R”。
而在用“ALLOC命令”指定的資源為寄存器單元101時,輸入“ALLOCREG<REGNAME><SPC><EPC><RW>”。<REGNAME>是進(jìn)行資源訪問分析的寄存器類別,用寄存器名(REG0、REG1)指定。<SPC><EPC><RW>指定的資源與存儲器時相同。
接著,“LOADALLOC命令”被輸入為“LOADALLOC<file>”,如果是該輸入,則從由文件名<file>指定的分配文件中,讀取用于進(jìn)行資源訪問分析的資源信息、PC信息、Read/Write信息,進(jìn)行規(guī)定的設(shè)定。
接著,“QUIT命令”被輸入為“QUIT”,如果為該輸入,則模擬器本身結(jié)束。
圖3表示圖1的命令輸入部件111的處理流程。
命令輸入部件111應(yīng)對圖2所示的5個命令(LOAD等)。如圖3所示,首先模擬器被起動后,在步驟300中,為命令輸入等待狀態(tài)。然后在輸入任何命令的情況下,在步驟301~305中,根據(jù)輸入命令處理進(jìn)行分支。
在輸入命令為“LOAD命令”時,處理進(jìn)行從步驟301向步驟306的轉(zhuǎn)移。
這里用圖4說明步驟306的處理內(nèi)容。圖4表示步驟306的處理的流程。
在本處理中,首先在步驟400中,取得用“LOAD命令”指定的程序文件名。“LOAD命令”指定的文件名的指定方法如上述那樣。
接著,在步驟401中,在步驟400中取得的文件被打開,該文件為可讀取的狀態(tài)。
這里用圖5說明用“LOAD命令”指定的程序文件。
圖5例示本發(fā)明實施方式1的程序文件。這里,設(shè)程序文件500為文本數(shù)據(jù)的程序文件。
程序文件500的各行表示一個執(zhí)行命令,各行的最左邊四位的字符串(000、0001、…(十六進(jìn)制數(shù)))為加載目的地的存儲器地址,在其右側(cè)夾入一個以上空格,下一字符串(08000900、…(十六進(jìn)制數(shù)))為表示執(zhí)行命令的代碼。程序文件500的右側(cè)的記述是程序文件500中的各行的執(zhí)行命令碼為什么樣的匯編記述,表示是否執(zhí)行哪樣的處理。
在實際的軟件開發(fā)中,編制使用匯編記述的源碼文件,使用將其翻譯為對應(yīng)于程序文件500所示的各執(zhí)行命令的代碼的被稱為“匯編”的工具,從而生成程序文件。
其中,使用“匯編”的源碼文件→程序文件變換處理與本發(fā)明的核心沒有關(guān)系,所以省略其詳細(xì)的說明。
這里,例如,設(shè)記述于程序文件500的開頭行的執(zhí)行命令碼“08000900”為“LD REG0 MEM(0x100)”的匯編記述。此時,從存儲器單元100的地址0x100地址讀取數(shù)據(jù),該數(shù)據(jù)被寫入寄存器單元101的寄存器REG0。以下同樣,加載目的地存儲器地址、執(zhí)行命令碼的組被配置在程序文件500的各行。
這里,在本實施方式中,程序文件500為文本數(shù)據(jù),但即使是二進(jìn)制數(shù)據(jù),也沒有任何問題。此外,程序文件500在各行中配置一組加載目的地存儲器地址和執(zhí)行命令碼,但在各行中配置一個加載目的地存儲器地址和多個執(zhí)行命令碼,即使以加載目的地存儲器地址為開頭而每次增加地址,同時加載所有執(zhí)行命令有沒有關(guān)系。
返回到圖4的說明。在步驟402中,從步驟401中被打開的程序文件500中讀取一行數(shù)據(jù)。如果是圖5的程序文件500,則“0000 08000900”被讀取。
接著,在步驟403中,檢驗步驟402中被讀取的行是否為文件終端,如果為終端,則在步驟407中處理進(jìn)行分支,如果不如此,則處理轉(zhuǎn)移到步驟404。
接著,在步驟404中,根據(jù)步驟402中被讀取的一行“0000 08000900”,取得加載目的地存儲器地址。這里,加載目的地存儲器地址為“0000”。
接著,在步驟405中,由步驟402中讀取的“0000 08000900”,取得執(zhí)行命令碼。這里,執(zhí)行命令碼為“08000900”。
接著,在步驟406中,根據(jù)步驟404及步驟405中取得的加載目的地存儲器地址和執(zhí)行命令碼,在存儲器單元100的指定地址中執(zhí)行命令被置位。
然后,重復(fù)進(jìn)行步驟402~步驟406,直至達(dá)到文件終端。如果達(dá)到文件終端,則在步驟407中,步驟401中打開的程序文件被關(guān)閉,結(jié)束處理。
返回到圖3的說明。在輸入命令為“ALLOC命令”時,處理進(jìn)行從步驟302向步驟307的轉(zhuǎn)移。
這里用圖6說明步驟307的處理內(nèi)容。
圖6是表示步驟307的處理的流程。
在本處理中,首先在步驟600中,判定用“ALLOC命令”指定的資源是存儲器(MEM)還是寄存器(REG)。在指定的資源為存儲器(MEM)時,處理轉(zhuǎn)移到步驟601。
接著,在步驟601中,資源類別(存儲器)被存儲在分配信息表中。
這里用圖7說明分配信息表。
圖7是本發(fā)明實施方式1的分配信息表的說明圖。
一個分配信息表700由以下的單元、即“資源類別”、“寄存器類別”、“存儲器區(qū)域范圍(起始地址)”、“存儲器區(qū)域范圍(結(jié)束地址)”、“執(zhí)行命令地址范圍(起始地址)”、“執(zhí)行命令地址范圍(結(jié)束地址)”、“Read/Write信息”、“對下一表的指針”構(gòu)成。
在“資源類別”單元中,存儲用“ALLOC命令”或后述的“LOADALLOC命令”指定的資源類別。設(shè)資源類別在存儲器(MEM)時為“0”,在為寄存器(REG)時為“1”。
在“寄存器類別”單元中,存儲用“ALLOC命令”或后述的“LOADALLOC命令”在資源類別為寄存器(REG)時指定的寄存器類別。設(shè)寄存器類別在REG0時為“0”,在REG1時為“1”。
在“存儲器區(qū)域范圍(起始地址)”和“存儲器區(qū)域范圍(結(jié)束地址)”單元中,用“ALLOC命令”或后述的“LOADALLOC命令”在資源類別為存儲器(MEM)時指定的存儲器區(qū)域范圍(起始地址)和存儲器區(qū)域范圍(結(jié)束地址)被置位。
在“執(zhí)行命令地址范圍(起始地址)”和“執(zhí)行命令地址范圍(結(jié)束地址)”單元中,用“ALLOC命令”或后述的“LOADALLOC命令”指定的執(zhí)行命令的地址范圍(起始地址)和執(zhí)行命令的地址范圍(結(jié)束地址)被置位。
在“Read/Write信息”單元中,存儲用“ALLOC命令”或后述的“LOADALLOC命令”指定的對資源的訪問權(quán)。在訪問權(quán)只許可讀取(R)時被置位“0”,在只許可寫入(W)時被置位“1”,在許可讀寫(RW)時被置位“2”。
在“對下一表的指針”單元中,在用多個“ALLOC命令”或后述的“LOADALLOC命令”指定多個分配信息時,將對下一表的指針進(jìn)行置位。設(shè)初始值為null。
本分配信息表700、701…被配置在資源信息存儲部件103中。
返回到圖6的說明。接著,在步驟602中,取得用“ALLOC命令”指定的存儲器區(qū)域范圍(起始地址)和存儲器區(qū)域范圍(結(jié)束地址)。
接著,在步驟603中,步驟602中取得的存儲器區(qū)域范圍(起始地址)和存儲器區(qū)域范圍(結(jié)束地址)被置位在分配信息表中。
此外,在步驟600中,在用“ALLOC命令”指定的資源為寄存器(REG)時,處理轉(zhuǎn)移到步驟604。
接著,在步驟604中,資源類別(寄存器)被存儲在分配信息表中。
接著,在步驟605中,取得用“ALLOC命令”指定的寄存器類別(REG0、REG1)。
接著,在步驟606中,步驟605中取得的寄存器類別被置位在分配信息表中。
接著,在步驟607中,取得用“ALLOC命令”指定的執(zhí)行命令地址范圍(起始地址)和執(zhí)行命令地址范圍(結(jié)束地址)。
接著,在步驟608中,步驟607中取得的執(zhí)行命令地址范圍(起始地址)和執(zhí)行命令地址范圍(結(jié)束地址)被置位在分配信息表中。
接著,在步驟609中,取得用“ALLOC命令”指定的訪問權(quán)信息(R、W、RW)。
接著,在步驟610中,步驟609中取得的訪問權(quán)信息被置位在分配信息表中,結(jié)束處理。
返回到圖3的說明。輸入命令為“LOADALLOC命令”時,處理進(jìn)行從步驟303向步驟308的轉(zhuǎn)移。
這里用圖8說明步驟308的處理內(nèi)容。
圖8表示步驟308的處理的流程。
在本處理中,首先在步驟800中,取得用“LOADALLOC命令”指定的分配文件名。
接著,在步驟801中,步驟800中取得的分配文件被打開,成為可讀取的狀態(tài)。
這里用圖9說明分配文件。
圖9是本發(fā)明實施方式1的分配文件的說明圖。
這里,設(shè)分配文件900為文本文件。該分配文件900的各行包含一個分配信息(資源類別、存儲器區(qū)域范圍(起始地址、結(jié)束地址)、寄存器類別、執(zhí)行命令地址范圍(起始地址、結(jié)束地址)、訪問權(quán))。
各行的最左邊(第一項)中,記述“資源類別”。這里,在指定的資源是存儲器的情況下為“MEM”,在寄存器的情況下為“REG”。其后的設(shè)定在資源類別為存儲器(MEM)的情況和寄存器(REG)的情況有所不同。再有,設(shè)各設(shè)定(第x項)間用大于或等于一個的區(qū)分符(這里為空格)來區(qū)分。
首先,說明資源類別為存儲器(MEM)的情況。
在“資源類別”的右側(cè)的第二項、第三項中,用十六進(jìn)制數(shù)連續(xù)指定進(jìn)行資源訪問分析的“存儲器區(qū)域范圍(起始地址)”及“存儲器區(qū)域范圍(結(jié)束地址)”。
而在“存儲器區(qū)域范圍(結(jié)束地址)”的右邊的第4項、第5項中,用十六進(jìn)制數(shù)連續(xù)指定進(jìn)行資源訪問分析的“執(zhí)行命令地址范圍(起始地址)”及“執(zhí)行命令地址范圍(結(jié)束地址)”。
然后,“執(zhí)行命令的地址范圍(結(jié)束地址)”的右邊第6項是對用上述存儲器區(qū)域范圍(起始地址、結(jié)束地址)指定的存儲器區(qū)域的訪問權(quán)的項,在只許可讀取時指定為“R”,在只許可寫入時指定為“W”,在許可讀取、寫入兩方時指定為“RW”。
另一方面,在資源類別為寄存器(REG)時,“資源類別”的右邊的第2項是進(jìn)行資源訪問分析的“寄存器類別”,用寄存器名(REG0、REG1)指定。
而在“寄存器類別”的右邊的第三項、第四項中,用十六進(jìn)制數(shù)連續(xù)指定進(jìn)行資源訪問分析的“執(zhí)行命令的地址范圍(起始地址)”及“執(zhí)行命令的地址范圍(結(jié)束地址)”。
然后,“執(zhí)行命令的地址范圍(結(jié)束地址)”的右邊的第五項是用上述檢寄存器類別指定的對寄存器的訪問權(quán)的項,在只許可讀取時指定為“R”,在只許可寫入時指定為“W”,在許可讀取、寫入兩方時指定為“RW”。
這里,在本實施方式中,分配文件900是文本文件,但即使是二進(jìn)制數(shù)據(jù)也沒有問題。此外,分配文件900中記述的各設(shè)定的格式可任意地變更。
返回到圖8的說明。接著,在步驟802中,從步驟801中被打開的文件中讀取一行數(shù)據(jù)。如果以圖9所示的分配文件900為例,則“MEM 100 2000 5 R”被讀取。
接著,在步驟803中,如果達(dá)到步驟802中被讀取的文件終端,則處理轉(zhuǎn)移至步驟805,如果不是這樣,則處理轉(zhuǎn)移至步驟804。
接著,在步驟804中,步驟802中取得的分配信息被存儲在分配信息表中。處理內(nèi)容與上述步驟307相同。
然后,重復(fù)進(jìn)行步驟802~步驟804,直至文件終端。在達(dá)到文件終端后,在步驟805中,關(guān)閉步驟801中被打開的分配文件,結(jié)束處理。
返回到圖3的說明。在輸入命令為“GO命令”時,處理進(jìn)行從步驟304向步驟309的轉(zhuǎn)移。
這里用圖10說明步驟309的處理內(nèi)容。
圖10表示步驟309的處理的流程。
在本處理中,首先在步驟1000中,存儲在存儲器單元100中的執(zhí)行命令被單命令執(zhí)行。這里,設(shè)從存儲器單元100的地址0x000開始執(zhí)行。如果以圖5所示的程序文件500被加載在存儲器單元100中的情況為例,則“LDREG0,MEM(0x100)”(從存儲器單元100的0x100地址讀取數(shù)據(jù)并將其寫入寄存器REG0)命令被執(zhí)行。
接著,在步驟1001中,在步驟1000中被執(zhí)行的命令為HOLD命令時,停止進(jìn)行命令的執(zhí)行。而在不是HOLD命令時,返回到步驟1000,執(zhí)行下一個命令。
在圖5所示的程序文件500中,在“LD REG0,MEM(0x100)”命令后,在“STR MEM(0x100),REG0”命令、…、“HOLD”命令執(zhí)行后停止。
“GO命令”的命令執(zhí)行中,在資源訪問分析部件104中,根據(jù)用上述“ALLOC命令”及“LOADALLOC命令”在分配信息表中指定的分配信息,實施對資源的訪問狀況的檢驗。
下面,使用圖11、圖12、圖13說明資源訪問分析部件104中的處理內(nèi)容。
圖11表示資源訪問分析部件104的處理的流程。
在該處理中,首先在步驟1100中,取得控制單元102當(dāng)前執(zhí)行的命令地址。
接著,在步驟1101中,判定執(zhí)行命令是否對存儲器單元100進(jìn)行訪問(啟動線112有效),在進(jìn)行訪問的情況下,處理轉(zhuǎn)移到步驟1103。
這里用圖12說明步驟1103的處理內(nèi)容。圖12表示步驟1103的處理的流程。
在本處理中,首先在步驟1200中,資源訪問分析部件104檢驗地址線105,取得執(zhí)行命令要訪問的存儲器單元100的地址。
接著,在步驟1201中,資源訪問分析部件104檢驗RW線107,取得執(zhí)行命令的訪問類別(讀取、寫入)。
接著,在步驟1202中,資源訪問分析部件104確認(rèn)在配置于資源信息存儲部件103中的分配信息表中是否設(shè)定了分配信息。
具體地說,資源訪問分析部件104在分配信息表的“資源類別”單元為null情況下判定為沒有分配信息,而在除此以外的情況下判定為具有分配信息。在沒有分配信息的情況下,處理結(jié)束。而在具有分配信息的情況下,處理轉(zhuǎn)移到步驟1203。
接著,在步驟1203中,資源訪問分析部件104判定分配信息表的“資源類別”單元的設(shè)定是否為存儲器(MEM)。在“資源類別”單元不是存儲器(MEM)的情況下,處理向步驟1211分支。而在“資源類別”單元是存儲器(MEM)的情況下,處理轉(zhuǎn)移到步驟1204。
在“資源類別”單元為存儲器(MEM)的情況下,在步驟1204中,資源訪問分析部件104從分配信息表的“執(zhí)行命令地址范圍(起始地址)”及“執(zhí)行命令地址范圍(結(jié)束地址)”單元中取得執(zhí)行命令地址范圍。
接著,在步驟1205中,資源訪問分析部件104判定步驟1100中取得的執(zhí)行命令的地址是否包含在步驟1204中取得的執(zhí)行命令地址范圍內(nèi)。在地址沒有被包含的情況下,處理向步驟1211分支。而在地址被包含的情況下,處理轉(zhuǎn)移到步驟1206。
在地址被包含的情況下,在步驟1206中,從分配信息表的“存儲器區(qū)域范圍(起始地址)”及“存儲器區(qū)域范圍(結(jié)束地址)”單元中取得存儲器區(qū)域范圍。
接著,在步驟1207中,資源訪問分析部件104判定步驟1200中取得的執(zhí)行命令訪問的地址是否被包含在步驟1206中取得的存儲器區(qū)域范圍內(nèi)。在地址沒有被包含的情況下,處理向步驟1211分支。而在地址被包含的情況下,處理轉(zhuǎn)移到步驟1208。
在地址被包含的情況下,在步驟1208中,資源訪問分析部件104從分配信息表的“Read/Write信息”單元中取得訪問權(quán)信息。
接著,在步驟1209中,資源訪問分析部件104判定步驟1201中取得的執(zhí)行命令的訪問類別是否與步驟1208中取得的訪問權(quán)一致。在一致的情況下,處理向步驟1211分支。而在不一致的情況下,處理轉(zhuǎn)移到步驟1210。
在不一致的情況下,在步驟1210中,資源訪問分析部件104將根據(jù)分配信息不許可的對資源的訪問被進(jìn)行的情況通知軟件開發(fā)者。通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。
在步驟1211中,資源訪問分析部件104從分配信息表“對下一表的指針”單元中取得對下一分配信息表的指針。
接著,在步驟1212中,資源訪問分析部件104還判定分配信息表是否存在。具體地說,資源訪問分析部件104在分配信息表的“對下一表的指針”單元為null的情況下判定為沒有下一分配信息表,而在除此以外的情況下判定為具有下一分配信息表。
在具有下一分配信息表的情況下,返回到步驟1202。而在沒有下一分配信息表的情況下,處理結(jié)束。
返回到圖11的說明。在步驟1102中,資源訪問分析部件104判定執(zhí)行命令是否訪問寄存器單元101(啟動線113有效),在訪問的情況下,處理轉(zhuǎn)移到步驟1104。
這里用圖13說明步驟1104的處理內(nèi)容。圖13表示步驟1104的處理的流程。
在本處理中,首先在步驟1300中,資源訪問分析部件104檢驗選擇線108,取得執(zhí)行命令要訪問的寄存器單元101的寄存器類別。
接著,在步驟1301中,資源訪問分析部件104檢驗RW線109,取得執(zhí)行命令的訪問類別(讀取、寫入)。
接著,在步驟1302中,資源訪問分析部件104確認(rèn)配置于資源信息存儲部件103中的分配信息表中是否設(shè)定了分配信息。具體地說,資源訪問分析部件104在分配信息表的“資源類別”單元為null的情況下判定為沒有分配信息,而在除此以外的情況下判定為具有分配信息。
在沒有分配信息的情況下,處理結(jié)束。而在具有分配信息的情況下,處理轉(zhuǎn)移到步驟1303。
接著,在步驟1303中,資源訪問分析部件104判定分配信息表的“資源類別”單元的設(shè)定是否為寄存器(REG)。在“資源類別”單元不是寄存器(REG)的情況下,處理向步驟1311分支。而在“資源類別”單元為寄存器(REG)的情況下,處理轉(zhuǎn)移到步驟1304。
在“資源類別”單元為寄存器(REG)的情況下,在步驟1304中,資源訪問分析部件104從分配信息表的“執(zhí)行命令地址范圍(起始地址)”和“執(zhí)行命令地址范圍(結(jié)束地址)”單元中取得執(zhí)行命令地址范圍。
接著,在步驟1305中,資源訪問分析部件104判定步驟1100中取得的執(zhí)行命令的地址是否被包含在步驟1304中取得的執(zhí)行命令地址范圍內(nèi)。在地址沒有被包含的情況下,處理向步驟1311分支。而在地址被包含的情況下,處理轉(zhuǎn)移到步驟1306。
在地址被包含的情況下,在步驟1306中,資源訪問分析部件104從分配信息表的“寄存器類別”單元中取得寄存器類別。
接著,在步驟1307中,資源訪問分析部件104判定步驟1300中取得的執(zhí)行命令要訪問的寄存器是否與步驟1306中取得的寄存器類別一致。在不一致的情況下,處理向步驟1311分支。而在一致的情況下,處理轉(zhuǎn)移到步驟1308。
在一致的情況下,在步驟1308中,資源訪問分析部件104從分配信息表的“Read/Write信息”單元中取得訪問權(quán)信息。
接著,在步驟1309中,資源訪問分析部件104判定步驟1301中取得的執(zhí)行命令的訪問權(quán)類別是否與步驟1308中取得的訪問權(quán)一致。在一致的情況下,處理向步驟1311分支。而在不一致的情況下,處理轉(zhuǎn)移到步驟1310。
在不一致的情況下,在步驟1310中,資源訪問分析部件104將根據(jù)分配信息不許可的對資源的訪問被進(jìn)行的情況通知軟件開發(fā)者。通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。
在步驟1311中,資源訪問分析部件104從分配信息表“對下一表的指針”單元中取得對下一分配信息表的指針。
接著,在步驟1312中,資源訪問分析部件104還判定分配信息表是否存在。具體地說,判定在資源訪問分析部件104在分配信息表的“對下一表的指針”單元為null的情況下為沒有分配信息表,而在除此以外的情況下具有分配信息表。在具有下一分配信息表的情況下,返回到步驟1302。而在沒有下一分配信息表的情況下,處理結(jié)束。
返回到圖3的說明。在輸入命令為“QUIT命令”的情況下,模擬器本身結(jié)束。
如以上那樣,本方式的模擬器預(yù)先指定對象的執(zhí)行命令地址范圍、許可訪問的資源、訪問類別(讀取、寫入)等的分配信息,通過進(jìn)行命令的執(zhí)行,檢測違反指定的分配信息的處理并通知軟件開發(fā)者。通過實施采用該模擬器的軟件開發(fā),在因軟件的問題而發(fā)生對沒有意圖的資源的訪問時,容易鑒別問題場所,軟件開發(fā)效率提高。
(實施方式2)以下參照圖11、圖14~圖22,說明本發(fā)明的實施方式2。
圖14是本發(fā)明實施方式2的模擬器的方框圖。
存儲器單元1400表現(xiàn)存儲了處理器的執(zhí)行命令和數(shù)據(jù)的存儲器。
寄存器單元1401表現(xiàn)存儲了運(yùn)算數(shù)據(jù)的至少一個寄存器。
控制單元1402表現(xiàn)控制器,該控制器讀取被存儲在存儲器單元1400中的執(zhí)行命令,根據(jù)執(zhí)行命令而訪問存儲器單元1400和寄存器單元1401并進(jìn)行數(shù)據(jù)讀取、寫入。
存儲器單元1400、寄存器單元1401和控制單元1402是表現(xiàn)處理器和構(gòu)成其周邊的單元的模擬單元。
數(shù)據(jù)信息存儲部件1403存儲指定的存儲器單元1400的存儲器區(qū)域范圍、包含在寄存器單元1401中的寄存器類別(資源信息)和每個資源信息的數(shù)據(jù)范圍。
資源訪問分析部件1404將對控制單元1402中的存儲器單元1400和寄存器單元1401的訪問目的地和數(shù)據(jù)與數(shù)據(jù)信息存儲部件1403中存儲的資源信息及數(shù)據(jù)范圍進(jìn)行比較,進(jìn)行訪問目的地沒有被包含在資源信息中、或訪問目的地被包含在資源信息中并且訪問時的數(shù)據(jù)是否被包含在數(shù)據(jù)范圍內(nèi)的數(shù)據(jù)訪問分析。
命令輸入部件1411對輸入的命令進(jìn)行解析,并對控制單元1402、存儲器單元1400及寄存器單元1401進(jìn)行操作,執(zhí)行與命令對應(yīng)的處理。
此外,控制單元1402和存儲器單元1400通過在從控制單元1402訪問存儲器單元1400情況下發(fā)送指定的地址的地址線1405、發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線1406、表示訪問為讀取或?qū)懭氲腞W線1407、表示是否訪問中的啟動線1412來連接。
同樣,控制單元1402和寄存器單元1401通過在從控制單元1402訪問寄存器單元1401情況下發(fā)送指定的寄存器類別的選擇線1408、發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線1409、表示訪問為讀取或?qū)懭氲腞W線1410、表示是否訪問中的啟動線1413來連接。
這些線1405、1406、1407、1412、1408、1409、1410、1413都被包含在模擬單元內(nèi)。
再有,圖14所示的模擬器通過由個人計算機(jī)(PC)和工作站(WS)等主處理器上動作的軟件模塊組來實現(xiàn)。
這樣,在本實施方式的模擬器中,檢驗數(shù)據(jù)訪問的部件包括存儲數(shù)據(jù)信息的數(shù)據(jù)信息存儲部件1403,數(shù)據(jù)信息包含存儲器單元的存儲器區(qū)域范圍及存儲器單元的讀寫類別、以及寄存器單元的寄存器類別及寄存器單元的讀寫類別;以及數(shù)據(jù)訪問分析部件1404,參照數(shù)據(jù)信息分析數(shù)據(jù)訪問是否合適。這里,數(shù)據(jù)信息也可以由命令指定,數(shù)據(jù)信息被作為數(shù)據(jù)準(zhǔn)備,這種數(shù)據(jù)也可以由命令指定。
數(shù)據(jù)信息存儲部件1403存儲處理器的執(zhí)行命令的地址范圍信息,數(shù)據(jù)訪問分析部件1404參照處理器的執(zhí)行命令的地址范圍信息來分析執(zhí)行命令是否合適。
圖15是本發(fā)明實施方式2的模擬器應(yīng)對的命令一覽圖。在本實施方式中,應(yīng)對“LOAD命令”、“GO命令”、“ALLOCD命令”、“LOADALLOCD命令”、“QUIT命令”。不用說,可以變更對應(yīng)的命令。
以下,說明各命令的格式和功能。“LOAD命令”、“GO命令”、“QUIT命令”與實施方式1相同。
其次,“ALLOCD命令”是用于進(jìn)行數(shù)據(jù)訪問分析的資源信息、PC信息、設(shè)定數(shù)據(jù)范圍的命令,在指定的資源為存儲器單元1400時,輸入為“ALLOCDMEM<SA><EA><SPC><EPC><MIN><MAX>”。<SA>、<EA>是進(jìn)行數(shù)據(jù)訪問分析的存儲器區(qū)域范圍(起始地址、結(jié)束地址),用十六進(jìn)制數(shù)指定。
<SPC>、<EPC>是進(jìn)行數(shù)據(jù)訪問分析的執(zhí)行命令的地址范圍(起始地址、結(jié)束地址),用十六進(jìn)制數(shù)指定。<MIN>、<MAX>是對由<SA>及<EA>指定的存儲器區(qū)域的許可訪問時的數(shù)據(jù)范圍<最小值、最大值),用十六進(jìn)制數(shù)指定。例如,對于存儲在存儲器單元1400的地址0x000~0x00F中的16個執(zhí)行命令,在對存儲器單元1400的地址0x100~0x1FF進(jìn)行訪問并只許可0x1~0x2的數(shù)據(jù)范圍情況下,指定為“ALLOCD MEM 100 1FF 0 F1 2”。
而在用“ALLOCD命令”指定的資源為寄存器單元1401時,設(shè)為“ALLOCD REG<REGNAME><SPC><EPC><MIN><MAX>”。<REGNAME>是進(jìn)行資源訪問分析的寄存器類別,用寄存器名(REG0、REG1)指定。<SPC>、<EPC>、<MIN>、<MAX>其指定的資源與存儲器時相同。
接著,“LOADALLOCD命令”被輸入為“LOADALLOCD<file>”,從由文件名<file>指定的分配文件中,讀取用于進(jìn)行資源訪問分析的資源信息、PC信息、數(shù)據(jù)范圍,進(jìn)行設(shè)定。
圖16表示圖14的命令輸入部件1411的處理流程。
設(shè)命令輸入部件1411應(yīng)對圖15所示的5個命令(LOAD等)。
如圖16所示,首先模擬器被起動后,在步驟1600中,為命令輸入等待狀態(tài)。然后在輸入任何命令的情況下,在步驟1601~1605中,根據(jù)輸入命令處理進(jìn)行分支。
在輸入命令為“LOAD命令”、“GO命令”、“QUIT命令”時的處理與實施方式1相同。
在輸入命令為“ALLOCD命令”時,處理進(jìn)行從步驟1602向步驟1607的轉(zhuǎn)移。
這里用圖17說明步驟1607的處理內(nèi)容。圖17表示步驟1607的處理的流程。
在本處理中,首先在步驟1700中,判定用“ALLOCD命令”指定的資源是存儲器(MEM)還是寄存器(REG)。在指定的資源為存儲器(MEM)時,處理轉(zhuǎn)移到步驟1701。
接著,在步驟1701中,資源類別(存儲器)被存儲在分配信息表中。
這里用圖18說明分配信息表。圖18是本發(fā)明實施方式2的分配信息表的說明圖。
一個分配信息表1800由以下的單元、即“資源類別”、“寄存器類別”、“存儲器區(qū)域范圍(起始地址)”、“存儲器區(qū)域范圍(結(jié)束地址)”、“執(zhí)行命令地址范圍(起始地址)”、“執(zhí)行命令地址范圍(結(jié)束地址)”、“數(shù)據(jù)范圍(最小值)”、“數(shù)據(jù)范圍(最大值)”、“對下一表的指針”構(gòu)成。
在“資源類別”單元中,存儲用“ALLOCD命令”或后述的“LOADALLOCD命令”指定的資源類別。設(shè)資源類別在存儲器(MEM)時為“0”,在為寄存器(REG)時為“1”。
在“寄存器類別”單元中,存儲用“ALLOCD命令”或后述的“LOADALLOCD命令”在資源類別為寄存器(REG)時指定的寄存器類別。設(shè)資源類別在REG0時為“0”,在REG1時為“1”。
在“存儲器區(qū)域范圍(起始地址)”和“存儲器區(qū)域范圍(結(jié)束地址)”單元中,用“ALLOCD命令”或后述的“LOADALLOCD命令”在資源類別為存儲器(MEM)時指定的存儲器區(qū)域范圍(起始地址)和存儲器區(qū)域范圍(結(jié)束地址)被置位。
在“執(zhí)行命令地址范圍(起始地址)”和“執(zhí)行命令地址范圍(結(jié)束地址)”單元中,用“ALLOCD命令”或后述的“LOADALLOCD命令”指定的執(zhí)行命令的地址范圍(起始地址)和執(zhí)行命令的地址范圍(結(jié)束地址)被置位。
在“數(shù)據(jù)范圍(最小值)”及“數(shù)據(jù)范圍(最大值)”單元中,存儲對用“ALLOCD命令”或后述的“LOADALLOCD命令”指定的許可資源訪問時的數(shù)據(jù)范圍(最小值、最大值)。
在“對下一表的指針”單元中,在用多個“ALLOCD命令”或后述的“LOADALLOCD命令”指定多個分配信息時,將對下一表的指針進(jìn)行置位。設(shè)初始值為null。本分配信息表被配置在數(shù)據(jù)信息存儲部件1403中。
返回到圖17的說明。在步驟1702中,取得用“ALLOCD命令”指定的存儲器區(qū)域范圍(起始地址)和存儲器區(qū)域范圍(結(jié)束地址)。
接著,在步驟1703中,步驟1702中取得的存儲器區(qū)域范圍(起始地址)和存儲器區(qū)域范圍(結(jié)束地址)被置位在分配信息表中。
此外,在步驟1700中,在用“ALLOCD命令”指定的資源為寄存器(REG)時,處理轉(zhuǎn)移到步驟1704。
接著,在步驟1704中,資源類別(寄存器)被存儲在分配信息表中。
接著,在步驟1705中,取得用“ALLOCD命令”指定的寄存器類別(REG0、REG1)。
接著,在步驟1706中,步驟1705中取得寄存器類別被置位在分配信息表中。
接著,在步驟1707中,取得用“ALLOCD命令”指定的執(zhí)行命令地址范圍(起始地址)和執(zhí)行命令地址范圍(結(jié)束地址)。
接著,在步驟1708中,步驟1707中取得的執(zhí)行命令地址范圍(起始地址)和執(zhí)行命令地址范圍(結(jié)束地址)被置位在分配信息表中。
接著,在步驟1709中,取得用“ALLOCD命令”指定的數(shù)據(jù)范圍(最小值、最大值)。
接著,在步驟1710中,步驟1709中取得的數(shù)據(jù)范圍(最小值、最大值)被置位在分配信息表中,結(jié)束處理。
返回到圖16的說明。輸入命令為“LOADALLOCD命令”時,處理進(jìn)行從步驟1603向步驟1608的轉(zhuǎn)移。
這里用圖19說明步驟1608的處理內(nèi)容。圖19表示步驟1608的處理的流程。
在本處理中,首先在步驟1900中,取得用“LOADALLOCD命令”指定的分配文件名。
接著,在步驟1901中,步驟1900中取得的分配文件成為打開可讀取的狀態(tài)。
這里用圖20說明分配文件。圖20是本發(fā)明實施方式2的分配文件的說明圖。
這里,設(shè)分配文件2000為文本數(shù)據(jù)。分配文件2000的各行包含一個分配信息(資源類別、存儲器區(qū)域范圍(起始地址、結(jié)束地址)、寄存器類別、執(zhí)行命令地址范圍(起始地址、結(jié)束地址)、數(shù)據(jù)范圍(最小值、最大值))。
各行的最左邊(第一項)中,記述“資源類別”。這里,指定的資源在存儲器的情況下為“MEM”,在寄存器的情況下為“REG”。其后的設(shè)定在資源類別為存儲器(MEM)的情況和寄存器(REG)的情況有所不同。再有,設(shè)各設(shè)定(第x項)間用大于或等于一個的區(qū)分符(這里為空格)來區(qū)分。
首先,說明資源類別為存儲器(MEM)的情況。在“資源類別”的右側(cè)的第二項、第三項中,用十六進(jìn)制數(shù)連續(xù)指定進(jìn)行資源訪問分析的“存儲器區(qū)域范圍(起始地址)”及“存儲器區(qū)域范圍(結(jié)束地址)”。
而在“存儲器區(qū)域范圍(結(jié)束地址)”的右側(cè)的第4項、第5項中,用十六進(jìn)制數(shù)連續(xù)指定進(jìn)行資源訪問分析的“執(zhí)行命令地址范圍(起始地址)”及“執(zhí)行命令地址范圍(結(jié)束地址)”。
然后,“執(zhí)行命令的地址范圍(結(jié)束地址)”的右側(cè)第6項、第七項中,用十六進(jìn)制數(shù)連續(xù)指定對由上述存儲器區(qū)域范圍(起始地址、結(jié)束地址)指定的存儲器區(qū)域訪問許可的“數(shù)據(jù)范圍(最小值)”及“數(shù)據(jù)范圍(最大值)”。。
下面,說明資源類別為寄存器(REG)的說明。“資源類別”的右邊第二項是進(jìn)行資源訪問分析的“寄存器類別”,用寄存器名(REG0、REG1)指定。
而在“寄存器類別”的右側(cè)的第三項、第四項中,用十六進(jìn)制數(shù)連續(xù)指定進(jìn)行資源訪問分析的“執(zhí)行命令的地址范圍(起始地址)”及“執(zhí)行命令的地址范圍(結(jié)束地址)”。
然后,在“執(zhí)行命令的地址范圍(結(jié)束地址)”的右側(cè)的第五項、第六項中,用十六進(jìn)制數(shù)連續(xù)指定許可對由寄存器類別指定的寄存器的訪問的“數(shù)據(jù)范圍(最小值)”及“數(shù)據(jù)范圍(最大值)”。
這里,在本實施方式中,分配文件2000設(shè)為文本數(shù)據(jù),但即使是二進(jìn)制數(shù)據(jù),也沒有問題。此外,分配文件2000中記述的各設(shè)定的格式可任意地變更。
返回到圖19的說明。接著,在步驟1902中,從文件打開處理步驟1901中被打開的文件中讀取一行數(shù)據(jù)。如果以圖20所示的分配文件2000為例,則“MEM 100 200 0 5 0 F”被讀取。
接著,在步驟1903中,如果在步驟1902中是文件終端,則處理分支到步驟1905。
接著,處理轉(zhuǎn)移至步驟1904,步驟1902中取得的分配數(shù)據(jù)被存儲在分配信息表中。處理內(nèi)容與步驟1607相同。
然后,重復(fù)進(jìn)行步驟1902~步驟1904,直至文件終端。在達(dá)到文件終端后,在步驟1905中,關(guān)閉步驟1901中被打開的分配文件,結(jié)束處理。
“GO命令”的命令執(zhí)行中,數(shù)據(jù)訪問分析部件1404根據(jù)由上述的“ALLOCD命令”及“LOADALLOCD命令”在分配信息表中指定的分配信息,檢驗對資源的訪問狀況。
下面用圖11、圖21、圖22說明數(shù)據(jù)訪問分析部件1404中的處理內(nèi)容。圖11表示圖14的數(shù)據(jù)訪問分析部件1404的處理的流程。
在本處理中,首先在步驟1100中,數(shù)據(jù)訪問分析部件1404取得控制單元1402當(dāng)前執(zhí)行的命令地址。
接著,在步驟1101中,數(shù)據(jù)訪問分析部件1404判定執(zhí)行命令是否對存儲器單元1400進(jìn)行訪問(啟動線1412有效),在進(jìn)行訪問的情況下,處理轉(zhuǎn)移到步驟1103。
這里,用圖21說明步驟1103的處理內(nèi)容。圖21表示步驟1103的處理的流程。
在該處理中,首先在步驟2100中,數(shù)據(jù)訪問分析部件1404檢驗地址線1405,取得執(zhí)行命令訪問的存儲器單元1400的地址。
接著,在步驟2101中,數(shù)據(jù)訪問分析部件1404檢驗數(shù)據(jù)線1406,取得執(zhí)行命令的訪問時的數(shù)據(jù)。
接著,在步驟2102中,數(shù)據(jù)訪問分析部件1404確認(rèn)分配信息是否設(shè)定在配置于數(shù)據(jù)信息存儲部件1403中的分配信息表中。
具體地說,數(shù)據(jù)訪問分析部件1404判定為在分配信息表的“資源類別”單元為null情況下沒有分配信息,而在除此以外的情況下具有分配信息。在沒有分配信息的情況下,處理結(jié)束。而在具有分配信息的情況下,處理轉(zhuǎn)移到步驟2103。
接著,在步驟2103中,數(shù)據(jù)訪問分析部件1404判定分配信息表的“資源類別”單元的設(shè)定是否為存儲器(MEM)。在“資源類別”單元不是存儲器(MEM)的情況下,處理向步驟2111分支。而在“資源類別”單元是存儲器(MEM)的情況下,處理轉(zhuǎn)移到步驟2104。
在“資源類別”單元為存儲器(MEM)的情況下,在步驟2104中,數(shù)據(jù)訪問分析部件1404從分配信息表的“執(zhí)行命令地址范圍(起始地址)”及“執(zhí)行命令地址范圍(結(jié)束地址)”單元中取得執(zhí)行命令地址范圍。
接著,在步驟2105中,數(shù)據(jù)訪問分析部件1404判定步驟1100中取得的執(zhí)行命令的地址是否包含在步驟2104中取得的執(zhí)行命令地址范圍內(nèi)。在地址沒有被包含的情況下,處理向步驟2111分支。而在地址被包含的情況下,處理轉(zhuǎn)移到步驟2106。
在地址被包含的情況下,在步驟2106中,數(shù)據(jù)訪問分析部件1404從分配信息表的“存儲器區(qū)域范圍(起始地址)”及“存儲器區(qū)域范圍(結(jié)束地址)”單元中取得存儲器區(qū)域范圍。
接著,在步驟2107中,數(shù)據(jù)訪問分析部件1404判定步驟2100中取得的執(zhí)行命令訪問的地址是否被包含在步驟2106中取得的存儲器區(qū)域范圍內(nèi)。在地址沒有被包含的情況下,處理向步驟2111分支。而在地址被包含的情況下,處理轉(zhuǎn)移到步驟2108。
在地址被包含的情況下,在步驟2108中,數(shù)據(jù)訪問分析部件1404從分配信息表的“數(shù)據(jù)范圍(最小值)”及“數(shù)據(jù)范圍(最大值)”單元中取得數(shù)據(jù)范圍信息。
接著,在步驟2109中,數(shù)據(jù)訪問分析部件1404判定步驟2101中取得的執(zhí)行命令的訪問時的數(shù)據(jù)是否被包含在步驟2108中取得的數(shù)據(jù)范圍內(nèi)。在被包含的情況下,處理向步驟2111分支。而在沒有包含的情況下,處理轉(zhuǎn)移到步驟2110。
在沒有包含的情況下,在步驟2110中,數(shù)據(jù)訪問分析部件1404將根據(jù)分配信息不許可的對資源的數(shù)據(jù)訪問被進(jìn)行的情況通知軟件開發(fā)者。通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。
在步驟2111中,數(shù)據(jù)訪問分析部件1404從分配信息表“對下一表的指針”單元中取得對下一分配信息表的指針。
接著,在步驟2112中,數(shù)據(jù)訪問分析部件1404還判定分配信息表是否存在。具體地說,數(shù)據(jù)訪問分析部件1404判定為在分配信息表的“對下一表的指針”單元為null的情況下沒有下一分配信息表,而在除此以外的情況下具有下一分配信息表。在具有下一分配信息表的情況下,返回到步驟2102。而在沒有下一分配信息表的情況下,處理結(jié)束。
返回到圖11的說明。在步驟1102中,數(shù)據(jù)訪問分析部件1404判定執(zhí)行命令是否訪問寄存器單元101(啟動線1413有效),在訪問的情況下,處理轉(zhuǎn)移到步驟1104。
這里用圖22說明步驟1104的處理內(nèi)容。圖22表示步驟1104的處理的流程。
在本處理中,首先在步驟2200中,數(shù)據(jù)訪問分析部件1404檢驗選擇線1408,取得執(zhí)行命令要訪問的寄存器單元1401的寄存器類別。
接著,在步驟2201中,數(shù)據(jù)訪問分析部件1404檢驗數(shù)據(jù)線1409,取得執(zhí)行命令的訪問時的數(shù)據(jù)。
接著,在步驟2202中,數(shù)據(jù)訪問分析部件1404確認(rèn)配置于數(shù)據(jù)信息存儲部件1403中的分配信息表中是否設(shè)定了分配信息。
具體地說,數(shù)據(jù)訪問分析部件1404判定為在分配信息表的“資源類別”單元為null的情況下沒有分配信息,而在除此以外的情況下具有分配信息。在沒有分配信息的情況下,處理結(jié)束。而在具有分配信息的情況下,處理轉(zhuǎn)移到步驟2203。
接著,在步驟2203中,數(shù)據(jù)訪問分析部件1404判定分配信息表的“資源類別”單元的設(shè)定是否為寄存器(REG)。在“資源類別”單元不是寄存器(REG)的情況下,處理向步驟2211分支。而在“資源類別”單元為寄存器(REG)的情況下,處理轉(zhuǎn)移到步驟2204。
在“資源類別”單元為寄存器(REG)的情況下,在步驟2204中,數(shù)據(jù)訪問分析部件1404從分配信息表的“執(zhí)行命令地址范圍(起始地址)”和“執(zhí)行命令地址范圍(結(jié)束地址)”單元中取得執(zhí)行命令地址范圍。
接著,在步驟2205中,數(shù)據(jù)訪問分析部件1404判定步驟1100中取得的執(zhí)行命令的地址是否被包含在步驟2204中取得的執(zhí)行命令地址范圍內(nèi)。在地址沒有被包含的情況下,處理向步驟2211分支。而在地址被包含的情況下,處理轉(zhuǎn)移到步驟2206。
在地址被包含的情況下,在步驟2206中,數(shù)據(jù)訪問分析部件1404從分配信息表的“寄存器類別”單元中取得寄存器類別。
接著,在步驟2207中,數(shù)據(jù)訪問分析部件1404判定步驟2200中取得的執(zhí)行命令要訪問的寄存器是否與步驟2206中取得的寄存器類別一致。在不一致的情況下,處理向步驟2211分支。而在一致的情況下,處理轉(zhuǎn)移到步驟2208。
在一致的情況下,在步驟2208中,數(shù)據(jù)訪問分析部件1404從分配信息表的“數(shù)據(jù)范圍(最小值)”及“數(shù)據(jù)范圍(最大值)”單元中取得數(shù)據(jù)范圍信息。
接著,在步驟2209中,數(shù)據(jù)訪問分析部件1404判定步驟2201中取得的執(zhí)行命令的訪問時的數(shù)據(jù)是否被包含在步驟2208中取得的數(shù)據(jù)范圍內(nèi)。在被包含的情況下,處理向步驟2211分支。而在沒有被包含的情況下,處理轉(zhuǎn)移到步驟2210。
在沒有被包含的情況下,在步驟2210中,數(shù)據(jù)訪問分析部件1404將根據(jù)分配信息不許可的對資源的訪問被進(jìn)行的情況通知軟件開發(fā)者。通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。
在步驟2211中,數(shù)據(jù)訪問分析部件1404從分配信息表“對下一表的指針”單元中取得對下一分配信息表的指針。
接著,在步驟2212中,數(shù)據(jù)訪問分析部件1404還判定分配信息表是否存在。
具體地說,數(shù)據(jù)訪問分析部件1404在分配信息表的“對下一表的指針”單元為null的情況下判定為沒有分配信息表,而在除此以外的情況下判定為具有分配信息表。在具有下一分配信息表的情況下,返回到步驟2202。而在沒有下一分配信息表的情況下,處理結(jié)束。
如以上那樣,本方式的模擬器預(yù)先指定對象的執(zhí)行命令地址范圍、許可訪問的資源、數(shù)據(jù)范圍(最小值、最大值)等的分配信息,通過進(jìn)行命令的執(zhí)行,檢測違反指定的分配信息的處理并通知軟件開發(fā)者。通過實施采用該模擬器的軟件開發(fā),在因軟件的問題而發(fā)生對沒有意圖的資源的訪問時,容易鑒別問題場所,軟件開發(fā)效率提高。
(實施方式3)以下參照圖11、圖23~圖29,說明本發(fā)明的實施方式3。
圖23是本發(fā)明實施方式3的模擬器的方框圖。
存儲器單元2300表現(xiàn)存儲了處理器的執(zhí)行命令和數(shù)據(jù)的存儲器。
寄存器單元2301表現(xiàn)存儲了運(yùn)算數(shù)據(jù)的至少一個寄存器。
控制單元2302表現(xiàn)控制器,該控制器讀取被存儲在存儲器單元2300中的執(zhí)行命令,根據(jù)執(zhí)行命令而訪問存儲器單元2300和寄存器單元2301并進(jìn)行數(shù)據(jù)讀取、寫入。
存儲器單元2300、寄存器單元2301和控制單元2302是構(gòu)成表現(xiàn)處理器和其周邊的單元的模擬單元。
資源初始化信息存儲部件2303存儲表示存儲器單元2300各存儲器區(qū)域和被包含在寄存器單元2301的各寄存器是否被初始化的信息。
資源初始化分析部件2304檢驗資源初始化信息存儲單元2303,進(jìn)行對控制單元2302中的存儲器單元2300和寄存器單元2301的訪問目的地是否被初始化的分析(資源初始化分析)。
命令輸入部件2311對輸入的命令進(jìn)行解析,對控制單元2302、存儲器單元2300及寄存器單元2301進(jìn)行操作,執(zhí)行與命令對應(yīng)的處理。
此外,控制單元2302和存儲器單元2300通過在從控制單元2302訪問存儲器單元2300情況下發(fā)送指定的地址的地址線2305、以及發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線2306、表示訪問是讀取或?qū)懭氲腞W線2307、表示是否訪問中的啟動線2312來連接。
同樣,控制單元2302和寄存器單元2301通過在從控制單元2302訪問寄存器單元2302情況下發(fā)送指定的寄存器類別的選擇線2308、以及發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線2309、表示訪問是讀取或?qū)懭氲腞W線2310、表示是否訪問中的啟動線2313來連接。
這些線2305、2306、2307、2312、2308、2309、2310、2313都被包含在模擬單元內(nèi)。
再有,圖23所示的模擬器通過由個人計算機(jī)(PC)和工作站(WS)等的主處理器上動作的軟件模塊組來實現(xiàn)。
本方式的模擬器,包括檢驗存儲器單元和寄存器單元是否被初始化的部件。這種檢驗的部件包括存儲表示存儲器單元和寄存器單元是否被初始化的信息的資源初始化信息存儲部件2303;以及參照資源初始化信息存儲部件,控制單元分析對存儲器單元及寄存器單元進(jìn)行訪問時訪問目的地是否被初始化的資源初始化分析部件2304。
圖24是本發(fā)明實施方式3的模擬器應(yīng)對的命令一覽圖。在本實施方式中,應(yīng)對“LOAD命令”、“GO命令”、“SET命令”、“QUIT命令”,但也可以有各種變更。
以下,說明各命令的格式和功能?!癓OAD命令”、“GO命令”、“QUIT命令”與實施方式1或2相同。
其次,“SET命令”是在指定的資源(存儲器、寄存器)中設(shè)定指定的數(shù)據(jù)的命令。指定的資源為存儲器單元2300時,輸入為“SET MEM<ADDR><DATA>”。
<ADDR>是將數(shù)據(jù)進(jìn)行置位的存儲器區(qū)域地址,用十六進(jìn)制數(shù)指定。<DATA>是置位在由存儲器單元2300的<ADDR>指定的地址中的數(shù)據(jù),用十六進(jìn)制數(shù)指定。例如,對于存儲器單元2300的地址0x000,在將數(shù)據(jù)0x1置位時,指定為“SET MEM 0 1”。
而在用“SET命令”指定的資源為寄存器單元2301時,輸入“SET REG<REGNAME><DATA>”。<REGNAME>是將數(shù)據(jù)進(jìn)行置位的寄存器類別,用寄存器名(REG0、REG1)指定。<DATA>與指定的資源為存儲器時相同。
圖25表示命令輸入部件2311的處理的流程。
設(shè)命令輸入部件2311應(yīng)對圖24所示的4個命令。如圖25所示,首先模擬器被起動后,在步驟2500中,為命令輸入等待狀態(tài)。然后在輸入任何命令的情況下,在步驟2501~2504中,根據(jù)輸入命令處理進(jìn)行分支。
在輸入命令為“LOAD命令”、“GO命令”、“QUIT命令”時的處理與實施方式1或2相同。
在輸入命令為“SET命令”時,處理進(jìn)行從步驟2502向步驟2506的轉(zhuǎn)移。
這里用圖26說明步驟2506的處理內(nèi)容。圖26表示步驟2506的處理的流程。
在本處理中,首先在步驟2600中,判定用“SET命令”指定的資源類別是存儲器(MEM)還是寄存器(REG)。在為存儲器(MEM)時,處理分支到步驟2601。而在為寄存器(REG)時,處理分支到步驟2604。
在資源類別為存儲器(MEM)時,在步驟2601中,取得將由“SET命令”指定的數(shù)據(jù)進(jìn)行置位的地址信息。
接著,在步驟2602中,取得由“SET命令”指定的數(shù)據(jù)。
接著,在步驟2603中,在存儲器單元2300中,在步驟2601中取得的地址區(qū)域中,步驟2602中取得的數(shù)據(jù)被置位。
接著,在步驟2607中,在配置于資源初始化信息存儲部件2303的資源初始化信息表中,在與步驟2601中取得的存儲器地址區(qū)域所對應(yīng)的初始化信息中,已初始化(1)被置位,處理結(jié)束。有關(guān)資源初始化信息表的說明,后面論述。
另一方面,在資源類別為寄存器(REG)時,在步驟2604中取得由“SET命令”指定的寄存器類別。
接著,在步驟2605中,取得由“SET命令”指定的數(shù)據(jù)。
接著,在步驟2606中,在寄存器單元2301中,在步驟2604中取得的寄存器中,數(shù)據(jù)取得處理步驟2605中取得的數(shù)據(jù)被置位。
接著,在步驟2608中,在配置于資源初始化信息存儲部件2303的資源初始化信息表中,在與步驟2604中取得的寄存器所對應(yīng)的初始化信息中,已初始化(1)被置位,處理結(jié)束。
“GO命令”的命令執(zhí)行中,資源初始化分析部件2304檢驗訪問目的地資源(存儲器、寄存器)的已初始化狀況。
下面用圖11、圖27~圖29說明資源初始化分析部件2304中的處理內(nèi)容。圖11表示資源初始化分析部件2304的處理的流程。
在本處理中,首先在取得執(zhí)行命令地址處理步驟1100中,資源初始化分析部件2304取得控制單元2302當(dāng)前執(zhí)行的命令地址。
接著,在步驟1101中,資源初始化分析部件2304判定執(zhí)行命令是否對存儲器單元2300進(jìn)行訪問(啟動線2312有效),在進(jìn)行訪問的情況下,處理轉(zhuǎn)移到步驟1103。
這里,用圖27說明步驟1103的處理內(nèi)容。圖27表示步驟1103的處理的流程。
在該處理中,首先在步驟2700中,資源初始化分析部件2304檢驗地址線2305,取得執(zhí)行命令訪問的存儲器單元2300的地址。
接著,在步驟2701中,資源初始化分析部件2304檢驗RW線2307,取得執(zhí)行命令的訪問類別(讀取、寫入)。
接著,在步驟2702中,資源初始化分析部件2304檢查步驟2701中取得的訪問類別。在讀取訪問的情況下,處理向步驟2703分支。而在寫入訪問的情況下,處理向步驟2706分支。
首先說明讀取訪問時的處理。在步驟2703中,資源初始化分析部件2304參照配置于資源初始化信息存儲部件2303中的資源初始化信息表,取得與步驟2700中取得的存儲器地址區(qū)域?qū)?yīng)的初始化信息。
這里用圖28說明資源初始化信息表。圖28是本發(fā)明實施方式3的資源初始化信息表的說明圖。
資源初始化信息表2800是注冊圖23所示的模擬器對模擬的處理器的資源(存儲器、寄存器)的初始化信息的表。
在第一索引(index)中資源類別(存儲器(MEM)或寄存器(REG))被注冊,在第二索引中資源類別為存儲器(MEM)時存儲器地址被注冊,在資源類別為寄存器(REG)時寄存器名被注冊,每個資源的初始化信息(未初始化0、已初始化1)被置位。
在模擬器起動時,所有資源未初始化(0)被置位。但是,圖23所示的模擬器模擬的處理器與電源接通時的復(fù)位時硬件性地初始化為什么樣的值的資源有關(guān),沒有這種限制。
在從資源初始化信息表2800取得(置位)對各資源的初始化信息時,首先與指定的資源類別(存儲器、寄存器)對應(yīng)的第一索引被選擇,接著在資源類別為存儲器的情況下,與指定的地址對應(yīng)的第二索引被選擇,在寄存器的情況下,與指定的寄存器名對應(yīng)的第二索引被選擇,實施向?qū)ο蟮馁Y源初始化信息(未初始化0、已初始化1)的訪問。
返回到圖27的說明。在步驟2704中,資源初始化分析部件2304判定步驟2703中取得的初始化信息未初始化(0)還是已初始化(1)。在已初始化(1)時,處理結(jié)束。而在未初始化(0)時,處理轉(zhuǎn)移到步驟2705。
在執(zhí)行命令的訪問目的地資源未初始化(0)時,在步驟2705中,資源初始化分析部件2304將發(fā)生對一次也未初始化的資源進(jìn)行訪問的情況通知軟件開發(fā)者。通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。
下面,說明寫入訪問的情況的處理。在步驟2706中,資源初始化分析部件2304在配置于資源初始化信息存儲部件2303中的資源初始化信息表中,在與步驟2700取得的存儲器地址區(qū)域?qū)?yīng)的初始化信息中,將已初始化(1)進(jìn)行置位,處理結(jié)束。
返回到圖11的說明。在步驟1102中,資源初始化分析部件2304判定執(zhí)行命令是否訪問寄存器單元2301(啟動線2313有效),在訪問的情況下,處理轉(zhuǎn)移到步驟1104。
這里用圖29說明步驟1104的處理內(nèi)容。圖29表示步驟1104的處理的流程。
在本處理中,首先在步驟2900中,資源初始化分析部件2304檢驗選擇線2308,取得執(zhí)行命令要訪問的寄存器單元2301的寄存器類別。
接著,在步驟2901中,資源初始化分析部件2304檢驗RW線2310,取得執(zhí)行命令的訪問類別(讀取、寫入)。
接著,在步驟2902中,資源初始化分析部件2304檢驗在步驟2901中取得的訪問類別。在讀取訪問時,處理向步驟2903分支。而在寫入訪問時,處理向步驟2906分支。
首先說明讀取訪問情況下的處理。在步驟2903中,資源初始化分析部件2304參照配置于資源初始化信息存儲部件2303的資源初始化信息表,取得與在步驟2900中取得的寄存器對應(yīng)的初始化信息。
接著,在步驟2904中,資源初始化分析部件2304判定在資源初始化信息取得處理步驟2903中取得的初始化信息是未初始化(0)還是已初始化(1)。
在已初始化(1)時,處理結(jié)束。而在未初始化(0)時,處理轉(zhuǎn)移到步驟2905。
在執(zhí)行命令的訪問目的地資源未初始化(0)時,在步驟2905中,資源初始化分析部件2304將產(chǎn)生對一次也未初始化的資源進(jìn)行訪問的情況通知軟件開發(fā)者。通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。
下面,說明寫入訪問情況下的處理。在步驟2906中,資源初始化分析部件2304在配置于資源初始化信息存儲部件2303的資源初始化信息表中,在與步驟2900取得的寄存器對應(yīng)的初始化信息中,將已初始化(1)進(jìn)行置位,處理結(jié)束。
如以上那樣,本方式的模擬器準(zhǔn)備對各資源的初始化信息,在進(jìn)行對資源的訪問的命令執(zhí)行時進(jìn)行對未初始化資源的訪問處理的檢測并通知軟件開發(fā)者。通過實施采用該模擬器的軟件開發(fā),在因軟件的問題而發(fā)生對沒有意圖的資源的訪問時,容易鑒別問題場所,軟件開發(fā)效率提高。
(實施方式4)以下參照圖30~圖32,說明本發(fā)明的實施方式4。
圖30是本發(fā)明實施方式4的模擬器的方框圖。
存儲器單元3000表現(xiàn)存儲了處理器的執(zhí)行命令和數(shù)據(jù)的存儲器。
寄存器單元3001表現(xiàn)存儲了運(yùn)算數(shù)據(jù)的至少一個寄存器。
控制單元3002表現(xiàn)控制器,該控制器讀取被存儲在存儲器單元3000中的執(zhí)行命令,根據(jù)執(zhí)行命令而進(jìn)行對存儲器單元3000和寄存器單元3001的訪問處理,以及與參照包含于寄存器單元3001的寄存器的結(jié)果對應(yīng)的執(zhí)行命令的分支處理(附帶條件命令)。
存儲器單元3000、寄存器單元3001和控制單元3002是構(gòu)成表現(xiàn)處理器和其周邊的單元的模擬單元。
附帶條件命令執(zhí)行狀態(tài)分析部件3004在根據(jù)參照被執(zhí)行的命令包含于寄存器單元3001的寄存器的結(jié)果而執(zhí)行處理的附帶條件命令時,存儲附帶條件命令的地址信息和執(zhí)行時參照的寄存器值。
命令輸入部件3011對輸入的命令進(jìn)行解析,對控制單元3002、存儲器單元3000及寄存器單元3001進(jìn)行操作,執(zhí)行與命令對應(yīng)的處理。
而控制單元3002和存儲器單元3000通過在從控制單元3002對存儲器單元3000進(jìn)行訪問情況下發(fā)送指定的地址的地址線3005、以及發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線3006、表示訪問為讀取還是寫入的RW線3007、表示是否訪問中的啟動線3012來連接。
同樣,控制單元3002和寄存器單元3001通過在從控制單元3002對寄存器單元3001進(jìn)行訪問情況下發(fā)送指定的寄存器類別的選擇線3008、以及發(fā)送接收讀取、寫入數(shù)據(jù)的數(shù)據(jù)線3009、表示訪問為讀取還是寫入的RW線3010、表示訪問中的啟動線3013來連接。
這些線3005、3006、3007、3012、3008、3009、3010、3013都包含在模擬單元中。
再有,圖30所示的模擬器通過由個人計算機(jī)(PC)和工作站(WS)等的主處理器上動作的軟件模塊組來實現(xiàn)。
此外,圖30所示的模擬器對應(yīng)圖24所示的命令,各命令執(zhí)行時的處理內(nèi)容與實施方式2相同。
“GO命令”的命令執(zhí)行中,附帶條件命令執(zhí)行狀態(tài)分析部件3004存儲附帶條件命令的地址信息和執(zhí)行時被參照的寄存器值。
下面,用圖31說明附帶條件命令執(zhí)行狀態(tài)分析部件3004中的處理內(nèi)容。圖31表示附帶條件命令執(zhí)行狀態(tài)分析部件3004的處理的流程。
在本處理中,首先在步驟3100中,附帶條件命令執(zhí)行狀態(tài)分析部件3004取得控制單元3002執(zhí)行的命令碼。這里,設(shè)命令碼為圖5的程序文件500中所示的32位的代碼??刂茊卧?002執(zhí)行與該命令碼對應(yīng)的處理。
圖30的模擬器模擬的處理器執(zhí)行附帶條件命令(與參照包含于寄存器單元3001的寄存器的結(jié)果對應(yīng)的處理)。然后,設(shè)該處理器應(yīng)對命令“JP/CC”,該命令根據(jù)指定的條件將執(zhí)行命令分支到指定的地址。
下面,用圖32說明附帶條件命令“JP/CC”。圖32例示了附帶條件命令“JP/CC”。
首先,附帶條件命令“JP/CC”的匯編源碼中的格式及功能依據(jù)功能說明3200。匯編源碼的格式為“JP/CC ADDR”,在用“CC”指定的條件成立時,執(zhí)行命令分支到由“ADDR”指定的地址。
如上述那樣“CC”指定分支條件,作為“CC”,也可指定“ZR0”、“NZ0”、“ZR1”、“NZ1”。“ZR0”被指定時,在寄存器單元3001的寄存器REG0為0的情況下條件成立進(jìn)行執(zhí)行命令分支?!癗Z0”被指定時,寄存器單元3001的寄存器REG0為0以外的情況下條件成立并進(jìn)行執(zhí)行命令分支。“ZR1”被指定時,在寄存器單元3001的寄存器REG1為0的情況下條件成立并進(jìn)行執(zhí)行命令分支?!癗Z1”被指定時,寄存器單元3001的寄存器REG1為0以外的情況下條件成立并進(jìn)行執(zhí)行命令分支。
此外,“ADDR”是用上述“CC”指定的條件成立的情況下進(jìn)行分支的地址,用十六進(jìn)制數(shù)指定。例如,在寄存器單元3001的寄存器REG0為0的情況下,向地址0x0005分支的命令的情況下,為“JP/ZR0 0x0005”。
下面,關(guān)于用上述格式記述的附帶條件命令“JP/CC”、加載于存儲器單元3000的命令碼的應(yīng)對,用位圖3201、3202來說明。位圖3201是表示附帶條件命令“JP/CC”命令碼(32位)的位圖(bit map)。
bit31~bit22為“1100100001”(二進(jìn)制數(shù)),該命令碼表示“JP/CC”命令。bit21~bit16是表示“CC”的指定的位,被設(shè)定的碼用位圖3202表示。
bit21~bit16為“000000”(二進(jìn)制數(shù))時表示“ZR0”,“000001”(二進(jìn)制數(shù))時表示“NZ0”,“000010”(二進(jìn)制數(shù))時表示“ZR1”,“000011”(二進(jìn)制數(shù))時表示“NZ1”。bit15~bit0是用“CC”指定的條件成立時進(jìn)行分支的地址。
返回到圖31的說明。在步驟3101中,附帶條件命令執(zhí)行狀態(tài)分析部件3004判定步驟3100中取得的命令是否為根據(jù)參照包含于寄存器單元3001的寄存器的結(jié)果而執(zhí)行處理的附帶條件命令。
具體地說,附帶條件命令執(zhí)行狀態(tài)分析部件3004在步驟3100中取得的命令碼(32位)的bit31~bit22為“1100100001”(二進(jìn)制數(shù))時,判定為附帶條件命令“JP/CC”。這里不是附帶條件命令時,處理結(jié)束。而在是附帶條件命令時,處理轉(zhuǎn)移到步驟3102。
在是附帶條件命令時,在步驟3102中,附帶條件命令執(zhí)行狀態(tài)分析部件3004取得執(zhí)行命令的存儲器單元3000中的地址。
接著,在步驟3103中,附帶條件命令執(zhí)行狀態(tài)分析部件3004取得步驟3100中取得的附帶條件命令在用于條件判定中參照的寄存器值(包含于寄存器單元3001)。
具體地說,附帶條件命令執(zhí)行狀態(tài)分析部件3004參照步驟3100中取得的命令碼(32位)的bit21~bit16,在“000000”(二進(jìn)制數(shù))或“000001”(二進(jìn)制數(shù))時取得寄存器REG0的數(shù)據(jù),而在“000010”(二進(jìn)制數(shù))或“000011”(二進(jìn)制數(shù))時取得寄存器REG1的數(shù)據(jù)。
接著,在步驟3104中,附帶條件命令執(zhí)行狀態(tài)分析部件3004將步驟3102中取得的執(zhí)行命令地址和步驟3103中取得的參照寄存器值相關(guān)聯(lián)存儲。
接著,在步驟3105中,附帶條件命令執(zhí)行狀態(tài)分析部件3004將步驟3104中存儲的執(zhí)行命令地址和參照寄存器值通知軟件開發(fā)者。
通知方法是任意的,例如,可考慮向未圖示的顯示器等的輸出裝置的顯示等。再有,在本方式中,在每次附帶條件命令執(zhí)行時通知執(zhí)行命令地址和參照寄存器值,但除此以外,附帶條件命令執(zhí)行時僅執(zhí)行存儲執(zhí)行命令地址及參照寄存器值,在程序結(jié)束后根據(jù)命令等而輸出存儲的信息也沒有關(guān)系。
如以上那樣,本方式的模擬器在根據(jù)參照寄存器等的結(jié)果而執(zhí)行處理的附帶條件命令執(zhí)行時,存儲附帶條件命令的存儲器地址和用于條件判定而參照的寄存器值,并將其通知軟件開發(fā)者。通過實施采用該模擬器的軟件開發(fā),可確認(rèn)附帶條件命令的執(zhí)行狀態(tài),可驗證軟件在所有的條件下是否如開發(fā)者的意圖那樣進(jìn)行動作,所以提高軟件的完成性(動作的準(zhǔn)確性)。
不用說,實施方式1至4可以適當(dāng)組合實施。
根據(jù)本發(fā)明,具有以下效果。
在因軟件的問題而產(chǎn)生對沒有意圖的資源的訪問時,容易鑒別問題場所,提高軟件開發(fā)效率。
在因軟件的問題而產(chǎn)生對未初始化資源的訪問時,容易鑒別問題場所,提高軟件開發(fā)效率。
軟件開發(fā)者可以確認(rèn)附帶條件命令的執(zhí)行狀態(tài),可以驗證軟件在所有的條件下是否如開發(fā)者的意圖那樣進(jìn)行動作,提高軟件的完成性(動作的準(zhǔn)確性)。
權(quán)利要求
1.一種模擬器,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問的控制器的控制單元;所述模擬器包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入部件;以及檢驗所述控制單元對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問的資源訪問的部件。
2.如權(quán)利要求1所述的模擬器,其特征在于,檢驗所述資源訪問的部件包括存儲資源信息的資源信息存儲部件,所述資源信息包含所述存儲器單元的存儲區(qū)范圍和所述存儲器單元的讀寫類別、所述寄存器單元的寄存器類別和所述寄存器單元的讀寫類別;以及資源訪問分析部件,參照所述資源信息來分析資源訪問是否合適。
3.如權(quán)利要求1所述的模擬器,其中,所述資源信息由所述命令指定。
4.如權(quán)利要求1所述的模擬器,其中,所述資源信息被作為數(shù)據(jù)來準(zhǔn)備,所述數(shù)據(jù)由所述命令指定。
5.如權(quán)利要求2所述的模擬器,其中,所述資源信息存儲部件還存儲所述處理器的執(zhí)行命令的地址范圍信息,所述資源訪問分析部件還參照所述處理器的執(zhí)行命令的地址范圍信息來分析執(zhí)行命令是否合適。
6.一種模擬器,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問的控制器的控制單元;所述模擬器包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入部件;以及檢驗所述控制單元對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問的數(shù)據(jù)訪問的部件。
7.如權(quán)利要求6所述的模擬器,其中,檢驗所述數(shù)據(jù)訪問的部件包括存儲數(shù)據(jù)信息的數(shù)據(jù)信息存儲部件,所述數(shù)據(jù)信息包含所述存儲器單元的存儲區(qū)范圍和所述存儲器單元的讀寫類別、所述寄存器單元的寄存器類別和所述寄存器單元的讀寫類別;以及數(shù)據(jù)訪問分析部件,參照所述數(shù)據(jù)信息來分析數(shù)據(jù)訪問是否合適。
8.如權(quán)利要求6所述的模擬器,其中,所述數(shù)據(jù)信息由所述命令指定。
9.如權(quán)利要求6所述的模擬器,其中,所述數(shù)據(jù)信息被作為數(shù)據(jù)而準(zhǔn)備,所述數(shù)據(jù)由所述命令指定。
10.如權(quán)利要求7所述的模擬器,其中,所述數(shù)據(jù)信息存儲部件還存儲所述處理器的執(zhí)行命令的地址范圍信息,所述數(shù)據(jù)訪問分析部件還參照所述處理器的執(zhí)行命令的地址范圍信息來分析執(zhí)行命令是否合適。
11.一種模擬器,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問的控制器的控制單元;所述模擬器包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入部件;以及檢驗所述存儲器單元和/或所述寄存器單元是否被初始化的部件。
12.如權(quán)利要求11所述的模擬器,其中,檢驗所述存儲器單元和/或所述寄存器單元是否被初始化的部件包括資源初始化信息存儲部件,存儲表示所述存儲器單元和/或所述寄存器單元是否被初始化的信息;以及資源初始化分析部件,參照所述資源初始化信息存儲部件,分析所述控制單元在對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問時訪問目的地是否被初始化。
13.一種模擬器,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問的控制器的控制單元;所述模擬器包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入部件;以及檢驗所述控制單元執(zhí)行的附帶條件命令的執(zhí)行狀態(tài)的部件。
14.如權(quán)利要求13所述的模擬器,其中,檢驗所述存儲器單元執(zhí)行的附帶條件命令的執(zhí)行狀態(tài)的部件包括附帶條件命令執(zhí)行狀態(tài)分析部件,在所述控制單元執(zhí)行附帶條件命令時,存儲附帶條件命令的地址信息和執(zhí)行時參照的寄存器值。
15.一種模擬方法,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問,并執(zhí)行與所述寄存器單元的寄存值對應(yīng)的附帶條件命令的控制器的控制單元;所述模擬方法包括命令輸入步驟,對輸入的命令進(jìn)行解析并操作所述多個模擬單元;以及附帶條件命令執(zhí)行狀態(tài)分析步驟,存儲有關(guān)所述附帶條件命令的執(zhí)行狀態(tài)的信息。
16.一種模擬方法,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問的控制器的控制單元;所述模擬方法包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入步驟;以及檢驗所述控制單元對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問的資源訪問的步驟。
17.如權(quán)利要求16所述的模擬方法,其中,所述檢驗所述資源訪問的步驟包括存儲資源信息的資源信息存儲步驟,所述資源信息包含所述存儲器單元的存儲區(qū)范圍及所述存儲器單元的讀寫類別、所述寄存器單元的寄存器類別和所述寄存器單元的讀寫類別;以及資源訪問分析步驟,參照所述資源信息分析資源訪問是否合適。
18.如權(quán)利要求16所述的模擬方法,其中,所述資源信息由所述命令指定。
19.如權(quán)利要求16所述的模擬方法,其中,所述資源信息被作為數(shù)據(jù)來準(zhǔn)備,所述數(shù)據(jù)由所述命令指定。
20.如權(quán)利要求17至19任何一項所述的模擬方法,其中,在所述資源信息存儲步驟中,還存儲所述處理器的執(zhí)行命令的地址范圍信息,在所述資源訪問分析步驟中,還參照所述處理器的執(zhí)行命令的地址范圍信息分析執(zhí)行命令是否合適。
21.一種模擬方法,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問的控制器的控制單元;所述模擬方法包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入步驟;以及檢驗所述控制單元對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問的數(shù)據(jù)訪問的步驟。
22.如權(quán)利要求21所述的模擬方法,其中,檢驗所述數(shù)據(jù)訪問的步驟包括存儲數(shù)據(jù)信息的數(shù)據(jù)信息存儲步驟,所述數(shù)據(jù)信息包含所述存儲器單元的存儲區(qū)范圍和所述存儲器單元的讀寫類別、所述寄存器單元的寄存器類別和所述寄存器單元的讀寫類別;以及數(shù)據(jù)訪問分析步驟,參照所述數(shù)據(jù)信息分析數(shù)據(jù)訪問是否合適。
23.如權(quán)利要求21所述的模擬方法,其中,所述數(shù)據(jù)信息由所述命令指定。
24.如權(quán)利要求21所述的模擬方法,其中,所述數(shù)據(jù)信息被作為數(shù)據(jù)準(zhǔn)備,所述數(shù)據(jù)由所述命令指定。
25.如權(quán)利要求22所述的模擬方法,其中,在所述數(shù)據(jù)信息存儲步驟中,還存儲所述處理器的執(zhí)行命令的地址范圍信息,在所述數(shù)據(jù)訪問分析步驟中,還參照所述處理器的執(zhí)行命令的地址范圍信息分析執(zhí)行命令是否合適。
26.一種模擬方法,用多個模擬單元表現(xiàn)包含處理器的單元,從而模擬所述處理器的動作,其特征在于,所述多個模擬單元具有表現(xiàn)存儲所述處理器的執(zhí)行命令和數(shù)據(jù)的存儲器的存儲器單元;表現(xiàn)所述處理器的寄存器的寄存器單元;以及表現(xiàn)對所述存儲器單元和/或所述寄存器進(jìn)行訪問的控制器的控制單元;所述模擬方法包括對輸入的命令進(jìn)行解析并操作所述多個模擬單元的命令輸入步驟;以及檢驗所述存儲器單元和/或所述寄存器單元是否被初始化的步驟。
27.如權(quán)利要求26所述的模擬方法,其中,檢驗所述存儲器單元和/或所述寄存器單元是否被初始化的步驟包括資源初始化信息存儲步驟,存儲表示所述存儲器單元和/或所述寄存器單元是否被初始化的信息;以及資源初始化分析步驟,參照所述資源初始化信息存儲部件,分析所述控制單元對所述存儲器單元和/或所述寄存器單元進(jìn)行訪問時訪問目的地是否被初始化。
全文摘要
本發(fā)明提供一種用軟件模擬處理器的動作的模擬器。該模擬器包括進(jìn)行輸入命令的解析/處理的命令輸入部件(111);存儲處理器的執(zhí)行命令和數(shù)據(jù)的寄存器單元(100);存儲運(yùn)算用數(shù)據(jù)的寄存器單元(101);根據(jù)執(zhí)行命令而訪問存儲器單元及寄存器單元的控制單元(102);存儲指定的資源信息和每個資源信息的R/W信息的資源信息存儲部件(103);將對控制單元中的存儲器單元和寄存器單元的訪問目的地及R/W類別與存儲于資源信息存儲部件中的資源信息及R/W信息進(jìn)行比較,進(jìn)行訪問目的地是否由資源信息及R/W信息許可的資源訪問分析的資源訪問分析部件(104)。
文檔編號G06F17/50GK1609808SQ20041008578
公開日2005年4月27日 申請日期2004年10月22日 優(yōu)先權(quán)日2003年10月22日
發(fā)明者近藤孝宏, 中村剛, 樽木麻衣子, 米澤友紀(jì) 申請人:松下電器產(chǎn)業(yè)株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
洞口县| 沧源| 壶关县| 右玉县| 广宗县| 郓城县| 左权县| 于都县| 交口县| 公安县| 水富县| 包头市| 仙居县| 景洪市| 鹿邑县| 安乡县| 大悟县| 屏南县| 扎兰屯市| 嘉义市| 安多县| 桂阳县| 达拉特旗| 济南市| 都安| 嘉禾县| 色达县| 江源县| 时尚| 丹江口市| 昌都县| 砚山县| 盐源县| 弋阳县| 威海市| 余干县| 隆尧县| 镇坪县| 二手房| 金堂县| 永安市|