CN1425982A - 程序变换装置、方法及进行程序变换处理的计算机程序 - Google Patents

程序变换装置、方法及进行程序变换处理的计算机程序 Download PDF

Info

Publication number
CN1425982A
CN1425982A CN02156039A CN02156039A CN1425982A CN 1425982 A CN1425982 A CN 1425982A CN 02156039 A CN02156039 A CN 02156039A CN 02156039 A CN02156039 A CN 02156039A CN 1425982 A CN1425982 A CN 1425982A
Authority
CN
China
Prior art keywords
branch
mentioned
order
command group
machine language
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
Application number
CN02156039A
Other languages
English (en)
Other versions
CN1194295C (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.)
Socionext Inc
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 CN1425982A publication Critical patent/CN1425982A/zh
Application granted granted Critical
Publication of CN1194295C publication Critical patent/CN1194295C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • G06F9/44542Retargetable

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

翻译部110生成表示是否选择命令组未确定的未确定分支信息来代替分支命令,连接部130判断分支源及分支目的的命令组的异同后生成适当的直接寻址分支命令。另外,确定一个基准命令组,翻译部110对不属于基准命令组的分支目的命令选择该分支目的命令本来的命令组并追加分支为该分支目的命令的基准命令组的模式匹配命令,将该模式匹配命令表示为对应于原来分支目的命令的代替分支目的,选择基准命令组,生成向该对应代替分支目的分支的间接寻址分支命令。

Description

程序变换装置、方法及进行程序变换处理的计算机程序
技术领域
本发明涉及一种程序变换装置及程序变换方法,尤其是涉及选择地使用多个命令组(set)来生成程序的技术。
背景技术
以前,通过执行特定的分支命令来动态选择多个命令组中的一个,根据该被选择的命令来实用化翻译执行机器语言命令的处理器。
作为这种处理器的一个实例,有动态选择由可集合在字节边界的机器语言命令构成的HD命令组或由仅可集合在字边界的机器语言命令构成的HS命令组之一,根据该被选择的命令组来动作的处理器。
由于集中边界不同,HS命令所占代码尺寸比等价的HD命令所占代码尺寸大,相反,与HD命令相比,HS命令被高速执行。
活用二者的特征,由HS命令生成代码尺寸占程序整体比例小而以高频度执行的部分,由HD命令生成其它部分,由上述处理器执行,可在抑制程序尺寸增加的同时,缩短执行时间。
图15(A)及(B)是为此记述的源程序的一实例,表示用C语言记述的实例。这些程序中记述的附注(pragma)指令#pragma_func_mode_XX(XX为HD或HS之一)在现有的程序编译器中指令将后面记述的源程序编译为属于由XX表示的命令组的机器语言命令列。这里,该附注指令被记述在各函数的开头。根据该附注指令,将函数f编译为HD命令列,将函数g编译为HS命令列。
下面,将选择HD命令组或HS命令组状态的处理器分别称为处于HD模式或HS模式的动作模式。另外,将编译为HD命令列或HS命令列的函数分别称为HD函数或HS函数,将上述特定分支命令称为模式切换分支命令。
图16是分支命令的一实例,命令栏351表示表示分支命令的助记符号,运算数栏352表示该分支命令取得的运算数,功能栏353表示该分支命令的功能。这些命令包含在HD命令组及HS命令组之一中。
如功能栏353所示,在执行brc、jmpc、callc及ret命令的情况下,切换处理器的动作模式(即选择的命令组)。另外,在执行br、jmp及call命令的情况下,维持动作模式。
图17(A)及(B)是现有的程序编译器分别对图15(A)及(B)的源程序生成的汇编程序。众所周知,现有的程序编译器除由该汇编程序表示的机器语言命令列外,生成关于外部可参照标识符的符号信息(未图示)。
若对图17(A)的汇编程序进行补充,则现有的程序编译器基于各个源程序中记述的编译指令,就图15(A)的函数f中记述的函数调用处理g();、及func=&g;(*func)();来判断调用源函数f的命令组与调用目的函数g的命令组的异同。之后,判断两者不同,将g();翻译为直接由寻址模式分支的模式切换子程序调用命令callc_0g,将func=&g;(*func)();翻译为间接由寻址模式分支的模式切换子程序调用命令callc R0。
这里,若判断调用源函数的命令组与调用目的函数的命令组一致,则将这些函数调用处理翻译成维持动作模式的子程序调用命令call。
现有的连接编辑程序(或简称为连接程序)连接图17(A)及(B)所示的目标程序,并生成上述处理器可执行的可执行程序(未图示)。
因此,以前通过程序编译器来判断是否需要用子程序调用命令来切换动作模式,该程序编译器根据该判断结果来选择生成call命令及callc命令之一。
但是,根据上述现有技术的程序编译器及连接程序,若不能同时确定调用源函数的命令组及调用目的函数的命令组,则因为不能判断应生成call命令或callc命令中的哪一个,所以不能编译函数调用处理。
另外,在变更命令组后再编译调用目的函数的情况下,将已对该函数调用处理生成的call命令变更为callc命令,或者,因为必需反向变更,所以必需再编译包含该调用处理的源程序。
存在所谓这些都损害软件的开发效率的第一问题。
另外,因为可能每次执行不同的间接寻址的分支目的,所以即使由call命令或callc命令之一生成间接寻址的子程序调用命令,也存在所谓担心实质上不能正确动作的第二问题。
通常不仅对上述函数调用处理,而且还对外部可参照的标识符产生这些问题。
发明内容
本发明是为了解决上述问题而作出的,其第一目的是提供一种程序变换装置,由程序编译器及连接程序构成,其中,在不能确定分支目的的命令组的时刻,可编译包含该分支目的的源程序,并且,在变更分支目的的命令组的情况下,不必再编译包含该分支目的的源程序。
另外,第二目的在于提供一种程序变换装置,生成包含间接寻址的分支命令并正确动作的可执行程序。
(1)本发明的程序变换装置通过执行模式切换分支命令来动态选择多个命令组中的一个,将根据该被选择命令组翻译执行机器语言命令的处理器作为对象,将包含外部入口记述的第一源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第一机器语言命令列,将包含对该外部入口记述的第二源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第二机器语言命令列,将至少包含该第一机器语言命令列及第二机器语言命令列的多个机器语言命令列与可执行程序相结合,其中,具备:第一命令组信息生成单元,在翻译上述第一源程序时,生成表示执行对上述外部入口记述处理用的机器语言命令所属第一命令组的第一命令组信息;未确定分支信息生成单元,在翻译上述第二源程序时,生成表示用于执行上述分支处理的对象分支命令的配置部位及该对象分支命令的分支目的机器语言命令所属命令组未确定的未确定分支信息;和对象分支命令生成单元,在上述结合时,在表示上述未确定分支信息的配置部位,使用选择表示为上述第一命令组信息的第一命令组的模式切换分支命令来生成上述对象分支命令。
根据该结构,上述程序变换装置在翻译时,代替生成确定选择的命令组的对象分支命令,生成上述未确定分支信息,所以即使分支目的的命令组未确定,也可翻译记述该分支目的的分支处理的源程序。
另外,在连接时,根据上述第一命令组信息和上述未确定分支信息,生成选择适当命令组的对象分支命令。因此,再编译分支目的的源程序,变更上述第一命令组信息后再连接的情况下,因为不必变更上述未确定分支信息,所以不必再编译记述分支处理的源程序。
(2)上述(1)的程序变换装置还具备第二命令组信息生成单元,在翻译上述第二源程序时,生成表示上述对象分支命令所属第二命令组的第二命令组信息,上述对象分支命令生成单元在表示为上述第一命令组信息的第一命令组和表示为上述第二命令组信息的第二命令组不同的情况下,使用上述模式切换分支命令生成上述对象分支命令,在其它情况下,使用维持被选择命令组的通常分支命令来生成上述对象分支命令。
根据该结合,具有与上述(1)一样的效果。
(3)上述(1)的程序变换装置将上述多个命令组中的一个确定为基准命令组来动作,还具备模式匹配命令追加单元,在翻译上述第一源程序时,向上述外部入口分支,并将作为属于选择上述第一命令组的该基准命令组的模式切换分支命令的模式匹配命令追加到上述第一机器语言命令列中,上述未确定分支信息生成单元具备分支信息生成部,在由直接寻址模式生成上述对象分支命令的情况下,生成上述未确定分支信息;和间接对象分支命令生成部,在由间接寻址模式生成上述对象分支命令的情况下,向上述追加的模式匹配命令间接分支,并使用选择上述基准命令组的模式切换分支命令,生成上述对象分支命令。
根据该结构,因为对间接寻址模式向上述外部入口的分支命令提供配置属于基准命令组的模式匹配命令的代替分支目的,所以除上述(1)的效果外,间接寻址模式的分支命令也可正确选择命令组来分支。
(4)在上述(3)的程序变换装置中,上述模式匹配命令追加单元在上述第一命令组不是上述基准命令组的情况下,追加上述模式匹配命令,上述间接对象分支命令生成部在由间接寻址模式生成上述对象分支命令的情况下,且在未追加上述模式匹配命令的情况下,向上述外部入口间接分支,并使用选择上述基准命令组的模式切换分支命令来生成上述对象分支命令。
根据该结构,具有与上述(3)一样的效果,并且,若原来的分支目的是基准命令组,则不生成上述模式匹配命令,抑制上述模式匹配命令引起的代码尺寸的增加。
(5)上述(3)的程序变换装置还具备不在间接分支判断单元,在执行上述可执行程序时,不发生对上述被追加模式匹配命令的间接分支;和模式匹配命令删除单元,在判断为不发生上述间接分支的情况下,删除上述追加的模式匹配命令。
根据该结构,具有与上述(4)一样的效果,并且还抑制上述模式匹配命令引起的代码尺寸的增加。
(6)在上述(5)的程序变换装置中,上述不在间接分支判断单元在结合在上述可执行程序上的全部机器语言命令列中不包含间接分支命令的情况下,判断不发生上述间接分支。
(7)在上述(5)的程序变换装置中,上述不在间接分支判断单元在结合在上述可执行程序上的全部机器语言命令列中不包含参照上述追加模式匹配命令的命令的情况下,判断为不发生上述分支。
根据这些结构,具有与上述(5)一样的效果。
(8)在上述(1)的程序变换装置中,上述分支处理是函数调用处理,上述未确定分支信息生成单元还根据在调用源函数的最后处理该函数调用处理或在此外的部位进行处理,分别生成表示用未记录返回地址的分支命令来生成上述对象分支命令或用记录返回地址的分支命令来生成的分支命令种类信息,上述对象分支命令生成单元使用表示为该分支命令种类信息的分支命令来生成上述对象分支命令。
根据该结构,具有与(1)一样的效果,并且还生成缩短对应于在函数末尾记述的其它函数调用的返回处理执行时间的可执行程序。
(9)上述(1)的程序变换装置还具备分类单元,通过用命令组来分类包含在与上述可执行程序结合的机器语言命令例中的各机器语言命令,连续配置属于同一命令组的机器语言命令。
根据该结构,在发挥与上述(1)一样的效果的同时,即使在机器语言命令的集合边界由于命令组而不同的情况下,也可通过集合边界的不同将不能配置可执行程序中产生的机器语言命令的区域抑制到最小限度。
(10)上述(1)的程序变换装置还具备命令组决定单元,根据上述第一源程序中记述的附注指令及表示为翻译上述第一源程序时的程序编译器功能的至少一方来决定用于执行上述第一源程序的各机器语言命令所属的命令组,上述第一命令组信息生成单元基于该决定,生成上述第一命令组信息。
根据该结构,具有与上述(1)一样的效果。
(11)本发明的程序变换方法通过执行模式切换分支命令来动态选择多个命令组中的一个,将根据该被选择命令组翻译执行机器语言命令的处理器作为对象,将包含外部入口记述的第一源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第一机器语言命令列,将包含对该外部入口记述的第二源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第二机器语言命令列,将至少包含该第一机器语言命令列及第二机器语言命令列的多个机器语言命令列与可执行程序相结合,其中,包含:第一命令组信息生成步骤,在翻译上述第一源程序时,生成表示执行对上述外部入口记述处理用的机器语言命令所属第一命令组的第一命令组信息;未确定分支信息生成步骤,在翻译上述第二源程序时,生成表示用于执行上述分支处理的对象分支命令的配置部位及该对象分支命令的分支目的机器语言命令所属命令组未确定的未确定分支信息;和对象分支命令生成步骤,在上述结合时,在表示上述未确定分支信息的配置部位,使用选择表示为上述第一命令组信息的第一命令组的模式切换分支命令来生成上述对象分支命令。
根据该结构,提供一种具有与上述(1)一样效果的程序变换方法。
(12)上述(11)的程序变换方法将上述多个命令组中的一个确定为基准命令组来执行,还具备模式匹配命令追加步骤,在翻译上述第一源程序时,向上述外部入口分支,并将作为属于选择上述第一命令组的该基准命令组的模式切换分支命令的模式匹配命令追加到上述第一机器语言命令列中,上述未确定分支信息生成步骤具备分支信息生成子步骤,在由直接寻址模式生成上述对象分支命令的情况下,生成上述未确定分支信息;和间接对象分支命令生成子步骤,在由间接寻址模式生成上述对象分支命令的情况下,向上述追加的模式匹配命令间接分支,并使用选择上述基准命令组的模式切换分支命令,生成上述对象分支命令。
根据该结构,提供一种具有与上述(3)一样效果的程序变换方法。
(13)本发明的计算机程序使用计算机执行如下程序变换处理:通过执行模式切换分支命令来动态选择多个命令组中的一个,将根据该被选择命令组翻译执行机器语言命令的处理器作为对象,将包含外部入口记述的第一源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第一机器语言命令列,将包含对该外部入口记述的第二源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第二机器语言命令列,将至少包含该第一机器语言命令列及第二机器语言命令列的多个机器语言命令列与可执行程序相结合,其中,包含:第一命令组信息生成步骤,在翻译上述第一源程序时,生成表示执行对上述外部入口记述处理用的机器语言命令所属第一命令组的第一命令组信息;未确定分支信息生成步骤,在翻译上述第二源程序时,生成表示用于执行上述分支处理的对象分支命令的配置部位及该对象分支命令的分支目的机器语言命令所属命令组未确定的未确定分支信息;和分支命令生成步骤,在上述结合时,在表示上述未确定分支信息的配置部位,使用选择表示为上述第一命令组信息的第一命令组的模式切换分支命令来生成上述对象分支命令。
根据该结构,使用本计算机程序,可实施发挥与上述(11)一样效果的程序变换处理。
(14)上述(13)的计算机程序将上述多个命令组中的一个确定为基准命令组来动作,还具备模式匹配命令追加步骤,在翻译上述第一源程序时,向上述外部入口分支,并将作为属于选择上述第一命令组的该基准命令组的模式切换分支命令的模式匹配命令追加到上述第一机器语言命令列中,上述未确定分支信息生成步骤具备分支信息生成子步骤,在由直接寻址模式生成上述对象分支命令的情况下,生成上述未确定分支信息;和间接对象分支命令生成子步骤,在由间接寻址模式生成上述对象分支命令的情况下,向上述追加的模式匹配命令间接分支,并使用选择上述基准命令组的模式切换分支命令,生成上述对象分支命令。
根据该结构,使用本计算机程序,可实施发挥与上述(13)一样效果的程序变换处理。
附图的简要说明
参照说明本发明一特定实施例的附图,本发明的上述和其它目的、优点及特征将从下述的描述中变得明显。其中:
图1是表示程序变换装置结构的功能框图。
图2是生成为目标程序的伪命令的一实例。
图3是表示翻译部的目标信息生成处理的特征部分的流程图。
图4是表示目标程序内容的模式图。
(A)是由HD命令组编译的目标程序的实例。
(B)是由HS命令组编译的目标程序的实例。
图5是用于表示目标程序的具体数据结构的一实例。
(A)是表示整体结构的一实例。
(B)是符号表格的一实例。
(C)是命令组所属信息表格的一实例。
(D)是未确定分支信息表格的一实例。
图6是表示连接部的连接处理中的特征部分的流程图。
图7是可执行程序的一实例。
图8是其它命令组的组合程序变换例。
(A)是由HD命令组编译的目标程序的实例。
(B)是由HS命令组编译的目标程序的实例。
(C)是连接两者的可执行程序的一实例。
图9是其它命令组的组合程序变换例。
(A)是由HD命令组编译的目标程序的实例。
(B)是由HS命令组编译的目标程序的实例。
(C)是连接两者的可执行程序的一实例。
图10是其它命令组的组合程序变换例。
(A)是由HD命令组编译的目标程序的实例。
(B)是由HS命令组编译的目标程序的实例。
(C)是连接两者的可执行程序的一实例。
图11(A)及(B)是在函数的末尾调用其它函数的源程序的一实例。
图12(A)及(B)是表示目标程序内容的模式图。
图13是持有n种命令组的对象处理器具有的分支命令的一实例。
图14是表示目标文件内容的模式图。
(A)是由基准命令组编译的目标程序的实例。
(B)是由其它命令组编译的目标程序的实例。
图15是源程序的一实例。
图16是持有两种命令组的对象处理器具有的分支命令的一实例。
图17(A)及(B)是现有的目标程序的一实例。
最佳实施例的描述
根据本发明实施例的程序变换装置是由程序编译器和连接程序构成的程序变换装置,程序编译器将多个源程序分别翻译为包含机器语言命令列、符号信息、命令组信息及未确定分支信息的目标程序,连接程序使用包含在该翻译的各目标程序中的符号信息、命令组信息及未确定分支信息,将包含于该各目标程序中的机器语言命令列连接在对象处理器可执行的可执行程序上。
该对象处理器通过执行模式切换分支命令来动态选择多个命令组中的一个,根据该被选择的命令组来翻译执行机器语言命令。
本程序变换装置对应于由直接寻址模式及间接寻址模式中的哪一个来生成执行源程序中记述的分支处理用的对象分支命令,分别根据以下的思考来生成。
(1)由直接寻址模式生成对象分支命令的情况
程序编译器生成表示该对象分支命令的配置部位及该对象分支命令的分支目的命令所属命令组未确定的未确定分支信息。
另外,连接程序在表示为该未确定分支信息的配置部位生成选择该分支目的命令所属命令组的模式切换分支命令。
在该对象分支命令所属的命令组与该分支目的命令所属命令组相同的情况下,连接程序生成维持动作模式的通常分支命令。
(2)由间接寻址模式生成对象分支命令的情况
首先,在由间接寻址模式分支上述对象分支命令的情况下,如下准备正确功能用的代替分支目的。
将上述多个命令组中的一个确定为基准命令组。
程序编译器对成为翻译对象的源程序中记述的各外部入口,将分支到该外部入口、且属于选择该外部入口的命令组的该基准命令组的模式切换命令追加到翻译后的机器语言命令列中。后面,将该追加的模式工换分支命令称为模式匹配命令。另外,生成指示该模式匹配命令的配置部位的代替入口信息。
这里生成的代替入口信息对于通过间接寻址分支到对应外部入口(称为原来入口)的分支命令指示其代替分支目的。
程序编译器对于向原来入口的分支处理,生成通过间接寻址分支到对应的代替入口并选择基准命令组的模式切换分支命令。
如此生成的分支命令到代替入口的分支边将对象处理器的动作模式从适应基准命令组的动作模式切换为适用原来入口的命令组的动作模式,边将控制正确地导入原来标识符。
整体结构
图1是表示本实施例的程序变换装置整体结构的功能框图。该程序变换装置100由翻译部110及连接部130构成。翻译部110及连接部130分别是程序编译器及连接程序。
翻译部110将多个源程序141分别编译为目标程序142。连接部130将编译后的各目标程序142连接到可执行程序143上。
具体而言,程序变换装置100由处理器、存储程序的ROM(只读存储器)、作业用RAM(随机存储器)、硬盘装置等硬件来实现。程序变换装置100的各构成要素的功能通过上述处理器执行ROM中存储的程序来实现。用上述RAM及硬盘装置来进行信息的存储及在上述各构成要素间转移。
程序变换装置100通过例如未图示的参数文件或编译功能等来指定上述基准命令组。
翻译部110的结构
翻译部110由词法句法分析部111、中间代码生成部112、汇编程序生成部113及汇编部117构成。汇编程序生成部113包含命令组决定部1131、命令组显示伪命令生成部114、模式匹配命令追加部115及伪分支命令生成部116。汇编部117包含命令组信息生成部118、分支信息生成部119及机器语言命令列生成部120。
翻译部110读取源程序141,通过词法句法分析部111对该读取的源程序进行词法句法分析,由中间代码生成部112生成中间代码列。词法句法分析部111及中间代码生成部112进行的处理使用现有的程序编译器一般实施的技术,因为不是本发明的主题,所以省略详细说明。
汇编程序生成部113根据上述读取的源程序及上述生成的中间代码生成汇编程序,输出给汇编部117。该汇编程序相对现有的汇编语言,是由追加表征为本发明的伪命令而得到的新的汇编语言记述的。
汇编部117通过取得并汇编该汇编程序,除现有的汇编程序生成的机器语言命令列及符号信息外,还生成包含表征为本发明的命令组信息及未确定分支信息的目标程序142。
追加的伪命令
图2表示向根据本发明的汇编语言追加的命令组显示伪命令及分支伪命令。伪命令栏151表示表示该伪命令的助记符号,运算数栏152表示该伪命令取得的运算数,含义栏153表示该伪命令的含义,汇编程序动作栏154表示汇编程序对应于该伪命令所进行的动作。
汇编程序生成部113的详情
汇编程序生成部113根据上述读取的源程序及上述生成的中间代码来生成汇编程序。下面详细说明表征为本发明的结构。
命令组决定部1131
命令组决定部1131在翻译过程中记录表示为最后处理的附注指令的命令组。也可在翻译开始时记录由编译功能指定的命令组。
该记录的命令组根据源程序来依次决定翻译的各机器语言命令所属的命令组。
命令组显示伪命令生成部114
命令组显示伪命令生成部114对于源程序中记述的各附注指令,将显示由命令组决定部1131记录的命令组的命令组显示伪命令生成为汇编程序。另外,在由编译功能指定翻译中使用的命令组的情况下,也可在汇编程序开头生成显示该被指定命令组的命令组显示伪命令。
模式匹配命令追加部115
模式匹配命令追加部115对于源程序中记述的作为各外部入口(具体而言包含函数入口)的原来入口,基于上述附注指令或上述编译功能来决定该原来入口的命令组。另外,在该被识别命令组不是上述基准命令组的情况下,将属于分支到上述原来入口的同时选择上述被识别命令组的上述基准命令组的作为模式切换分支命令的模式匹配命令追加到汇编程序中。
并且,模式匹配命令追加部115追加表示对应于上述原来入口的代替入口的标识符。该标识符在追加上述模式匹配命令的情况下附加到上述被追加的模式匹配命令中,在未追加上述模式匹配命令的情况下,附加到上述原来入口中。
原来入口与代替入口的对应可通过附加给两者的标识符的名称规则性来进行。
例如,用向源程序中记述的外部入口名(包含函数名)附加前缀_0得到的标识符来表示原来入口,用向该外部入口附加前缀_得到的标识符来表示对应的代替入口。
另外,上述追加的模式匹配命令被配置在从置于之前的命令不继续执行的部位,只要是配置部位即可,例如,若该外部入口是函数入口,则配置在该函数开头命令之前。
伪分支命令生成部116
伪分支命令生成部116对源程序中记述的各分支处理进行如下处理。
在用直接寻址模式生成执行该分支处理用的对象分支命令的情况下,对汇编程序生成以下的伪分支命令,代替该对象分支命令。
在该分支处理是用goto语句记述或在函数末尾记述的其它函数调用处理的情况下,生成表示生成未记录返回地址的分支命令的brx伪命令。在该分支命令为记述在函数末尾以外的部位的其它函数调用处理的情况下,生成表示生成记录返回地址的分支命令的callx伪命令。
如此生成的伪分支命令在表示该对象分支命令的分支目的命令所属命令组为未确定的同时,表示该对象分支命令的配置部位及该对象分支命令是否记录返回地址。
另一方面,在用间接寻址模式生成执行该分支处理的对象分支命令的情况下,使用由间接寻址模式分支到对应于该对象分支命令原来入口的代替入口并选择上述基准命令组的模式切换间接分支命令来生成该对象分支命令。此时,不生成伪分支命令。另外,在该对象分支命令属于基准命令组的情况下,使用维持被选择命令组的间接分支命令来生成。
伪分支命令生成部116和后述的分支信息生成部119相当于权利要求中所述的未确定分支信息生成单元,伪分支命令生成部116关于间接分支命令生成的部分相当于权利要求中所述的间接对象分支命令生成部。
汇编程序生成部113的动作
图3是表示汇编程序生成部113中各结构要素的动作联合的流程图。参照该流程图来补充上述说明的各构成要素的动作联合。
为了方便,说明为各函数的说明接着指示命令组的附注命令后记述,另外,源程序中记述的分支处理是函数调用处理,用子程序调用命令来生成执行该函数调用处理的对象分支命令。
汇编程序生成部113取得一个中间代码(步骤S101)。
若取得的中间代码是函数说明(步骤S102:是),则命令组显示伪命令生成部114将表示为源程序中附加到该函数说明并记述的附注指令的命令组记录为现用命令组(步骤S103)。另外,将显示该记录的现用命令组的命令组显示伪命令生成为汇编程序(步骤S104)。
模式匹配命令追加部115仅在该现用命令组与基准命令组不同的情况下(步骤S102:否),生成模式匹配命令(步骤S106)。另外,生成表示该函数原来入口的标识符(步骤S107),生成表示对应代替入口的标识符(步骤S108)。
另外,若取得的中间代码是函数调用(步骤S109:是),则对应于执行该函数调用的子程序调用命令的寻址模式,在直接寻址模式的情况下(步骤S110:直接),生成伪分支命令(步骤S111),在间接寻址模式的情况下(步骤S110:间接),现用命令组变为基准命令组(步骤S112:是),生成不变更选择命令组的通常子程序调用命令(步骤S113),相反(步骤S112:否),则生成选择基准命令组的模式切换子程序调用命令(步骤S114)。
另外,在取得的中间代码位于源程序以外部分的情况下(步骤S109:否),汇编程序生成部113生成执行该中间代码用的汇编程序代码(步骤S115)。
在处理完全部中间代码之前,重复上述处理(步骤S116)。
汇编程序
图4(A)及(B)是汇编程序生成部113生成的汇编程序的一具体实例。将上述基准命令组作业HD命令组,分别翻译图15(A)及(B)的源程序来生成。
依次说明根据图15(A)的源程序各行生成的图4(A)的汇编程序211。
(1)从对应于函数f之前记述的指示HD命令组的附注指令,生成命令组显示伪命令INSTMODE HD,此时,记录为现用命令组为HD命令组。
(2)从函数f的说明生成表示原来入口的标识符_0f。将该标识符附加到上述生成的命令组显示伪命令中。
通过参照已记录的现用命令组,设置在原来入口_0f的机器语言命令被识别为属于HD命令组,不对该原来入口追加模式匹配命令,在与原来入口相同部位中生成表示代替入口的标识符_f。
(3)根据函数g的直接调用处理g();,记录返回地址并生成指示生成由直接寻址模式分支到函数g原来入口_0g的分支命令的伪分支命令callx。
(4)根据函数g向指示字变量func的地址代入处理func=&g;,生成将用函数g的代替入口标识符表示的地址_g代入寄存器R0的mov命令。
另外,根据函数g的间接调用处理(*func)();,生成由间接寻址模式分支到寄存器R0的内容表示的地址的分支命令。
通过参照记录的现用命令组,将这里生成的命令识别为属于HD命令组,并且,因为设置成代替入口的机器语言命令一定属于作为基准命令组的HD命令组,所以对该分支命令生成维持选择的命令组的call命令。
接着,依次说明根据图15(B)源程序各行生成的图4(B)的汇编程序212。
(1)从对应于指示函数g之前记述的HS命令组的附注指令,生成命令组显示伪命令INSTMODE HS,此时,被记录为现用命令组为HS命令组。
(2)从函数g的说明生成表示原来入口的标识符_0g。将该标识符附加到上述生成的命令组显示伪命令中。
通过参照已记录的现用命令组,将设置在原来入口_0g的机器语言命令识别为属于HS命令组,对该原来入口附加模式匹配命令brc_0g。因为显示模式匹配命令属于作为基准命令组的HD命令组,所以在其前生成命令组显示伪命令INSTMODE hd。另外,生成将该模式匹配命令表示为代替入口的标识符_g。
目标程序
图5(A)至(D)是表示包含从上述汇编程序变换的机器语言命令列的目标程序的具体数据结构的一个实例。例示的内容相当于从图4(A)所示汇编程序生成的目标程序。
图5(A)为目标程序142的整体结构,由上述机器语言命令列250、及符号表格260、命令组信息表格270、未确定分支信息表格280构成。
图5(B)是符号表格260的详细结构。符号栏261保持识别外部入口的标识符,区分栏262保持定义或参照的区分信息,地址栏263在该区分信息为定义的情况下保持表示附加该标识符的部位在上述机器语言命令列中的相对地址,另外,在该区分信息为参照的情况下保持表示参照该标识符的地址的配置部位在上述机器语言命令列中的相对地址。
符号表格260保持的外部入口中包含由模式匹配命令追加部115追加的代替入口。
图5(C)是命令组信息表格270的详细结构。符号栏271保持识别外部入口的标识符,命令组栏272保持表示设置在外部入口之后的机器语言命令所属命令组的记号。
图5(D)是未确定分支信息表格280的详细结构,伪分支命令栏281保持伪分支命令的助记符号,地址栏282保持表示该伪分支命令出现的部位在上述机器语言命令列中的相对地址。
汇编程序部117的详情
汇编程序部117通过汇编该生成的汇编程序,除现有的汇编程序生成的机器语言命令列及符号信息外,还生成包含表征为本发明的命令组信息及未确定分支信息的目标程序142。下面,详细说明表征为本发明的结构。
命令组信息生成部118
命令组信息生成部118对上述汇编程序中包含的各命令组显示伪命令,将附加在该伪命令中的标识符与该伪命令显示的命令组对应后表示的命令组信息记录在命令组信息表格270中。同时,指示机器语言命令列生成部120将汇编程序的后续部分变换为属于该伪命令显示的命令组的机器语言命令。
分支信息生成部119
分支信息生成部119对上述汇编程序中包含的各伪分支命令,将该伪分支命令的助记符号与表示该伪分支命令出现部位在上述机器语言命令列中的相对地址对应后表示的未确定分支信息记录在未确定分支信息表格280中。
机器语言命令列生成部120
机器语言命令列生成部120将上述汇编程序中包含的伪命令以外的各汇编程序代码变换为属于由命令组信息生成部118指示的命令组的机器语言命令。
另外,对各伪分支命令,在对应于该伪分支命令生成的分支命令配置部位中确保与该分支命令相等大小的区域。
连接部130的结构
连接部130由对象分支命令生成部131、模式匹配命令删除部132及包含分类部134的配置部133构成。
连接部130读取成为连接对象的全部目标程序142,使用该各目标程序中包含的命令组信息、未确定分支信息及符号信息,连接该各目标程序中包含的机器语言命令列,通过解决外部参照,生成可执行程序143。下面,详细说明表征为本发明的结构。
对象分支命令生成部131
对象分支命令生成部131首先将表示为上述未确定分支信息的地址设为配置对象地址,从符号信息表格中检索保持与该配置对象地址一致的地址的符号信息,将表示为检索到的符号信息的标识符识别为对应于该未确定分支信息生成的分支命令的分支目的。
接着,从命令组信息表格中检索该配置对象地址、或与附加于其附近的标识符对应记录的命令组以及该识别出的分支目的或对应于附加在其附近的标识符记录的命令组。
另外,在两者一致的情况下,用表示维持选择命令组的call命令的机器语言代码改写上述机器语言命令列中由该配置对象地址表示的部位内容。在两者不同的情况下,用表示变更选择命令组的callc命令的机器语言代码改写上述机器语言命令列中由该配置对象地址表示的部位内容。
该call命令及callc命令都由直接寻址模式生成。如上所述,对于由间接寻址模式生成的分支命令,翻译部110因为已生成规定的间接分支命令,所以不生成未确定分支信息。
模式匹配命令删除部132
模式匹配命令删除部132从符号信息表格中检索表示在同一句尾分别附加前缀_0及_的标识符定义的符号信息,若两者表示的地址不同,则识别为向附加前缀_的标识符追加模式匹配命令。
另外,在识别为追加模式匹配分支命令的情况下,从符号信息表格中检索表示附加了该前缀_的标识符参照的符号信息。在不存在该符号信息的情况下,判断执行时间接寻址模式不发生向上述模式匹配命令的分支,从上述机器语言命令列中删除上述模式匹配命令。
或者,从上述机器语言命令列中检索间接寻址分支命令,在不存在该分支命令的情况下,判断执行时间接寻址模式不发生向上述模式匹配命令的分支,删除上述命令。
在删除上述模式匹配命令后,对上述机器语言命令列混合后续的机器语言命令,对应于该混合来更新表示为符号信息及未确定分支信息的地址。
另外,该模式匹配命令删除部132中判断未由间接寻址模式发生分支的部分相当于权利要求中所述的不在间接分支判断单元。
配置部133
配置部133生成上述对象分支命令,并对删除上述模式匹配命令后的各机器语言命令列,对每个同一命令组的机器语言命令连续的部分决定表示其配置的绝对地址。此时,分类部134用命令组分类上述各部分,配置部133决定上述绝对地址,使对可执行程序连续配置属于同一命令组的机器语言命令。
之后,连接部130基于上述决定的绝对地址来排列上述各部分,同时,通过解决上述符号信息表格中表示的各外部入口的参照,生成可执行程序143。
连接部130的动作
图6是表示连接部130中各结构要素的动作联合的流程图。参照该流程图来补充上述各结构要素的动作联合。
为了方便,说明源程序中记述的分支处理为函数调用处理,使用子程序调用命令生成执行该函数调用处理的对象分支命令。
连接部130读取应连接的全部目标程序(步骤S201)。
对象分支命令生成部131对各未确定分支信息(步骤S202、S203)检索对应根据该未确定分支信息生成的子程序调用命令的分支目的命令的命令组信息,识别该分支目的命令的命令组(步骤S204),在该子程序调用命令与其分支目的命令中命令组一致的情况下(步骤S205:是),将读取的机器语言命令列中由该未确定分支信息表示的部位的内容置换为维持选择命令组的子程序调用命令(步骤S206),在不一致的情况下(步骤S205:否),将该内容置换为变更选择的命令组的子程序调用命令(步骤S207)。
模式匹配命令删除部132对表明表示与原来入口不同部位的代替入口定义的各符号信息(步骤S208、S209),检索表明表示为该符号信息的标识符参照的符号信息,在未发现的情况下(步骤S210:否),删除设置成该代替入口的模式匹配命令(步骤S211)。
分类部134通过命令组来分类属于机器语言命令列各个命令组的各部分,配置部133决定系列配置将该各部分的绝对地址分类为同一命令组的部分(步骤S212),连接部130进行包含外部参照的解决处理的连接处理(步骤S213)。
可执行程序
图7是连接部130生成的可执行程序的具体实例,是由汇编程序表表示的结合对应于图3(A)及(B)的汇编程序的机器语言命令列生成的可执行程序的模式图。可执行程序213中包含的机器语言命令列214及机器语言命令列215分别源于汇编程序211及汇编程序212。
对象分支命令生成部131通过检索图4的符号信息表格及未确定分支信息表格,识别由伪分支命令callx生成指示的对象分支命令的分支目的是标识符_0g。
另外,通过检索图4的命令组信息表格,识别该对象分支命令及配置给其分支目的_0g的机器语言命令分别属于HD命令组及HS命令组。因为两者不同,所以将由该伪分支命令表示的部位内容改写为变更选择的命令组的HD命令组的分支命令。
模式匹配命令删除部132从上述符号信息表格中检索定义标识符_0g及_g的部位。因为两者不同,所以识别为在标识符_g所示的部位设置模式匹配命令。
另外,从上述符号信息表格中检索表示标识符_g的符号信息。Mov命令通过参照_g发现存在对应的符号信息,所以不删除上述模式匹配命令。
配置部133决定HD命令与HS命令分别系列配置,之后,连接部通过参照符号信息表格来执行以前一般进行的外部参照解决处理,生成图5所示可执行程序。
对应于命令组组合的其它生成例
图4(A)、(B)及图7表示根据HD命令组的调用源函数来调用HS命令组的调用目的函数的实例。
表示命令组为HD及HS两种的情况下调用源函数及调用目的函数中的命令组的其它组合的实例。
根据HD函数调用HD函数
图8是根据HD命令组的调用源函数调用HD命令组的调用目的函数情况的实例。图8(A)及(B)为分别由HD命令组编译图15(A)及(B)的源程序得到的目标程序221及目标程序222,图8(C)是连接它们得到的可执行程序223,机器语言命令列224及机器语言命令列225分别源于目标程序221及目标程序222。
因为函数f及函数g都由作为基准命令组的HD命令组编译,所以不追加模式匹配命令,结果,分别在与原来入口_0f及_0g相同的部位设置两函数的代替入口_f及_g。
对于对目标程序221生成的未确定分支信息callx,在连接时,对机器语言命令列224生成维持选择的命令组的直接寻址模式的子程序调用命令call。
另外,根据间接分支处理,对目标程序221生成维持选择命令组的间接寻址模式的子程序调用命令call。
根据HS函数调用HD函数
图9是根据HS命令组的调用源函数调用HD命令组的调用目的函数情况的实例。图9(A)及(B)为分别由HS命令组及HD命令组编译图15(A)及(B)的源程序得到的目标程序231及目标程序232,图9(C)是连接它们得到的可执行程序233,机器语言命令列234及机器语言命令列235分别源于目标程序231及目标程序232。
因为函数f由与基准命令组不同的HS命令组编译,所以向目标程序231追加模式匹配命令brc,对该模式匹配命令brc设置函数f的代替入口_f。另外,在本实例中,因为该模式匹配命令brc由于没有代替入口_f的参照而在连接时被删除,所以在图9(C)中未记载。
对原来入口_0g设置函数g的代替入口_g。
对于对目标程序231生成的未确定分支信息callx,在连接时,对机器语言命令列224配置变更选择的命令组的直接寻址模式的子程序调用命令call。
另外,根据间接分支处理,对目标程序231生成变更选择命令组的间接寻址模式的子程序调用命令callc。
根据HS函数调用HS函数
图10是根据HS命令组的调用源函数调用HS命令组的调用目的函数情况的实例。图10(A)及(B)为分别由HS命令组编译图15(A)及(B)的源程序得到的目标程序241及目标程序242,图10(C)是连接它们得到的可执行程序243,机器语言命令列244及机器语言命令列245分别源于目标程序241及目标程序242。
因为函数f及函数g都由与基准命令组不同的HS命令组编译,所以分别向目标程序241及目标程序242追加模式匹配命令brc,对各个模式匹配命令brc设置函数f的代替入口_f及函数g的代替入口_g。另外,在本实例中,因为对函数f追加的该模式匹配命令brc由于没有代替入口_f的参照而在连接时被删除,所以在图9(C)中未记载。
对于对目标程序241生成的未确定分支信息callx,在连接时,对机器语言命令列244配置维持选择的命令组的直接寻址模式的子程序调用命令call。
另外,根据间接分支处理,对目标程序241生成变更选择命令组的间接寻址模式的子程序调用命令callc。
归纳
如上所述,根据程序变换装置100,翻译部110生成表示编译时分支源及分支目的的命令组异同未确定的未确定分支信息来代替对象分支命令的实体,连接部130在连接时对于该生成的未确定分支信息,对应于分支源及分支目的的命令组异同,适当生成变更命令组的对象分支命令或维持对象分支命令之一。由此,即使调有目的函数的命令组未确定,也可编译调用源函数,并且,即使在变更命令组后再编译调用目的函数的情况下,也不必再编译包含调用该函数的函数调用的源程序。
具体而言,若将调用源函数f及调用目的函数g分别与由HD命令组及HS命令组编译的图4的目标程序和由HD命令组再编译调用目的函数g后的图8的目标程序相比较,可知在再编译调用目的函数g后,不对根据调用源函数f编译的目标程序施加任何变更就可连接。即使在其它组合之间变更也一样。
另外,程序变换装置100将一个命令组确定为基准命令组后动作,翻译部110在配置在外部入口的命令的命令组不是基准命令组的情况下,在追加模式匹配命令的同时,将该追加的模式匹配命令的配置部位设为对应于原来分支目的的代替入口。
对间接分支处理,翻译部110不生成上述未确定分支信息,向对应于原来分支目的的代替入口间接分支,并生成选择基准命令组的对象分支命令。因此,通过代替作为分支目的的外部入口的地址而将代替入口的地址下载到寄存器,如上所述,可实现到代替入口的间接分支。
由此,即使在使用间接寻址模式的分支命令的情况下,也可生成正确选择命令组的机器语言命令。
其它变形例
虽然基于上述实施例说明本发明,但本发明不限于上述实施例。以下的情况也包含在本发明中。
(1)本发明也可作为包含实施例中说明的步骤的方法。另外,也可是使用计算机系统实现这些方法用的计算机程序,或是表示上述程序的数字信号。
另外,本发明也可是记录上述程序或上述数字信号的计算机可读取记录媒体,例如软盘、硬盘、CD、MO、DVD、半导体存储器等。
另外,本发明也可是经由电通信线路、无线或有线通信线路或以因特网为代替的网络等传送的上述计算机程序或上述数字信号。
另外,上述程序或上述数字信号可被记录在上述记录媒体中转移或经由上述网络等转移,也可在独立的其它计算机系统中实施。
(2)分支信息生成部119也可对在调用源函数最后处理的函数调用处理,生成指示不记录返回地址的分支命令生成的伪分支命令brx。
图11(A)、(B)是这种情况下该源程序的一实例,在函数f的最后调用函数g。
图12(A)、(B)分别是编译图11(A)、(B)的源程序所得的目标程序,根据函数g的调用处理,生成指示未记录返回地址的分支命令生成的伪分支命令brx。通过连接它们得到的可执行程序(未图示),对该伪分支命令brx变更选择的命令组,并且因为生成未记录返回地址的分支命令brc,所以图12(B)末尾的ret命令不经由图12(A)所示的机器语言命令,而直接连接到调用图12(A)的部位。
(3)以程序变换装置100为对象的处理器也可具有n(3n)种命令组。
图13是能具有n种命令组的处理器执行的分支命令的一实例,命令栏291表示表示分支命令的助记符号,运算数栏292表示该分支命令取得的运算数,功能栏293表示该分支命令的功能。这些分支命令包含在全部命令组中。如功能栏293所示,这些分支命令选择命令组。
图14(A)及(B)是将基准命令组作为MODE1命令组,分别由MODE1命令组及MODEn命令组编译图15(A)的源程序后生成的机器语言命令列的汇编符号。
程序变换装置100在此时也对直接寻址模式的分支命令生成在连接时选择适当命令组的分支命令,对间接寻址模式的分支命令,通过所谓由设置属于基准命令组的模式匹配命令的代替入口来向原来入口分支的与上述相同的作用,发挥与上述同样的效果。
(4)在上述实施例中,虽然说明对象分支命令生成部131在目标程序中包含的机器语言命令列的规定部位生成对象分支命令,但也可在连接后的可执行程序的相应部位生成该对象分支命令。
(5)未确定分支信息也可表示对象分支命令的配置部位及该对象分支命令的分支目的命令所属命令组未确定,也可由上述未确定分支信息表格以外的形式来表示。
例如,设置与命令组中包含的任何命令都不相同的操作码,翻译部与命令同等处理后包含于机器语言命令列中生成该操作码,连接部将该操作码改写为适当的对象分支命令。另外,在翻译部与连接部之间,取决于命令组中包含的规定分支命令表示未确定分支信息,连接部将机器语言命令中包含的该规定分支命令全部改写为适当的对象分支命令。

Claims (14)

1.一种程序变换装置,通过执行模式切换分支命令来动态选择多个命令组中的一个,将根据该被选择命令组翻译执行机器语言命令的处理器作为对象,将包含外部入口记述的第一源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第一机器语言命令列,将包含对该外部入口记述的第二源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第二机器语言命令列,将至少包含该第一机器语言命令列及第二机器语言命令列的多个机器语言命令列与可执行程序相结合,其中,具备:
第一命令组信息生成单元,在翻译上述第一源程序时,生成表示执行对上述外部入口记述处理用的机器语言命令所属第一命令组的第一命令组信息;
未确定分支信息生成单元,在翻译上述第二源程序时,生成表示用于执行上述分支处理的对象分支命令的配置部位及该对象分支命令的分支目的机器语言命令所属命令组未确定的未确定分支信息;和
对象分支命令生成单元,在上述结合时,在表示上述未确定分支信息的配置部位,使用选择表示为上述第一命令组信息的第一命令组的模式切换分支命令来生成上述对象分支命令。
2.根据权利要求1所述的程序变换装置,其特征在于:还具备
第二命令组信息生成单元,在翻译上述第二源程序时,生成表示上述对象分支命令所属第二命令组的第二命令组信息,
上述对象分支命令生成单元在表示为上述第一命令组信息的第一命令组和表示为上述第二命令组信息的第二命令组不同的情况下,使用上述模式切换分支命令生成上述对象分支命令,在其它情况下,使用维持被选择命令组的通常分支命令来生成上述对象分支命令。
3.根据权利要求1所述的程序变换装置,其特征在于:将上述多个命令组中的一个确定为基准命令组来动作,还具备
模式匹配命令追加单元,在翻译上述第一源程序时,向上述外部入口分支,并将作为属于选择上述第一命令组的该基准命令组的模式切换分支命令的模式匹配命令追加到上述第一机器语言命令列中,
上述未确定分支信息生成单元具备
分支信息生成部,在由直接寻址模式生成上述对象分支命令的情况下,生成上述未确定分支信息;和
间接对象分支命令生成部,在由间接寻址模式生成上述对象分支命令的情况下,向上述追加的模式匹配命令间接分支,并使用选择上述基准命令组的模式切换分支命令,生成上述对象分支命令。
4.根据权利要求3所述的程序变换装置,其特征在于:
上述模式匹配命令追加单元只在上述第一命令组不是上述基准命令组的情况下,追加上述模式匹配命令,
上述间接对象分支命令生成部在由间接寻址模式生成上述对象分支命令的情况下,且在未追加上述模式匹配命令的情况下,向上述外部入口间接分支,并使用选择上述基准命令组的模式切换分支命令来生成上述对象分支命令。
5.根据权利要求3所述的程序变换装置,其特征在于:还具备
不在间接分支判断单元,在执行上述可执行程序时,不发生对上述被追加模式匹配命令的间接分支;和
模式匹配命令删除单元,在判断为不发生上述间接分支的情况下,删除上述追加的模式匹配命令。
6.根据权利要求5所述的程序变换装置,其特征在于:
上述不在间接分支判断单元在结合在上述可执行程序上的全部机器语言命令列中不包含间接分支命令的情况下,判断不发生上述间接分支。
7.根据权利要求5所述的程序变换装置,其特征在于:
上述不在间接分支判断单元在结合在上述可执行程序上的全部机器语言命令列中不包含参照上述追加模式匹配命令的命令的情况下,判断为不发生上述分支。
8.根据权利要求1所述的程序变换装置,其特征在于:
上述分支处理是函数调用处理,
上述未确定分支信息生成单元还根据在调用源函数的最后处理该函数调用处理或在此外的部位进行处理,分别生成表示用未记录返回地址的分支命令来生成上述对象分支命令或用记录返回地址的分支命令来生成的分支命令种类信息,
上述对象分支命令生成单元使用表示为该分支命令种类信息的分支命令来生成上述对象分支命令。
9.根据权利要求1所述的程序变换装置,其特征在于:还具备
分类单元,通过用命令组来分类包含在与上述可执行程序结合的机器语言命令列中的各机器语言命令,连续配置属于同一命令组的机器语言命令。
10.根据权利要求1所述的程序变换装置,其特征在于:还具备
命令组决定单元,根据上述第一源程序中记述的附注指令及表示为翻译上述第一源程序时的程序编译器功能的至少一方来决定用于执行上述第一源程序的各机器语言命令所属的命令组,
上述第一命令组信息生成单元基于该决定,生成上述第一命令组信息。
11.一种程序变换方法,通过执行模式切换分支命令来动态选择多个命令组中的一个,将根据该被选择命令组翻译执行机器语言命令的处理器作为对象,将包含外部入口记述的第一源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第一机器语言命令列,将包含对该外部入口记述的第二源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第二机器语言命令列,将至少包含该第一机器语言命令列及第二机器语言命令列的多个机器语言命令列与可执行程序相结合,其中,包含:
第一命令组信息生成步骤,在翻译上述第一源程序时,生成表示执行对上述外部入口记述处理用的机器语言命令所属第一命令组的第一命令组信息;
未确定分支信息生成步骤,在翻译上述第二源程序时,生成表示用于执行上述分支处理的对象分支命令的配置部位及该对象分支命令的分支目的机器语言命令所属命令组未确定的未确定分支信息;和
对象分支命令生成步骤,在上述结合时,在表示上述未确定分支信息的配置部位,使用选择表示为上述第一命令组信息的第一命令组的模式切换分支命令来生成上述对象分支命令。
12.根据权利要求11所述的程序变换方法,其特征在于:将上述多个命令组中的一个确定为基准命令组来执行,还具备
模式匹配命令追加步骤,在翻译上述第一源程序时,向上述外部入口分支,并将作为属于选择上述第一命令组的该基准命令组的模式切换分支命令的模式匹配命令追加到上述第一机器语言命令列中,
上述未确定分支信息生成步骤具备
分支信息生成子步骤,在由直接寻址模式生成上述对象分支命令的情况下,生成上述未确定分支信息;和
间接对象分支命令生成子步骤,只在由间接寻址模式生成上述对象分支命令的情况下,向上述追加的模式匹配命令间接分支,并使用选择上述基准命令组的模式切换分支命令,生成上述对象分支命令。
13.一种计算机程序,使用计算机执行如下程序变换处理:通过执行模式切换分支命令来动态选择多个命令组中的一个,将根据该被选择命令组翻译执行机器语言命令的处理器作为对象,将包含外部入口记述的第一源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第一机器语言命令列,将包含对该外部入口记述的第二源程序翻译成由属于各规定命令组的一个以上机器语言命令构成的第二机器语言命令列,将至少包含该第一机器语言命令列及第二机器语言命令列的多个机器语言命令列与可执行程序相结合,其中,包含:
第一命令组信息生成步骤,在翻译上述第一源程序时,生成表示执行对上述外部入口记述处理用的机器语言命令所属第一命令组的第一命令组信息;
未确定分支信息生成步骤,在翻译上述第二源程序时,生成表示用于执行上述分支处理的对象分支命令的配置部位及该对象分支命令的分支目的机器语言命令所属命令组未确定的未确定分支信息;和
分支命令生成步骤,在上述结合时,在表示上述未确定分支信息的配置部位,使用选择表示为上述第一命令组信息的第一命令组的模式切换分支命令来生成上述对象分支命令。
14.根据权利要求13所述的计算机程序,其特征在于:将上述多个命令组中的一个确定为基准命令组来动作,还具备
模式匹配命令追加步骤,在翻译上述第一源程序时,向上述外部入口分支,并将作为属于选择上述第一命令组的该基准命令组的模式切换分支命令的模式匹配命令追加到上述第一机器语言命令列中,
上述未确定分支信息生成步骤具备
分支信息生成子步骤,在由直接寻址模式生成上述对象分支命令的情况下,生成上述未确定分支信息;和
间接对象分支命令生成子步骤,只在由间接寻址模式生成上述对象分支命令的情况下,向上述追加的模式匹配命令间接分支,并使用选择上述基准命令组的模式切换分支命令,生成上述对象分支命令。
CNB021560390A 2001-12-11 2002-12-11 程序变换装置及程序变换方法 Expired - Fee Related CN1194295C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP377886/2001 2001-12-11
JP2001377886A JP4044756B2 (ja) 2001-12-11 2001-12-11 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム

Publications (2)

Publication Number Publication Date
CN1425982A true CN1425982A (zh) 2003-06-25
CN1194295C CN1194295C (zh) 2005-03-23

Family

ID=19185749

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB021560390A Expired - Fee Related CN1194295C (zh) 2001-12-11 2002-12-11 程序变换装置及程序变换方法

Country Status (3)

Country Link
US (1) US7254807B2 (zh)
JP (1) JP4044756B2 (zh)
CN (1) CN1194295C (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100483341C (zh) * 2003-07-15 2009-04-29 可递有限公司 用于执行本机绑定的方法和装置
CN104067225A (zh) * 2012-01-20 2014-09-24 高通股份有限公司 对用于图形处理单元的具有相关联的纹理加载指令的控制流指令的判定
WO2017128160A1 (zh) * 2016-01-28 2017-08-03 深圳配天智能技术研究院有限公司 加工复位实现方法、编译器、机器人、数控系统及机床
CN116501415A (zh) * 2023-06-30 2023-07-28 英诺达(成都)电子科技有限公司 命令执行方法及装置、电子设备、计算机可读存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
US20050273776A1 (en) * 2004-06-08 2005-12-08 Intel Corporation Assembler supporting pseudo registers to resolve return address ambiguity
JP2006107338A (ja) * 2004-10-08 2006-04-20 Matsushita Electric Ind Co Ltd プログラム処理装置
JP4712512B2 (ja) * 2005-10-14 2011-06-29 富士通株式会社 プログラム変換プログラム、プログラム変換装置、プログラム変換方法
US8679187B2 (en) 2006-03-20 2014-03-25 Smith & Nephew, Inc. Acetabular cup assembly for multiple bearing materials
JP7031930B2 (ja) * 2018-03-19 2022-03-08 Necプラットフォームズ株式会社 プログラム生成部、情報処理装置、プログラム生成方法、及びプログラム
US11334324B2 (en) * 2019-11-08 2022-05-17 Software Ag Systems and/or methods for error-free implementation of non-java program code on special purpose processors
US11748074B2 (en) 2021-05-28 2023-09-05 Software Ag User exit daemon for use with special-purpose processor, mainframe including user exit daemon, and associated methods

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4325120A (en) * 1978-12-21 1982-04-13 Intel Corporation Data processing system
JP2968289B2 (ja) * 1989-11-08 1999-10-25 株式会社リコー 中央演算処理装置
DE69130495T2 (de) * 1990-06-29 1999-06-24 Digital Equipment Corp Umwandlung der Befehle von internen Prozessorregistern in I/O-Adressraum
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
EP0463966B1 (en) * 1990-06-29 1998-11-25 Digital Equipment Corporation High-performance multi-processor having floating point unit and operation method
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5644769A (en) * 1993-06-14 1997-07-01 Matsushita Electric Industrial Co., Ltd. System for optimizing program by virtually executing the instruction prior to actual execution of the program to invalidate unnecessary instructions
JP3220055B2 (ja) * 1997-07-17 2001-10-22 松下電器産業株式会社 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。
JPH11338710A (ja) 1998-05-28 1999-12-10 Toshiba Corp 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体
US6425069B1 (en) * 1999-03-05 2002-07-23 International Business Machines Corporation Optimization of instruction stream execution that includes a VLIW dispatch group
JP2001202243A (ja) * 1999-04-30 2001-07-27 Hitachi Ltd データ処理装置
US6484312B1 (en) * 1999-06-07 2002-11-19 Microsoft Corporation Inferring operand types within an intermediate language
US6654877B1 (en) * 2000-08-23 2003-11-25 Hewlett-Packard Development Company, L.P. System and method for selectively executing computer code
US6874081B2 (en) * 2001-05-17 2005-03-29 Broadcom Corporation Selection of link and fall-through address using a bit in a branch address for the selection

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100483341C (zh) * 2003-07-15 2009-04-29 可递有限公司 用于执行本机绑定的方法和装置
CN104067225A (zh) * 2012-01-20 2014-09-24 高通股份有限公司 对用于图形处理单元的具有相关联的纹理加载指令的控制流指令的判定
CN104067225B (zh) * 2012-01-20 2017-07-21 高通股份有限公司 对用于图形处理单元的具有相关联的纹理加载指令的控制流指令的判定
WO2017128160A1 (zh) * 2016-01-28 2017-08-03 深圳配天智能技术研究院有限公司 加工复位实现方法、编译器、机器人、数控系统及机床
CN116501415A (zh) * 2023-06-30 2023-07-28 英诺达(成都)电子科技有限公司 命令执行方法及装置、电子设备、计算机可读存储介质
CN116501415B (zh) * 2023-06-30 2023-09-22 英诺达(成都)电子科技有限公司 命令执行方法及装置、电子设备、计算机可读存储介质

Also Published As

Publication number Publication date
JP4044756B2 (ja) 2008-02-06
US7254807B2 (en) 2007-08-07
JP2003177924A (ja) 2003-06-27
CN1194295C (zh) 2005-03-23
US20030135849A1 (en) 2003-07-17

Similar Documents

Publication Publication Date Title
CN1253790C (zh) 指令调度方法和指令调度设备
CN1293465C (zh) Gui显示装置及光标或gui组件动画显示处理方法
CN1097226C (zh) 编译程序器
CN1517869A (zh) 处理器、运算处理方法和优先度决定方法
CN1194295C (zh) 程序变换装置及程序变换方法
CN1908892A (zh) 测试用例设计方法和系统
CN1122216C (zh) 优化器
CN1752947A (zh) 存储装置、存储控制方法,以及计算机产品
CN1542584A (zh) 程序电子水印处理装置
CN1677365A (zh) 通过属性控制的测试实例继承
CN1498367A (zh) 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法
CN1795434A (zh) 程序执行控制设备,程序执行控制方法,控制程序和记录介质
CN1758221A (zh) 程序处理装置
CN1758222A (zh) 程序处理装置
CN101065725A (zh) 命令供给装置
CN1098501C (zh) 用于sql关系数据库的仿真器及方法
CN1728093A (zh) 生成比特块传输函数的交叉平台运行时间代码
CN101055566A (zh) 一种电子数据表的函数收集方法和装置
CN1885431A (zh) 半导体存储设备及用于该半导体存储设备的控制方法
CN1138175A (zh) 高速处理循环的编译器和处理器
CN1241078C (zh) 可编程控制器系统
CN101046867A (zh) 工作流决定方法以及工作流决定系统
CN1690956A (zh) 程序制定装置以及程序制定方法
CN1875353A (zh) 电子文档阅览系统
CN1645326A (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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151111

Address after: Kanagawa

Patentee after: Co., Ltd. Suo Si future

Address before: Japan Osaka kamato City

Patentee before: Matsushita Electric Industrial Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050323

Termination date: 20201211

CF01 Termination of patent right due to non-payment of annual fee