CN1146788C - 用于产生平台所特定的编译器的装置和方法 - Google Patents

用于产生平台所特定的编译器的装置和方法

Info

Publication number
CN1146788C
CN1146788C CNB001070223A CN00107022A CN1146788C CN 1146788 C CN1146788 C CN 1146788C CN B001070223 A CNB001070223 A CN B001070223A CN 00107022 A CN00107022 A CN 00107022A CN 1146788 C CN1146788 C CN 1146788C
Authority
CN
China
Prior art keywords
platform
compiler
instruction
sign indicating
indicating number
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 - Lifetime
Application number
CNB001070223A
Other languages
English (en)
Other versions
CN1271891A (zh
Inventor
Сc��N��������
小C·N·克利克
ά
C·A·维克
M·H·帕莱茨尼
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1271891A publication Critical patent/CN1271891A/zh
Application granted granted Critical
Publication of CN1146788C publication Critical patent/CN1146788C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers

Abstract

一种用于生成具有内嵌指令选择器的平台所特定编译器的系统和方法。一组用于描述一个依赖特殊硬件平台的编译器的体系结构特征的用户定义的依赖于平台的编译器的体系结构描述符和一组用于识别由指令选择器所选的平台所特定指令的指令判定被分别转换为依赖于平台的编译器目标码和指令选择器目标码。具有内嵌指令选择器的平台所特定编译器由依赖平台编译器目标码,指令选择器目标码和独立于平台的编译器目标码来形成。

Description

用于产生平台所特定的编译器的装置和方法
技术领域
本发明一般地涉及计算机系统。更具体地,涉及用于在多平台计算环境中选择可执行指令的方法和装置。
背景技术
软件平台和硬件体系结构的连续增加确保了计算机用户和计算机程序开发员将要在他们的职业生涯中考虑许多不同的计算机环境。应注意的是,在本论述的上下文中,术语“环境”指在与移植(ported)软件交互的计算机系统中的元件的完整范围。这些元件典型地包括一个处理器和一个操作系统以及I/O设备,程序库,网络,或,在一些情况中的较大的人或物理系统。甚至在数准-标准平台(例如,IBM-PC,UNIX)已经广泛使用了,但仍然不是通用的计算机环境。为了维持和扩展它们的生存能力,因此,多数软件程序将最终面对被移植的要求,使得基于现有版本软件的可执行版本的软件程序在一个新的计算环境中产生。因此,可移植性,或一个软件程序被移植到一个给定环境(即,目标)的能力正在被普遍认识为一个对于多数软件程序而言的所希望的属性。因此,软件程序在不同计算平台之间的可移植性通过延长了它的生命周期和扩展了它所期望应用的的安装范围而明显增强了软件程序的价值。如在本领域所公知的,一个软件程序可以包括一个应用程序,一个系统程序,或一个程序的组件,相反一个软件系统是软件程序的集合。
如果一个软件系统的移植费用是和在某种程度上小于在新目标环境中重新编写程序的费用,则该软件程序是可移植的。如果一个软件程序可以零成本来移植,则它的可移植性是极佳的,当然这在现实中是不可能的。实际上,这由两种基本可移植性协议,第一种是二元可移植性(即,移植软件程序的可执行形式)和第二种为源可移植性(即,移植表示软件程序的源代码)。虽然,二元可移植性协议典型地提供了几个优点(主要与移植的容易度有关),但它只能用于将软件程序移植到非常相似的环境中,从而严重限制了它的可用性。相反,因为源可移植性协议采取了源代码的可用性,它们典型地提供了使一个特殊软件程序适用于更宽范围的计算环境的更大能力。
不幸地,多数移植过程仍然在使用ad hoc方法,这导致了低效率的技术,这实质上添加到了将一个软程序从一个平台移植到另一个平台上的成本。举例来说,一个编译器将一个计算机程序由一个语言翻译为另一个,在翻译过程中捕捉语法上的任何错误。最普通地,一个编译器将一些诸如C++或COBOL的高级语言翻译为机器语言,使得计算机可以无需任何解释地理解。为了完全移植一个编译器,我们必须完成几个任务以使所移植的编译器可以成功地,和以一个高度可靠的方式,执行它所设计的功能,同时在一个和最初为它所构思的平台完全不同的平台上运行。
所要求完成以完全移植一个编译器的几个任务包括正确指令选择,因为通常许多不同的指令类型可以匹配相同的机器独立语义(machineindependent semantic)。一个简单的例子是定义为将一个“1”的常数加到一个数值上的操作,其中“1”的值可以表示为一个8比特或32比特精确整数。在另一个例子中,对于一个在Pentium和PentiumII的微处理器系列中发现的X86处理器中,浮点单元(FPU)具有3个精确模式,其中它可以执行不同的操作,诸如加法和减法。在其中语义要求,例如,以24比特的精度来舍入,和一个FPU控制字已将FPU精度设为,例如,53比特的情况中,对于X86编译器,选择在体系结构描述中定义的,产生一个53比特的精度而不引入附加舍入的指令是低效率和不正确的。
另外的例子包括多硬件平台,诸如生成为V8或V9处理器的SPARC微处理器。当生成为V8系统时,只有V8类型指令可被执行,然而,当生成为V9系统时,V8和V9类型的指令都可被执行。因此,基本上,在其中V8系统运行的情况中,只能选择V8类型的指令,因为V9指令不能在V8系统中执行。
我们还希望不仅选择那些将在一个特殊平台上正确执行的指令,而且选择那些通过减少执行“成本”而改善处理器总性能的指令。例如,将诸如减法的一个特殊操作的结果保存在一个存储位置通常比将相同结果保存在一个数据寄存器中更加要求计算机资源(即,成本更高)。因此,成本最有效的方式,可能的话,是选择其成本在可选择的所有指令中最低的指令。使用上面的例子,我们由成本有效的观点可以体会到应选择与那些将它们各自结果保存在存储器中一个位置的指令相反的将其结果保存在一个寄存器中的指令。
因此,所希望的是定义一个选择协议的能力,从而不仅选择了正确的指令用以在多平台计算环境中执行,而且执行所选择的这些指令的成本最低。
发明内容
广泛而言,本发明涉及一个用于生成一个具有在多平台环境中的指令选择器的编译器的改进方法,装置和计算机系统。本发明可以多种方式实现,包括一个方法,一个计算机系统和一个装置。下面将讨论本发明的几个实施例。
根据本发明的一个方面,我们希望有一个用于编译一个具有内嵌指令选择器的平台特定编译器的装置。该装置包括一组用户定义的依赖平台的编译器体系结构描述符和指令选择所使用的指令判定(instructionpredicates),该描述符描述了一个特殊硬件平台的相应的体系结构特征。一个体系结构描述符编译器将用户定义的依赖平台的编译器体系结构描述符转换为一个依赖平台的编译器源代码和被一个主编译器转换为依赖平台的目标码与指令选择器目标码的指令选择器源。该编译器由独立于平台的编译器目标码和依赖平台的编译器目标码结合指令选择器目标码来组成。
如用于生成一个平台特定编译器的方法,它提供了一组用于描述一个依赖特定硬件平台的编译器的相应体系结构特征的用户定义的依赖平台的编译器体系结构描述符和指令判定。该描述符和指令判定被一个体系结构描述符编译器转换为依赖平台的编译器源代码和指令选择器源代码。该依赖平台的编译器源代码和指令选择器源代码被编译为依赖平台的目标码和指令选择器目标码。具有内嵌的指令选择器的平台特定编译器由依赖于平台的目标码,指令选择器代码和独立于平台的编译器目标码构成。
在另一个实施例中,公开了一个平台特定编译器。该编译器包括一个具有内嵌的指令选择器目标码和适于在特殊硬件平台上执行的独立于平台的编译器目标码的依赖于平台的编译器目标码。一个部分嵌入该独立于平台的代码和部分嵌入依赖于平台的目标码的接口在平台特定编译器运行期间作为在独立于平台的编译器代码和依赖于平台的编译器代码之间的媒介。
根据本发明的另一个方面,公开了一种用于产生具有内嵌指令选择器的平台所特定编译器的装置。该装置包括:用于提供一组用户定义的依赖于平台的编译器的体系结构描述符的第一装置,所述体系结构描述符用于描述一个依赖特殊硬件平台的编译器的体系结构特征;用于提供一组指令判定的第二装置,所述指令判定用于识别由指令选择器所选的平台所特定指令;用于提供一个体系结构描述符编译器的第三装置,所述编译器用于将用户定义的依赖平台编译器体系结构描述符转换为依赖于平台源代码和用于将该组指令判定转换为平台所特定指令选择器源代码;用于提供一个主编译器的第四装置,所述主编译器用于将依赖于平台的编译器源代码编译为依赖于平台编译器目标码和用于将平台所特定指令选择器源代码编译为内嵌的指令选择器目标码;用于提供独立于平台的编译器目标码的第五装置;和一个在平台所特定编译器运作期间用作在由第四装置所提供的依赖平台编译器目标码和由第五装置所提供的独立于平台编译器目标码之间信息流的媒介的接口,其中在由第四装置所提供的平台所特定的编译器的运作期间,内嵌指令选择器选择由第二装置所提供的将要被编译的指令,所述选择是根据所选指令的执行成本来进行的,而其中内嵌的指令选择器提供隐式指令判定来由第四装置所提供的平台所特定编译器使用以编译所选择的指令。
在另一方面,所述用于产生平台所特定编译器的装置还包括一个用于在特定硬件平台上执行由第五装置所提供的独立于平台的编译器目标码和由第四装置所提供的的依赖于平台的编译器目标码的第六装置。
而在用于产生平台所特定编译器的装置的另一个方面,由第五装置所提供的独立于平台的编译器目标码通过提供一个信息请求给接口来请求一个依赖于特定平台的目标码信息,该接口将该信息请求直接引入依赖于预定平台的编译器目标码信息提取器。
在用于产生平台所特定编译器的装置的另一个方面,依赖于平台的编译器目标码信息提取器通过提取满足该信息请求的依赖于特定平台的编译器目标码来响应该信息请求。
在用于产生平台所特定编译器的装置的另一个方面,所提取的信息被提供给该接口,该接口依次将该信息引入信息请求器。
在另一个方面,所述用于产生平台所特定编译器的装置包括一个用于提供多组用户定义的依赖于平台的体系结构描述符的第七装置,其中,每组描述符相应于不同的硬件平台。
根据本发明的另一个方面,还公开了一种用于生成具有内嵌指令选择器的平台所特定编译器的方法,该方法包括以下步骤:提供一组用户定义的依赖于平台的编译器的体系结构描述符,它用于描述一个依赖特殊硬件平台的编译器的体系结构特征;提供一组用于由内嵌指令选择器使用来选择那些将在运行期间被平台所特定编译器编译的指令的用户定义的指令判定;由一个体系结构描述符编译器来将该组用户定义的依赖平台的编译器体系结构描述符转换为依赖于平台的编译器源代码;由一个体系结构描述符编译器将该组用户定义的指令判定转换为平台所特定指令选择器源代码;由一个连接到体系结构描述符编译器的主编译器将依赖于平台的编译器源代码编译为依赖于平台的编译器目标码;由一个连接到体系结构描述符编译器的主编译器将指令选择器源代码编译为指令选择器目标码;提供一个独立于平台的编译器目标码,其中,独立于平台的编译器目标码和依赖于平台的编译器目标码适合于在特定硬件平台上执行;由依赖平台编译器目标码,指令选择器目标码和独立于平台的编译器目标码来形成内嵌的指令选择器。
在另一个方面,所述用于生成具有内嵌指令选择器的平台所特定编译器的方法还包括以下步骤:在平台所特定编译器运行期间,由独立于平台的目标码和独立于平台的编译器目标码请求一个依赖于特定平台的目标码信息;提供一个信息请求给该接口;由该接口将该信息请求直接引入依赖于预定平台的编译器目标码信息提取器。
而在另一方面,所述用于生成具有内嵌指令选择器的平台所特定编译器的方法还包括以下步骤:为响应该信息请求,提取满足该信息请求的依赖于特定平台的编译器目标码。
而在另一个方面,所述用于生成具有内嵌指令选择器的平台所特定编译器的方法还包括以下步骤:由该接口将所提取的信息引入给该信息请求者。
而在本发明的另一个方面,还公开了一种具有内嵌指令选择器的平台所特定的编译器,它包括一个存储器、一个处理器和一个接口,所述处理器可操作地与该存储器相连接,其中所述处理器被安排来在指令上运行,所述指令包括下列代码的:一个依赖于平台的编译器目标码;一个独立于平台的编译器目标码,其中独立于平台的编译器目标码和依赖于平台的编译器目标码适合于在一个特殊硬件平台上执行;一个嵌入依赖于平台编译器目标码中的依赖于平台的指令选择器目标码。
在所述具有内嵌指令选择器的平台所特定的编译器的另一方面,在平台所特定编译器运行期间,独立于平台的编译器目标码通过提供一个信息请求给接口来请求一个依赖于特定平台的目标码信息,该接口将该信息请求直接引入依赖于预定平台的编译器目标码信息提取器。
在所述具有内嵌指令选择器的平台所特定的编译器的另一方面,依赖于平台的编译器目标码信息提取器通过提取满足该信息请求的依赖于特定平台的编译器目标码来响应该信息请求。
而在所述所述具有内嵌指令选择器的平台所特定的编译器的另一方面,所提取的信息被提供给该接口,该接口依次将该信息引入信息请求器。
而在所述所述具有内嵌指令选择器的平台所特定的编译器的另一个方面,所述处理器被用于进一步在包括下列代码的指令上运行:包括多组用户定义的依赖于平台的体系结构描述符,其中,每组描述符相应于不同的硬件平台。
附图说明
本发明的这些和其他优点将在阅读了下面的详细描述和对各个附图进行研究之后变得明显。
本发明以及其进一步的优点可以参照下面的描述结合附图得到最好的理解。
图1是根据本发明的一个实施例的多平台编译器系统的表示性框图;
图2显示了图1中多平台编译器的特定实例;
图3显示了图2所示的编译器的另一实例;
图4详细显示了根据本发明一个实施例的编译器生成过程的流程图;
图5显示了具有根据本发明一个实施例的平台特定编译器的Java虚拟机(JVM);
图6A显示了一个根据本发明一个实施例的AD文件组织结构;
图6B显示了在包括在图6A所示AD文件中的各种数据域之间的特殊关系;
图7显示了一个根据本发明一个实施例,连接依赖于平台的源代码和独立于平台的源代码的示例性接口;
图8是一个根据本发明的由编译引擎进行的运行过程的示例性表示;
图9是一个独立于机器的指令的表示;
图10是一个详细描述根据本发明一个实施例的指令选择过程的流程图;
图11显示了一个用于实施本发明的计算机系统。
具体实施方式
在下面的描述中,将描述在多平台计算环境中选择指令的构架和方法。本发明最初以驻留在Java虚拟机中的多平台编译器的形式进行描述。一般地,为了生成一个具有内嵌的指令选择代码,公开了一组以一个体系结构描述语言(ADL)文件形式的用户定义的平台特定体系结构描述符和一组用户定义的指令判定。应注意地是,ADL可以采取对于本领域技术人员公知的许多形式,诸如C++,属性文法,习惯描述语言等,或这些形式的一些组合。在所述实施例中,该指令判定采取与嵌入平台特定编译器的指令选择代码性结合布林(boolean)表达式的形式,使得只有这些指令将被执行。在本发明的一个实施例中,对布林表达式值的确定只能在指令选择过程进行。
AD文件包括用户定义的指令判定,这构成到包括一个体系结构设计语言编译器(ADLC)的多平台编译器的输入。在一个实施例中,ADLC用于产生用于生成目标特定编译器的依赖于特殊目标平台的编译器源代码。ADLC还产生目标平台指令选择源代码和目标平台指令判定源代码。具有内嵌指令选择器的平台特定编译器是使用由ADLC提供的依赖于平台的编译器源代码,指令选择源代码和指令判定源代码结合另外提供的独立于平台的编译器目标码来生成。
以此方式,平台特定编译器不仅选择那些由用户确信适合于在目标平台上执行的指令,还选择那些通过减少指令执行成本而改善处理器性能的指令。以此方式,在多平台环境中处理器的可靠性和性能都明显改善。
图1是根据本发明的一个实施例的多平台编译器系统100的表示性框图。该多平台编译器系统100可以生成,或编译一个可以选择适合于目标平台的指令的平台特定编译器。另外,编译器还可以选择那些那些通过减少指令执行成本而改善处理器性能的指令。
在所述实施例中,平台特定编译器是通过编译表示平台特定编译器与任何特殊平台无关的那些部分的独立于平台源代码和表示编译器平台特定的那些特征的依赖于平台源代码来生成的。在其中提供用户定义(显式地)的指令判定,或其中它确定特殊指令要求判定而不管它们是否由用户提供(隐式地)的情况中,编译器是使用提供具有上述选择能力的平台特定编译器的指令判定源代码来生成的。
更具体地,在所述实施例中,多平台编译器系统100包括一个被配置用于使用平台特定体系结构描述符和指令判定来生成依赖于平台的编译器的编译器生成器102。在所述实施例中,平台特定体系结构描述符采取用于表示目标平台编译器依赖于平台的那些部分的体系结构描述符语言(ADL)的形式,同时指令判定采取布林表达式的形式。应注意的是,ADL可以采取许多对于本领域技术人员公知的形式,诸如C++,Java源代码,Pascal等。典型地,它可以是由多平台编译器系统100的用户编码的AD文件,然而在一些情况中,AD文件在被称为“转键(turn key)”系统的情况中是由原始设备制造商提供。在这些情况中,终端用户已选择了被确信是有用的目标平台而提供商已提供了必需的译码努力。
在许多情形中,AD文件位于,例如,在编译器生成器102的存储器系统中,诸如AD文件104和AD文件106。应注意地是,虽然可以提供任何数量的AD文件,每一个特定于一个特殊平台,然而,在一个时间只有一个AD文件被编译器生成器102处理。以此方式,一个平台类型1被提供,当特定于,例如,平台类型1的依赖于平台的源代码被提供时,定制的编译器生成器102可以将源代码编译为平台类型1的目标码。例如,文件104可以包括具有被编译器生成器102用于生成可以择优地选择那些由用户定义的指令判定使能的指令的X86编译器的指令判定的ADL代码。如在本领域公知的,X86目标码是那些由一个X86微处理器可执行的指令,X86微处理器是由Santa Clara,Ca的Intel公司所制造的。
沿相同脉络,AD文件106可以包括具有被编译器生成器102用于生成可以择优地选择那些由用户定义的指令判定使能的指令的SPARC编译器的指令判定的ADL代码。
在两种情况中,处理器总的性能可以得到改善,这是因为一个成本分析还可以与选择同时进行。以此方式,编译器生成器102可以自动提供与AD文件和可用的用户定义指令判定同样多的具有适当指令选择代码的平台所特定编译器。
现在参照显示了图1所示多平台编译器生成器102的特殊实例的图2。在所示实施例中,编译器生成器102包括一个连接到一个具有用户定义的指令判定文件201的AD文件204的体系结构描述符语言编译器202(ADLC)。该ADLC 202被配置来分别将包含在AD文件204中的平台所特定ADL代码和包含在文件201中的指令判定编译为依赖于平台的编译器源代码,指令选择器源代码和指令判定源代码。另外,ADLC 202可以产生不是显式写入AD文件204中的指令判定以确保一个正确或有效的指令选择,在这里被称为隐式指令判定。
依赖于平台的编译器源代码,指令选择器源代码和指令判定源代码被依次提供给一个连接到ADLC 202的主编译器203。在所述实施例中,主编译器203是一个本领域公知的C++编译器。然而,任何适于将源代码编译到目标特定编译器目标码的编译器都可以使用。
在编译过程中,连接到ADLC 202的主编译器203将依赖于平台的源代码结合依赖于平台的指令判定源代码和指令选择器源代码编译以形成具有内嵌的指令选择目标码的依赖于平台的编译器目标码。在所述实施例中,依赖于平台的编译器目标码由包括内嵌的指令选择器目标码的代码块206来表示,该指令选择器目标码由包含在连接于主编译器203的编译器单元208中的代码块216来表示。内嵌的指令选择目标码提供选择那些被用户确信为适当的指令的能力给习惯编译器单元208。另外,通过执行一个成本分析,那些减少指令执行成本的指令可以被择优地选择,从而通过减少指令执行的总成本来改善处理器性能。
在一些情况中,独立于平台的编译器目标码可由主编译器203所编译的独立于平台的编译器源代码得到。在其他情况中,诸如所述的实施例,独立于平台的编译器目标码已被提供。在所述实施例中,独立于平台的目标码由一个在一个实施例中被包含在连接于一个独立于平台接口的编译器引擎212中的代码块210来表示。在一个特殊实例中,在所谓运行时间的过程中,接口214作为将在依赖于平台的目标码和指令选择目标码之间信息传送到编译引擎的媒介。
举例来说,当要求一个X86微处理器时,对于该例子,用户提供一个在此已保存了对于X86平台所特定的适当ADL代码的AD文件204和具有适当指令判定的文件201。通过编译器生成器102的引导,X86特定的ADL代码和指令判定都被提供给ADLC 202。然后,ADLC 202将ADL代码编译为X86所特定的编译器源代码和将指令判定编译为相应的平台所特定的指令判定源代码和指令选择器源代码。应注意的是,ADLC 202是一个可以将任何合适结构AD文件转换为相应平台所特定的编译器源代码,和如果要求,转换为依赖于平台的指令判定源代码的通用编译器。以此方式,基本上消除了用户译码,或以任何方式修改ADLC 202或它的任何部分的任何要求。因此,对用户的唯一译码要求是要求提供一个合适结构和验证过的可以包括,如果需要,指令判定的AD文件。
一旦ADLC 202已将X86所特定的ADL代码编译为X86编译器源代码和将指令判定编译为指令选择器源代码,它们被编译为使用主编译器的目标码和分别由块206和216来表示。
在一些例子中,如图3所示,依赖于多平台的编译器源代码文件对于编译器单元300是可用的。编译器单元300是图2所示的编译器单元208的一个实例,因此自然只能被认为是示例性的。在所述实施例中,各种依赖于平台的AD文件被保存在文件栈301中。文件栈301对于编译器单元300可以在本地的,或在一些情况中,可以位于,例如,数据基址,远端服务器等的远端。这种配置特别适于包括在诸如Internet(互联网),局域网(LAN)等类似的计算机网络上传输数据的应用中。多AD文件的使用特别有利,这是因为它提供了如相应AD文件表示的任何平台所特定的编译器所需要的操作能力。举例来说,文件栈301包括一个AD文件302代表,例如,SPARC特定描述符随着它们相应的指令判定的平台,该指令判定被转换为对应的依赖于平台的源代码304和指令选择器306。通过此安排,任何具有其对应的包含在文件栈301中的AD文件的平台可以被选择来定制该编译器单元300。虽然未示出,一个选择器典型地被用于选择被输入到ADLC 202的AD文件。
如上所讨论的,编译器生成器102生成了一个具有指令选择器的特殊编译器,在一个实施例中使用如图4中流程图所详细描述的过程400。该过程400通过提供以ADL代码形式保存在,例如,一个AD文件中的平台所特定的体系结构描述符而在402处开始。在404处,它确定该AD文件是否包括用户所定义的指令判定(显式的)或是否要求隐式的指令判定。当,例如,对于正确的指令执行而言特定的数据基本上在特定的位置时,则将要求隐式的指令判定。这一情况是随着具有一个特定操作数的多次出现的那些指令而发生的,其中每一操作数必须是相同的,否则可能出现一个操作错误。因为错误的风险可能随着不同平台而变化(即,在一个2地址平台上执行一个3地址指令相对于在一个3地址平台上执行一个2地址指令),依赖用户去理解这一事实是危险的。另外,一个指令判定可能要求编译器单元的实现细节的使用,该细节可以对于AD文件的作者是不可用的。因此,隐式指令判定是指令选择过程的一部分,其中那些要求特殊考虑的特殊指令由ADLC提供了适当的指令判定。
当要求显式和/或隐式指令判定时,ADLC在406提供指令选择器源代码。ADLC基本与406同步地,在408处基于AD文件输入提供平台所特定编译器源代码,从而,独立于平台的编译器源代码在410被提供。然后,主编译器通过在412同时编译独立于平台的源代码,依赖于平台的编译器源代码和依赖于平台的指令判定源代码来生成具有指令选择和执行成本分析能力的平台所特定的编译器。
一旦在414已生成了平台所特定的编译器,则平台所特定的编译器在运行期间对于选择那些被编译为所需的平台所特定目标码的成本有效指令而言是可用的。在一个特定实施例中,在运行期间,独立于平台的接口是作为在编译引擎和依赖于平台的编译器源代码和指令判定源代码之间的信息流的媒介。
更近地,Java编程语言,一个面向对象语言,已引入可以编译可以在配置由Java虚拟机(或字节码解释器)的任何计算机系统平台上运行的输出(称为字节码)的能力。Java虚拟机被设计来将字节码解释为可以由实际的硬件处理器执行的指令。字节码利用这种虚拟机,而非一次被解释一个指令,可以在每一特定平台上由,在一些情况中,实时(just-in-time)编译器重编译。
图5显示了一个包括一个Java虚拟机(JVM)500的装置,该虚拟机包含在根据本发明一个实施例的编译器单元208中。在所述配置中,连接到ADLC202的平台所特定的AD文件栈502包括一组AD文件,其中每一个AD文件代表依赖于特定平台的编译器特征。在所述实施例中,AD文件栈502包括分别代表X86和SPARC体系结构的AD文件104和AD文件106。在其中一些不同AD文件包含在AD文件栈502的情形中,选择器单元502(未示出)典型地被用于由相应于所需操作平台的AD文件栈502来选择一个特定AD文件。当选择了一个适当的AD文件时,ADLC 202将包含所余选AD文件中的ADL代码转换为如上所述的依赖于适当平台的编译器源代码。
在Java编程语言和环境中,一个实时(JIT)编译器是将Java字节码变换为可以直接发送给处理器的指令的程序。在已编写了一个Java程序后,Java编译器将Java源程序语句编译为Java字节码,而非编译为包含匹配一个特定硬件平台处理器(例如,一个Intel Pentium微处理器或IBM系统/390处理器)的指令的代码。该Java字节码是可以发送给任何平台和在该平台上运行的独立于平台的代码。
更具体地,当字节码被提供给由编译器单元208所提供的JIT编译器时,包含在字节码504中程序的编译被延迟直至该程序将要运行。当字节码504被提供给一个解释器506时,字节码504被每次一个字节码地读入解释器506中。然后,解释器506在每一字节码被读入解释器506时,执行由每一字节码所定义的操作。也即,解释器506“解释”字节码504,这是本领域技术人员所公知的。通常,解释器506处理字节码504并基本连续地执行与字节码504有关的操作。
当一个程序被编译时,编译器单元208产生由一个指令选择器508所选择的机器指令。然后,编译器单元208由所选择的字节码504来产生机器指令,而所得到的机器语言指令可以直接由目标平台操作系统510来执行。通常,当虚拟机500终止时,机器语言指令被丢弃。
现在参照图6,它显示了根据本发明一个实施例的AD文件600的组织结构。应注意的是,所示组织结构是AD文件104可以采取的许多可能的结构中的一个。在所示实施例中,AD文件600是分层构造的一组不同平台体系结构描述符数据域。举例来说,一个寄存器定义数据域602被ADLC用于描述单个寄存器和具有目标体系结构的各类寄存器。一个编码块数据域604将由目标编译器所使用的编码类指定为输出字节流。一个帧管理块数据域606包括定义帧结构和管理协议的信息。这种信息包括,例如,帧栈增加的方向,由监视器进入操作所消耗的栈片数目,栈的对准要求,为“栈顶”保留的栈片数目,和其他。
一个操作数数据域608提供必须在指令定义之前用于在编译中正确编译的操作数定义,这是因为操作数构成用于指令定义中的用户定义的类型。一个管线(pipeline)规则数据域610被提供用于定义目标体系结构管线的行为。一个指令定义数据域612提供用于目标体系结构的指令格式以及相应的指令判定。一个窥孔(peephole)数据域614提供由ADLC所使用的目标体系结构所特定的优化规则。
AD文件600的分层结构强调在各种AD文件数据域直接的相互关系。图6B以曲线显示了这样一个关系,具体地,是在包含于指令定义数据域612中的各个操作数之间的关系。通过执行一个由使用作为根域的指令定义数据域612进行的后向遍历(back traversal),对于各个操作数而言要求输入到AD输入数据域中的相关性可以被确定。例如,通过执行一个起始于作为根部的指令定义数据域612并沿各个分支延伸的正向遍历,管线规则数据域610和操作数定义数据域608被遭遇。执行一个起始于管线规则数据域612的正向遍历是遭遇寄存器定义数据域602,同时,当执行一个起始于操作数定义数据域608的正向遍历时,将遭遇寄存器定义数据域602和编码类数据域608。以此方式,为完全定义一个特定指令定义的各个操作数被提供。
图7示出了一个根据本发明,由依赖于平台的编译器使用的示例性接口700。该接口700作为在编译器引擎212(或独立于平台的目标码)与在块206中的依赖于平台的目标码之间的媒介。在所示实施例中,ADLC输出包括用于确定性有限自动机(DFA)702的代码,它指定了由理想操作数到机器指令的映射。该ADLC输出还包括定义了一组用于,例如,定义合法注册表征码,编码方法,分支偏移行为等的指令类704的目标码。窥孔规则oracle760的,用于指定合法的机器所特定树以优化的目标码和对于那些树的正确替换也由ADLC输出。以此方式,平台所特定的体系结构的特征被自动配置于一个适合于编译引擎212的格式中以在将源代码编译为依赖于平台的目标码的过程中使用。
接口700的独立于目标的部分被连接到一个匹配器(mathcer)708,该匹配器产生一个将被DFA702处理的输入树,该DFA执行颠倒重写规则系统(BURS)式样树模式匹配以选择用于在中间表示中的理想操作数的机器指令。
接口700还包括用作执行树模式匹配以发现最佳候选者和用最佳的机器指令树来替换所匹配的机器指令树的目标码配置。一个匹配器708使用匹配器DFA来执行指令选择和生成机器特定的中间表示。在注册分配器712选择一个合法的注册赋值给在机器特定表示中的操作数的同时,一个调度程序710排列机器所特定的中间表示。这包括将数值重新分配给正确位置(诸如,将变元移动到它们由调用约定所指定的正确位置)所需的任何指令的插入。一个窥孔优化器714模式匹配在机器所特定表示中的小树并用更优化的机器特定树来替换它们。一个目标码输出716使用虚拟调用来对诸如在缓存中的机器目标码的机器所特定表示进行编码,并使缓存对于虚拟机可用。
图8是一个在根据本发明一个实施例的编译机212的运行期中执行的指令编译过程的示例性显示。在运行期间,编译机212,当要求时,产生一个对于来自依赖于平台的编译器目标码的特定信息和,如果需要,指令选择器目标码的信息请求(参考,在一个特殊实施例中,是发射功能调用)。举例来说,当编译机212要求平台所特定信息以使用内嵌指令选择器来选择一个指令,该编译机212执行一个对信息请求器802的功能调用。该信息请求器802依次连接到将该功能调用直接引入连接到具有所要求指令判定的DFA的信息提取器804的接口。在所述实施例中,DFA然后基于相应的指令判定选择指令。该信息提取器804,依次,通过提取所要求信息来响应该功能调用。应注意的是,所提取的信息以一种容易被编译机212使用的方式来构造。
图9表示根据本发明一个实施例的,一个具有一个操作数多次重现的指令的独立于机器的示例性曲线900。该独立于机器的曲线900与那些具有相同语义的依赖机器指令相映射。例如,曲线900的节点902表示在最基本层次上的可以映射到任何数目的具有与减法相应的相同语义的依赖机器减法操作(subA,subB,subC)的减法操作。然而,如上所述,不是所有可能的映射都是所希望的,这是因为一些映射实际上可能导致错误。这可能,例如,产生在那些其中目标平台为2址处理器(诸如X86),和减法操作的结果被要求保存在一个与输入不同的位置(正如在SPARC体系结构中3址指令所做的)的情况中。典型的,一个颠倒匹配过程用于将表示机器指令的二元树击穿为目标平台可以理解和执行的语义。在该例子中,该树的每一节点被映射到由指令判定使用ADLC所产生的指令选择代码来选择的依赖平台的指令。
根指令节点902指示该指令900为一个具有作为节点904和906输入结果的整数减法操作。该减法操作的结果在908处被保存在一个寄存器中。在此例中,指令选择器选择成本最有效的指令或所有匹配将要执行的指令的指令输出序列。
图10是一个详细描述根据本发明一个实施例的指令选择过程1000的流程图。过程1000通过在1002查找一个在独立于机器的指令表示二元树中的节点来开始。在1004处,相应于所定位的节点的指令选择代码被获取和执行。然后,在1006检查可能匹配所定位节点的下一个潜在用户所定义的指令。该匹配是基于在节点的独立于机器的表示和该节点的目标平台表示之间的语义的匹配比较的。在1008,判定用户定义指令的输入位置是否匹配所定位的节点的输入位置。如果确定它们是匹配的,则在1010处判定该指定判定是否满足。如果该指令不匹配或该指令判定不满足,则控制返回1006,在此选择匹配该节点的下一个用户定义指令。
回到1010,如果指令判定满足,则在1012对用户所定义的指令进行执行成本的估计。在1014处判定该估计成本是否小于前一估计成本。如果成本估计为小,则在1016处刷新成本估计变量并在1018处刷新该最佳指令,其后在1020处判定是否具有更多的用户定义的匹配指令。如果没有匹配指令,则过程停止,然而,如果这有更多的匹配指令,则控制返回1006。
回到1014,如果判定成本估计不小于前一成本估计,则如果这有另外的匹配指令,则控制返回1006,否则过程停止。
图11显示了一个用于实现本发明的计算机系统1100。该计算机系统1100或,更具体的,CPU 1102可以被配置用以支持虚拟机,这是本领域技术人员所公知的。如本领域所公知的,ROM用作将数据和指令单向地传输到CPU 1102,同时RAM典型地用作以双向方式传输数据。CPU 1102通常可以包括任何数目的处理器。主存储设备1104,1106都可以包括任何合适的计算机可读媒介。次存储设备媒介1108,它通常为一个海量存储器,也双向连接到CPU 1102和提供附加的数据存储能力。该海量存储器1108是一个可用于保存包括计算机代码,数据等的计算机可读媒介。典型地,海量存储设备1108是一个诸如硬盘或磁带的通常比主存储设备慢的存储媒介。海量存储设备1108可以采取磁的或读纸带机或其他公知的形式。我们希望保存在海量存储设备1108中的信息可以,在适当例子中,被作为RAM 1106的一部分的虚拟存储器包含在标准式样中。一个诸如CD-ROM的特定主存储设备1104还可以将数据单向传到CPU 1102。
CPU 1102还连接到一个或多个输入/输出设备1110,该设备可以包括,但不限于,诸如视频监视器,轨迹球,滑鼠,键盘,麦克风,触摸式显示器,传感器读卡器,磁或纸带读带机,写字板,输入笔,声音或手写识别器,或其他公知的输入设备,诸如当然包括其他计算机。最后,CPU 1102,可选地,可以使用一个通常如1112所示的网络连接连接到一个计算机或通信网络上,例如一个互联(Internet)网络或一个企业内部(intranet)网络。通过这种网络连接,我们可以预期CPU 1102在执行上述方法步骤过程中可以由该网络接收信息,或将信息输出到该网络。这种信息,经常被表示为一序列将使用CPU来执行的指令,可以,例如以嵌入到载波中的计算机数据信号的形式由网络提取或输出到网络。上述设备和材料对于在计算机硬件和软件领域的技术人员而言是熟知的。
虽然只公开了本发明很少的几个实施例,但应理解,本发明可以许多其他形式来实现而不背离本发明的范围。举例来说,多平台编译器可以用于任何计算系统。
虽然根据本发明的,将编译器由一个操作系统移植到另一个,不同操作系统的方法特别适合于对应于基于JavaTM的环境来实现,但这些方法通常可以适用于任何合适的基于对象的环境。特殊的是,这些方法适合于在独立于平台的基于对象的环境中使用。应理解的是,该方法还可以在一些分布式面向对象的系统中实现。
在使用一个分布式基于对象的计算机系统来描述本发明的同时,应理解的是,本发明一般可以在具有编译器的任何合适的计算系统中实现。因此,前面的描述应被人为是示例性的和非限制性的,而本发明不限于这里所给出的细节,可以在权利要求的范围内修改而具有完全等效的范围。

Claims (15)

1.一种用于产生具有内嵌指令选择器的平台所特定的编译器的装置,包括:
用于提供一组用户定义的依赖于平台的编译器体系结构描述符的第一装置,所述体系结构描述符用于描述一个依赖于特殊硬件平台的编译器体系结构特征;
用于提供一组指令判定的第二装置,所述指令判定用于识别由指令选择器所选的平台所特定指令;
用于提供一个体系结构描述符编译器的第三装置,所述编译器用于将用户定义的依赖于平台的编译器体系结构描述符转换为依赖于平台的源代码和用于将该组指令判定转换为平台所特定指令选择器源代码;
用于提供一个主编译器的第四装置,所述主编译器用于将依赖于平台的编译器源代码编译为依赖于平台的编译器目标码和用于将平台所特定指令选择器源代码编译为内嵌的指令选择器目标码;
用于提供独立于平台的编译器目标码的第五装置;和
一个在平台所特定编译器运作期间用作在由第四装置所提供的依赖于平台的编译器目标码和由第五装置所提供的独立于平台的编译器目标码之间信息流的媒介的接口,其中在由第四装置所提供的平台所特定的编译器的运作期间,内嵌指令选择器选择由第二装置所提供的将要被编译的指令,所述选择是根据所选指令的执行成本来进行的,而其中内嵌的指令选择器提供隐式指令判定来由第四装置所提供的平台所特定编译器使用以编译所选择的指令。
2.权利要求1的装置,还包括一个第六装置,该第六装置用于提供平台所特定的目标码,该平台所特定的目标码包括由第五装置所提供的独立于平台的编译器目标码和由第四装置所提供的依赖于平台的编译器目标码,其中该平台所特定的目标码适合于在特定硬件平台上执行。
3.权利要求1的装置,其中,在平台所特定编译器运行期间,由第五装置所提供的独立于平台的编译器目标码通过提供一个信息请求给接口来请求一个依赖于特定平台的目标码信息,该接口将该信息请求直接引入依赖于预定平台的编译器目标码信息提取器。
4.权利要求3的装置,其中,依赖于预定平台的编译器目标码信息提取器通过提取满足该信息请求的依赖于特定平台的编译器目标码来响应该信息请求。
5.权利要求4的装置,其中,所提取的信息被提供给该接口,该接口依次将该信息引入由第五装置提供的独立于平台的编译器目标码。
6.权利要求1的装置,其中,所述装置包括一个用于提供多组用户定义的依赖于平台的体系结构描述符的第七装置,其中,每组描述符相应于不同的硬件平台。
7.一种用于生成具有内嵌指令选择器的平台所特定的编译器的方法,包括:
提供一组用户定义的依赖于平台的编译器的体系结构描述符,它用于描述一个依赖特殊硬件平台的编译器的体系结构特征;
提供一组用于由内嵌指令选择器使用来选择那些将在运行期间被平台所特定的编译器编译的指令的用户定义的指令判定;
由一个体系结构描述符编译器来将该组用户定义的依赖平台的编译器体系结构描述符转换为依赖于平台的编译器源代码;
由一个体系结构描述符编译器将该组用户定义的指令判定转换为平台所特定的指令选择器源代码;
由一个连接到体系结构描述符编译器的主编译器将依赖于平台的编译器源代码编译为依赖于平台的编译器目标码;
由一个连接到体系结构描述符编译器的主编译器将指令选择器源代码编译为指令选择器目标码;
提供一个独立于平台的编译器目标码,其中,独立于平台的编译器目标码和依赖于平台的编译器目标码适合于在特定硬件平台上执行;
由依赖于平台的编译器目标码、指令选择器目标码和独立于平台的编译器目标码来形成内嵌的指令选择器。
8.权利要求7的方法,还包括:
在平台所特定的编译器运行期间,由独立于平台的目标码和独立于平台的编译器目标码请求一个依赖于特定平台的目标码信息;
提供一个信息请求给一个接口;
由该接口将该信息请求直接引入依赖于预定平台的编译器目标码信息提取器。
9.权利要求8的方法,还包括:
为响应该信息请求,依赖于预定平台的编译器目标码信息提取器提取满足该信息请求的依赖于特定平台的编译器目标码。
10.权利要求9的方法,还包括:
由该接口将所提取的信息引入给该独立于平台的编译器目标码。
11.一个具有内嵌指令选择器的平台所特定的编译器,包括:
一个存储器;
一个处理器,其可操作地与该存储器相连接,其中所述处理器被安排来在指令上运行,所述指令包括下列代码的:
一个依赖于平台的编译器目标码;
一个独立于平台的编译器目标码,其中独立于平台的编译器目标码和依赖于平台的编译器目标码适合于在一个特殊硬件平台上执行;
一个嵌入依赖于平台的编译器目标码中的依赖于平台的指令选择器目标码;
一个部分嵌入独立于平台的编译器目标码和部分嵌入依赖于平台的编译器目标码中的接口,其中,在平台所特定的编译器运行期间,接口作为在独立于平台的编译器目标码和依赖于平台的编译器目标码之间信息流的媒介。
12.权利要求11的编译器,其中,在平台所特定的编译器运行期间,独立于平台的编译器目标码通过提供一个信息请求给接口来请求一个依赖于特定平台的目标码信息,该接口将该信息请求直接引入依赖于预定平台的编译器目标码信息提取器。
13.权利要求12的编译器,其中,依赖于预定平台的编译器目标码信息提取器通过提取满足该信息请求的依赖于特定平台的编译器目标码来响应该信息请求。
14.权利要求13的编译器,其中,所提取的信息被提供给该接口,该接口依次将该信息引入该独立于平台的编译器目标码。
15.权利要求11的编译器,其中,所述处理器被用于进一步在包括下列代码的指令上运行:
包括多组用户定义的依赖于平台的体系结构描述符,其中,每组描述符相应于不同的硬件平台。
CNB001070223A 1999-04-23 2000-04-24 用于产生平台所特定的编译器的装置和方法 Expired - Lifetime CN1146788C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/298251 1999-04-23
US09/298,251 US6286134B1 (en) 1999-04-23 1999-04-23 Instruction selection in a multi-platform environment

Publications (2)

Publication Number Publication Date
CN1271891A CN1271891A (zh) 2000-11-01
CN1146788C true CN1146788C (zh) 2004-04-21

Family

ID=23149706

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB001070223A Expired - Lifetime CN1146788C (zh) 1999-04-23 2000-04-24 用于产生平台所特定的编译器的装置和方法

Country Status (6)

Country Link
US (1) US6286134B1 (zh)
EP (1) EP1049010A3 (zh)
JP (1) JP2000347873A (zh)
CN (1) CN1146788C (zh)
AU (1) AU773319B2 (zh)
CA (1) CA2306542A1 (zh)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6526570B1 (en) * 1999-04-23 2003-02-25 Sun Microsystems, Inc. File portability techniques
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US7010784B1 (en) * 1999-09-03 2006-03-07 Cadence Design Systems, Inc. Method and system for split-compiling a hybrid language program
DE50115584D1 (de) 2000-06-13 2010-09-16 Krass Maren Pipeline ct-protokolle und -kommunikation
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
EP1211598A1 (en) * 2000-11-29 2002-06-05 Texas Instruments Incorporated Data processing apparatus, system and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
AU2002347560A1 (en) 2001-06-20 2003-01-02 Pact Xpp Technologies Ag Data processing method
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20030108012A1 (en) * 2001-12-12 2003-06-12 Quicksilver Technology, Inc. Method and system for detecting and identifying scrambling codes
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US6922827B2 (en) * 2002-02-22 2005-07-26 Bea Systems, Inc. Iterative software development environment with prioritized build rules
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20030182273A1 (en) * 2002-03-22 2003-09-25 Goldberg Robert N. Method and apparatus for generating a query object
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
EP1537486A1 (de) 2002-09-06 2005-06-08 PACT XPP Technologies AG Rekonfigurierbare sequenzerstruktur
US20040068716A1 (en) * 2002-10-04 2004-04-08 Quicksilver Technology, Inc. Retargetable compiler for multiple and different hardware platforms
US8276135B2 (en) * 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7600096B2 (en) * 2002-11-19 2009-10-06 Stmicroelectronics, Inc. Coprocessor extension architecture built using a novel split-instruction transaction model
US7707563B2 (en) * 2003-01-10 2010-04-27 Nexaweb Technologies Inc System and method for network-based computing
US7197743B2 (en) * 2003-03-04 2007-03-27 Hitachi, Ltd. Method for generating computer software for embedded systems
JP2006523887A (ja) * 2003-04-16 2006-10-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンパイル可能なコンピュータプログラムの処理
GB0315165D0 (en) * 2003-05-02 2003-08-06 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
GB2401217B (en) 2003-05-02 2005-11-09 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7305666B2 (en) 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7788652B2 (en) 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
EP1676208A2 (en) 2003-08-28 2006-07-05 PACT XPP Technologies AG Data processing device and method
US8595688B1 (en) 2003-09-08 2013-11-26 Synopsys, Inc. Generation of instruction set from architecture description
DE10344847A1 (de) * 2003-09-26 2005-04-14 Philips Intellectual Property & Standards Gmbh Verfahren zum Compilieren eines Quellcode-Programms in ein maschinenlesbares Zielobjekt-Programm in einer Netzwerkumgebung
US7457936B2 (en) * 2003-11-19 2008-11-25 Intel Corporation Memory access instruction vectorization
US7665070B2 (en) * 2004-04-23 2010-02-16 International Business Machines Corporation Method and apparatus for a computing system using meta program representation
US7610577B1 (en) * 2004-05-29 2009-10-27 Sun Microsystems, Inc. Method for developing platform independent launchable applications
US7356808B2 (en) * 2004-09-23 2008-04-08 International Business Machines Corporation Method, system and program product for porting code utilizing a portable execution environment
US7530059B2 (en) * 2005-02-18 2009-05-05 International Business Machines Corporation Method for inlining native functions into compiled java code
US9075596B2 (en) 2005-06-24 2015-07-07 Oracle International Corporation Deployment
US9063725B2 (en) 2005-06-24 2015-06-23 Oracle International Corporation Portable management
US9542175B2 (en) 2005-06-24 2017-01-10 Oracle International Corporation Continuous deployment
US20070169010A1 (en) * 2005-10-31 2007-07-19 Dhi Technologies, Inc. Multiplatform programming environment
US20070250828A1 (en) * 2005-11-16 2007-10-25 Tseitlin Ariel D Portable libraries
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US20070234285A1 (en) * 2006-02-28 2007-10-04 Mendoza Alfredo V Determining the portability of an application program from a source platform to a target platform
US8751946B2 (en) * 2006-04-05 2014-06-10 International Business Machines Corporation Enhanced display of properties for a program object
US7716653B2 (en) * 2006-04-06 2010-05-11 International Business Machines Corporation Configurable importers and resource writers for converting data into another format
US8812556B2 (en) * 2006-04-06 2014-08-19 International Business Machines Corporation Storing modification data for recreating modifications
US7693257B2 (en) * 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization
US8301870B2 (en) * 2006-07-27 2012-10-30 International Business Machines Corporation Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US8359585B1 (en) * 2007-01-18 2013-01-22 Advanced Testing Technologies, Inc. Instrumentation ATS/TPS mitigation utilizing I/O data stream
US20080182021A1 (en) * 2007-01-31 2008-07-31 Simka Harsono S Continuous ultra-thin copper film formed using a low thermal budget
US8389203B2 (en) 2007-05-08 2013-03-05 Esko-Graphics Imaging Gmbh Exposing printing plates using light emitting diodes
US20120185820A1 (en) * 2011-01-19 2012-07-19 Suresh Kadiyala Tool generator
PL3627764T3 (pl) * 2012-03-30 2022-01-03 Intel Corporation Sposób i urządzenie do przetwarzania bezpiecznego algorytmu haszującego sha-2
US20150156057A1 (en) * 2013-12-02 2015-06-04 John C. Leung Executable-Based Platform Selection
US9836441B2 (en) * 2014-09-04 2017-12-05 Home Box Office, Inc. Platform abstraction of graphics
US10579354B2 (en) * 2015-03-10 2020-03-03 Kordata, Llc Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms
WO2017035748A1 (zh) * 2015-08-31 2017-03-09 华为技术有限公司 一种代码编译方法及代码编译器
US11640284B2 (en) 2015-11-30 2023-05-02 Oracle International Corporation Multi-platform compiling
US20170168792A1 (en) * 2015-12-15 2017-06-15 Futurewei Technologies, Inc. Space and time aware organization and isolation of components in real time systems
CN105867992A (zh) * 2016-03-28 2016-08-17 乐视控股(北京)有限公司 代码编译方法和装置
US10289394B2 (en) 2016-10-11 2019-05-14 Oracle International Corporation Selective generation of multiple versions of machine code for source code functions for execution on different processor versions and/or architectures
CN111124423B (zh) * 2019-12-25 2023-06-13 上海米哈游天命科技有限公司 一种基于多平台的编译检测方法、装置、服务器及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1248238A (en) * 1985-10-17 1989-01-03 Francis D. Lawlor Compiler including retargetable data generation
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5812854A (en) * 1996-03-18 1998-09-22 International Business Machines Corporation Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US5835773A (en) * 1996-04-17 1998-11-10 Hewlett-Packard, Co. Method for achieving native performance across a set of incompatible architectures using a single binary file
US6021275A (en) * 1996-08-05 2000-02-01 General Magic, Inc. Object code structure and method for translation of architecture independent program implementations
US5920721A (en) * 1997-06-11 1999-07-06 Digital Equipment Corporation Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments

Also Published As

Publication number Publication date
CA2306542A1 (en) 2000-10-23
CN1271891A (zh) 2000-11-01
EP1049010A3 (en) 2004-01-02
EP1049010A2 (en) 2000-11-02
AU773319B2 (en) 2004-05-20
JP2000347873A (ja) 2000-12-15
US6286134B1 (en) 2001-09-04
AU2892100A (en) 2000-10-26

Similar Documents

Publication Publication Date Title
CN1146788C (zh) 用于产生平台所特定的编译器的装置和方法
US6526570B1 (en) File portability techniques
CN1149478C (zh) 从本地码有效调用Java方法的方法和设备
US6609248B1 (en) Cross module representation of heterogeneous programs
CN1949186A (zh) 一种程序调测系统及用于程序调测系统的映射方法
CN1305609A (zh) 实现参数化类型与现有非参数化库兼容的方法
EP0943990A2 (en) Method and system of providing dynamic optimization information in a code interpretive runtime environment
EP1174791A2 (en) Unified data type system and method
CN1823323A (zh) 用于执行本机绑定的方法和装置
CN1577268A (zh) 共享库系统及构建该系统的方法
CN103984582A (zh) 一种热更新方法和装置
CN102165428A (zh) 软件应用性能增强
US7512938B2 (en) Typed intermediate representation for object-oriented languages
CN1238500A (zh) 用于进行静态初始化的方法和系统
US6895580B2 (en) Expression reduction during compilation through routine cloning
US9348567B2 (en) Profile guided optimization in the presence of stale profile data
CN109196476A (zh) 共享垃圾收集器的不同类型图之间的无缝高性能互操作性
US20070050380A1 (en) Nullable and late binding
Suhan et al. LazyTensor: combining eager execution with domain-specific compilers
CN102385511A (zh) 跨动态边界的运行时分析的可视化
Campbell et al. Introduction to compiler construction in a Java world
US20170083298A1 (en) Resilient format for distribution of ahead-of-time compiled code components
EP1046985A2 (en) File portability techniques
US20020199169A1 (en) Representation of Java data types in virtual machines
CN101336413A (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
CX01 Expiry of patent term

Granted publication date: 20040421

CX01 Expiry of patent term