CN1581098A - 模拟器构造方法 - Google Patents
模拟器构造方法 Download PDFInfo
- Publication number
- CN1581098A CN1581098A CN 200410009104 CN200410009104A CN1581098A CN 1581098 A CN1581098 A CN 1581098A CN 200410009104 CN200410009104 CN 200410009104 CN 200410009104 A CN200410009104 A CN 200410009104A CN 1581098 A CN1581098 A CN 1581098A
- Authority
- CN
- China
- Prior art keywords
- simulator
- target hardware
- hardware platform
- framework
- attribute
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种模拟器构造方法,属于计算机软件模拟器领域。该方法提供了一个不依赖于目标硬件平台的通用模拟器框架,该框架会根据用户所提供的模拟器描述文件,自动对模拟器所需要做的动作进行判断执行,使用户只需将模拟器描述文件输入给模拟器,模拟器就会完全模拟出在目标硬件平台上执行的动作。本发明模拟器描述文件采用基于属性计算的描述语言进行编写,该描述语言分为两层,分别用于对目标硬件平台属性树和该属性树上的各个节点属性的描述,用户可以自由更改和扩展属性树和属性树的各个节点的属性,从而大大提高了模拟器的可扩展性和灵活性。
Description
技术领域
本发明属于计算机软件模拟器领域,具体涉及一种用于模拟硬件的软件模拟器。
背景技术
模拟器技术是用于新的硬件平台开发和新型操作系统开发的一项重要技术。它是通过软件来模拟实现目标平台的硬件功能。目前,公知的模拟器结构是由取指令、译码和指令执行三个部分组成。把目标程序作为输入提供给模拟器程序,模拟器程序模拟真实硬件的行为执行目标程序,使执行结果与在真实硬件上一样。但是,目前的模拟器往往只能针对一种体系结构进行模拟,也就是说,如果要更改模拟的目标硬件平台,就需要对模拟器源程序针对这种新的目标平台进行大幅度的修改,然后重新生成新的模拟器,可扩展性非常差。虽然有少数的模拟器能够提供目标平台可配置性,但是需要根据目标配置文件重新编译模拟器代码,灵活性差,不利于用户的开发工作。
发明/实用新型内容
本发明克服现有的模拟器可扩展性差,灵活性不足等缺点,提供了一种模拟器构造方法,用户只需向本模拟器提供目标硬件平台描述文件,不需更改模拟器本身的代码,就可以执行针对真实硬件开发的各种目标程序,并能够在模拟器上运行完整的操作系统。
本发明的技术内容:一种模拟器构造方法,用户根据模拟的硬件编写目标硬件平台描述文件,该描述文件包括:目标硬件平台属性树和该属性树的节点属性的描述,模拟器框架根据描述文件自动对目标硬件平台进行模拟,其步骤包括:
(1)模拟器框架生成模块调用属性树分析模块,对目标硬件平台描述文件中的目标硬件平台属性树的描述进行分析,得到目标硬件平台属性树,根据该属性树生成模拟器的译码框架和执行框架;
(2)模拟器动作生成模块调用属性计算模块对目标硬件平台描述文件中的属性树节点属性的描述进行属性计算,根据属性计算的结果生成实际的译码动作和执行动作;
(3)将译码动作和执行动作填充到模拟器的译码框架和执行框架中。
目标硬件平台信息的指令系统部分,用目标硬件平台的属性树来描述,而目标硬件平台信息的特征部分作为属性定义在属性树的节点上,在每个节点上预定义三种基本属性:操作的运行时刻语义、汇编语言的语法以及设置指令字各个域的值。
目标硬件平台描述文件对目标硬件平台进行以下描述,包括:
(1)全部的存储系统类别,包括内存、寄存器堆等;
(2)机器可以直接支持的数据类型;
(3)对齐约束的各种状况;
(4)所有指令的格式以及效应;
(5)所有的寻址模式;
(6)机器条件码的使用;
(7)程序控制流的各种可能情况;
(8)内部处理的结构单元。
目标硬件平台描述文件采用的描述语言分为两层,上层描述语言对目标硬件平台的属性树进行描述;下层描述语言对属性树上的各个节点的属性进行描述。
描述语言采用OR规则和AND规则,从根定义开始,依据OR规则建立子树,依据AND规则建立节点内的有序元组。
译码框架中设有译码缓冲区,将译码后的指令以某种表示形式存放在该缓冲区内,当再次执行该指令时,只需直接使用,达到一次译码,多次使用的功能。
执行框架中的模拟执行部分采用代码链接技术,指令模拟执行过程中,一条指令执行完毕,直接跳转到下一条指令(继续执行),实现指令的链接。
本发明的技术效果:本发明采用了一个不依赖于目标硬件平台的通用模拟器框架,模拟器框架通过分析描述文件中的属性树定义生成模拟器译码框架和执行框架,而该模拟器译码框架和执行框架中的动作,则根据描述文件中属性树的各个节点的属性定义,利用属性计算动态生成,将译码动作和执行动作填充到模拟器的译码框架和执行框架中,便可实现目标系统硬件的全部模拟。由于该模拟器框架会根据用户所提供的目标硬件平台描述文件,自动对目标硬件平台进行模拟,模拟目标硬件的所有动作,与硬件平台无关联。对于任何需要模拟的目标硬件,都不需要对模拟框架部分进行做任何更改,只需要提供目标平台相对应的目标硬件平台描述文件即可。也就是说,所有目标平台都只需要这一个相同的模拟器框架,它会根据用户提供的目标硬件平台描述文件自动进行目标平台的模拟。无需任何重新编译和代码生成的工作。同时,目标硬件平台描述文件采用基于属性计算的描述语言进行编写,该描述语言分为两层,分别用于对目标硬件平台属性树和该属性树上的各个节点属性的描述,用户可以自由更改和扩展属性树和属性树的各个节点的属性,从而大大提高了模拟器的可扩展性和灵活性。
附图说明
下面结合附图,对本发明做出详细描述。
图1为模拟器属性树示意图;
图2为模拟器自动生成部分流程图;
图3为模拟器应用实例示意图。
具体实施方式
采用本发明,用户可以自主选择被模拟的硬件,只需要对目标平台撰写一个目标硬件平台描述文件,作为模拟器的输入,既可以执行对目标平台的模拟。本发明需要得到目标平台的以下信息内容:全部的存储系统类别,包括内存、寄存器堆等;机器可以直接支持的数据类型;对齐约束的各种状况;所有指令的格式以及效应;所有的寻址模式;机器条件码的使用;程序控制流的各种可能情况;内部处理的结构单元,例如流水线。根据这些目标平台的硬件说明,取得指令系统特征、指令分类、和每条指令特征的描述。其中,目标硬件平台信息的指令相关部分,可以用目标硬件平台的属性树来描述,而目标硬件平台的其它特性可以作为属性定义在该属性树的节点上。本发明目标硬件平台描述文件采用了一种基于属性计算的模拟器描述语言,该语言提供了两个主要规则:OR规则与AND规则,它们给描述提供了正交化的刻画能力。AND规则定义了各个特性的组合效应,而OR规则定义了单个特性的多样性表现,反映在对指令系统的描述上前者即指令字的多个属性域,而OR规则则表现为单个域的不同取值,例如操作码是add还是sub等。该语言的语法是不允许有递归定义的,这样,从语法的角度讲,该语言关于一个非终结符的任何推导必有终点。终结符在该语言中表示了四类事物:数据表述形式、存储类、操作类以及寻址方式。这相当具有代表性,因为这四类特征对于描述指令系统的语义已经相当充分了,因而该语言导出的所有串就是被描述系统的指令系统定义。语言描述了一系列属性值,它们被赋予语言的非终结符,反映了指令语义的不同方面。这些属性值通过类似C语言表达式或者一些语句序列来表达,称为属性表达式。其中可以引用由AND规则的参数定义的属性值。
本发明描述语言从根op定义开始,依据OR规则建立子树,依据AND规则建立结点内的有序元组,每个叶结点就是一条实际的指令,从一个叶结点出发到根的路径上,每个结点都包含若干相互关联的属性,把某个属性依据描述从根逐层展开到叶结点就能得到相应指令的该属性描述。描述语言分为两层,上层描述语言对目标硬件平台的属性树进行描述;下层描述语言对属性树上的各个节点的属性进行描述。
通过对目标硬件平台描述文件中的目标硬件平台属性树的描述进行分析,可得到目标硬件平台属性树,参考图1,该属性树主要用于描述目标平台指令系统的结构。它的表示形式可采用如下方法定义,Tree表示属性树定义的开始,后面跟随该属性树根节点的名称,名称后面是[]或者(),括号内的内容表示该节点的定义。对于属性树上的每个节点(包括根节点),要么是一个叶子节点,用节点名表示,要么是一个子树,用节点名加()或者[]表示。如果它是一个表示连接的节点,用()表示,()里面的用“,”连接的各个子节点是连接关系,就是说该节点由括号内的部分连接而成;如果它是一个表示选择的节点,则用[]表示,[]里面的用“,”连接的内容表示选择关系,就是说该节点是括号中的各部分的其中一个。对于叶节点,它的下层不再有节点。
每个模拟器属性树上的各个节点都可以有自己的属性,用户可以根据目标平台的特性自主定义属性树的节点属性。本发明描述语言预定义了三种基本属性:用action、syntax和image,分别表示:操作的运行时刻语义、汇编语言的语法以及设置指令字各个域的值。由于各个节点属性是可扩展的,用户通过添加新的属性用于表示自己的特定用途。由于描述语言采用两层结构,分别用于描述目标硬件平台属性树的结构和该树上的各个节点的属性定义,在目标硬件平台描述文件中,属性树的定义和属性的定义是分开的,这样两者的更改和扩展都互不影响,大大提高了模拟器的可扩展性和灵活性。
根据上述目标硬件平台属性树,模拟器框架生成模块可生成模拟器译码框架和模拟器执行框架,但不对框架中的动作进行填充,而是调用属性计算模块对目标硬件平台描述文件中的属性树节点属性的描述进行属性计算,再根据属性计算的结果生成实际的译码动作和执行动作则,将译码动作和执行动作填充到模拟器的译码框架和执行框架中,从而形成模拟器。译码框架中设有译码缓冲区,将译码后的指令以某种表示形式存放在该缓冲区内,当再次执行该指令时,只需直接使用,达到一次译码,多次使用的功能。执行框架中的模拟执行部分采用代码链接技术,指令模拟执行过程中,一条指令执行完毕,直接跳转到下一条指令(继续执行),实现指令的链接。
参考图2,本发明的模拟器框架生成过程的基本流程如下:
1、模拟器生成主体框架模块调用模拟器框架生成模块;
2、模拟器框架生成模块调用属性树分析模块,后者对目标硬件平台描述文件中的属性树的描述进行分析;
3、属性树分析模块将由目标硬件平台描述文件得到的属性树作为返回提供给模拟器框架生成模块;
4、框架生成模块根据属性树生成译码框架和执行框架,但是不对其中的动作进行填充;
5、模拟器生成主体框架模块调用模拟器动作生成模块;
6、模拟器动作生成模块调用属性计算模块,属性计算模块会对目标硬件平台描述文件中的属性部分进行分析;
7、属性计算模块将属性计算的结果返回给模拟器动作生成模块;
8、模拟器动作生成模块根据属性计算的结果生成实际的译码动作和执行动作,填充到模拟器框架生成模块所产生的框架中。这样,目标平台的模拟器就基本生成了。
参考图3,用户将编译好的操作系统映象以elf格式文件1和用于描述目标硬件平台的目标硬件平台描述文件2提供给模拟器生成模块4,并通过外部调试器3与模拟器生成模块进行交互。模拟器生成模块得到目标硬件平台描述文件后,根据描述文件中对模拟器和属性的描述生成对应的目标硬件平台的模拟器5。生成的模拟器5以操作系统映象文件1为输入,对目标硬件平台进行模拟,执行操作系统代码。调试和性能分析模块6通过模拟器生成主体框架4与生成的模拟器5进行交互获得需要的数据,并通过模拟器生成框架模块4返回给用户执行结果和分析数据7。
Claims (7)
1、一种模拟器构造方法,其特征在于:用户根据模拟的目标硬件编写目标硬件平台描述文件,该描述文件包括:目标硬件平台属性树的描述和该属性树的节点属性的描述,模拟器框架根据描述文件自动对目标硬件平台进行模拟,其步骤包括:
(1)模拟器框架生成模块调用属性树分析模块,对目标硬件平台描述文件中的目标硬件平台属性树的描述进行分析,得到目标硬件平台属性树,根据该属性树生成模拟器的译码框架和执行框架;
(2)模拟器动作生成模块调用属性计算模块对目标硬件平台描述文件中的属性树节点属性的描述进行属性计算,根据属性计算的结果生成实际的译码动作和执行动作;
(3)将译码动作和执行动作填充到模拟器的译码框架和执行框架中。
2、如权利要求1所述的模拟器构造方法,其特征在于:目标硬件平台描述文件采用的描述语言分为两层,上层描述语言对目标硬件平台的属性树进行描述;下层描述语言对属性树上的各个节点的属性进行描述。
3、如权利要求2所述的模拟器构造方法,其特征在于:描述语言采用OR规则和AND规则,从根定义开始,依据OR规则建立子树,依据AND规则建立节点内的有序元组。
4、如权利要求1或2所述的模拟器构造方法,其特征在于:目标硬件平台信息的指令系统部分,用目标硬件平台的属性树来描述,而目标硬件平台信息的特征部分作为属性定义在属性树的节点上,在每个节点上预定义三种基本属性:操作的运行时刻语义、汇编语言的语法以及设置指令字各个域的值。
5、如权利要求1所述的模拟器构造方法,其特征在于:模拟器描述文件对目标硬件模拟器进行以下描述,包括:
(1)全部的存储系统类别,包括内存、寄存器堆等;
(2)机器可以直接支持的数据类型;
(3)对齐约束的各种状况;
(4)所有指令的格式以及效应;
(5)所有的寻址模式;
(6)机器条件码的使用;
(7)程序控制流的各种可能情况;
(8)内部处理的结构单元。
6、如权利要求1所述的模拟器构造方法,其特征在于:译码框架中设有译码缓冲区,将译码后的指令存放在该缓冲区内。
7、如权利要求1或6所述的模拟器构造方法,其特征在于:执行框架中模拟指令的执行采用代码链接方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100091045A CN1294495C (zh) | 2004-05-20 | 2004-05-20 | 模拟器构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100091045A CN1294495C (zh) | 2004-05-20 | 2004-05-20 | 模拟器构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1581098A true CN1581098A (zh) | 2005-02-16 |
CN1294495C CN1294495C (zh) | 2007-01-10 |
Family
ID=34581617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100091045A Expired - Fee Related CN1294495C (zh) | 2004-05-20 | 2004-05-20 | 模拟器构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1294495C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100347683C (zh) * | 2005-04-15 | 2007-11-07 | 清华大学 | 结构无关的微处理器验证及评测方法 |
CN100407665C (zh) * | 2005-07-19 | 2008-07-30 | 中兴通讯股份有限公司 | 一种基于可定制的多类型网元的模拟方法 |
CN101408877B (zh) * | 2007-10-10 | 2011-03-16 | 英业达股份有限公司 | 树节点加载系统及其方法 |
CN103164305A (zh) * | 2013-03-20 | 2013-06-19 | 青岛中星微电子有限公司 | 一种自动生成图像处理模块验证平台的方法及装置 |
CN112416571A (zh) * | 2020-10-19 | 2021-02-26 | 杭州未名信科科技有限公司 | 工业物联网节点的资源管理方法、操作系统及管理装置 |
CN113515348A (zh) * | 2021-07-16 | 2021-10-19 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN113608823A (zh) * | 2021-06-25 | 2021-11-05 | 天津津航计算技术研究所 | 一种用于文件描述的可重用终端模拟器 |
WO2022042252A1 (zh) * | 2020-08-29 | 2022-03-03 | 华为技术有限公司 | 驱动配置管理方法、装置、介质、设备及系统 |
CN115237807A (zh) * | 2022-08-11 | 2022-10-25 | 小米汽车科技有限公司 | 程序测试方法、装置及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6142682A (en) * | 1997-06-13 | 2000-11-07 | Telefonaktiebolaget Lm Ericsson | Simulation of computer processor |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
CN1318965C (zh) * | 2002-09-10 | 2007-05-30 | 华邦电子股份有限公司 | 测试式样产生方法与其装置 |
-
2004
- 2004-05-20 CN CNB2004100091045A patent/CN1294495C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100347683C (zh) * | 2005-04-15 | 2007-11-07 | 清华大学 | 结构无关的微处理器验证及评测方法 |
CN100407665C (zh) * | 2005-07-19 | 2008-07-30 | 中兴通讯股份有限公司 | 一种基于可定制的多类型网元的模拟方法 |
CN101408877B (zh) * | 2007-10-10 | 2011-03-16 | 英业达股份有限公司 | 树节点加载系统及其方法 |
CN103164305A (zh) * | 2013-03-20 | 2013-06-19 | 青岛中星微电子有限公司 | 一种自动生成图像处理模块验证平台的方法及装置 |
CN103164305B (zh) * | 2013-03-20 | 2018-03-13 | 青岛中星微电子有限公司 | 一种自动生成图像处理模块验证平台的方法及装置 |
WO2022042252A1 (zh) * | 2020-08-29 | 2022-03-03 | 华为技术有限公司 | 驱动配置管理方法、装置、介质、设备及系统 |
CN112416571A (zh) * | 2020-10-19 | 2021-02-26 | 杭州未名信科科技有限公司 | 工业物联网节点的资源管理方法、操作系统及管理装置 |
CN113608823B (zh) * | 2021-06-25 | 2024-05-17 | 天津津航计算技术研究所 | 一种用于文件描述的可重用终端模拟器 |
CN113608823A (zh) * | 2021-06-25 | 2021-11-05 | 天津津航计算技术研究所 | 一种用于文件描述的可重用终端模拟器 |
CN113515348A (zh) * | 2021-07-16 | 2021-10-19 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN113515348B (zh) * | 2021-07-16 | 2023-11-14 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN115237807B (zh) * | 2022-08-11 | 2024-02-06 | 小米汽车科技有限公司 | 程序测试方法、装置及可读存储介质 |
CN115237807A (zh) * | 2022-08-11 | 2022-10-25 | 小米汽车科技有限公司 | 程序测试方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1294495C (zh) | 2007-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6269475B1 (en) | Interface for object oriented programming language | |
Beazley | Automated scientific software scripting with SWIG | |
US7613852B2 (en) | Block modeling input/output buffer having first and second block of block diagram for passing a plurality of data between said first and second blocks | |
US8037450B2 (en) | System and methods for tracing code generation in template engines | |
JPH07182194A (ja) | コンピュータ装置で試験機能を選択的に実行するための試験ドライバを自動的に発生する方法および装置 | |
WO2005121954A1 (en) | Object process graph system | |
CN1294495C (zh) | 模拟器构造方法 | |
Liu et al. | Formal methods for the re-engineering of computing systems: a comparison | |
CN113515348A (zh) | 一种基于时机动作流的模拟器建模方法及装置 | |
Lomazova | Modeling dynamic objects in distributed systems with nested Petri nets | |
CN111176658A (zh) | 基于元对象机制的AADL到Simulink模型自动转换方法 | |
CN1517979A (zh) | 向语音识别引擎注册言辞以及相关联的目的锚 | |
JPH04205423A (ja) | プログラム作成装置 | |
Azadmanesh et al. | Concept-driven generation of intuitive explanations of program execution for a visual tutor | |
US20060005174A1 (en) | Defining hierarchical structures with markup languages and reflection | |
Polzer et al. | View-supported rollout and evolution of model-based ecu applications | |
Hammond et al. | The design of hume: a high-level language for the real-time embedded systems domain | |
Jouault et al. | An amma/atl solution for the grabats 2009 reverse engineering case study | |
Foote et al. | Efficient multimethods in a single dispatch language | |
CN112346715A (zh) | 一种嵌入式软件模块化设计方法 | |
CN101916179B (zh) | 控制寄存器中的标志位的存取方法 | |
Alverson et al. | THOR USER’S MANUAL: TUTORIAL AND COMIWANDS | |
Bardohl et al. | Formal relationship between Petri nets and graph grammars as basis for animation views in GenGED | |
Fritzson et al. | OpenModelica Users Guide | |
CN1243987A (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: 20070110 Termination date: 20100520 |