专利名称:转变位结构体系中的指令的方法、系统、程序和数据结构的利记博彩app
优选实施例提供用于把第一位结构体系中的指令转变为第二位结构体系中的指令的方法、系统、程序和数据结构。
对于计算机编写的很多应用程序都是使用32位结构体系。但是,大规模处理系统开始使用64位结构体系。64位计算结构体系本质上提高了可使用的地址空间、寄存器容量和数据结构大小。而且,64位计算提供比32位快得多的处理和数据传送。例如一个64位指令可处理另外占用几个32位指令加上“清除”码的操作。64位系统可直接访问多个存储器而不使用索引和寄存器寻址方案。当前的64位计算机包括太阳微系统公司(Sun Microsystems Corporation)的Solaris7操作环境、康柏计算机公司的AlphaStation 200以及使用由数字设备公司研制的64位处理器和因特尔公司的Merced与Itanium处理器的其它康柏公司产品,它们是基于IA-64结构体系的,这个体系是由因特尔公司创立的64位结构体系。
尽管64位计算有好处,很多程序仍然使用32位指令来编写。因此,编辑程序开发商必须继续支持32位程序,即使工业上已经发展到64位结构体系计算机。为维持与现有结构体系和编辑程序的兼容性(即隐藏编程器的复杂性),编辑程序开发商必须设置就何时何地使用64位性能这一点作有效报导。从而,技术上需要开发能够处理32位和64位计算的编辑程序来支持32位与64位结构体系之间的转换。
为克服上述已有技术的限制,优选实施例公开用于把第一位结构体系中的指令转变为第二位结构体系中的指令的方法、系统、程序和数据结构。代码变换来自具有操作码和至少一个操作数的第一位结构体系中的指令。访问一个包括用于把第一位结构体系中的指令转变为第二位结构体系中的指令的信息的变换表。如果变换表包括指示修改第一位结构体系中的指令的信息,则第一位结构体系中的指令被变换为第二位结构体系中的相应的指令。变换是基于修改第一位结构体系中的指令来产生第二位结构体系中的指令的变换操作的。
第一位结构体系可以是32位结构体系,第二位结构体系可以是64位结构体系。
在又一实施例中,变换表包括用于每个操作码的一个入口。如果要执行变换,用于每个操作码的入口可包括指向操作数表的指针。如果用于每个操作码的入口不包括指向一个操作数表的指针,不执行变换。
操作数表包括一个入口,用于操作数位结构体系类型的每个可能的组合。操作数表中的每一入口代表至少一个变换操作。在这种情况下,变换指令包括确定操作数表中的一个入口,该操作数表具有操作数位结构体系类型,该结构类型与第一位结构体系中的指令中的每个操作数的位结构体系类型相匹配。之后执行至少一个变换操作来把第一位结构体系中的指令变换为第二位结构体系。
优选的实施例提供一种技术,用于把来自一个结构体系的指令变换成另一个,如32位到64位。对优选的实施例技术,变换代码,如中间代码为32位指令的编辑程序不一定被修改。而是,使用不同的表来处理结果得到的32位指令,这些表为每一个操作码类型提供变换操作。优选的实施例尤其用于需要支持32位和64位结构体系的机器,以允许源程序使用32位指令和数据来编写,并且仍能在该机器上操作。
现在参考附图,其中相同的参考序号从头到尾都表示相应的部件
图1图示出编辑程序的组成部分;图2图示出根据本发明的优选实施例的编辑程序的代码发生器部分的组成部分;图3图示在代码发生器中执行的逻辑线路,用于根据本发明的优选实施例把32位指令变换为64位指令;图4提供各目的一些示例,用于根据本发明的优选实施例把“存储”命令从32位变换为64位格式。
在下面的描述中,以附图为参考,这些附图构成描述的一部分,并且图示出本发明的几个实施例。应理解可使用其它实施例,并且在不背离本发明的范围的情况下,可进行结构和操作变化。
图1图示出编辑程序2的一般组成部分。编辑程序2接收以高级源语言编写的源程序4作为输入。前端处理6通过扫描、分析和编译源程序4为具体的中间表示8把源程序4转换为中间代码8,从而在中间代码8中出现的名称值以目标机器可直接控制的量来表示,例如位、整数、实数、指针等。代码发生器10接收中间代码8作为输入,并产生目标程序12作为输出,该目标程序可包括绝对机器语言、可再定位的机器语言或汇编语言。
打算在目标计算机14上执行目标程序12。在优选的实施例中,目标计算机14能够处理32位和64位指令。例如,目标计算机可实施Intel IA-64结构体系,其支持32位和64位指令设置。Intel IA-64处理器可在支持32位应用程序的执行的64位操作系统上运行32位应用程序。Intel IA-64结构体系还能够执行混合的32和64位代码。Intel IA-64结构体系的具体细节在顺序号No.245188-011(1999年3月Intel公司版权)的Intel的出版物“IA-64应用程序开发商结构体系指南”中具体说明,在这里引入该出版物,将其整个作为参考。
图2图示代码发生器10的组成部分,根据优选实施例把32位指令变换为64位指令。语句处理器模块20接收中间代码8作为输入,并产生32位指令22。32位指令被输入到变换器24,其随后应用编辑程序目录28、指令变换表30、变换操作数表32以及替代表34将32位指令转换为64位指令26。这些表28、30、32和34提供变换变换器24需要的信息,以执行32向64位的变换。编辑程序目录28从32位指令来组装并包括该指令上的信息,这些信息包括操作数的性能和用于指令的数据字段。例如通常的指令形式为op操作数1,操作数2这里“op”是操作代码,表示操作类型,操作数1和操作数2是经受操作(op)的数据。例如,操作数1可以是进行操作的源数据,操作数2是包括操作结果的目标。操作数1和操作数2是可寻址的位置,如存储器中的寄存器。编辑程序目录28包括关于源程序4中限定和使用的所有数据的性能的信息,包括特定寄存器中的数据(操作数)是32位还是64位、数据字段的大小等。
指令变换表30包括用于每个操作类型的入口,即各个op代码。可提供索引来把特定操作代码映射到指令变换表30中的入口。在优选的实施例中,指令变换表30包括包含0或一个地址的指针列。如果指令不被变换,那么指令变换表30中相应的入口将被设置为0。否则,如果要变换指令,那么指令变换表30中的入口将包括对一个变换操作数表32的地址。在优选的实施例中,对于指令变换表30中的具有非零值的每一入口,即对于经受变换的每一个操作都有一个变换操作数表32。
变换操作数表32对于用于指令类型的操作数值的每个不同的可能组合包括一个入口。例如,用于STORE指令的变换操作数表32可允许各个操作数,操作数1和2是32位或64位,该STORE指令是把数据从寄存器传送到存储器。在这种情况下,用于STORE指令的变换操作数表32将具有4个入口,用于操作数的结构体系类型的各个可能组合1.操作数1=32位值操作数2=32位值2.操作数1=64位值操作数2=64位值3.操作数1=32位值操作数2=64位值4.操作数1=64位值操作数2=32位值对于变换操作数表32中的每一入口,即操作数值的每个可能组合,有一个替代表34,其提供关于如何执行对于特定操作数结构体系组合的变换的信息。例如,对于上述的STORE指令的操作数结构体系类型的4种可能组合的每一个,可执行不同的变换。每个替代表34将包括指令变换器24如何实施变换,即变换操作的字段。在优选的实施例中,替代表34将包括一个字段,代表新的变换op代码或指令,以用在进行变换的指令op代码情况中,还包括一个标记,代表是更新寄存器状态表以表示寄存器有32位还是64位数据,还是保持寄存器状态不变。这个寄存器状态表可以是编辑程序控制结构的一部分或被维持在编辑程序目录28中。也可提供其它标记来表示要执行的进一步的变换步骤,以完成输入32位指令22从32位到64位的变换。
变换的一部分可包括改变op代码的名称。例如,32位指令可具有助记的格式,如用于存储的ST和用于装载的L,64位指令可稍微变化,如用于存储的STG和用于装载的LG。“G”助记代表指令具有至少一个64位操作数。在另一个实施例中,其它助记可被用于区分32和64位指令。
图3图示出在代码发生器10的变换器24组成部分中实施的逻辑线路,以使用表28、30、32和34来把32位指令变换为64位指令。控制开始于组块100,用变换器24接收从语句处理器模块20产生的32位指令。变换器24查找(在组块102)指令变换表30中的用于接收的指令的op代码的入口。如所讨论的那样,这个查找操作可包括使用索引来定位相应于特定op代码的入口。如果在查找的入口处的值是0(在组块104),那么变换处理结束(在块106),因为0代表不执行对特定的op代码的变换处理。否则,入口中的值是一个指向变换操作数表32的指针。变换器24访问(在组块108)由入口中的指针寻址的变换操作数表32。变换器24还确定(组块110)从编辑程序目录28接收到的指令的操作数的性能,如各个操作数是32位还是64位。
变换器24然后将经变换操作数表32中的入口循环(在组块112)以定位具有与接收到的指令的操作数的性能匹配的操作数性能的入口。例如,如果接收到的指令的操作数分别是32位和64位,那么将选择对于这些操作数位结构体系值指定的变换操作数表32中的入口,在用于上面的STORE指令的入口的例子中,其包括上面列出的第三入口。变换器24然后将访问(在组块114)在变换操作数表32中定位的入口中列出的替代表34。然后,变换器24将以在替代表34中列出的一个或多个替代op代码来替代(在组块116)接收到的指令的op代码,从而把32位指令变换为64位指令26。在组块118,作为替代表34中指示的变换的结果,变换器24更新寄存器状态表以表示新的32位或64位状态。例如,被变换的接收到的32位指令中的任何操作数将在变换后具有64位值。在这种情况下,用于原来的32位操作数的寄存器状态将被更新来反映它现在是64位操作数。
图4有一个表150,表示对于STORE指令如何发生替代。表150中的每一入口将形成变换操作数表32中的用于STORE指令的入口。一找到具有与32位指令22的操作数值匹配的操作数1和2的操作数值的入口,表150列出替代操作,包括新的指令和是否寄存器状态表被更新。从而表150组合替代表并对于每个可能操作数值的组合变换操作数表的入口。由于在变换前操作数1是32位值,在表150中的第三和第四入口表示寄存器1状态标记被更新。新的指令中的“G”助记表示指令是64位指令。而且,在表150中,具有一个32位操作数1的32位STORE指令被变换为两个64位指令。
同样,对于每个其它的32位指令将有一个变换操作数表和替代入口或表。在优选的实施例中,对于很多指令,如ADD、SUBSTRACT、MULTIPLY、DIVIDE、COMPARE、AND、OR和EXCLUSIVE OR,只要一个操作数是64位,替代表34将包括变换操作,以指令变换器24来把其它操作数变换为64位。但是,如果寄存器被用户表明为32位,则不指令变换器24把这种寄存器变换为64位。对变换器24的关于如何把32位指令变换为64位的另外的指令将被编码到替代表34中。
优选的实施例提供把32位指令变换为64位的方法、系统和程序。优选的实施例技术的一个优点是从中间代码产生32位指令的实际语句处理器模块20不一定被改变来完成变换。反而,增加独立的表28、30、32和34以及变换器24来执行把32位指令变换为64位指令的附加步骤。以这种方式,用于语句处理器模块20的编辑程序代码不必要被修改,并且初始32位指令使用当前编辑程序来产生。编辑程序开发商仅需要增加表和变换器24逻辑线路来执行最终的变换,而不需要修改或干扰把中间代码变换为32位指令的代码发生器部分。从而优选的实施例提供一种方法来把32位指令变换为用于目标计算机的64位,该计算机仅以64位指令操作,或者把32位指令变换为用于多个计算机的64位,这些计算机诸如是使用Intel IA-64结构体系的系统,可处理32位和64位指令。
这对本发明的优选实施例的描述得出结论。下面描述一些完成本发明的另外的实施例。
优选的实施例可以作为一个方法、装置或使用标准编程和/或工程技术制造软件、固件、硬件或它们的任何组合的制造物件来实施。这里使用的术语“制造物件”(或“计算机程序产品”)意在包括可从一个或多个计算机可读设备、载体、或媒体如磁性存储媒体“软盘”、CD-ROM光盘、全息单元、易失性或非易失性电存储器文件服务器访问的一个或多个计算机程序和/或数据文件,该文件服务器经网络传输线路、无线传输媒体、空间传播的信号等提供对程序的访问。当然,熟悉本领域的技术人员将认识到在不背离本发明的范围的情况下可对这种配置进行很多修改。
关于把32位变换为64位指令描述了优选实施例。但是,优选实施例的表和变换方法可应用于除32和64位之外的任何指令格式和位结构体系,如8到16,16到32,或者用于尚未开发出来的结构体系的变换。这是可能的,因为优选实施例技术使用当前编辑技术把初始指令编辑成第一位格式结构体系,然后使用表和变换器来把第一位结构体系中的指令变换为第二位格式结构体系。而且,可执行从更大位结构体系如64位到更小位结构体系如32位的变换。
优选实施例描述了编辑程序目录、指令变换表、变换操作数表和替代表为分开的表。但是,在另外的实施例中,描述的分开的表中的数据可被组合到一个或多个表中。
总之,本发明提供把第一位结构体系中的指令转变为第二位结构体系中的指令的方法、系统、程序和数据结构。代码变换自具有操作代码和至少一个操作数的第一位结构体系中的指令。访问一个包括用于把第一位结构体系中的指令转变为第二位结构体系的信息的变换表。如果变换表包括代表修改第一位结构体系中的指令的信息,则第一位结构体系中的指令被变换为第二位结构体系中的相应的指令。变换是基于修改第一位结构体系中的指令来产生第二位结构体系中的指令的变换操作的。
本发明的优选实施例的前面的描述是为了图示和描述的目的提供的,它并非意在完全或限制本发明于所公开的精确形式。在上述教导的提示下,可能进行很多修改和变化。本发明的范围不是由这个具体的描述限定而是由后附的权利要求限定。上述的说明、举例和数据提供本发明组成的制造和应用的完整的描述。由于在不背离本发明的精神和范围的情况下,可作出本发明的很多实施例,本发明归于后附的权利要求。
* *Solaris是太阳微系统公司的商标;Itanium是因特公司的商标,Merced和IA-64是因特公司的代码名称。
权利要求
1.用于把第一位结构体系中的指令转变为第二位结构体系中的指令的方法,包括把代码变换为具有操作码和至少一个操作数的第一位结构体系中的指令;访问一个包括用于把第一位结构体系中的指令转变为第二位结构体系的信息的变换表;如果变换表包括代表修改第一位结构体系中的指令的信息,则把第一位结构体系中的指令变换为第二位结构体系中的相应的指令,其中变换是基于修改第一位结构体系中的指令来产生第二位结构体系中的指令的变换操作的。
2.根据权利要求1的方法,其中变换表包括用于每个操作码的一个入口,其中如果要执行变换,用于每个操作码的入口能够包括指向操作数表的指针;其中如果用于该操作码的入口不包括指向一个操作数表的指针,不执行变换。
3.根据权利要求2的方法,其中操作数表包括一个入口,用于操作数位结构体系类型的每个可能的组合,其中操作数表中的每一入口代表至少一个变换操作,其中变换指令包括确定操作数表中的一个入口,该操作数表具有操作数位结构体系类型,该结构类型与第一位结构体系中的指令中的每个操作数的位结构体系类型相匹配;及执行至少一个变换操作来把第一位结构体系中的指令变换为第二位结构体系。
4.根据权利要求3的方法,其中确定第一位结构体系中的指令的各个操作数的位结构体系类型包括处理一个目录,该目录包括关于第一位结构体系中的各个指令的性能的信息。
5.根据权利要求3的方法,其中执行至少一个变换操作包括改变操作码的名称来表示操作码处于第二位结构体系。
6.根据权利要求3的方法,其中执行至少一个变换操作包括更新包括关于各个寄存器的信息的寄存器状态表,该寄存器包括操作数来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系。
7.根据权利要求6的方法,其中在进行变换的指令中的一个操作数处于第一位结构体系并且经受变换的指令中的另一个操作数处于第二位结构体系时,寄存器状态表被更新来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系。
8.根据权利要求3的方法,其中操作数表中的每一入口包括一个指向替代表的指针,该替代表包括至少一个变换操作以把第一位结构体系中的指令变换为第二位结构体系。
9.根据权利要求1的方法,其中第一位结构体系中的指令能具有第一位结构体系和第二位结构体系中的操作数。
10.根据权利要求1的方法,其中第一位结构体系是32位结构体系而第二位结构体系是64位结构体系。
11.用于把第一位结构体系中的指令转变为第二位结构体系中的指令的系统,包括把代码变换为具有操作码和至少一个操作数的第一位结构体系中的指令的装置;访问一个包括用于把第一位结构体系中的指令转变为第二位结构体系的信息的变换表的装置;如果变换表包括代表修改第一位结构体系中的指令的信息,则把第一位结构体系中的指令变换为第二位结构体系中的相应的指令的装置,其中变换是基于修改第一位结构体系中的指令来产生第二位结构体系中的指令的变换操作的。
12.根据权利要求11的系统,其中变换表包括用于每个操作码的一个入口,其中如果要执行变换,用于每个操作码的入口能够包括指向操作数表的指针;其中如果用于该操作码的入口不包括指向一个操作数表的指针,不执行变换。
13.根据权利要求12的系统,其中操作数表包括一个入口,用于操作数位结构体系类型的每个可能的组合,其中操作数表中的每一入口代表至少一个变换操作,其中变换指令的装置包括确定操作数表中的一个入口的装置,该操作数表具有操作数位结构体系类型,该结构类型与第一位结构体系中的指令中的每个操作数的位结构体系类型相匹配;及执行至少一个变换操作来把第一位结构体系中的指令变换为第二位结构体系的装置。
14.根据权利要求13的系统,其中确定第一位结构体系中的指令的各个操作数的位结构体系类型的装置包括处理一个目录,该目录包括关于第一位结构体系中的各个指令的性能的信息。
15.根据权利要求13的系统,其中执行至少一个变换操作的装置包括改变操作码的名称来表示操作码处于第二位结构体系。
16.根据权利要求13的系统,其中执行至少一个变换操作的装置包括更新包括关于各个寄存器的信息的寄存器状态表,该寄存器包括操作数来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系。
17.根据权利要求16的系统,其中在进行变换的指令中的一个操作数处于第一位结构体系并且经受变换的指令中的另一个操作数处于第二位结构体系时,寄存器状态表被更新来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系。
18.根据权利要求13的系统,其中操作数表中的每一入口包括一个指向替代表的指针,该替代表包括至少一个变换操作以把第一位结构体系中的指令变换为第二位结构体系。
19.根据权利要求13的系统,其中第一位结构体系中的指令能具有第一位结构体系和第二位结构体系中的操作数。
20.根据权利要求13的系统,其中第一位结构体系是32位结构体系,第二位结构体系是64位结构体系。
21.一种制造物件,用于把第一位结构体系中的指令转变为第二位结构体系中的指令,该制造物件包括计算机使用的媒体,该媒体包括嵌入其中的至少一个计算机程序,该程序能够引起计算机执行把代码变换为具有操作码和至少一个操作数的第一位结构体系中的指令;访问一个包括用于把第一位结构体系中的指令转变为第二位结构体系的信息的变换表;如果变换表包括代表修改第一位结构体系中的指令的信息,则把第一位结构体系中的指令变换为第二位结构体系中的相应的指令,其中变换是基于修改第一位结构体系中的指令来产生第二位结构体系中的指令的变换操作的。
22.根据权利要求21的制造物件,其中变换表包括用于每个操作码的一个入口,其中如果要执行变换,用于每个操作码的入口可包括指向操作数表的指针;其中如果用于该操作码的入口不包括指向一个操作数表的指针,不执行变换。
23.根据权利要求22的制造物件,其中操作数表包括一个入口,用于操作数位结构体系类型的每个可能的组合,其中操作数表中的每一入口代表至少一个变换操作,其中变换指令包括确定操作数表中的一个入口,该操作数表具有操作数位结构体系类型,该结构类型与第一位结构体系中的指令的每个操作数的位结构体系类型相匹配;及执行至少一个变换操作来把第一位结构体系中的指令变换为第二位结构体系。
24.根据权利要求23的制造物件,其中确定第一位结构体系中的指令的各个操作数的位结构体系类型包括处理一个目录,该目录包括关于第一位结构体系中的各个指令的性能的信息。
25.根据权利要求23的制造物件,其中执行至少一个变换操作包括改变操作码的名称来表示操作码处于第二位结构体系。
26.根据权利要求23的制造物件,其中执行至少一个变换操作包括更新包括关于各个寄存器的信息的寄存器状态表,该寄存器包括操作数来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系。
27.根据权利要求26的制造物件,其中在经受变换的指令中的一个操作数处于第一位结构体系并且进行变换的指令中的另一个操作数处于第二位结构体系时,寄存器状态表被更新来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系。
28.根据权利要求23的制造物件,其中操作数表中的每一入口包括一个指向替代表的指针,该替代表包括至少一个变换操作以把第一位结构体系中的指令变换为第二位结构体系。
29.根据权利要求21的制造物件,其中第一位结构体系中的指令能具有第一位结构体系和第二位结构体系中的操作数。
30.根据权利要求21的制造物件,其中第一位结构体系是32位结构体系,第二位结构体系是64位结构体系。
31.一种计算机可读数据传输媒体,包含至少一个数据结构,用于把第一位结构体系中的指令转变为第二位结构体系中的指令,包括至少一个包括信息的变换表,该信息用于把第一位结构体系中的指令转变为第二位结构体系,其中如果变换表包括代表修改第一位结构体系中的指令的信息,则把第一位结构体系中的指令变换为第二位结构体系中的相应的指令;以及变换操作代表执行修改第一位结构体系中的指令以产生第二位结构体系中的指令的操作。
32.根据权利要求31的计算机可读数据传输媒体,还包括至少一个操作数表,其中变换表包括用于每个操作码的一个入口,其中如果要执行变换,用于每个操作码的入口能包括指向操作数表的指针;其中如果用于每个操作码的入口不包括指向一个操作数表的指针,不执行变换。
33.根据权利要求32的计算机可读数据传输媒体,其中操作数表包括一个入口,用于操作数位结构体系类型的每个可能的组合,其中操作数表中的每一入口代表至少一个变换操作,其中该操作数表包括具有操作数位结构体系类型的一个入口,该结构类型与第一位结构体系中的指令的每个操作数的位结构体系类型相匹配,其中执行至少一个变换操作来把第一位结构体系中的指令变换为第二位结构体系。
34.根据权利要求33的计算机可读数据传输媒体,还包括一个目录,该目录包括关于第一位结构体系中的各个指令的性能的信息,其中确定第一位结构体系中的指令的各个操作数的位结构体系类型包括处理该目录来确定各个指令的性能。
35.根据权利要求33的计算机可读数据传输媒体,还包括一个包括关于各个寄存器的信息的寄存器状态表,该寄存器包括操作数来表示包括经受变换的指令中的一个操作数的寄存器处于第二位结构体系,其中寄存器状态表在执行至少一个变换操作时被更新。
36.根据权利要求33的计算机可读数据传输媒体,其中操作数表中的每一入口包括一个指向替代表的指针,该替代表包括至少一个变换操作以把第一位结构体系中的指令变换为第二位结构体系。
全文摘要
公开用于把第一位结构体系例如32位中的指令转变为第二位结构体系例如64位中的指令的方法、系统、程序和数据结构。代码变换自具有操作码和至少一个操作数的第一位结构体系中的指令。访问一个包括用于把第一位结构体系中的指令转变为第二位结构体系的信息的变换表。如果变换表包括代表修改第一位结构体系中的指令的信息,则第一位结构体系中的指令被变换为第二位结构体系中的相应的指令。变换是基于修改第一位结构体系中的指令来产生第二位结构体系中的指令的变换操作的。
文档编号G06F9/45GK1306245SQ00129488
公开日2001年8月1日 申请日期2000年12月29日 优先权日2000年1月14日
发明者A·O·杰克逊 申请人:国际商业机器公司