CN101916179A - 控制寄存器中的标志位的存取方法 - Google Patents
控制寄存器中的标志位的存取方法 Download PDFInfo
- Publication number
- CN101916179A CN101916179A CN2010102294497A CN201010229449A CN101916179A CN 101916179 A CN101916179 A CN 101916179A CN 2010102294497 A CN2010102294497 A CN 2010102294497A CN 201010229449 A CN201010229449 A CN 201010229449A CN 101916179 A CN101916179 A CN 101916179A
- Authority
- CN
- China
- Prior art keywords
- instruction
- order format
- class
- order
- action
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000006399 behavior Effects 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 12
- 230000009471 action Effects 0.000 claims description 83
- 230000008569 process Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 4
- 230000008676 import Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 3
- 230000000052 comparative effect Effects 0.000 abstract 1
- 238000013461 design Methods 0.000 description 12
- 101100498930 Mus musculus Degs1 gene Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001154 acute effect Effects 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
控制寄存器中的比较标志位的存取方法属于体系架构描述语言ADL技术领域,其特征在于,在目标机上设置ADL描述文件和ADL分析程序,ADL描述文件依次进行指令格式描述和指令描述,ADL分析程序中的指令格式分析模块、指令分析模块和指令处理模块把体系架构信息描述为类、属性和对象,分别表示具有非常类似的行为、而只有一些例行行为有别的一些指令,格式化的指令所述的指令格式的属性以及指令本身的信息,在此基础上的加在指令格式后的后缀表示不同指令格式的继承机制,不仅具有高度的简洁性和表达力,而且比其他ADL描述文件的冗余少得多而且会产生更高质量的描述而有更少的程序错误。
Description
技术领域
本发明属计算机体系架构领域,特别涉及体系架构描述语言ADL。
背景技术
随着嵌入式处理器越来越复杂和引进各样新的特征,同时编译器不断开发新的优化技术,为编译器详细描述处理器和体系架构信息越来越复杂,嵌入式处理器与编译器的鸿沟也越来越大。表达能力强、简洁、可扩展的高质量体系架构描述语言成为迫切需要的工具。
很多编译器难以重定向,它们需要大量的编码和错误调试工作以及对编译器的深入了解。而另一方面,许多体系架构描述语言(ADL)为模拟器设计,难以为编译器重定向提取出语义信息。虽然存在支持编译器的ADL和语义扩展工作,对一个架构的完整描述仍然需要大量的工作,由于各种各样的特征和大量的指令。而且,修改描述很麻烦,并由于冗余信息和一致性问题可能产生难以发现的bug,这对面向应用程序的处理器(ASIP)可能是重要问题,因为它们需要经常调整指令。
传统上的体系结构描述语言主要为了单一目标如生成模拟器或编译器重定向设计,然后扩展到其他应用,因此对一个设计工具很直接但不适应其他工具,这由于开发工具箱需要硬件行为的不同抽象层次的描述。其他ADL为设计工具集设计,但主要关注于周期精确的模拟器而缺乏对编译器的有效支持。根据其目标的不同,ADL分为三类:结构、行为和混合。
MIMOLA属于第一类。在MIMOLA中,硬件结构用一个类似HDL的语言建模为寄存器转移netlist,门层级的模块为netlist的特例。MIMOLA的结构化方法的优点是同一描述能用于处理器合成、代码生成、测试和模拟。但是这个语言非常低级,书写工作量很大,而且用于编译器的灵活性受严格限制。
nML和ISDL是行为类的例子。它们捕获典型程序员手册提供的指令集层的处理器信息来生成设计工具箱,用属性文法描述指令集。ISDL主要为VLIW架构设计。这些语言不描述显式流水线结构和详细微操作,缺乏生成周期精确模拟器的能力。
大多数ADL属于混合类。MDes和EXPRESSION是两个类似LISP的ADL,它们同时捕获结构和行为的架构信息,主要为设计空间探索(DSE)设计。在MDes中,信息分为几个段:格式、资源使用、延迟、操作、寄存器等。而EXPRESSION将描述划分为两类:指令集和结构。每一类进一步细分为三个子类:操作、指令和操作影射;组件、流水线/数据转移路径和内存子系统。MDes有define预处理特征用于简洁描述。EXPRESSION被用于同构可编程架构的DSE,并用于可编程SOC的架构探索工具的生成。但是,历史上这些语言在编译器中应用的不多。
LISA有一个类似C的语法,主要设计用于周期和位精确的快速编译模拟器,其主要特征是使用计时模型在操作层对流水线的描述。RADL扩展LISA支持多流水线,用于周期和相精确的模拟器。但是这些语言缺乏编译器重定向所需的高层语义,因为这些信息一般无法从任意的C语句中提取。
ArchC是一个关注于SystemC用户的ADL,它主要基于C++和SystemC的语法。其主要特征是基于存储的一致性验证。ArchC已被用于生成一些架构的模拟器和汇编器。
但是,没有工作为存取控制寄存器中的标志位将面向对象机制引入ADL。控制寄存器中的标志位影响频繁且具有例行的模式,手工描述复杂且很乏味,并容易出现冗余和信息不一致等问题。本发明提出一个面向对象的方法进行ADL描述,解决了存取控制寄存器标志位的问题,其充分消除了描述的冗余,语言简洁灵活健壮,从而使编写和维护均比其它ADL简单的多。
发明内容
本发明利用计算机体系架构存取技术,设计出一种控制寄存器标志位的存取方法,该方法将指令抽象为基本指令和指令格式,并用一个继承机制将体系架构信息描述为类、属性和对象。它不仅有高度的简洁性和表达能力,而且比其它体系架构描述语言ADL的冗余少的多,而且会产生高质量的描述而有更少的错误。
本发明的控制寄存器中的比较标志位的存取方法,是在目标机中依次按以下步骤实现的:
步骤(1),目标机的初始化:
在所述目标机内设置:体系架构描述语言ADL描述文件和体系架构描述语言ADL的分析程序,以下简称ADL描述文件和ADL分析程序,其中:
ADL描述文件,至少包括指令格式syntax form描述部分和指令描述部分,其中:
指令格式syntax form描述部分:
所述指令格式syntax form是指把一些具有非常类似行为而只有一些例行行为有别的一些指令书写成为同一类基本指令后,再通过添加设定后缀以表示相应不同例行行为的一类指令,在所述控制寄存器中的比较标志位的存取方法中只有下述两种指令格式:”*”和”*.”,其中:指令格式”*”表示没有影响,指令格式”*.”表示影响控制寄存器中的比较标志位LT、GT、EQ和SO,所述指令格式”*”后缀为””,表示空后缀,所述指令格式”*.”的后缀为”.”,表示影响所述控制寄存器的比较标志位,所述指令格式syntax form被描述为:
<class name=”Syntax”base=”InstructionGroupGenerator”>,其中:关键词class定义为一个类,
属性name表示类名,
属性base表示这一类指令格式的指令组生成器InstructionGroupGenerator,
指令格式后缀为空被描述为<form suffix=””/>,
指令格式为”.”被描述为<form suffix=”.”/>,其中:关键词form定义每一类指令格式,
属性suffix对每一类指令格式指定其后缀,
对指令格式类的组合,则分析定义其中的每一类指令格式,
所述指令格式中定义指令动作action段和指令编码encoding段,其中:
指令动作action段,由所述基本指令中的指令动作再添加上对所述控制寄存器中的比较标志位的修改动作形成,所述指令动作action段被描述为:
$action(%instruction),表示指令动作,
testset CR0[LT,GT,EQ,SO],其中:
testset表示测试标志为CR0的所述控制寄存器的比较标志位,
$action(%instruction)testset CR0[LT,GT,EQ,SO]表示在指令动作完成后一旦满足条件就修改所述控制寄存器中的比较标志位,
指令编码encoding段,指定该类指令格式所修改的指令编码的位和相应值,
所述指令描述部分,每条基本指令在以其指令名称为XML标记的一个信息段中描述,所述信息包括:指令动作action、指令编码encoding、指令操作数operand以及指令汇编格式assembly pattern,对于每条基本指令:
若:该指令为空后缀,则表示没有指令格式,则直接定义该指令自身的信息,
若:该指令具有指令格式,则通过属性syntax指定其指令格式类,再定义指令自身的信息,
ADL分析程序,含有:指令格式分析模块,指令分析模块和指令处理模块,其中:
指令格式分析模块,定义一个指令格式类的内存对象类,一个指令信息类和一个指令组生成器类InstructionGroupGenerator,其中:
指令格式类的内存对象类,包括指令格式的类名、指令后缀、指令动作action和指令编码encoding,以用于存储和处理指令格式类中的各类指令格式的信息,从而建立指令格式类名到该指令格式类内存对象的映射表SyntaxMap,
指令信息类,包括指令名称、指令格式类名name、指令动作action、指令编码encoding、指令操作数operand和指令汇编格式assembly pattern,用于存储和处理所述指令描述部分中的各指令信息,
指令组生成器类InstructionGroupGenerator,提供分析和处理指令格式的方法,
指令分析模块,分析所述指令描述部分的每一条基本指令,其中包括指令名称、指令是否包含指令格式及所述指令信息,然后再建立所述指令编码段内该条指令格式中指令信息的类别,
指令处理模块,分析所述指令分析模块建立的每一条指令信息类的类别,判断其是否有指令格式;
步骤(2),依次按以下步骤生成ADL源文件:
步骤(2.1),所述目标机对每一种输入的指令格式进行步骤(1)所述的指令格式描述和指令描述,
步骤(2.2),所述指令组生成器InstructionGroupGenerator依次按以下步骤对输入的指令描述部分进行指令格式分析:
步骤(2.2.1),分析各指令格式的后缀以便建立该类指令格式的内存对象,
步骤(2.2.2),读取指令动作段,分析出用$action表示的原始指令动作部分和用testset CR0[LT,GT,EQ,SQ]表示的对该指令格式增加的指令动作,
步骤(2.2.3),读取指令编码段,分析出该指令格式修改的位的位置和值,
步骤(2.2.4),根据该类指令格式的内存对象和指令信息生成具有指令格式的各条指令信息,
步骤(2.2.5),对所述ADL描述文件的指令格式描述中的每类指令格式,重复步骤(2.2.1)~步骤(2.2.4),在内存中建立相应的指令格式类内存对象和指令信息,然后把指令格式类名和分析建立的指令格式内存对象添加到所述映射表SyntaxMap中;
步骤(2.3),指令分析模块对输入的所述ADL描述文件的指令描述部分中的各条指令,在辨识指令名称和指令信息之后建立该指令信息的类别;
步骤(2.4),指令处理模块根据步骤(1)指令格式描述以及各类指令格式组合中每条指令的分析结果,判断每条指令是否有指令格式:
若有指令格式,则根据指令格式类名,通过所述映射表SyntaxMap取得相应的指令格式类内存对象,与该指令的信息一起作为参数,输入所述指令组生成器InstructionGroupGenerator,经过处理后,生成相应指令格式类描述的带有指令格式的各条指令信息,其中所述指令组生成器InstructionGroupGenerator的处理过程为:对每个添加指令动作的指令格式,把原始指令动作部分替换为基本指令自身的动作,并附加指令格式增加的指令动作,对每个要修改指令编码的指令格式,则用分析出的指令格式修改的编码位的位置的值来替换该指令编码在相应位置的值,即得到所生成的指令编码,
若无指令格式,则该指令不变;
步骤(3),把步骤(2.5)生成的各条指令信息转换为指令描述输出,以生成相应的ADL源文件。
本发明的控制寄存器标志位的存取方法的所需的ADL描述文件具有简洁、表达能力强、描述质量高等优点,它比其它体系架构描述语言ADL的冗余少的多而产生更少的错误,同时更容易修改和维护。
该控制寄存器标志位的存取方法可与各类通用处理器、图形处理器、嵌入式处理器等的设计和相关工具链如模拟器、编译器、汇编器的开发相结合,应用于软硬件协同设计。并且,该方法也可作为硬件描述方法用于编译器的跨体系架构的自动重定向的研发。
附图说明
图1示出了本发明的流程图;
图2示出了本发明示例的ADL指令描述文件;
图3示出了图2示例的ADL指令描述文件对应的ADL分析程序输出的ADL指令描述源文件。
具体实施方式
本发明的目标机的指令可以具有指令格式(syntax form),指令格式可理解为:将具有非常类似行为、而只有一些例行行为区别的一些指令,书写为同一条指令,并通过添加特定后缀表示不同的例行行为;设目标机指令集有”*”、“*.”、“*o”、“*o.”四种指令格式,各指令格式语义相同:”*“格式没有影响,”*.”格式影响CRO控制寄存器中的比较标志位LT、GT、EQ和SO,“*o”格式影响定点异常寄存器(XER)中的溢出标志位SO和OV,”*o.”格式影响上述所有;
为描述具有四个指令格式的指令,传统上需要为每条指令定义四条,不仅冗余且很乏味,本发明公开影响控制寄存器中的标志位的存取方法,将指令格式定义为指令格式类,可自动生成带有指令格式的指令,然后,可以使每一个基本指令继承这个类,而定义每个指令仅一次;用这种方法,灵活性、可读性和简洁性均显著提高,并减少了冗余。
控制寄存器中的标志位的存取方法,其特征在于,所述方法包括体系架构描述语言ADL描述文件和ADL分析程序,其中ADL描述文件中至少包括指令格式描述部分和指令描述部分,ADL分析程序中设立指令格式分析模块、指令分析模块、指令处理模块,通过本方法处理最终生成ADL源文件,所述方法包括如下步骤:
步骤(1),ADL描述文件中的指令格式描述;
在所述ADL描述文件的指令格式描述部分中对每一种需要的指令格式组合以class关键字定义一个类,通过name属性指出其类名;通过base属性指定其基类为指令组生成器InstructionGroupGenerator,表明定义的是指令格式类,用于存取控制寄存器中的标志位,所述指令格式分析模块将调用指令组生成器类的方法对所描述的指令格式进行分析和处理;
在指令格式类中用form关键字定义每个指令格式,通过suffix属性对每个指令格式指明其后缀;如对“*”和”*.”指令格式组合,则定义两个指令格式,其后缀分别为”.”和””,分别表示影响控制寄存器中的比较标志位的指令的后缀为”.”,不影响控制寄存器中的比较标志位的指令的后缀为””表示空后缀;
在指令格式中定义指令动作(action)和指令编码(encoding)段,分别定义该指令格式对指令的动作和编码的修改,如果没有修改,则可不定义相应的段;对指令动作段,可以用”$action(%instruction)”代指指令定义中的指令动作,再添加对控制寄存器中的比较标志位的修改动作,对指令编码段,指出该指令格式修改的指令编码的位和相应值;如对后缀为””的指令格式,不定义指令动作和指令格式段,对后缀为”.”的指令格式,指令动作段类似”$action(%instruction)testset CR0[LT,GT,EQ,SO]”,表示指令完成其自身动作后在满足条件时修改控制寄存器中的比较标志位;
步骤(2),ADL描述文件中的指令描述;
在所述ADL描述文件中的指令描述部分中,每条基本指令在以其名称为XML标记的一个信息段中描述,对每条基本指令,(i)如果其具有指令格式,则通过syntax属性指定其指令格式类,然后定义指令自身的信息,(ii)如果指令没有指令格式,则直接定义指令自身的信息;
每条基本指令自身的信息在指令中在各段中定义,包括指令动作(action)、指令编码(encoding)、指令操作数(operand)、指令汇编格式(assembly);
步骤(3),所述ADL分析程序的指令格式分析模块;
定义一个指令格式类内存对象类,用于存储和处理指令格式类中的各指令格式信息,包括指令后缀、指令动作和指令编码;
定义一个指令信息类,用于存储和处理所述指令描述部分中的各指令信息,包括指令名称、指令格式属性、指令动作、指令编码、指令操作数和指令汇编格式;
在内存中建立指令格式类名到指令格式类内存对象的映射表SyntaxMap;
定义一个指令组生成器类InstructionGroupGenerator,提供分析和处理指令格式的通用方法,包括分析各指令格式的后缀建立指令格式类内存对象、读取和修改各指令格式中的指令动作和指令编码段、根据指令格式类内存对象和指令信息生成具有指令格式的各条指令信息;
对指令动作段,分析出原始指令动作部分和该指令格式增加的指令动作,对指令编码段,分析出该指令格式修改的位的位置和值;如对后缀为””的指令格式,则分析出对指令各段没有影响,对后缀为”.”的指令格式,分析出对指令动作段的修改为在指令自身动作后添加动作”testset CR0[LT,GT,EQ,SO]”;
对所述ADL描述文件的指令格式描述中的每一个指令格式类,ADL分析程序调用指令组生成器类的方法对指令格式类中的各指令格式进行分析和处理,在内存中建立相应的指令格式类内存对象,然后将指令格式类名和分析建立的指令格式内存对象添加到映射表SyntaxMap中;
步骤(4),所述ADL分析程序的指令分析模块,其中对所述ADL描述文件的指令描述中的每一条指令,ADL分析程序分析处理指令描述,包括指令名称、是否包含指令格式及指令格式名称、指令动作、指令编码各位代表的信息、指令操作数和指令汇编格式,然后建立指令信息类的对象;
步骤(5),所述ADL分析程序的指令处理模块,其中对步骤(4)中分析建立的每一个指令信息类对象,判断其是否有指令格式,(i)如果有指令格式,则根据指令格式类名通过SyntaxMap取得相应的指令格式类内存对象,与该指令信息对象一起作为参数调用指令组生成器类的方法进行处理,生成相应指令格式类描述的带有指令格式的各条指令信息,(ii)如果没有指令格式,则该指令不变。
其中情况(i)中指令组生成器对指令格式类内存对象和指令信息进行处理的详细步骤如下,根据步骤(3)和步骤(4)的分析,对每个增加指令动作的指令格式,将原始指令动作部分替换为基本指令自身的动作,并附加指令格式增加的指令动作即得到生成的指令动作,对每个修改指令编码的指令格式,则用分析出的指令格式修改的编码位的位置的值替换该指令编码在相应位置的值,即得到所生成指令的指令编码;
步骤(6),将步骤5处理生成的各条指令信息转换为指令描述输出生成相应的ADL源文件。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
图1示出了本发明的流程图。如图1所示,首先在步骤101中,在ADL描述文件中描述指令格式。本示例描述整数运算指令的一个子集add(两寄存器相加),addc(两寄存器相加并加进位),addi(寄存器与立即数相加),其中add、addc带有影响控制寄存器中的比较标志位的指令格式,addi没有指令格式。
在ADL描述文件的指令格式描述部分中以class关键字定义一个名称为Syntax、基类为指令组生成器InstructionGroupGenerator的指令格式类,如图2所示。在指令格式类中用form关键字定义两个后缀分别为”.”和””的指令格式,分别表示影响控制寄存器中的比较标志位的指令的后缀为”.”,不影响控制寄存器中的比较标志位的指令的后缀为””表示空后缀。空后缀指令格式对指令动作和指令编码均无影响,则不定义任何段。在后缀为”.”的指令格式中定义指令动作和指令编码段,指令动作段中testset关键字表示测试标志寄存器的标志位,其内容”$action(%instruction)testset CR0[LT,GT,EQ,SO]”表示指令完成其自身动作后在满足条件时修改控制寄存器CR0中的比较标志位LT,GT,EQ,SO;指令编码段为”1[31]”,表示将编码第31位修改为1。
接着在步骤102中,在ADL描述文件中描述各指令信息。对add和addc指令,通过syntax属性指明其指令格式类为Syntax。分别定义出各指令的指令动作、指令编码、指令操作数和指令汇编格式段。其中指令操作数段中”<result type=”GPR”/>”表示目的操作数类型为通用寄存器GPR,”<src1type=”GPR”/>”表示源操作数1类型为通用寄存器GPR。指令编码段中”31[0-5]result[6-10]src1[11-15]src2[16-20]532[21-31]”表示0-5位为31,6-10位为目的操作数result,11-15位和16-20为分别为两个源操作数src1和src2,21-31位为532。
在步骤103中,分别定义出指令格式类内存对象类和指令信息类,再定义指令格式类名到指令格式类内存对象的映射表SyntaxMap,然后定义一个指令组生成器类InstructionGroupGenerator,提供分析和处理指令格式的通用方法,包括分析各指令格式的后缀建立指令格式类内存对象、读取和修改各指令格式中的指令动作和指令编码段、根据指令格式类内存对象和指令信息生成具有指令格式的各条指令信息。
ADL分析程序分析Syntax指令格式类并建立指令格式类内存对象,分析出(i)后缀为””的指令格式对指令各段没有影响,(ii)后缀为”.”的指令格式对指令动作段的修改为在指令自身动作后添加动作”testset CR0[LT,GT,EQ,SO]”,对指令编码段的修改为将编码第31位修改为1。然后将指令格式类名Syntax和分析建立的指令格式类内存对象添加到映射表SyntaxMap中。
在步骤104中,ADL分析程序分析三条指令描述add、addc和addi,分析出add和addc有指令格式Syntax,而addi没有指令格式,同时分析出指令动作、指令编码、指令操作数和指令汇编格式各段,然后建立各条指令的指令信息类的对象。
在步骤105中,ADL分析程序处理对步骤104中分析建立的每一个指令信息类对象。判断出add和addc具有指令格式Syntax,然后根据指令格式类名Syntax通过查找SyntaxMap取得指令格式类Syntax的指令格式类内存对象。然后分别对add和addc指令,以指令信息对象和指令格式类Syntax的指令格式类内存对象为参数调用指令组生成器类的方法进行处理指令,生成带有指令格式的各条指令信息add、add.、addc、addc.。对没有指令格式的addi指令不做处理。
最后在步骤106中,将步骤105处理生成的各条指令信息转换为指令描述输出生成相应的ADL源文件,如图3所示。
Claims (1)
1.控制寄存器中的比较标志位的存取方法,其特征在于,所述方法是在目标机中依次按以下步骤实现的:
步骤(1),目标机的初始化:
在所述目标机内设置:体系架构描述语言ADL描述文件和体系架构描述语言ADL的分析程序,以下简称ADL描述文件和ADL分析程序,其中:
ADL描述文件,至少包括指令格式syntax form描述部分和指令描述部分,其中:
指令格式syntax form描述部分:
所述指令格式syntax form是指把一些具有非常类似行为而只有一些例行行为有别的一些指令书写成为同一类基本指令后,再通过添加设定后缀以表示相应不同例行行为的一类指令,在所述控制寄存器中的比较标志位的存取方法中只有下述两种指令格式:”*”和”*.”,其中:指令格式”*”表示没有影响,指令格式”*.”表示影响控制寄存器中的比较标志位LT、GT、EQ和SO,所述指令格式”*”后缀为””,表示空后缀,所述指令格式”*.”的后缀为”.”,表示影响所述控制寄存器的比较标志位,所述指令格式syntax form被描述为:
<class name=”Syntax”base=”InstructionGroupGenerator”>,其中:关键词class定义为一个类,
属性name表示类名,
属性base表示这一类指令格式的指令组生成器InstructionGroupGenerator,
指令格式后缀为空被描述为<form suffix=””/>,
指令格式为”.”被描述为<form suffix=”.”/>,其中:关键词form定义每一类指令格式,
属性suffix对每一类指令格式指定其后缀,
对指令格式类的组合,则分析定义其中的每一类指令格式,
所述指令格式中定义指令动作action段和指令编码encoding段,其中:
指令动作action段,由所述基本指令中的指令动作再添加上对所述控制寄存器中的比较标志位的修改动作形成,所述指令动作action段被描述为:$action(%instruction),表示指令动作,
testset CR0[LT,GT,EQ,SO],其中:
testset表示测试标志为CR0的所述控制寄存器的比较标志位,
$action(%instruction)testset CR0[LT,GT,EQ,SO]表示在指令动作完成后一旦满足条件就修改所述控制寄存器中的比较标志位,
指令编码encoding段,指定该类指令格式所修改的指令编码的位和相应值,
所述指令描述部分,每条基本指令在以其指令名称为XML标记的一个信息段中描述,所述信息包括:指令动作action、指令编码encoding、指令操作数operand以及指令汇编格式assembly pattern,对于每条指令:
若:该指令为空后缀,则表示没有指令格式,则直接定义该指令自身的信息,
若:该指令具有指令格式,则通过属性syntax指定其指令格式类,再定义指令自身的信息,
ADL分析程序,含有:指令格式分析模块,指令分析模块和指令处理模块,其中:
指令格式分析模块,定义一个指令格式类的内存对象类,一个指令信息类和一个指令组生成器类InstructionGroupGenerator,其中:
指令格式类的内存对象类,包括指令格式的类名、指令后缀、指令动作action和指令编码encoding,以用于存储和处理指令格式类中的各类指令格式的信息,从而建立指令格式类名到该指令格式类内存对象的映射表SyntaxMap,
指令信息类,包括指令名称、指令格式类名name、指令动作action、指令编码encoding、指令操作数operand和指令汇编格式assembly pattern,用于存储和处理所述指令描述部分中的各指令信息,
指令组生成器类InstructionGroupGenerator,提供分析和处理指令格式的方法,
指令分析模块,分析所述指令描述部分的每一条基本指令,其中包括指令名称、指令是否包含指令格式及所述指令信息,然后再建立所述指令编码段内该条指令格式中指令信息的类别,
指令处理模块,分析所述指令分析模块建立的每一条指令信息类的类别,判断其是否有指令格式;
步骤(2),依次按以下步骤生成ADL源文件:
步骤(2.1),所述目标机对每一种输入的指令格式进行步骤(1)所述的指令格式描述和指令描述,
步骤(2.2),所述指令组生成器InstructionGroupGenerator依次按以下步骤对输入的指令描述部分进行指令格式分析:
步骤(2.2.1),分析各指令格式的后缀以便建立该类指令格式的内存对象,
步骤(2.2.2),读取指令动作段,分析出用$action表示的原始指令动作部分和用testset CR0[LT,GT,EQ,SQ]表示的对该指令格式增加的指令动作,
步骤(2.2.3),读取指令编码段,分析出该指令格式修改的位的位置和值,
步骤(2.2.4),根据该类指令格式的内存对象和指令信息生成具有指令格式的各条指令信息,
步骤(2.2.5),对所述ADL描述文件的指令格式描述中的每类指令格式,重复步骤(2.2.1)~步骤(2.2.4),在内存中建立相应的指令格式类内存对象和指令信息,然后把指令格式类名和分析建立的指令格式内存对象添加到所述映射表SyntaxMap中;
步骤(2.3),指令分析模块对输入的所述ADL描述文件的指令描述部分中的各条指令,在辨识指令名称和指令信息之后建立该指令信息的类别;
步骤(2.4),指令处理模块根据步骤(1)指令格式描述以及各类指令格式组合中每条指令的分析结果,判断每条指令是否有指令格式:
若有指令格式,则根据指令格式类名,通过所述映射表SyntaxMap取得相应的指令格式类内存对象,与该指令的信息一起作为参数,输入所述指令组生成器InstructionGroupGenerator,经过处理后,生成相应指令格式类描述的带有指令格式的各条指令信息,其中所述指令组生成器InstructionGroupGenerator的处理过程为:对每个添加指令动作的指令格式,把原始指令动作部分替换为基本指令自身的动作,并附加指令格式增加的指令动作,对每个要修改指令编码的指令格式,则用分析出的指令格式修改的编码位的位置的值来替换该指令编码在相应位置的值,即得到所生成的指令编码,
若无指令格式,则该指令不变;
步骤(3),把步骤(2.5)生成的各条指令信息转换为指令描述输出,以生成相应的ADL源文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010229449 CN101916179B (zh) | 2010-07-12 | 2010-07-12 | 控制寄存器中的标志位的存取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010229449 CN101916179B (zh) | 2010-07-12 | 2010-07-12 | 控制寄存器中的标志位的存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916179A true CN101916179A (zh) | 2010-12-15 |
CN101916179B CN101916179B (zh) | 2013-08-21 |
Family
ID=43323698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010229449 Expired - Fee Related CN101916179B (zh) | 2010-07-12 | 2010-07-12 | 控制寄存器中的标志位的存取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916179B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102398355A (zh) * | 2011-11-18 | 2012-04-04 | 深圳市宝捷信科技有限公司 | 一种自定义命令控制方法、装置及注塑机系统 |
CN112346780A (zh) * | 2020-11-05 | 2021-02-09 | 海光信息技术股份有限公司 | 一种信息处理方法、装置和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6003038A (en) * | 1997-03-31 | 1999-12-14 | Sun Microsystems, Inc. | Object-oriented processor architecture and operating method |
CN101446971A (zh) * | 2008-12-17 | 2009-06-03 | 腾讯科技(深圳)有限公司 | 构建内容管理系统的方法及装置 |
-
2010
- 2010-07-12 CN CN 201010229449 patent/CN101916179B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6003038A (en) * | 1997-03-31 | 1999-12-14 | Sun Microsystems, Inc. | Object-oriented processor architecture and operating method |
CN101446971A (zh) * | 2008-12-17 | 2009-06-03 | 腾讯科技(深圳)有限公司 | 构建内容管理系统的方法及装置 |
Non-Patent Citations (1)
Title |
---|
谭浩强: "《C++程序设计》", 30 June 2004, 清华大学出版社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102398355A (zh) * | 2011-11-18 | 2012-04-04 | 深圳市宝捷信科技有限公司 | 一种自定义命令控制方法、装置及注塑机系统 |
CN102398355B (zh) * | 2011-11-18 | 2014-08-27 | 深圳市宝捷信科技有限公司 | 一种自定义命令控制方法、装置及注塑机系统 |
CN112346780A (zh) * | 2020-11-05 | 2021-02-09 | 海光信息技术股份有限公司 | 一种信息处理方法、装置和存储介质 |
CN112346780B (zh) * | 2020-11-05 | 2022-11-15 | 海光信息技术股份有限公司 | 一种信息处理方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101916179B (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lee et al. | Compass: A framework for automated performance modeling and prediction | |
US8522196B1 (en) | Traceability in a modeling environment | |
EP0628911A2 (en) | Test program generator | |
Beuche | Composition and construction of embedded software families | |
US8266601B2 (en) | Framework for interoperability of solvers | |
US5949993A (en) | Method for the generation of ISA simulators and assemblers from a machine description | |
Diep et al. | VMW: A visualization-based microarchitecture workbench | |
Chattopadhyay et al. | LISA: A uniform ADL for embedded processor modeling, implementation, and software toolsuite generation | |
Fauth | Beyond tool-specific machine descriptions | |
CN101916179B (zh) | 控制寄存器中的标志位的存取方法 | |
Moure et al. | The kscalar simulator | |
Ma et al. | On the design of a microcode compiler for a machine-independent high-level language | |
Isoda et al. | Global compaction of horizontal microprograms based on the generalized data dependency graph | |
Gargantini et al. | Integrating formal methods with model-driven engineering | |
Wojszczyk et al. | The process of verifying the implementation of design patterns—used data models | |
Blagodarov et al. | Tool demo: Raincode assembler compiler | |
CN101923466B (zh) | 装饰器模式的指令的存取方法 | |
Chen et al. | The essence of Verilog: a tractable and tested operational semantics for Verilog | |
Kästner | TDL: a hardware description language for retargetable postpass optimizations and analyses | |
Hu et al. | NEML2: A High Performance Library for Constitutive Modeling | |
Schützenhöfer | Cycle-Accurate simulator generator for the VADL processor description language | |
Ayala-Rincón et al. | Applying ELAN strategies in simulating processors over simple architectures | |
Himmelbauer et al. | The Vienna Architecture Description Language | |
Schnarr | Applying Programming Language Implementation Techniques to Processor Simulation | |
Mishra et al. | Architecture description languages |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130821 |
|
CF01 | Termination of patent right due to non-payment of annual fee |