CN1296825C - 模拟器及模拟方法 - Google Patents

模拟器及模拟方法 Download PDF

Info

Publication number
CN1296825C
CN1296825C CNB200410085782XA CN200410085782A CN1296825C CN 1296825 C CN1296825 C CN 1296825C CN B200410085782X A CNB200410085782X A CN B200410085782XA CN 200410085782 A CN200410085782 A CN 200410085782A CN 1296825 C CN1296825 C CN 1296825C
Authority
CN
China
Prior art keywords
register
order
data
resource
memory cell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB200410085782XA
Other languages
English (en)
Other versions
CN1609808A (zh
Inventor
近藤孝宏
中村刚
樽木麻衣子
米泽友纪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1609808A publication Critical patent/CN1609808A/zh
Application granted granted Critical
Publication of CN1296825C publication Critical patent/CN1296825C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种用软件模拟处理器的动作的模拟器。该模拟器包括:进行输入命令的解析/处理的命令输入部件(111);存储处理器的执行命令和数据的寄存器单元(100);存储运算用数据的寄存器单元(101);根据执行命令而访问存储器单元及寄存器单元的控制单元(102);存储指定的资源信息和每个资源信息的R/W信息的资源信息存储部件(103);将对控制单元中的存储器单元和寄存器单元的访问目的地及R/W类别与存储于资源信息存储部件中的资源信息及R/W信息进行比较,进行访问目的地是否由资源信息及R/W信息许可的资源访问分析的资源访问分析部件(104)。

Description

模拟器及模拟方法
技术领域
本发明涉及用软件模拟DSP(Digital Signal Processor)等处理器的动作的模拟器(simulator)及其相关技术。
背景技术
在面向合并的软件开发中,采用以下的过程。首先,用C/C++等高级语言来记述源码。此外,对于重视性能(处理量、资源使用量等)的部分,进行使用汇编语言的编码。
接着,将编码后的软件在模拟作为靶的DSP等资源(寄存器、存储器等)和动作的模拟器上执行,进行源码的调试等。
这里,模拟器在调试时使用,具有在个人计算机(PC)和工作站(WS)等主处理器上进行动作,使执行中的软件按某一定时停止,参照各种资源(寄存器、存储器等)的状态,同时将值置位(set)在各种资源中等的功能。
而在专利文献1(日本特开平5-233317号公报)公开了具有在软件执行后,显示对预先用命令指定的存储器进行写入的函数名的功能的模拟器。
以下,说明专利文件1公开的软件模拟器。
图33(a)是专利文献1的软件模拟器的流程图,图33(b)表示由专利文件1公开的软件模拟器编制的区域访问用表。
在图33(a)的步骤3300中,输入命令,在步骤3301中,输入的命令被解析。
解析的结果,如果输入的命令是区域访问命令,则在步骤3303中进行区域访问的处理。
在步骤3303中,在输入的命令为setacc命令的情况下,根据用命令指定的地址信息,编制图33(b)所示的区域访问用表3308。
而在输入的命令不是setacc命令,而是getacc命令的情况下,在区域访问用表3308中,显示与用命令指定的地址信息一致的函数名。
接着,在步骤3304中,进行是否为命令的执行命令的判定,在不是命令的执行命令时,处理返回步骤3300。
在是命令的执行命令时,在步骤3305中命令被执行,在步骤3306中,进行是否在用setacc命令指定的区域中进行写入的判定。
在步骤3306中,判定执行的命令是否为存储器访问命令,在不是存储器访问命令的情况下处理结束。
在执行的命令是存储器访问命令,写入目的地包含在存储于区域访问用表3308中的地址信息的情况下,包含执行命令的函数名被存储在区域访问用表3308中。
接着,在步骤3307中,判断命令的执行是否结束,在继续进行命令的执行时,处理进至步骤3305,在结束的情况下,处理返回步骤3300。
按以上那样的结构,专利文献1的模拟器在软件执行后,显示向预先用命令指定的存储器进行写入的函数名。
但是,在现有的模拟器中,不具备软件开发者检验没有意图的对资源(寄存器、存储器等)的访问(读取、写入)的功能,以及检验对资源(寄存器、存储器等)的访问时的数据是否为软件开发者意图的值的功能。在由于没有意图的访问和数据(读取、写入)而使软件产生异常动作时,软件开发者重复进行软件的执行、停止、资源状态的参照,需要鉴别软件上的问题场所,软件开发效率显著下降。
此外,现有的模拟器在模拟时,以执行命令为单位,具有某一命令是否被执行的检验和保留历史的功能。但是,在执行命令为按照某一寄存器值而切换处理(例如寄存器值为0时分支到指定的地址等)的附带条件命令的情况下,由于没有检验附带条件命令在什么条件下执行的功能,所以不能确认开发的软件在所有条件下是否进行有意图的动作。
在专利文献1中公开的软件模拟器中,也不能检验对寄存器的访问及来自存储器的读取。而且,即使对于对存储器的写入,仅在软件执行后显示函数名的历史,所以不能鉴别有问题的写入在哪儿。
发明内容
本发明的第一目的在于,提供能够提高软件开发效率的模拟器。本发明的第二目的在于,提供能够提高开发的软件的完成性的模拟器。
第一发明的模拟器用多个模拟单元表现包含处理器的单元,从而模拟处理器的动作,多个模拟单元具有:表示存储处理器的执行命令和数据的存储器的存储器单元;表示处理器的寄存器的寄存器单元;以及表示对存储器单元和/或寄存器进行访问的控制器的控制单元。模拟器包括:对输入的命令进行解析并操作多个模拟单元的命令输入部件;以及检验控制单元对存储器单元和/或寄存器单元进行访问的资源访问的部件。检验资源访问的部件包括:存储资源信息的资源信息存储部件,资源信息包含存储器单元的存储区范围和存储器单元的读写类别、寄存器单元的寄存器类别和寄存器单元的读写类别;以及资源访问分析部件,参照资源信息来分析资源访问是否合适。
在第二发明的模拟器中,资源信息由命令指定。
在第三发明的模拟器中,资源信息被作为数据来准备,数据由命令指定。
在第四发明的模拟器中,资源信息存储部件还存储处理器的执行命令的地址范围信息,资源访问分析部件还参照处理器的执行命令的地址范围信息来分析执行命令是否合适。
根据这些结构,预先指定执行命令地址范围、许可访问的资源、访问类别(读取、写入)等的分配信息,可以进行命令的执行。因此,可以检测违反指定的分配信息的处理,并通知软件开发者。其结果,在因软件的问题而产生没有意图的对资源的访问时,容易鉴别问题场所,提高软件开发效率。
第五发明的模拟器用多个模拟单元表示包含处理器的单元,从而模拟处理器的动作,多个模拟单元具有:表示存储处理器的执行命令和数据的存储器的存储器单元;表示处理器的寄存器的寄存器单元;以及表示对存储器单元和/或寄存器进行访问的控制器的控制单元。模拟器包括:对输入的命令进行解析并操作多个模拟单元的命令输入部件;以及检验控制单元对存储器单元和/或寄存器单元进行访问的数据访问的部件。检验数据访问的部件包括:存储数据信息的数据信息存储部件,数据信息包含存储器单元的存储区范围和存储器单元的读写类别、寄存器单元的寄存器类别和寄存器单元的读写类别;以及数据访问分析部件,参照数据信息来分析数据访问是否合适。
在第六发明的模拟器中,数据信息由命令指定。
在第七发明的模拟器中,所述数据信息被作为数据而准备,数据由命令指定。
在第八发明的模拟器中,数据信息存储部件还存储处理器的执行命令的地址范围信息,数据访问分析部件还参照处理器的执行命令的地址范围信息来分析执行命令是否合适。
根据这些结构,预先指定执行命令地址范围、许可访问的资源、数据范围(最小值、最大值)等的模拟信息,进行命令的执行。因此,可以检测与违反了指定的模拟信息的处理,可以通知软件开发者。其结果,在因软件的问题,产生没有意义的对资源的数据访问时,容易鉴别问题场所,提高软件开发效率。
在第九发明的模拟器中,用多个模拟单元表示包含处理器的单元,从而模拟处理器的动作,多个模拟单元具有:表示存储处理器的执行命令和数据的存储器的存储器单元;表示处理器的寄存器的寄存器单元;以及表示对存储器单元和/或寄存器进行访问的控制器的控制单元;模拟器包括:对输入的命令进行解析并操作多个模拟单元的命令输入部件;以及检验存储器单元和/或寄存器单元是否在被初始化的部件。检验存储器单元和/或寄存器单元是否被初始化的部件包括:资源初始化信息存储部件,存储表示存储器单元和/或寄存器单元是否在被初始化的信息;以及资源初始化分析部件,参照资源初始化信息存储部件,分析控制单元在对存储器单元和/或寄存器单元进行访问时访问目的地是否被初始化。
根据这些结构,准备对各资源的初始化信息,可在进行对资源的访问的命令执行时检测对未初始化资源的访问处理,并且可通知软件开发者。其结果,在因软件的问题而产生对未初始化资源的访问时,容易鉴别问题场所,提高软件开发效率。
第十发明的模拟器用多个模拟单元表示包含处理器的单元,从而模拟处理器的动作,多个模拟单元具有:表示存储处理器的执行命令和数据的存储器的存储器单元;表示处理器的寄存器的寄存器单元;以及表示对存储器单元和/或寄存器进行访问的控制器的控制单元。模拟器包括:对输入的命令进行解析并操作多个模拟单元的命令输入部件;以及检验控制单元执行的附带条件命令的执行状态的部件。检验存储器单元执行的附带条件命令的执行状态的部件包括:附带条件命令执行状态分析部件,在控制单元执行附带条件命令时,存储附带条件命令的地址信息和执行时参照的寄存器值。
根据这些结构,在按照参照寄存器等的结果而执行处理的附带条件命令执行时,可以存储附带条件命令的存储器地址和为了条件判定而参照的寄存器值,而且可以将存储的信息通知软件开发者。因此,软件开发者可以确认执行命令地址范围的执行状态,可以验证软件在所有的条件下是否如开发者的意图那样进行动作,提高软件的完成性(动作的准确性)。
本发明还提供一种模拟方法,用多个模拟单元表现表示包含处理器的单元,从而模拟所述处理器的动作,所述多个模拟单元具有:表现表示存储所述处理器的执行命令和数据的存储器的存储器单元;表现表示所述处理器的寄存器的寄存器单元;以及表现表示对所述存储器单元和/或所述寄存器进行访问,并执行与所述寄存器单元的寄存值对应的附带条件命令的控制器的控制单元;所述模拟方法包括:命令输入步骤,对输入的命令进行解析并操作所述多个模拟单元;以及附带条件命令执行状态分析步骤,存储有关所述附带条件命令的执行状态的信息。
本发明还提供一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,所述多个模拟单元具有:表示存储所述处理器的执行命令和数据的存储器的存储器单元;表示所述处理器的寄存器的寄存器单元;以及表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;所述模拟方法包括:对输入的命令进行解析并操作所述多个模拟单元的命令输入步骤;以及检验所述控制单元对所述存储器单元和/或所述寄存器单元进行访问的资源访问的步骤,所述检验所述资源访问的步骤包括:存储资源信息的资源信息存储步骤,所述资源信息包含所述存储器单元的存储区范围及所述存储器单元的读写类别、所述寄存器单元的寄存器类别和所述寄存器单元的读写类别;以及资源访问分析步骤,参照所述资源信息分析资源访问是否合适。
本发明还提供一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,所述多个模拟单元具有:表示存储所述处理器的执行命令和数据的存储器的存储器单元;表示所述处理器的寄存器的寄存器单元;以及表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;所述模拟方法包括:对输入的命令进行解析并操作所述多个模拟单元的命令输入步骤;以及检验所述控制单元对所述存储器单元和/或所述寄存器单元进行访问的数据访问的步骤,检验所述数据访问的步骤包括:存储数据信息的数据信息存储步骤,所述数据信息包含所述存储器单元的存储区范围和所述存储器单元的读写类别、所述寄存器单元的寄存器类别和所述寄存器单元的读写类别;以及数据访问分析步骤,参照所述数据信息分析数据访问是否合适。
本发明还提供一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,所述多个模拟单元具有:表示存储所述处理器的执行命令和数据的存储器的存储器单元;表示所述处理器的寄存器的寄存器单元;以及表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;所述模拟方法包括:对输入的命令进行解析并操作所述多个模拟单元的命令输入步骤;以及检验所述存储器单元和/或所述寄存器单元是否被初始化的步骤,检验所述存储器单元和/或所述寄存器单元是否被初始化的步骤包括:资源初始化信息存储步骤,存储表示所述存储器单元和/或所述寄存器单元是否被初始化的信息;以及资源初始化分析步骤,参照所述资源初始化信息存储部件,分析所述控制单元对所述存储器单元和/或所述寄存器单元进行访问时访问目的地是否被初始化。
附图说明
图1是本发明实施方式1的模拟器的方框图。
图2是本发明实施方式1的命令一览图。
图3是本发明实施方式1的命令输入部件的流程图。
图4是本发明实施方式1的步骤306的流程图。
图5是本发明实施方式1的程序文件的说明图。
图6是本发明实施方式1的步骤307的流程图。
图7是本发明实施方式1的分配信息表的说明图。
图8是本发明实施方式1的步骤308的流程图。
图9是本发明实施方式1的分配文件的说明图。
图10是本发明实施方式1的步骤309的流程图。
图11是本发明实施方式1的资源访问分析部件的流程图。
图12是本发明实施方式1的步骤1103的流程图。
图13是本发明实施方式1的步骤1104的流程图。
图14是本发明实施方式2的模拟器的方框图。
图15是本发明实施方式2的命令一览图。
图16是本发明实施方式2的命令输入部件的流程图。
图17是本发明实施方式2的步骤1607的流程图。
图18是本发明实施方式2的分配信息表的说明图。
图19是本发明实施方式2的步骤1608的流程图。
图20是本发明实施方式2的分配文件的说明图。
图21是本发明实施方式2的步骤1103的流程图。
图22是本发明实施方式2的步骤1104的流程图。
图23是本发明实施方式3的模拟器的方框图。
图24是本发明实施方式3的命令一览图。
图25是本发明实施方式3的命令输入部件的流程图。
图26是本发明实施方式3的步骤2506的流程图。
图27是本发明实施方式3的步骤1103的流程图。
图28是本发明实施方式3的资源初始化信息表的说明图。
图29是本发明实施方式3的步骤1104的流程图。
图30是本发明实施方式4的模拟器的方框图。
图31是本发明实施方式4的附带条件命令执行状态分析部件的流程图。
图32是本发明实施方式4的附带条件命令“JP/CC”的说明图。
图33(a)是现有的模拟器的流程图。
图33(b)是现有的区域访问用表的说明图。
具体实施方式
以下,参照附图来说明本发明的实施方式。
(实施方式1)
以下参照图1~图13来说明本发明的实施方式1。
图1是本发明实施方式1的模拟器的方框图。
存储器单元100表现存储有处理器的执行命令和数据的存储器。
寄存器单元101表现存储有运算数据的至少一个寄存器。
控制单元102表现控制器,该控制器读取被存储在存储器单元100中的执行命令,根据执行命令而访问存储器单元100和寄存器单元101并进行数据读取、写入。
存储器单元100、寄存器单元101及控制单元102是构成表现处理器及其周边的单元的模拟单元。
资源信息存储部件103存储指定的存储器单元100的存储器区域范围、寄存器单元101中包含的寄存器类别(资源信息)和每个资源信息的读取/写入类别(Read/Write信息)。
资源访问分析部件104将对控制单元102中的存储器单元100和寄存器单元101的访问目的地及读取/写入类别和存储在资源信息存储部件103中的资源信息及Read/Write信息进行比较,进行访问目的地未包含在资源信息,或访问目的地包含在资源信息内并且读取/写入类别和Read/Write信息是否不同的资源访问分析。
命令输入部件111对输入的命令进行解析,对控制单元102、存储器单元100及寄存器单元101进行操作,执行与命令对应的处理。
而控制单元102和存储器单元100在从控制单元102对存储器单元100进行访问的情况下通过发送指定地址的地址线105、以及发送接收读取、写入数据的数据线106、表示访问为读取还是写入的RW线107、表示是否在访问中的启动线112来连接。
同样,控制单元102和寄存器单元101在从控制单元102对寄存器单元101进行访问的情况下通过发送指定寄存器类别的选择线108、以及发送接收读取、写入数据的数据线109、表示访问为读取还是写入的RW线110、表示是否在访问中的启动线113来连接。
这些线105、106、107、112、108、109、110、113都包含在模拟单元中。
再有,图1所示的模拟器由个人计算机(PC)和工作站(WS)等的主处理器上动作的软件模块组来实现。
这样,在本实施方式的模拟器中,检验资源访问的部件包括:存储资源信息的资源信息存储部件103,资源信息包含存储器单元的存储器区域范围及存储器单元的读写类别、以及寄存器单元的寄存器类别及寄存器单元的读写类别;以及资源访问分析部件104,参照资源信息分析资源访问是否合适。
这里,资源信息也可以由命令指定,资源信息被作为数据准备,这种数据也可以由命令指定。此外,资源信息存储部件103存储处理器的执行命令的地址范围信息,资源访问分析部件104参照处理器的执行命令的地址范围信息来分析执行命令是否合适。
图2是本发明实施方式1的模拟器应对的命令一览图。在本实施方式中,应对“LOAD命令”、“GO命令”、“ALLOC命令”、“LOADALLOC命令”、“QUIT命令”。但是,这不过是一例,可以进行各种变更。
以下,说明各命令的格式和功能。
首先,“LOAD命令”被输入为“LOAD<file>”,执行命令从用文件名<file>指定的程序文件被加载到存储器单元100。例如,在程序文件被作为文件名“program.1st”准备的情况下,被输入为“LOAD program.1st”。
接着,“GO命令”被输入为“GO”,如果有这种输入,则控制单元102执行被存储在存储器单元100中的执行命令。
接着,“ALLOC命令”是设定用于进行资源访问分析的资源信息、PC信息、Read/Write信息的命令。在指定的资源为存储器单元100的情况下,输入为“ALLOC MEM<SA><EA><SPC><EPC><RW>”。
<SA>、<EA>是进行资源访问分析的存储器区域范围(起始地址、结束地址),用十六进制数指定。<SPC>、<EPC>是进行资源访问分析的执行命令的地址范围<起始地址、结束地址),用十六进制数指定。<RW>是指定对由<SA>及<EA>指定的存储器区域的访问权的信息,在只许可读取时指定为“R”,在只许可写入时指定为“W”,在许可读取、写入两者时指定为“RW”。例如,对于存储在存储器单元100的地址0x000~0x00F中的16个执行命令,在只许可对存储器单元100的地址0x100~0x1FF读取的情况下,指定为“ALLOCMEM 100 1FF 0 F R”。
而在用“ALLOC命令”指定的资源为寄存器单元101时,输入“ALLOCREG<REGNAME><SPC><EPC><RW>”。<REGNAME>是进行资源访问分析的寄存器类别,用寄存器名(REG0、REG1)指定。<SPC><EPC><RW>指定的资源与存储器时相同。
接着,“LOADALLOC命令”被输入为“LOADALLOC<file>”,如果是该输入,则从由文件名<file>指定的分配文件中,读取用于进行资源访问分析的资源信息、PC信息、Read/Write信息,进行规定的设定。
接着,“QUIT命令”被输入为“QUIT”,如果为该输入,则模拟器本身结束。
图3表示图1的命令输入部件111的处理流程。
命令输入部件111应对图2所示的5个命令(LOAD等)。如图3所示,首先模拟器被起动后,在步骤300中,为命令输入等待状态。然后在输入任何命令的情况下,在步骤301~305中,根据输入命令处理进行分支。
在输入命令为“LOAD命令”时,处理进行从步骤301向步骤306的转移。
这里用图4说明步骤306的处理内容。图4表示步骤306的处理的流程。
在本处理中,首先在步骤400中,取得用“LOAD命令”指定的程序文件名。“LOAD命令”指定的文件名的指定方法如上述那样。
接着,在步骤401中,在步骤400中取得的文件被打开,该文件为可读取的状态。
这里用图5说明用“LOAD命令”指定的程序文件。
图5例示本发明实施方式1的程序文件。这里,设程序文件500为文本数据的程序文件。
程序文件500的各行表示一个执行命令,各行的最左边四位的字符串(000、0001、...(十六进制数))为加载目的地的存储器地址,在其右侧夹入一个以上空格,下一字符串(08000900、...(十六进制数))为表示执行命令的代码。程序文件500的右侧的记述是程序文件500中的各行的执行命令码为什么样的汇编记述,表示是否执行哪样的处理。
在实际的软件开发中,编制使用汇编记述的源码文件,使用将其翻译为对应于程序文件500所示的各执行命令的代码的被称为“汇编”的工具,从而生成程序文件。
其中,使用“汇编”的源码文件→程序文件变换处理与本发明的核心没有关系,所以省略其详细的说明。
这里,例如,设记述于程序文件500的开头行的执行命令码“08000900”为“LD REG0 MEM(0x100)”的汇编记述。此时,从存储器单元100的地址0x100地址读取数据,该数据被写入寄存器单元101的寄存器REG0。以下同样,加载目的地存储器地址、执行命令码的组被配置在程序文件500的各行。
这里,在本实施方式中,程序文件500为文本数据,但即使是二进制数据,也没有任何问题。此外,程序文件500在各行中配置一组加载目的地存储器地址和执行命令码,但在各行中配置一个加载目的地存储器地址和多个执行命令码,即使以加载目的地存储器地址为开头而每次增加地址,同时加载所有执行命令有没有关系。
返回到图4的说明。在步骤402中,从步骤401中被打开的程序文件500中读取一行数据。如果是图5的程序文件500,则“0000 08000900”被读取。
接着,在步骤403中,检验步骤402中被读取的行是否为文件终端,如果为终端,则在步骤407中处理进行分支,如果不如此,则处理转移到步骤404。
接着,在步骤404中,根据步骤402中被读取的一行“0000 08000900”,取得加载目的地存储器地址。这里,加载目的地存储器地址为“0000”。
接着,在步骤405中,由步骤402中读取的“0000 08000900”,取得执行命令码。这里,执行命令码为“08000900”。
接着,在步骤406中,根据步骤404及步骤405中取得的加载目的地存储器地址和执行命令码,在存储器单元100的指定地址中执行命令被置位。
然后,重复进行步骤402~步骤406,直至达到文件终端。如果达到文件终端,则在步骤407中,步骤401中打开的程序文件被关闭,结束处理。
返回到图3的说明。在输入命令为“ALLOC命令”时,处理进行从步骤302向步骤307的转移。
这里用图6说明步骤307的处理内容。
图6是表示步骤307的处理的流程。
在本处理中,首先在步骤600中,判定用“ALLOC命令”指定的资源是存储器(MEM)还是寄存器(REG)。在指定的资源为存储器(MEM)时,处理转移到步骤601。
接着,在步骤601中,资源类别(存储器)被存储在分配信息表中。
这里用图7说明分配信息表。
图7是本发明实施方式1的分配信息表的说明图。
一个分配信息表700由以下的单元、即“资源类别”、“寄存器类别”、“存储器区域范围(起始地址)”、“存储器区域范围(结束地址)”、“执行命令地址范围(起始地址)”、“执行命令地址范围(结束地址)”、“Read/Write信息”、“对下一表的指针”构成。
在“资源类别”单元中,存储用“ALLOC命令”或后述的“LOADALLOC命令”指定的资源类别。设资源类别在存储器(MEM)时为“0”,在为寄存器(REG)时为“1”。
在“寄存器类别”单元中,存储用“ALLOC命令”或后述的“LOADALLOC命令”在资源类别为寄存器(REG)时指定的寄存器类别。设寄存器类别在REG0时为“0”,在REG1时为“1”。
在“存储器区域范围(起始地址)”和“存储器区域范围(结束地址)”单元中,用“ALLOC命令”或后述的“LOADALLOC命令”在资源类别为存储器(MEM)时指定的存储器区域范围(起始地址)和存储器区域范围(结束地址)被置位。
在“执行命令地址范围(起始地址)”和“执行命令地址范围(结束地址)”单元中,用“ALLOC命令”或后述的“LOADALLOC命令”指定的执行命令的地址范围(起始地址)和执行命令的地址范围(结束地址)被置位。
在“Read/Write信息”单元中,存储用“ALLOC命令”或后述的“LOADALLOC命令”指定的对资源的访问权。在访问权只许可读取(R)时被置位“0”,在只许可写入(W)时被置位“1”,在许可读写(RW)时被置位“2”。
在“对下一表的指针”单元中,在用多个“ALLOC命令”或后述的“LOADALLOC命令”指定多个分配信息时,将对下一表的指针进行置位。设初始值为null。
本分配信息表700、701...被配置在资源信息存储部件103中。
返回到图6的说明。接着,在步骤602中,取得用“ALLOC命令”指定的存储器区域范围(起始地址)和存储器区域范围(结束地址)。
接着,在步骤603中,步骤602中取得的存储器区域范围(起始地址)和存储器区域范围(结束地址)被置位在分配信息表中。
此外,在步骤600中,在用“ALLOC命令”指定的资源为寄存器(REG)时,处理转移到步骤604。
接着,在步骤604中,资源类别(寄存器)被存储在分配信息表中。
接着,在步骤605中,取得用“ALLOC命令”指定的寄存器类别(REG0、REG1)。
接着,在步骤606中,步骤605中取得的寄存器类别被置位在分配信息表中。
接着,在步骤607中,取得用“ALLOC命令”指定的执行命令地址范围(起始地址)和执行命令地址范围(结束地址)。
接着,在步骤608中,步骤607中取得的执行命令地址范围(起始地址)和执行命令地址范围(结束地址)被置位在分配信息表中。
接着,在步骤609中,取得用“ALLOC命令”指定的访问权信息(R、W、RW)。
接着,在步骤610中,步骤609中取得的访问权信息被置位在分配信息表中,结束处理。
返回到图3的说明。输入命令为“LOADALLOC命令”时,处理进行从步骤303向步骤308的转移。
这里用图8说明步骤308的处理内容。
图8表示步骤308的处理的流程。
在本处理中,首先在步骤800中,取得用“LOADALLOC命令”指定的分配文件名。
接着,在步骤801中,步骤800中取得的分配文件被打开,成为可读取的状态。
这里用图9说明分配文件。
图9是本发明实施方式1的分配文件的说明图。
这里,设分配文件900为文本文件。该分配文件900的各行包含一个分配信息(资源类别、存储器区域范围(起始地址、结束地址)、寄存器类别、执行命令地址范围(起始地址、结束地址)、访问权)。
各行的最左边(第一项)中,记述“资源类别”。这里,在指定的资源是存储器的情况下为“MEM”,在寄存器的情况下为“REG”。其后的设定在资源类别为存储器(MEM)的情况和寄存器(REG)的情况有所不同。再有,设各设定(第x项)间用大于或等于一个的区分符(这里为空格)来区分。
首先,说明资源类别为存储器(MEM)的情况。
在“资源类别”的右侧的第二项、第三项中,用十六进制数连续指定进行资源访问分析的“存储器区域范围(起始地址)”及“存储器区域范围(结束地址)”。
而在“存储器区域范围(结束地址)”的右边的第4项、第5项中,用十六进制数连续指定进行资源访问分析的“执行命令地址范围(起始地址)”及“执行命令地址范围(结束地址)”。
然后,“执行命令的地址范围(结束地址)”的右边第6项是对用上述存储器区域范围(起始地址、结束地址)指定的存储器区域的访问权的项,在只许可读取时指定为“R”,在只许可写入时指定为“W”,在许可读取、写入两方时指定为“RW”。
另一方面,在资源类别为寄存器(REG)时,“资源类别”的右边的第2项是进行资源访问分析的“寄存器类别”,用寄存器名(REG0、REG1)指定。
而在“寄存器类别”的右边的第三项、第四项中,用十六进制数连续指定进行资源访问分析的“执行命令的地址范围(起始地址)”及“执行命令的地址范围(结束地址)”。
然后,“执行命令的地址范围(结束地址)”的右边的第五项是用上述检寄存器类别指定的对寄存器的访问权的项,在只许可读取时指定为“R”,在只许可写入时指定为“W”,在许可读取、写入两方时指定为“RW”。
这里,在本实施方式中,分配文件900是文本文件,但即使是二进制数据也没有问题。此外,分配文件900中记述的各设定的格式可任意地变更。
返回到图8的说明。接着,在步骤802中,从步骤801中被打开的文件中读取一行数据。如果以图9所示的分配文件900为例,则“MEM 100 20005R”被读取。
接着,在步骤803中,如果达到步骤802中被读取的文件终端,则处理转移至步骤805,如果不是这样,则处理转移至步骤804。
接着,在步骤804中,步骤802中取得的分配信息被存储在分配信息表中。处理内容与上述步骤307相同。
然后,重复进行步骤802~步骤804,直至文件终端。在达到文件终端后,在步骤805中,关闭步骤801中被打开的分配文件,结束处理。
返回到图3的说明。在输入命令为“GO命令”时,处理进行从步骤304向步骤309的转移。
这里用图10说明步骤309的处理内容。
图10表示步骤309的处理的流程。
在本处理中,首先在步骤1000中,存储在存储器单元100中的执行命令被单命令执行。这里,设从存储器单元100的地址0x000开始执行。如果以图5所示的程序文件500被加载在存储器单元100中的情况为例,则“LDREG0,MEM(0x100)”(从存储器单元100的0x100地址读取数据并将其写入寄存器REG0)命令被执行。
接着,在步骤1001中,在步骤1000中被执行的命令为HOLD命令时,停止进行命令的执行。而在不是HOLD命令时,返回到步骤1000,执行下一个命令。
在图5所示的程序文件500中,在“LD REG0,MEM(0x100)”命令后,在“STR MEM(0x100),REG0”命令、...、“HOLD”命令执行后停止。
“GO命令”的命令执行中,在资源访问分析部件104中,根据用上述“ALLOC命令”及“LOADALLOC命令”在分配信息表中指定的分配信息,实施对资源的访问状况的检验。
下面,使用图11、图12、图13说明资源访问分析部件104中的处理内容。
图11表示资源访问分析部件104的处理的流程。
在该处理中,首先在步骤1100中,取得控制单元102当前执行的命令地址。
接着,在步骤1101中,判定执行命令是否对存储器单元100进行访问(启动线112有效),在进行访问的情况下,处理转移到步骤1103。
这里用图12说明步骤1103的处理内容。图12表示步骤1103的处理的流程。
在本处理中,首先在步骤1200中,资源访问分析部件104检验地址线105,取得执行命令要访问的存储器单元100的地址。
接着,在步骤1201中,资源访问分析部件104检验RW线107,取得执行命令的访问类别(读取、写入)。
接着,在步骤1202中,资源访问分析部件104确认在配置于资源信息存储部件103中的分配信息表中是否设定了分配信息。
具体地说,资源访问分析部件104在分配信息表的“资源类别”单元为null情况下判定为没有分配信息,而在除此以外的情况下判定为具有分配信息。在没有分配信息的情况下,处理结束。而在具有分配信息的情况下,处理转移到步骤1203。
接着,在步骤1203中,资源访问分析部件104判定分配信息表的“资源类别”单元的设定是否为存储器(MEM)。在“资源类别”单元不是存储器(MEM)的情况下,处理向步骤1211分支。而在“资源类别”单元是存储器(MEM)的情况下,处理转移到步骤1204。
在“资源类别”单元为存储器(MEM)的情况下,在步骤1204中,资源访问分析部件104从分配信息表的“执行命令地址范围(起始地址)”及“执行命令地址范围(结束地址)”单元中取得执行命令地址范围。
接着,在步骤1205中,资源访问分析部件104判定步骤1100中取得的执行命令的地址是否包含在步骤1204中取得的执行命令地址范围内。在地址没有被包含的情况下,处理向步骤1211分支。而在地址被包含的情况下,处理转移到步骤1206。
在地址被包含的情况下,在步骤1206中,从分配信息表的“存储器区域范围(起始地址)”及“存储器区域范围(结束地址)”单元中取得存储器区域范围。
接着,在步骤1207中,资源访问分析部件104判定步骤1200中取得的执行命令访问的地址是否被包含在步骤1206中取得的存储器区域范围内。在地址没有被包含的情况下,处理向步骤1211分支。而在地址被包含的情况下,处理转移到步骤1208。
在地址被包含的情况下,在步骤1208中,资源访问分析部件104从分配信息表的“Read/Write信息”单元中取得访问权信息。
接着,在步骤1209中,资源访问分析部件104判定步骤1201中取得的执行命令的访问类别是否与步骤1208中取得的访问权一致。在一致的情况下,处理向步骤1211分支。而在不一致的情况下,处理转移到步骤1210。
在不一致的情况下,在步骤1210中,资源访问分析部件104将根据分配信息不许可的对资源的访问被进行的情况通知软件开发者。通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。
在步骤1211中,资源访问分析部件104从分配信息表“对下一表的指针”单元中取得对下一分配信息表的指针。
接着,在步骤1212中,资源访问分析部件104还判定分配信息表是否存在。具体地说,资源访问分析部件104在分配信息表的“对下一表的指针”单元为null的情况下判定为没有下一分配信息表,而在除此以外的情况下判定为具有下一分配信息表。
在具有下一分配信息表的情况下,返回到步骤1202。而在没有下一分配信息表的情况下,处理结束。
返回到图11的说明。在步骤1102中,资源访问分析部件104判定执行命令是否访问寄存器单元101(启动线113有效),在访问的情况下,处理转移到步骤1104。
这里用图13说明步骤1104的处理内容。图13表示步骤1104的处理的流程。
在本处理中,首先在步骤1300中,资源访问分析部件104检验选择线108,取得执行命令要访问的寄存器单元101的寄存器类别。
接着,在步骤1301中,资源访问分析部件104检验RW线109,取得执行命令的访问类别(读取、写入)。
接着,在步骤1302中,资源访问分析部件104确认配置于资源信息存储部件103中的分配信息表中是否设定了分配信息。具体地说,资源访问分析部件104在分配信息表的“资源类别”单元为null的情况下判定为没有分配信息,而在除此以外的情况下判定为具有分配信息。
在没有分配信息的情况下,处理结束。而在具有分配信息的情况下,处理转移到步骤1303。
接着,在步骤1303中,资源访问分析部件104判定分配信息表的“资源类别”单元的设定是否为寄存器(REG)。在“资源类别”单元不是寄存器(REG)的情况下,处理向步骤1311分支。而在“资源类别”单元为寄存器(REG)的情况下,处理转移到步骤1304。
在“资源类别”单元为寄存器(REG)的情况下,在步骤1304中,资源访问分析部件104从分配信息表的“执行命令地址范围(起始地址)”和“执行命令地址范围(结束地址)”单元中取得执行命令地址范围。
接着,在步骤1305中,资源访问分析部件104判定步骤1100中取得的执行命令的地址是否被包含在步骤1304中取得的执行命令地址范围内。在地址没有被包含的情况下,处理向步骤1311分支。而在地址被包含的情况下,处理转移到步骤1306。
在地址被包含的情况下,在步骤1306中,资源访问分析部件104从分配信息表的“寄存器类别”单元中取得寄存器类别。
接着,在步骤1307中,资源访问分析部件104判定步骤1300中取得的执行命令要访问的寄存器是否与步骤1306中取得的寄存器类别一致。在不一致的情况下,处理向步骤1311分支。而在一致的情况下,处理转移到步骤1308。
在一致的情况下,在步骤1308中,资源访问分析部件104从分配信息表的“Read/Write信息”单元中取得访问权信息。
接着,在步骤1309中,资源访问分析部件104判定步骤1301中取得的执行命令的访问权类别是否与步骤1308中取得的访问权一致。在一致的情况下,处理向步骤1311分支。而在不一致的情况下,处理转移到步骤1310。
在不一致的情况下,在步骤1310中,资源访问分析部件104将根据分配信息不许可的对资源的访问被进行的情况通知软件开发者。通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。
在步骤1311中,资源访问分析部件104从分配信息表“对下一表的指针”单元中取得对下一分配信息表的指针。
接着,在步骤1312中,资源访问分析部件104还判定分配信息表是否存在。具体地说,判定在资源访问分析部件104在分配信息表的“对下一表的指针”单元为null的情况下为没有分配信息表,而在除此以外的情况下具有分配信息表。在具有下一分配信息表的情况下,返回到步骤1302。而在没有下一分配信息表的情况下,处理结束。
返回到图3的说明。在输入命令为“QUIT命令”的情况下,模拟器本身结束。
如以上那样,本方式的模拟器预先指定对象的执行命令地址范围、许可访问的资源、访问类别(读取、写入)等的分配信息,通过进行命令的执行,检测违反指定的分配信息的处理并通知软件开发者。通过实施采用该模拟器的软件开发,在因软件的问题而发生对没有意图的资源的访问时,容易鉴别问题场所,软件开发效率提高。
(实施方式2)
以下参照图11、图14~图22,说明本发明的实施方式2。
图14是本发明实施方式2的模拟器的方框图。
存储器单元1400表现存储了处理器的执行命令和数据的存储器。
寄存器单元1401表现存储了运算数据的至少一个寄存器。
控制单元1402表现控制器,该控制器读取被存储在存储器单元1400中的执行命令,根据执行命令而访问存储器单元1400和寄存器单元1401并进行数据读取、写入。
存储器单元1400、寄存器单元1401和控制单元1402是表现处理器和构成其周边的单元的模拟单元。
数据信息存储部件1403存储指定的存储器单元1400的存储器区域范围、包含在寄存器单元1401中的寄存器类别(资源信息)和每个资源信息的数据范围。
资源访问分析部件1404将对控制单元1402中的存储器单元1400和寄存器单元1401的访问目的地和数据与数据信息存储部件1403中存储的资源信息及数据范围进行比较,进行访问目的地没有被包含在资源信息中、或访问目的地被包含在资源信息中并且访问时的数据是否被包含在数据范围内的数据访问分析。
命令输入部件1411对输入的命令进行解析,并对控制单元1402、存储器单元1400及寄存器单元1401进行操作,执行与命令对应的处理。
此外,控制单元1402和存储器单元1400通过在从控制单元1402访问存储器单元1400情况下发送指定的地址的地址线1405、发送接收读取、写入数据的数据线1406、表示访问为读取或写入的RW线1407、表示是否访问中的启动线1412来连接。
同样,控制单元1402和寄存器单元1401通过在从控制单元1402访问寄存器单元1401情况下发送指定的寄存器类别的选择线1408、发送接收读取、写入数据的数据线1409、表示访问为读取或写入的RW线1410、表示是否访问中的启动线1413来连接。
这些线1405、1406、1407、1412、1408、1409、1410、1413都被包含在模拟单元内。
再有,图14所示的模拟器通过由个人计算机(PC)和工作站(WS)等主处理器上动作的软件模块组来实现。
这样,在本实施方式的模拟器中,检验数据访问的部件包括:存储数据信息的数据信息存储部件1403,数据信息包含存储器单元的存储器区域范围及存储器单元的读写类别、以及寄存器单元的寄存器类别及寄存器单元的读写类别;以及数据访问分析部件1404,参照数据信息分析数据访问是否合适。这里,数据信息也可以由命令指定,数据信息被作为数据准备,这种数据也可以由命令指定。
数据信息存储部件1403存储处理器的执行命令的地址范围信息,数据访问分析部件1404参照处理器的执行命令的地址范围信息来分析执行命令是否合适。
图15是本发明实施方式2的模拟器应对的命令一览图。在本实施方式中,应对“LOAD命令”、“GO命令”、“ALLOCD命令”、“LOADALLOCD命令”、“QUIT命令”。不用说,可以变更对应的命令。
以下,说明各命令的格式和功能。“LOAD命令”、“GO命令”、“QUIT命令”与实施方式1相同。
其次,“ALLOCD命令”是用于进行数据访问分析的资源信息、PC信息、设定数据范围的命令,在指定的资源为存储器单元1400时,输入为“ALLOCDMEM<SA><EA><SPC><EPC><MIN><MAX>”。<SA>、<EA>是进行数据访问分析的存储器区域范围(起始地址、结束地址),用十六进制数指定。
<SPC>、<EPC>是进行数据访问分析的执行命令的地址范围(起始地址、结束地址),用十六进制数指定。<MIN>、<MAX>是对由<SA>及<EA>指定的存储器区域的许可访问时的数据范围(最小值、最大值),用十六进制数指定。例如,对于存储在存储器单元1400的地址0x000~0x00F中的16个执行命令,在对存储器单元1400的地址0x100~0x1FF进行访问并只许可0x1~0x2的数据范围情况下,指定为“ALLOCD MEM 100 1FF 0 F1 2”。
而在用“ALLOCD命令”指定的资源为寄存器单元1401时,设为“ALLOCD REG<REGNAME><SPC><EPC><MIN><MAX>”。<REGNAME>是进行资源访问分析的寄存器类别,用寄存器名<REG0、REG1)指定。<SPC>、<EPC>、<MIN>、<MAX>其指定的资源与存储器时相同。
接着,“LOADALLOCD命令”被输入为“LOADALLOCD<file>”,从由文件名<file>指定的分配文件中,读取用于进行资源访问分析的资源信息、PC信息、数据范围,进行设定。
图16表示图14的命令输入部件1411的处理流程。
设命令输入部件1411应对图15所示的5个命令(LOAD等)。
如图16所示,首先模拟器被起动后,在步骤1600中,为命令输入等待状态。然后在输入任何命令的情况下,在步骤1601~1605中,根据输入命令处理进行分支。
在输入命令为“LOAD命令”、“GO命令”、“QUIT命令”时的处理与实施方式1相同。
在输入命令为“ALLOCD命令”时,处理进行从步骤1602向步骤1607的转移。
这里用图17说明步骤1607的处理内容。图17表示步骤1607的处理的流程。
在本处理中,首先在步骤1700中,判定用“ALLOCD命令”指定的资源是存储器(MEM)还是寄存器(REG)。在指定的资源为存储器(MEM)时,处理转移到步骤1701。
接着,在步骤1701中,资源类别(存储器)被存储在分配信息表中。
这里用图18说明分配信息表。图18是本发明实施方式2的分配信息表的说明图。
一个分配信息表1800由以下的单元、即“资源类别”、“寄存器类别”、“存储器区域范围(起始地址)”、“存储器区域范围(结束地址)”、“执行命令地址范围(起始地址)”、“执行命令地址范围(结束地址)”、“数据范围(最小值)”、“数据范围(最大值)”、“对下一表的指针”构成。
在“资源类别”单元中,存储用“ALLOCD命令”或后述的“LOADALLOCD命令”指定的资源类别。设资源类别在存储器(MEM)时为“0”,在为寄存器(REG)时为“1”。
在“寄存器类别”单元中,存储用“ALLOCD命令”或后述的“LOADALLOCD命令”在资源类别为寄存器(REG)时指定的寄存器类别。设资源类别在REG0时为“0”,在REG1时为“1”。
在“存储器区域范围(起始地址)”和“存储器区域范围(结束地址)”单元中,用“ALLOCD命令”或后述的“LOADALLOCD命令”在资源类别为存储器(MEM)时指定的存储器区域范围(起始地址)和存储器区域范围(结束地址)被置位。
在“执行命令地址范围(起始地址)”和“执行命令地址范围(结束地址)”单元中,用“ALLOCD命令”或后述的“LOADALLOCD命令”指定的执行命令的地址范围(起始地址)和执行命令的地址范围(结束地址)被置位。
在“数据范围(最小值)”及“数据范围(最大值)”单元中,存储对用“ALLOCD命令”或后述的“LOADALLOCD命令”指定的许可资源访问时的数据范围(最小值、最大值)。
在“对下一表的指针”单元中,在用多个“ALLOCD命令”或后述的“LOADALLOCD命令”指定多个分配信息时,将对下一表的指针进行置位。设初始值为null。本分配信息表被配置在数据信息存储部件1403中。
返回到图17的说明。在步骤1702中,取得用“ALLOCD命令”指定的存储器区域范围(起始地址)和存储器区域范围(结束地址)。
接着,在步骤1703中,步骤1702中取得的存储器区域范围(起始地址)和存储器区域范围(结束地址)被置位在分配信息表中。
此外,在步骤1700中,在用“ALLOCD命令”指定的资源为寄存器(REG)时,处理转移到步骤1704。
接着,在步骤1704中,资源类别(寄存器)被存储在分配信息表中。
接着,在步骤1705中,取得用“ALLOCD命令”指定的寄存器类别(REG0、REG1)。
接着,在步骤1706中,步骤1705中取得寄存器类别被置位在分配信息表中。
接着,在步骤1707中,取得用“ALLOCD命令”指定的执行命令地址范围(起始地址)和执行命令地址范围(结束地址)。
接着,在步骤1708中,步骤1707中取得的执行命令地址范围(起始地址)和执行命令地址范围(结束地址)被置位在分配信息表中。
接着,在步骤1709中,取得用“ALLOCD命令”指定的数据范围(最小值、最大值)。
接着,在步骤1710中,步骤1709中取得的数据范围(最小值、最大值)被置位在分配信息表中,结束处理。
返回到图16的说明。输入命令为“LOADALLOCD命令”时,处理进行从步骤1603向步骤1608的转移。
这里用图19说明步骤1608的处理内容。图19表示步骤1608的处理的流程。
在本处理中,首先在步骤1900中,取得用“LOADALLOCD命令”指定的分配文件名。
接着,在步骤1901中,步骤1900中取得的分配文件成为打开可读取的状态。
这里用图20说明分配文件。图20是本发明实施方式2的分配文件的说明图。
这里,设分配文件2000为文本数据。分配文件2000的各行包含一个分配信息(资源类别、存储器区域范围(起始地址、结束地址)、寄存器类别、执行命令地址范围(起始地址、结束地址)、数据范围(最小值、最大值))。
各行的最左边(第一项)中,记述“资源类别”。这里,指定的资源在存储器的情况下为“MEM”,在寄存器的情况下为“REG”。其后的设定在资源类别为存储器(MEM)的情况和寄存器(REG)的情况有所不同。再有,设各设定(第x项)间用大于或等于一个的区分符(这里为空格)来区分。
首先,说明资源类别为存储器(MEM)的情况。在“资源类别”的右侧的第二项、第三项中,用十六进制数连续指定进行资源访问分析的“存储器区域范围(起始地址)”及“存储器区域范围(结束地址)”。
而在“存储器区域范围(结束地址)”的右侧的第4项、第5项中,用十六进制数连续指定进行资源访问分析的“执行命令地址范围(起始地址)”及“执行命令地址范围(结束地址)”。
然后,“执行命令的地址范围(结束地址)”的右侧第6项、第七项中,用十六进制数连续指定对由上述存储器区域范围(起始地址、结束地址)指定的存储器区域访问许可的“数据范围(最小值)”及“数据范围(最大值)”。。
下面,说明资源类别为寄存器(REG)的说明。“资源类别”的右边第二项是进行资源访问分析的“寄存器类别”,用寄存器名(REG0、REG1)指定。
而在“寄存器类别”的右侧的第三项、第四项中,用十六进制数连续指定进行资源访问分析的“执行命令的地址范围(起始地址)”及“执行命令的地址范围(结束地址)”。
然后,在“执行命令的地址范围(结束地址)”的右侧的第五项、第六项中,用十六进制数连续指定许可对由寄存器类别指定的寄存器的访问的“数据范围(最小值)”及“数据范围(最大值)”。
这里,在本实施方式中,分配文件2000设为文本数据,但即使是二进制数据,也没有问题。此外,分配文件2000中记述的各设定的格式可任意地变更。
返回到图19的说明。接着,在步骤1902中,从文件打开处理步骤1901中被打开的文件中读取一行数据。如果以图20所示的分配文件2000为例,则“MEM 100 200 0 5 0 F”被读取。
接着,在步骤1903中,如果在步骤1902中是文件终端,则处理分支到步骤1905。
接着,处理转移至步骤1904,步骤1902中取得的分配数据被存储在分配信息表中。处理内容与步骤1607相同。
然后,重复进行步骤1902~步骤1904,直至文件终端。在达到文件终端后,在步骤1905中,关闭步骤1901中被打开的分配文件,结束处理。
“GO命令”的命令执行中,数据访问分析部件1404根据由上述的“ALLOCD命令”及“LOADALLOCD命令”在分配信息表中指定的分配信息,检验对资源的访问状况。
下面用图11、图21、图22说明数据访问分析部件1404中的处理内容。图11表示图14的数据访问分析部件1404的处理的流程。
在本处理中,首先在步骤1100中,数据访问分析部件1404取得控制单元1402当前执行的命令地址。
接着,在步骤1101中,数据访问分析部件1404判定执行命令是否对存储器单元1400进行访问(启动线1412有效),在进行访问的情况下,处理转移到步骤1103。
这里,用图21说明步骤1103的处理内容。图21表示步骤1103的处理的流程。
在该处理中,首先在步骤2100中,数据访问分析部件1404检验地址线1405,取得执行命令访问的存储器单元1400的地址。
接着,在步骤2101中,数据访问分析部件1404检验数据线1406,取得执行命令的访问时的数据。
接着,在步骤2102中,数据访问分析部件1404确认分配信息是否设定在配置于数据信息存储部件1403中的分配信息表中。
具体地说,数据访问分析部件1404判定为在分配信息表的“资源类别”单元为null情况下没有分配信息,而在除此以外的情况下具有分配信息。在没有分配信息的情况下,处理结束。而在具有分配信息的情况下,处理转移到步骤2103。
接着,在步骤2103中,数据访问分析部件1404判定分配信息表的“资源类别”单元的设定是否为存储器(MEM)。在“资源类别”单元不是存储器(MEM)的情况下,处理向步骤2111分支。而在“资源类别”单元是存储器(MEM)的情况下,处理转移到步骤2104。
在“资源类别”单元为存储器(MEM)的情况下,在步骤2104中,数据访问分析部件1404从分配信息表的“执行命令地址范围(起始地址)”及“执行命令地址范围(结束地址)”单元中取得执行命令地址范围。
接着,在步骤2105中,数据访问分析部件1404判定步骤1100中取得的执行命令的地址是否包含在步骤2104中取得的执行命令地址范围内。在地址没有被包含的情况下,处理向步骤2111分支。而在地址被包含的情况下,处理转移到步骤2106。
在地址被包含的情况下,在步骤2106中,数据访问分析部件1404从分配信息表的“存储器区域范围(起始地址)”及“存储器区域范围(结束地址)”单元中取得存储器区域范围。
接着,在步骤2107中,数据访问分析部件1404判定步骤2100中取得的执行命令访问的地址是否被包含在步骤2106中取得的存储器区域范围内。在地址没有被包含的情况下,处理向步骤2111分支。而在地址被包含的情况下,处理转移到步骤2108。
在地址被包含的情况下,在步骤2108中,数据访问分析部件1404从分配信息表的“数据范围(最小值)”及“数据范围(最大值)”单元中取得数据范围信息。
接着,在步骤2109中,数据访问分析部件1404判定步骤2101中取得的执行命令的访问时的数据是否被包含在步骤2108中取得的数据范围内。在被包含的情况下,处理向步骤2111分支。而在没有包含的情况下,处理转移到步骤2110。
在没有包含的情况下,在步骤2110中,数据访问分析部件1404将根据分配信息不许可的对资源的数据访问被进行的情况通知软件开发者。通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。
在步骤2111中,数据访问分析部件1404从分配信息表“对下一表的指针”单元中取得对下一分配信息表的指针。
接着,在步骤2112中,数据访问分析部件1404还判定分配信息表是否存在。具体地说,数据访问分析部件1404判定为在分配信息表的“对下一表的指针”单元为null的情况下没有下一分配信息表,而在除此以外的情况下具有下一分配信息表。在具有下一分配信息表的情况下,返回到步骤2102。而在没有下一分配信息表的情况下,处理结束。
返回到图11的说明。在步骤1102中,数据访问分析部件1404判定执行命令是否访问寄存器单元101(启动线1413有效),在访问的情况下,处理转移到步骤1104。
这里用图22说明步骤1104的处理内容。图22表示步骤1104的处理的流程。
在本处理中,首先在步骤2200中,数据访问分析部件1404检验选择线1408,取得执行命令要访问的寄存器单元1401的寄存器类别。
接着,在步骤2201中,数据访问分析部件1404检验数据线1409,取得执行命令的访问时的数据。
接着,在步骤2202中,数据访问分析部件1404确认配置于数据信息存储部件1403中的分配信息表中是否设定了分配信息。
具体地说,数据访问分析部件1404判定为在分配信息表的“资源类别”单元为null的情况下没有分配信息,而在除此以外的情况下具有分配信息。在没有分配信息的情况下,处理结束。而在具有分配信息的情况下,处理转移到步骤2203。
接着,在步骤2203中,数据访问分析部件1404判定分配信息表的“资源类别”单元的设定是否为寄存器(REG)。在“资源类别”单元不是寄存器(REG)的情况下,处理向步骤2211分支。而在“资源类别”单元为寄存器(REG)的情况下,处理转移到步骤2204。
在“资源类别”单元为寄存器(REG)的情况下,在步骤2204中,数据访问分析部件1404从分配信息表的“执行命令地址范围(起始地址)”和“执行命令地址范围(结束地址)”单元中取得执行命令地址范围。
接着,在步骤2205中,数据访问分析部件1404判定步骤1100中取得的执行命令的地址是否被包含在步骤2204中取得的执行命令地址范围内。在地址没有被包含的情况下,处理向步骤2211分支。而在地址被包含的情况下,处理转移到步骤2206。
在地址被包含的情况下,在步骤2206中,数据访问分析部件1404从分配信息表的“寄存器类别”单元中取得寄存器类别。
接着,在步骤2207中,数据访问分析部件1404判定步骤2200中取得的执行命令要访问的寄存器是否与步骤2206中取得的寄存器类别一致。在不一致的情况下,处理向步骤2211分支。而在一致的情况下,处理转移到步骤2208。
在一致的情况下,在步骤2208中,数据访问分析部件1404从分配信息表的“数据范围(最小值)”及“数据范围(最大值)”单元中取得数据范围信息。
接着,在步骤2209中,数据访问分析部件1404判定步骤2201中取得的执行命令的访问时的数据是否被包含在步骤2208中取得的数据范围内。在被包含的情况下,处理向步骤2211分支。而在没有被包含的情况下,处理转移到步骤2210。
在没有被包含的情况下,在步骤2210中,数据访问分析部件1404将根据分配信息不许可的对资源的访问被进行的情况通知软件开发者。通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。
在步骤2211中,数据访问分析部件1404从分配信息表“对下一表的指针”单元中取得对下一分配信息表的指针。
接着,在步骤2212中,数据访问分析部件1404还判定分配信息表是否存在。
具体地说,数据访问分析部件1404在分配信息表的“对下一表的指针”单元为null的情况下判定为没有分配信息表,而在除此以外的情况下判定为具有分配信息表。在具有下一分配信息表的情况下,返回到步骤2202。而在没有下一分配信息表的情况下,处理结束。
如以上那样,本方式的模拟器预先指定对象的执行命令地址范围、许可访问的资源、数据范围(最小值、最大值)等的分配信息,通过进行命令的执行,检测违反指定的分配信息的处理并通知软件开发者。通过实施采用该模拟器的软件开发,在因软件的问题而发生对没有意图的资源的访问时,容易鉴别问题场所,软件开发效率提高。
(实施方式3)
以下参照图11、图23~图29,说明本发明的实施方式3。
图23是本发明实施方式3的模拟器的方框图。
存储器单元2300表现存储了处理器的执行命令和数据的存储器。
寄存器单元2301表现存储了运算数据的至少一个寄存器。
控制单元2302表现控制器,该控制器读取被存储在存储器单元2300中的执行命令,根据执行命令而访问存储器单元2300和寄存器单元2301并进行数据读取、写入。
存储器单元2300、寄存器单元2301和控制单元2302是构成表现处理器和其周边的单元的模拟单元。
资源初始化信息存储部件2303存储表示存储器单元2300各存储器区域和被包含在寄存器单元2301的各寄存器是否被初始化的信息。
资源初始化分析部件2304检验资源初始化信息存储单元2303,进行对控制单元2302中的存储器单元2300和寄存器单元2301的访问目的地是否被初始化的分析(资源初始化分析)。
命令输入部件2311对输入的命令进行解析,对控制单元2302、存储器单元2300及寄存器单元2301进行操作,执行与命令对应的处理。
此外,控制单元2302和存储器单元2300通过在从控制单元2302访问存储器单元2300情况下发送指定的地址的地址线2305、以及发送接收读取、写入数据的数据线2306、表示访问是读取或写入的RW线2307、表示是否访问中的启动线2312来连接。
同样,控制单元2302和寄存器单元2301通过在从控制单元2302访问寄存器单元2302情况下发送指定的寄存器类别的选择线2308、以及发送接收读取、写入数据的数据线2309、表示访问是读取或写入的RW线2310、表示是否访问中的启动线2313来连接。
这些线2305、2306、2307、2312、2308、2309、2310、2313都被包含在模拟单元内。
再有,图23所示的模拟器通过由个人计算机(PC)和工作站(WS)等的主处理器上动作的软件模块组来实现。
本方式的模拟器,包括检验存储器单元和寄存器单元是否被初始化的部件。这种检验的部件包括:存储表示存储器单元和寄存器单元是否被初始化的信息的资源初始化信息存储部件2303;以及参照资源初始化信息存储部件,控制单元分析对存储器单元及寄存器单元进行访问时访问目的地是否被初始化的资源初始化分析部件2304。
图24是本发明实施方式3的模拟器应对的命令一览图。在本实施方式中,应对“LOAD命令”、“GO命令”、“SET命令”、“QUIT命令”,但也可以有各种变更。
以下,说明各命令的格式和功能。“LOAD命令”、“GO命令”、“QUIT命令”与实施方式1或2相同。
其次,“SET命令”是在指定的资源(存储器、寄存器)中设定指定的数据的命令。指定的资源为存储器单元2300时,输入为“SET MEM<ADDR><DATA>”。
<ADDR>是将数据进行置位的存储器区域地址,用十六进制数指定。<DATA>是置位在由存储器单元2300的<ADDR>指定的地址中的数据,用十六进制数指定。例如,对于存储器单元2300的地址0x000,在将数据0x1置位时,指定为“SET MEM 0 1”。
而在用“SET命令”指定的资源为寄存器单元2301时,输入“SET REG<REGNAME><DATA>”。<REGNAME>是将数据进行置位的寄存器类别,用寄存器名(REG0、REG1)指定。<DATA>与指定的资源为存储器时相同。
图25表示命令输入部件2311的处理的流程。
设命令输入部件2311应对图24所示的4个命令。如图25所示,首先模拟器被起动后,在步骤2500中,为命令输入等待状态。然后在输入任何命令的情况下,在步骤2501~2504中,根据输入命令处理进行分支。
在输入命令为“LOAD命令”、“GO命令”、“QUIT命令”时的处理与实施方式1或2相同。
在输入命令为“SET命令”时,处理进行从步骤2502向步骤2506的转移。
这里用图26说明步骤2506的处理内容。图26表示步骤2506的处理的流程。
在本处理中,首先在步骤2600中,判定用“SET命令”指定的资源类别是存储器(MEM)还是寄存器(REG)。在为存储器(MEM)时,处理分支到步骤2601。而在为寄存器(REG)时,处理分支到步骤2604。
在资源类别为存储器(MEM)时,在步骤2601中,取得将由“SET命令”指定的数据进行置位的地址信息。
接着,在步骤2602中,取得由“SET命令”指定的数据。
接着,在步骤2603中,在存储器单元2300中,在步骤2601中取得的地址区域中,步骤2602中取得的数据被置位。
接着,在步骤2607中,在配置于资源初始化信息存储部件2303的资源初始化信息表中,在与步骤2601中取得的存储器地址区域所对应的初始化信息中,已初始化(1)被置位,处理结束。有关资源初始化信息表的说明,后面论述。
另一方面,在资源类别为寄存器(REG)时,在步骤2604中取得由“SET命令”指定的寄存器类别。
接着,在步骤2605中,取得由“SET命令”指定的数据。
接着,在步骤2606中,在寄存器单元2301中,在步骤2604中取得的寄存器中,数据取得处理步骤2605中取得的数据被置位。
接着,在步骤2608中,在配置于资源初始化信息存储部件2303的资源初始化信息表中,在与步骤2604中取得的寄存器所对应的初始化信息中,已初始化(1)被置位,处理结束。
“GO命令”的命令执行中,资源初始化分析部件2304检验访问目的地资源(存储器、寄存器)的已初始化状况。
下面用图11、图27~图29说明资源初始化分析部件2304中的处理内容。图11表示资源初始化分析部件2304的处理的流程。
在本处理中,首先在取得执行命令地址处理步骤1100中,资源初始化分析部件2304取得控制单元2302当前执行的命令地址。
接着,在步骤1101中,资源初始化分析部件2304判定执行命令是否对存储器单元2300进行访问(启动线2312有效),在进行访问的情况下,处理转移到步骤1103。
这里,用图27说明步骤1103的处理内容。图27表示步骤1103的处理的流程。
在该处理中,首先在步骤2700中,资源初始化分析部件2304检验地址线2305,取得执行命令访问的存储器单元2300的地址。
接着,在步骤2701中,资源初始化分析部件2304检验RW线2307,取得执行命令的访问类别(读取、写入)。
接着,在步骤2702中,资源初始化分析部件2304检查步骤2701中取得的访问类别。在读取访问的情况下,处理向步骤2703分支。而在写入访问的情况下,处理向步骤2706分支。
首先说明读取访问时的处理。在步骤2703中,资源初始化分析部件2304参照配置于资源初始化信息存储部件2303中的资源初始化信息表,取得与步骤2700中取得的存储器地址区域对应的初始化信息。
这里用图28说明资源初始化信息表。图28是本发明实施方式3的资源初始化信息表的说明图。
资源初始化信息表2800是注册图23所示的模拟器对模拟的处理器的资源(存储器、寄存器)的初始化信息的表。
在第一索引(index)中资源类别(存储器(MEM)或寄存器(REG))被注册,在第二索引中资源类别为存储器(MEM)时存储器地址被注册,在资源类别为寄存器(REG)时寄存器名被注册,每个资源的初始化信息(未初始化:0、已初始化:1)被置位。
在模拟器起动时,所有资源未初始化(0)被置位。但是,关于图23所示的模拟器模拟的处理器在与电源接通时或复位时被硬件性地初始化为什么样的值的资源,没有这种限制。
在从资源初始化信息表2800取得(置位)对各资源的初始化信息时,首先与指定的资源类别(存储器、寄存器)对应的第一索引被选择,接着在资源类别为存储器的情况下,与指定的地址对应的第二索引被选择,在寄存器的情况下,与指定的寄存器名对应的第二索引被选择,实施向对象的资源初始化信息(未初始化:0、已初始化:1)的访问。
返回到图27的说明。在步骤2704中,资源初始化分析部件2304判定步骤2703中取得的初始化信息未初始化(0)还是已初始化(1)。在已初始化(1)时,处理结束。而在未初始化(0)时,处理转移到步骤2705。
在执行命令的访问目的地资源未初始化(0)时,在步骤2705中,资源初始化分析部件2304将发生对一次也未初始化的资源进行访问的情况通知软件开发者。通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。
下面,说明写入访问的情况的处理。在步骤2706中,资源初始化分析部件2304在配置于资源初始化信息存储部件2303中的资源初始化信息表中,在与步骤2700取得的存储器地址区域对应的初始化信息中,将已初始化(1)进行置位,处理结束。
返回到图11的说明。在步骤1102中,资源初始化分析部件2304判定执行命令是否访问寄存器单元2301(启动线2313有效),在访问的情况下,处理转移到步骤1104。
这里用图29说明步骤1104的处理内容。图29表示步骤1104的处理的流程。
在本处理中,首先在步骤2900中,资源初始化分析部件2304检验选择线2308,取得执行命令要访问的寄存器单元2301的寄存器类别。
接着,在步骤2901中,资源初始化分析部件2304检验RW线2310,取得执行命令的访问类别(读取、写入)。
接着,在步骤2902中,资源初始化分析部件2304检验在步骤2901中取得的访问类别。在读取访问时,处理向步骤2903分支。而在写入访问时,处理向步骤2906分支。
首先说明读取访问情况下的处理。在步骤2903中,资源初始化分析部件2304参照配置于资源初始化信息存储部件2303的资源初始化信息表,取得与在步骤2900中取得的寄存器对应的初始化信息。
接着,在步骤2904中,资源初始化分析部件2304判定在资源初始化信息取得处理步骤2903中取得的初始化信息是未初始化(0)还是已初始化(1)。
在已初始化(1)时,处理结束。而在未初始化(0)时,处理转移到步骤2905。
在执行命令的访问目的地资源未初始化(0)时,在步骤2905中,资源初始化分析部件2304将产生对一次也未初始化的资源进行访问的情况通知软件开发者。通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。
下面,说明写入访问情况下的处理。在步骤2906中,资源初始化分析部件2304在配置于资源初始化信息存储部件2303的资源初始化信息表中,在与步骤2900取得的寄存器对应的初始化信息中,将已初始化(1)进行置位,处理结束。
如以上那样,本方式的模拟器准备对各资源的初始化信息,在进行对资源的访问的命令执行时进行对未初始化资源的访问处理的检测并通知软件开发者。通过实施采用该模拟器的软件开发,在因软件的问题而发生对没有意图的资源的访问时,容易鉴别问题场所,软件开发效率提高。
(实施方式4)
以下参照图30~图32,说明本发明的实施方式4。
图30是本发明实施方式4的模拟器的方框图。
存储器单元3000表现存储了处理器的执行命令和数据的存储器。
寄存器单元3001表现存储了运算数据的至少一个寄存器。
控制单元3002表现控制器,该控制器读取被存储在存储器单元3000中的执行命令,根据执行命令而进行对存储器单元3000和寄存器单元3001的访问处理,以及与参照包含于寄存器单元3001的寄存器的结果对应的执行命令的分支处理(附带条件命令)。
存储器单元3000、寄存器单元3001和控制单元3002是构成表现处理器和其周边的单元的模拟单元。
附带条件命令执行状态分析部件3004在根据参照被执行的命令包含于寄存器单元3001的寄存器的结果而执行处理的附带条件命令时,存储附带条件命令的地址信息和执行时参照的寄存器值。
命令输入部件3011对输入的命令进行解析,对控制单元3002、存储器单元3000及寄存器单元3001进行操作,执行与命令对应的处理。
而控制单元3002和存储器单元3000通过在从控制单元3002对存储器单元3000进行访问情况下发送指定的地址的地址线3005、以及发送接收读取、写入数据的数据线3006、表示访问为读取还是写入的RW线3007、表示是否访问中的启动线3012来连接。
同样,控制单元3002和寄存器单元3001通过在从控制单元3002对寄存器单元3001进行访问情况下发送指定的寄存器类别的选择线3008、以及发送接收读取、写入数据的数据线3009、表示访问为读取还是写入的RW线3010、表示访问中的启动线3013来连接。
这些线3005、3006、3007、3012、3008、3009、3010、3013都包含在模拟单元中。
再有,图30所示的模拟器通过由个人计算机(PC)和工作站(WS)等的主处理器上动作的软件模块组来实现。
此外,图30所示的模拟器对应图24所示的命令,各命令执行时的处理内容与实施方式2相同。
“GO命令”的命令执行中,附带条件命令执行状态分析部件3004存储附带条件命令的地址信息和执行时被参照的寄存器值。
下面,用图31说明附带条件命令执行状态分析部件3004中的处理内容。图31表示附带条件命令执行状态分析部件3004的处理的流程。
在本处理中,首先在步骤3100中,附带条件命令执行状态分析部件3004取得控制单元3002执行的命令码。这里,设命令码为图5的程序文件500中所示的32位的代码。控制单元3002执行与该命令码对应的处理。
图30的模拟器模拟的处理器执行附带条件命令(与参照包含于寄存器单元3001的寄存器的结果对应的处理)。然后,设该处理器应对命令“JP/CC”,该命令根据指定的条件将执行命令分支到指定的地址。
下面,用图32说明附带条件命令“JP/CC”。图32例示了附带条件命令“JP/CC”。
首先,附带条件命令“JP/CC”的汇编源码中的格式及功能依据功能说明3200。汇编源码的格式为“JP/CC ADDR”,在用“CC”指定的条件成立时,执行命令分支到由“ADDR”指定的地址。
如上述那样“CC”指定分支条件,作为“CC”,也可指定“ZR0”、“NZ0”、“ZR1”、“NZ1”。“ZR0”被指定时,在寄存器单元3001的寄存器REG0为0的情况下条件成立进行执行命令分支。“NZ0”被指定时,寄存器单元3001的寄存器REG0为0以外的情况下条件成立并进行执行命令分支。“ZR1”被指定时,在寄存器单元3001的寄存器REG1为0的情况下条件成立并进行执行命令分支。“NZ1”被指定时,寄存器单元3001的寄存器REG1为0以外的情况下条件成立并进行执行命令分支。
此外,“ADDR”是用上述“CC”指定的条件成立的情况下进行分支的地址,用十六进制数指定。例如,在寄存器单元3001的寄存器REG0为0的情况下,向地址0x0005分支的命令的情况下,为“JP/ZR0 0x0005”。
下面,关于用上述格式记述的附带条件命令“JP/CC”、加载于存储器单元3000的命令码的应对,用位图3201、3202来说明。位图3201是表示附带条件命令“JP/CC”命令码(32位)的位图(bit map)。
bit31~bit22为“1100100001”(二进制数),该命令码表示“JP/CC”命令。bit21~bit16是表示“CC”的指定的位,被设定的码用位图3202表示。
bit21~bit16为“000000”(二进制数)时表示“ZR0”,“000001”(二进制数)时表示“NZ0”,“000010”(二进制数)时表示“ZR1”,“000011”(二进制数)时表示“NZ1”。bit15~bit0是用“CC”指定的条件成立时进行分支的地址。
返回到图31的说明。在步骤3101中,附带条件命令执行状态分析部件3004判定步骤3100中取得的命令是否为根据参照包含于寄存器单元3001的寄存器的结果而执行处理的附带条件命令。
具体地说,附带条件命令执行状态分析部件3004在步骤3100中取得的命令码(32位)的bit31~bit22为“1100100001”(二进制数)时,判定为附带条件命令“JP/CC”。这里不是附带条件命令时,处理结束。而在是附带条件命令时,处理转移到步骤3102。
在是附带条件命令时,在步骤3102中,附带条件命令执行状态分析部件3004取得执行命令的存储器单元3000中的地址。
接着,在步骤3103中,附带条件命令执行状态分析部件3004取得步骤3100中取得的附带条件命令在用于条件判定中参照的寄存器值(包含于寄存器单元3001)。
具体地说,附带条件命令执行状态分析部件3004参照步骤3100中取得的命令码(32位)的bit21~bit16,在“000000”(二进制数)或“000001”(二进制数)时取得寄存器REG0的数据,而在“000010”(二进制数)或“000011”(二进制数)时取得寄存器REG1的数据。
接着,在步骤3104中,附带条件命令执行状态分析部件3004将步骤3102中取得的执行命令地址和步骤3103中取得的参照寄存器值相关联存储。
接着,在步骤3105中,附带条件命令执行状态分析部件3004将步骤3104中存储的执行命令地址和参照寄存器值通知软件开发者。
通知方法是任意的,例如,可考虑向未图示的显示器等的输出装置的显示等。再有,在本方式中,在每次附带条件命令执行时通知执行命令地址和参照寄存器值,但除此以外,附带条件命令执行时仅执行存储执行命令地址及参照寄存器值,在程序结束后根据命令等而输出存储的信息也没有关系。
如以上那样,本方式的模拟器在根据参照寄存器等的结果而执行处理的附带条件命令执行时,存储附带条件命令的存储器地址和用于条件判定而参照的寄存器值,并将其通知软件开发者。通过实施采用该模拟器的软件开发,可确认附带条件命令的执行状态,可验证软件在所有的条件下是否如开发者的意图那样进行动作,所以提高软件的完成性(动作的准确性)。
不用说,实施方式1至4可以适当组合实施。
根据本发明,具有以下效果。
在因软件的问题而产生对没有意图的资源的访问时,容易鉴别问题场所,提高软件开发效率。
在因软件的问题而产生对未初始化资源的访问时,容易鉴别问题场所,提高软件开发效率。
软件开发者可以确认附带条件命令的执行状态,可以验证软件在所有的条件下是否如开发者的意图那样进行动作,提高软件的完成性(动作的准确性)。

Claims (21)

1.一种模拟器,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器单元进行访问的控制器的控制单元;
所述模拟器包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入部件;以及
检验所述控制单元对所述存储器单元和/或所述寄存器单元进行访问的资源访问的部件,其特征在于,
检验所述资源访问的部件包括:
存储资源信息的资源信息存储部件,所述资源信息包含所述存储器单元的存储区范围和所述存储器单元的读写类别、所述寄存器单元的寄存器类别和所述寄存器单元的读写类别;以及
资源访问分析部件,参照所述资源信息来分析资源访问是否合适。
2.如权利要求1所述的模拟器,其中,所述资源信息由所述命令指定。
3.如权利要求1所述的模拟器,其中,所述资源信息被作为数据来准备,所述数据由所述命令指定。
4.如权利要求1所述的模拟器,其中,所述资源信息存储部件还存储所述处理器的执行命令的地址范围信息,
所述资源访问分析部件还参照所述处理器的执行命令的地址范围信息来分析执行命令是否合适。
5.一种模拟器,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;
所述模拟器包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入部件;以及
检验所述控制单元对所述存储器单元和/或所述寄存器单元进行访问的数据访问的部件,其特征在于,
检验所述数据访问的部件包括:
存储数据信息的数据信息存储部件,所述数据信息包含所述存储器单元的存储区范围和所述存储器单元的读写类别、所述寄存器单元的寄存器类别和所述寄存器单元的读写类别;以及
数据访问分析部件,参照所述数据信息来分析数据访问是否合适。
6.如权利要求5所述的模拟器,其中,所述数据信息由所述命令指定。
7.如权利要求5所述的模拟器,其中,所述数据信息被作为数据而准备,所述数据由所述命令指定。
8.如权利要求5所述的模拟器,其中,所述数据信息存储部件还存储所述处理器的执行命令的地址范围信息,
所述数据访问分析部件还参照所述处理器的执行命令的地址范围信息来分析执行命令是否合适。
9.一种模拟器,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;
所述模拟器包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入部件;以及
检验所述存储器单元和/或所述寄存器单元是否被初始化的部件,其特征在于,
检验所述存储器单元和/或所述寄存器单元是否被初始化的部件包括:
资源初始化信息存储部件,存储表示所述存储器单元和/或所述寄存器单元是否被初始化的信息;以及
资源初始化分析部件,参照所述资源初始化信息存储部件,分析所述控制单元在对所述存储器单元和/或所述寄存器单元进行访问时访问目的地是否被初始化。
10.一种模拟器,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,其特征在于,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;
所述模拟器包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入部件;以及
检验所述控制单元执行的附带条件命令的执行状态的部件。
11.如权利要求10所述的模拟器,其中,检验所述存储器单元执行的附带条件命令的执行状态的部件包括:
附带条件命令执行状态分析部件,在所述控制单元执行附带条件命令时,存储附带条件命令的地址信息和执行时参照的寄存器值。
12.一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,其特征在于,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问,并执行与所述寄存器单元的寄存值对应的附带条件命令的控制器的控制单元;
所述模拟方法包括:
命令输入步骤,对输入的命令进行解析并操作所述多个模拟单元;以及
附带条件命令执行状态分析步骤,存储有关所述附带条件命令的执行状态的信息。
13.一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;
所述模拟方法包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入步骤;以及
检验所述控制单元对所述存储器单元和/或所述寄存器单元进行访问的资源访问的步骤,其特征在于,
所述检验所述资源访问的步骤包括:
存储资源信息的资源信息存储步骤,所述资源信息包含所述存储器单元的存储区范围及所述存储器单元的读写类别、所述寄存器单元的寄存器类别和所述寄存器单元的读写类别;以及
资源访问分析步骤,参照所述资源信息分析资源访问是否合适。
14.如权利要求13所述的模拟方法,其中,所述资源信息由所述命令指定。
15.如权利要求13所述的模拟方法,其中,所述资源信息被作为数据来准备,所述数据由所述命令指定。
16.如权利要求13至15任何一项所述的模拟方法,其中,在所述资源信息存储步骤中,还存储所述处理器的执行命令的地址范围信息,
在所述资源访问分析步骤中,还参照所述处理器的执行命令的地址范围信息分析执行命令是否合适。
17.一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;
所述模拟方法包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入步骤;以及
检验所述控制单元对所述存储器单元和/或所述寄存器单元进行访问的数据访问的步骤,其特征在于,
检验所述数据访问的步骤包括:
存储数据信息的数据信息存储步骤,所述数据信息包含所述存储器单元的存储区范围和所述存储器单元的读写类别、所述寄存器单元的寄存器类别和所述寄存器单元的读写类别;以及
数据访问分析步骤,参照所述数据信息分析数据访问是否合适。
18.如权利要求17所述的模拟方法,其中,所述数据信息由所述命令指定。
19.如权利要求17所述的模拟方法,其中,所述数据信息被作为数据准备,所述数据由所述命令指定。
20.如权利要求17所述的模拟方法,其中,在所述数据信息存储步骤中,还存储所述处理器的执行命令的地址范围信息,
在所述数据访问分析步骤中,还参照所述处理器的执行命令的地址范围信息分析执行命令是否合适。
21.一种模拟方法,用多个模拟单元表示包含处理器的单元,从而模拟所述处理器的动作,
所述多个模拟单元具有:
表示存储所述处理器的执行命令和数据的存储器的存储器单元;
表示所述处理器的寄存器的寄存器单元;以及
表示对所述存储器单元和/或所述寄存器进行访问的控制器的控制单元;
所述模拟方法包括:
对输入的命令进行解析并操作所述多个模拟单元的命令输入步骤;以及
检验所述存储器单元和/或所述寄存器单元是否被初始化的步骤,其特征在于,
检验所述存储器单元和/或所述寄存器单元是否被初始化的步骤包括:
资源初始化信息存储步骤,存储表示所述存储器单元和/或所述寄存器单元是否被初始化的信息;以及
资源初始化分析步骤,参照所述资源初始化信息存储部件,分析所述控制单元对所述存储器单元和/或所述寄存器单元进行访问时访问目的地是否被初始化。
CNB200410085782XA 2003-10-22 2004-10-22 模拟器及模拟方法 Expired - Fee Related CN1296825C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP361914/2003 2003-10-22
JP2003361914A JP2005128692A (ja) 2003-10-22 2003-10-22 シミュレータ及びシミュレーション方法
JP361914/03 2003-10-22

Publications (2)

Publication Number Publication Date
CN1609808A CN1609808A (zh) 2005-04-27
CN1296825C true CN1296825C (zh) 2007-01-24

Family

ID=34431219

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410085782XA Expired - Fee Related CN1296825C (zh) 2003-10-22 2004-10-22 模拟器及模拟方法

Country Status (4)

Country Link
US (1) US7577557B2 (zh)
EP (1) EP1530130A3 (zh)
JP (1) JP2005128692A (zh)
CN (1) CN1296825C (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199845A (ja) * 2006-01-24 2007-08-09 Matsushita Electric Ind Co Ltd メモリ破壊検出方法および装置
US20070265821A1 (en) * 2006-05-12 2007-11-15 Ryo Yokoyama Simulation apparatus, simulation method, and computer-readable recording medium storing simulation program
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
JP4856023B2 (ja) * 2007-08-08 2012-01-18 パナソニック株式会社 リアルタイムウォッチ装置及びその方法
JP5329983B2 (ja) * 2009-01-08 2013-10-30 株式会社東芝 デバッグ支援装置
US20120036301A1 (en) * 2010-08-03 2012-02-09 Caspole Eric R Processor support for filling memory regions
US9147016B2 (en) 2010-08-20 2015-09-29 International Business Machines Corporation Multi-ECU simulation by using 2-layer peripherals with look-ahead time
CN103631693B (zh) * 2013-12-09 2017-08-18 曙光节能技术(北京)股份有限公司 服务器的模拟组件、服务器发热的模拟方法和装置
CN105528300B (zh) * 2014-09-29 2019-01-08 炬芯(珠海)科技有限公司 一种ddr内存控制器及其访问监控方法
US10184295B2 (en) * 2014-10-02 2019-01-22 Caterpillar Inc. Machine leveling assembly and method
CN106326521B (zh) * 2015-10-10 2019-12-03 北京控制与电子技术研究所 一种静态超标量dsp周期模拟方法
CN105930201B (zh) * 2016-04-25 2019-03-22 南京大学 一种可重构专用处理器核的功能模拟器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1081008A (zh) * 1992-06-24 1994-01-19 株式会社东芝 目视模拟装置
US5867405A (en) * 1996-03-01 1999-02-02 Motorola, Inc. Ferroelectric simulator, ferroelectric method of manufacture, and method of simulation
CN1266513A (zh) * 1997-06-13 2000-09-13 艾利森电话股份有限公司 计算机处理器的模拟
US6240544B1 (en) * 1997-02-04 2001-05-29 Kabushiki Kaisha Toshiba Simulation system, simulation evaluation system, simulation method, and computer-readable memory containing a simulation program, having less trace information for reverse execution

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544067A (en) * 1990-04-06 1996-08-06 Lsi Logic Corporation Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation
JPH05233317A (ja) 1992-02-24 1993-09-10 Nec Ic Microcomput Syst Ltd ソフトウェア・シミュレータ
JPH07281925A (ja) * 1994-04-06 1995-10-27 Fujitsu Ltd マルチプロセッサシミュレーション装置
US6360192B2 (en) 1999-03-04 2002-03-19 Sun Microsystems, Inc. Transaction class
US7089517B2 (en) * 2000-09-29 2006-08-08 Advantest Corp. Method for design validation of complex IC
JP2003140919A (ja) 2001-10-31 2003-05-16 Fujitsu Ltd プロセッサのルーチン実行順を検証するシミュレーション方法並びにデバッグ方法、デバッガプログラム及びその記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1081008A (zh) * 1992-06-24 1994-01-19 株式会社东芝 目视模拟装置
US5867405A (en) * 1996-03-01 1999-02-02 Motorola, Inc. Ferroelectric simulator, ferroelectric method of manufacture, and method of simulation
US6240544B1 (en) * 1997-02-04 2001-05-29 Kabushiki Kaisha Toshiba Simulation system, simulation evaluation system, simulation method, and computer-readable memory containing a simulation program, having less trace information for reverse execution
CN1266513A (zh) * 1997-06-13 2000-09-13 艾利森电话股份有限公司 计算机处理器的模拟

Also Published As

Publication number Publication date
US7577557B2 (en) 2009-08-18
EP1530130A3 (en) 2006-07-05
CN1609808A (zh) 2005-04-27
US20050091028A1 (en) 2005-04-28
JP2005128692A (ja) 2005-05-19
EP1530130A2 (en) 2005-05-11

Similar Documents

Publication Publication Date Title
CN1875345A (zh) 在编译过程中表示和检查程序组件的一致性的可扩展类型系统
CN1744036A (zh) 报告软件中支持定制图形表示的系统和方法
CN1299177C (zh) 数据管理装置、计算机系统及数据处理方法
CN1296825C (zh) 模拟器及模拟方法
CN1977531A (zh) 程序生成装置、程序测试装置、程序执行装置及信息处理系统
CN1749958A (zh) 使用形状的公用图表
CN1813252A (zh) 信息处理方法、信息处理程序、信息处理装置及摇控器
CN1763743A (zh) 图表上的自动标签放置系统和方法
CN1768275A (zh) 测试摸拟装置、测试模组模拟装置以及记录此程式的记录媒体
CN1834889A (zh) 软件认证系统和软件认证程序及软件认证方法
CN1296811C (zh) 信息处理装置及其控制方法和控制装置
CN1975931A (zh) 非易失性半导体存储器件
CN1290889A (zh) 程序对象的串行化和解串行的版本适应
CN1811691A (zh) 信息处理装置及其控制方法
CN1910900A (zh) 防止擅自复制的设备、方法和程序
CN1530855A (zh) 布局系统和布局程序以及布局方法
CN1235152C (zh) 半导体装置和半导体装置的驱动方法
CN101044450A (zh) 处理器
CN1776621A (zh) 程序变换方法
CN1728126A (zh) 信息处理系统和方法及其使用的计算机程序
CN1046360C (zh) 说明用户接口的方法及运行多用户接口型计算机的编程系统
CN1905075A (zh) 半导体存储器件
CN1577266A (zh) 程序变换方法、程序及存储媒体
CN1826613A (zh) 电子化服务指南显示程序、记录了程序的记录介质、电子化服务指南显示控制方法、电子化服务指南显示控制装置、程序传送方法、程序传送装置、程序接收方法、及程序接收装置
CN1826615A (zh) 电子化服务指南显示程序、记录了程序的记录介质、电子化服务指南显示控制方法、电子化服务指南显示控制装置、程序传送方法、程序传送装置、程序接收方法、及程序接收装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070124

Termination date: 20101022