CN105843661B - 一种面向主机系统的代码重定位方法及其系统 - Google Patents

一种面向主机系统的代码重定位方法及其系统 Download PDF

Info

Publication number
CN105843661B
CN105843661B CN201610173680.6A CN201610173680A CN105843661B CN 105843661 B CN105843661 B CN 105843661B CN 201610173680 A CN201610173680 A CN 201610173680A CN 105843661 B CN105843661 B CN 105843661B
Authority
CN
China
Prior art keywords
code
line
pitching pile
lines
file
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.)
Active
Application number
CN201610173680.6A
Other languages
English (en)
Other versions
CN105843661A (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.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
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 Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN201610173680.6A priority Critical patent/CN105843661B/zh
Publication of CN105843661A publication Critical patent/CN105843661A/zh
Application granted granted Critical
Publication of CN105843661B publication Critical patent/CN105843661B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

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

Abstract

本发明提供一种面向主机系统的代码重定位方法,在获得了以插桩代码进行标识的第一中间文件之后,将第一中间文件中的源代码进行标准C函数的展开,从而获得了按照代码行展开的第二中间文件,之后,进行代码行的语法分析时,对抽象语义树上的各节点进行了代码行数的标记,这样,确保了中间语言代码与源代码之间的精确映射,在后续的代码优化和机器指令生成中,仍能确保这种精确的映射关系,从而,实现了机器指令与源代码之间的精确映射关系,实现调试过程中的代码精确定位。

Description

一种面向主机系统的代码重定位方法及其系统
技术领域
本发明涉及计算机程序编译领域,特别涉及一种面向主机系统的代码重定位方法及系统。
背景技术
代码重定位技术被广泛应用于调试器中,在调试过程中的目标代码通常需要附加调试信息,调试信息是在编译器生成机器码时一起产生,代表着可执行代码和源代码之间的关系,这个信息以预定义的格式进行编码,并同机器码一起存储,在可执行代码中对源代码到机器码做全部映射。
调试信息可以按照可读的形式进行解读,其在调试过程中起到非常重要的作用,例如,当在某一行上设定断点时,利用调试信息中的行信息找到实际应该陷入的地址;当某个指令引起段错误时,利用调试信息中的行信息找到源代码中的对应行号,以便于进行修改。可以看到,调试信息中的行信息可以在源代码与机器码之间建立双向的对应关系,便于程序的调试。
在现有技术面向主机系统的代码重定位方法中,在生成调试器用的可执行代码时,仅对静态编译类语言源代码,如C、C++等进行载入,并在载入时记载源代码的行信息,然而,静态编译类源代码中包含有头文件以及宏定义等代码,这些代码在预处理中都会进行展开,会影响源代码的行数,这样,会导致源代码与机器码之间建立的双向对应关系并不精确,在后续调试过程中,不能够精确的定位到源代码中的具体错误的行号处。
此外,在银行业应用的主机系统为主流的IBM产品,由于行业应用的特殊背景,在金融系统中,利用C语言开发的源代码中,通常还包括数据库操作代码以及进行联机交易过程中所需要的对主机CICS(Customer Information Control System,客户信息控制系统)相关的操作代码,而现有技术中,并没有对这方面进行响应的代码重定位处理,使得调试过程不易进行错误定位,导致调试效率低。
发明内容
有鉴于此,本发明的目的在于提供一种面向主机系统的代码重定位方法及其系统,实现精确定位。
为实现上述目的,本发明有如下技术方案:
一种面向主机系统的代码重定位方法,包括:
S01,对源代码按照语句行或语句块进行插桩,以获得第一中间文件,插桩代码包括助记符和行数标识;
S02,至少将第一中间文件中的头文件和宏定义进行标准C函数的展开,以获得第二中间文件;
S03,对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记,而后,生成中间语言代码;
S04,对中间语言代码进行代码优化;
S05,基于优化后的中间语言代码,生成机器指令。
可选地,在步骤S02中,还包括:将第一中间文件中的SQL语句和/或CICS语句进行标准C函数的展开。
可选地,对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记的步骤包括:
对第二中间文件中的代码行逐行进行语法分析,生成抽象语义树,并记录插桩代码所在的代码行数,对一个代码行进行语法分析的步骤包括:对代码行进行语法分析后,在该代码行上创建节点,并以该节点向前遍历,直到遇到插桩代码为止,向前遍历的行数与插桩代码所在代码行的行数之和作为该代码行的代码行数,并标记在该代码行。
可选地,对中间语言代码进行代码优化包括中间语言代码的移动、合并、删除或展开。
此外,本发明还提供了一种面向主机系统的代码重定位系统,包括:
插桩单元,用于对源代码按照语句行或语句块进行插桩,以获得第一中间文件,插桩代码包括助记符和行数标识;
展开单元,用于至少将第一中间文件中的头文件和宏定义进行标准C函数的展开,以获得第二中间文件;
前端映射单元,用于对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记,而后,生成中间语言代码;
后端映射单元,用于对中间语言代码进行代码优化;
代码生成单元,用于基于优化后的中间语言代码,生成机器指令。
可选地,展开单元还用于将第一中间文件中的SQL语句和/或CICS语句进行标准C函数的展开。
可选地,前端映射单元中,对第二中间文件中的代码行逐行进行语法分析,生成抽象语义树,并记录插桩代码所在的代码行数,对一个代码行进行语法分析的步骤包括:对代码行进行语法分析后,在该代码行上创建节点,并以该节点向前遍历,直到遇到插桩代码为止,向前遍历的行数与插桩代码所在代码行的行数之和作为该代码行的代码行数,并标记在该代码行。
可选地,对中间语言代码进行代码优化包括中间语言代码的移动、合并、删除和/或展开。
本发明实施例提供的面向主机系统的代码重定位方法及其系统,在获得了以插桩代码进行标识的第一中间文件之后,将第一中间文件中的源代码进行标准C函数的展开,从而获得了按照代码行展开的第二中间文件,之后,进行代码行的语法分析时,对抽象语义树上的各节点进行了代码行数的标记,这样,确保了中间语言代码与源代码之间的精确映射,在后续的代码优化和机器指令生成中,仍能确保这种精确的映射关系,从而,实现了机器指令与源代码之间的精确映射关系,实现调试过程中的代码精确定位。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例的面向主机系统的代码重定位方法的流程图;
图2示出了根据本发明实施例的面向主机系统的代码重定位系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1所示,本发明提出了一种代码重定位方法,面向主机系统,主要应用于银行等金融系统,主要利用C语言开发源代码。在该方法中,在获得了以插桩代码进行标识的第一中间文件之后,将第一中间文件中的源代码进行标准C函数的展开,从而获得了按照代码行展开的第二中间文件,之后,进行代码行的语法分析时,对抽象语义树上的各节点进行了代码行数的标记,这样,确保了中间语言代码与源代码之间的精确映射,在后续的代码优化和机器指令生成中,仍能确保这种精确的映射关系,从而,实现了机器指令与源代码之间的精确映射关系,实现调试过程中的代码精确定位。
为了更好地理解本发明的技术方案和技术效果,以下将结合流程图对具体的实施例进行详细的描述。
在步骤S01,对源代码按照语句行或语句块进行插桩,以获得第一中间文件,插桩代码包括助记符和行数标识。
在该步骤中,对源代码进行了插桩,插桩时按照语言逻辑进行,根据不同的需要,可以按照完整的语句块进行插桩,也可以按照语句行进行插桩。源代码中包括头文件、宏定义等标准C语言定义,以及SQL语句和CICS语句两种非标准C语言定义。在插桩之后,一方面实现了对源代码行数的标记,另一方面记录了源代码中头文件、宏定义以及SQL语句、CICS语句的相对位置。
在该实施例中,面向的主机系统为主流的IBM系统,该系统中主要利用C语言开发的源代码中,通常还包括数据库操作代码以及进行联机交易过程中所需要的对主机CICS(Customer Information Control System,客户信息控制系统)相关的操作代码。
插桩代码包括助记符和行数标识,该插桩代码为伪代码,在源代码中起到标识及行数记录的作用,助记符起到标识该处插入的为行信息的伪代码,助记符例如可以为@line,行数标识可以用数字表示,行数标识的数字可以为代码行的实际行数,可以在源代码中的语句块或语句行之前插入插桩代码,语句块为可以完整表达语义的一行或多行语句组成,一般具有固定的表达方式,如根据关键字符、起始和结束成对出现的函数等来实现语义行的识别,关键字符例如‘;’、‘/’等。语句行为表达一个语义的代码行,通常为一个函数表达。以下以一段源代码为例,对该段源代码进行插桩,以便于更好地理解本发明实施例的插桩步骤。
可以看到,在该段代码中,以@line+行数进行插桩,在完整的语句块或语句行之前进行插桩代码的插入,在该具体的代码中,#ifdef MVS至#endif为一段完整的语句块,在其起始处插入插桩代码@line 1,之后在int main函数之前插入插桩代码@line 1,插桩代码@line 9至插桩代码@line 13之间的语句块为CICS的执行语句,而@line 6、@line 7、@line8、@line 13、@line 17等都是在语句行之前进行的插桩代码的插入,这样,就在该段源代码中按照语义行进行了插桩,插桩后的代码记做第一中间文件。以上仅为示例,根据具体的需要,可以在需要的语句块或语句行之前插入插桩代码。
在步骤S02,至少将第一中间文件中的头文件和宏定义进行标准C函数的展开,以获得第二中间文件。
在该步骤中,将插桩后的源代码,即第一中间文件,进行标准C函数的展开,在展开时,至少将头文件和宏定义进行标准C函数的展开,以便于在按照代码行进行后续的步骤,以实现精确的映射。更优地,可以进一步将第一中间文件中的SQL语句和/或CICS语句进行标准C函数的展开,这样,对源代码中的关键的语句都进行了展开,获得了包含代码行的具有插桩代码的第二中间文件。
在进行标准C函数的展开时,是将头文件和宏定义、SQL语句和/或CICS语句拆分成表示语法的代码行。
具体的,对于头文件,是将第一中间文件中的头文件替换为头文件的实际代码,在第一中间文件头文件所在的位置处将头文件进行替换,这样,头文件就进行了标准C函数的展开,以代码行的形式出现在原头文件所在位置处。
对于宏定义,同头文件的处理,是将第一中间文件中宏定义替换为宏定义的实际代码,在第一中间文件宏定义所在的位置处将宏定义进行替换,这样,宏定义就进行了标准C函数的展开,以代码行的形式出现在原宏定义所在位置处。
对于CICS语句的C函数翻译,主要是进行了参数传递和函数调用,从而将CICS语句展开为标准C函数。以如下CICS语句为例子,进行CICS语句标准C函数展开的说明:
EXEC CICS WRITEQ TS QUEUE(“ZHTST”)FROM(aa)LENGTH(strlen(aa));
将该CICS语句进行参数传递和函数调用之后,实现了标准C函数的展开,在展开之后,变为如下多条语句:
以如下SQL语句为例子,进行SQL语句标准C函数展开的说明:
该SQL语句通过代码填充和结构体定义后,实现了标准C函数的展开,在展开之后,变为如下多条语句:
这样,在进行该步骤之后,实现了对源代码的展开,展开后的源代码称作第二中间文件,该第二中间文件仍以插桩代码标识源代码之间的相对位置关系,保持与源代码的精确映射关系。
在步骤S03,对第二中间文件进行语法分析,生成抽象语义树,抽象语义树上的各节点进行了代码行数的标记,而后,生成中间语言代码。
语法分析是编译器的前端分析步骤,以生产抽象语义树,进而生成中间语言代码。在本发明中,在生成的抽象语义树上,各节点还进行了代码行数的标记,由于插桩代码代表了与源代码行的位置,而在抽象语义树上的代码行数标记实现了与插桩代码的映射关系,从而,实现了抽象语义树与源代码的精确映射。
在具体的实施例中,可以采用不同的方式进行抽象语义树上各节点的代码行数的标记,例如先进行语法分析,在生成抽象语义树之后,在进行各节点行数的标记,或者,先进行代码行数的标记,而后进行语法分析,再生成抽象语法树。
在本发明优选的实施例中,在进行语法分析的同时进行代码行数的标记,具体的:对第二中间文件中的代码行逐行进行语法分析,生成抽象语义树,并记录插桩代码所在的代码行数,对一个代码行进行语法分析的步骤包括:对代码行进行语法分析后,在该代码行上创建节点,并以该节点向前遍历,直到遇到桩代码为止,向前遍历的行数与插桩代码所在代码行的行数之和作为该代码行的代码行数,并标记在该节点。
以下以一个具体的实施例代码分析为例进行说明,如下述代码所示,当对插桩代码@line num下的代码行进行分析时,先记录插桩代码@line num所在代码行的代码行数,以行a2为例,在对该行分析结束后,在抽象语义树上建立一个节点‘==’,同时,向前进行遍历,每遍历一行,计数器的值增加1,直到遇到插桩代码@line num为止,这样,计数器中记载了该节点所在行与插桩代码之间的相对行数的数值,那么,将插桩代码@line num所在代码行的代码行数与计数器的值的和就是行a2的代码行数,将该代码行数标记在该行中,该代码行数标记了该代码行与插桩代码之间的相对位置关系。
在生成了标记有节点所在行的代码行数的抽象语义树之后,获得的映射关系为以插桩代码为相对位置的源代码行对应的抽象语义树内的多个节点,通常地,抽象语义树内的操作符合节点、内存访问操作被映射为功能指令,而其中的变量、常量节点被映射为功能指令中的操作数,在本发明实施例中,同一条中间语言指令可能是由一个和多个抽象语义树内的节点构成,即可能对应多个源代码行。具体地,通过无关节点删除、虚拟寄存器分配、节点匹配、抽象语义树遍历,实现了中间语言代码的生成。而由于抽象语义树的各节点的代码行数记录了与插桩代码的相对位置关系,在进行中间语言代码生成之后,这种相对位置关系仍然保持。
在步骤S04,对中间语言代码进行代码优化。
代码优化是编译器后端分析的步骤,通常地,进行待优化是以降低程序运行时所占用的时钟周期为目的的,在现有技术中,在优化过程中的基本块合并、软件流水带来的指令数的降低或膨胀,这些都会打破优化前基本块与代码行之间的满映射关系,降低中间语言指令与源代码行之间的映射关系的准确度。
在本发明实施例中,对于代码优化的方法,主要是基于控制流图和数据依赖图进行分析,在优化过程中,包括中间语言代码的移动、合并、删除或展开这四个方面,而基于本发明上述获得的中间语言代码,经过代码优化后,仍能保持优化后的中间语言代码与源代码的映射关系,详细说明如下。
中间语言指令之间由于虚拟寄存器导致的数据依赖关系,构成了数据依赖图,而由于分支控制指令将一条或多条中间语言指令划分为基本块,这些块与块之间的调用关系,构成了控制流图。
在进行代码优化时,若进行了代码移动,也就是说,中间语言代码沿着控制流图的边进行移动,由于中间语言代码中添加了与源代码之间的行映射关系,即使进行了代码移动,也不会影响到他们之间的精确映射关系;若进行了代码合并,新生产的中间语言代码将继承进行合并之前所有的中间语言代码与源代码之间的映射关系,也就是说,保留了中间语言代码与源代码之间的映射关系;若进行了代码删除,而未被删除的中间语言代码仍保留着与源代码之间的映射关系。对于代码的展开,通常是软件流水通过循环展开,会导致控制流图节点增加,在基本块膨胀的过程中,中间语言代码与源代码之间的映射关系仍然是保留的。可以看到,在本发明的实施例中,由于插桩代码以及中间语言代码中各节点代码行数的标记,使得中间语言代码与源代码之间存在精确的映射关系,在后续的代码优化过程中,这种映射关系也不会被破坏。
在步骤S05,基于优化后的中间语言代码,生成机器指令。
在该步骤中,将优化后的中间语言代码生成目标处理器上支持的机器指令。
通常地,由于中间语言代码中使用的是虚拟寄存器,而最终生成的机器指令却是目标处理器上支持的物理寄存器,而物理寄存器的数量是有限的,因此,会导致寄存器重分配的操作,这会导致指令条数的增加,需要添加这些指令与源代码的映射关系。而在本发明实施例中,对于这些新增的指令,可以根据所在基本块内与其出现数据依赖的指令,继承与源代码行之间的映射关系,从而在生成机器指令的步骤中,仍能保证与源代码行之间的精确映射。
至此,完成了本发明实施例的面向主机系统的代码重定位方法。
此外,本发明还提供了一种实现上述方法的面向主机系统的代码重定位系统,参考图2所示,包括:
插桩单元100,用于对源代码按照语句行或语句块进行插桩,以获得第一中间文件,插桩代码包括助记符和行数标识;
展开单元110,用于至少将第一中间文件中的头文件和宏定义进行标准C函数的展开,以获得第二中间文件;
前端映射单元120,用于对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记,而后,生成中间语言代码;
后端映射单元130,用于对中间语言代码进行代码优化;
代码生成单元140,用于基于优化后的中间语言代码,生成机器指令。
进一步地,展开单元120还用于将第一中间文件中的SQL语句和/或CICS语句进行标准C函数的展开。
进一步地,前端映射单元130中,对第二中间文件中的代码行逐行进行语法分析,生成抽象语义树,并记录插桩代码所在的代码行数,对一个代码行进行语法分析的步骤包括:对代码行进行语法分析后,在该代码行上创建节点,并以该节点向前遍历,直到遇到插桩代码为止,向前遍历的行数与插桩代码所在代码行的行数之和作为该代码行的代码行数,并标记在该代码行。
进一步地,对中间语言代码进行代码优化包括中间语言代码的移动、合并、删除和/或展开。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块或单元可以是或者也可以不是物理上分开的,作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的优选实施方式,虽然本发明已以较佳实施例披露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

Claims (6)

1.一种面向主机系统的代码重定位方法,其特征在于,包括:
S01,对源代码按照语句行或语句块进行插桩,以获得第一中间文件,插桩代码包括助记符和行数标识;
S02,至少将第一中间文件中的头文件和宏定义进行标准C函数的展开,以获得第二中间文件;
S03,对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记,而后,生成中间语言代码,所述对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记的步骤包括:对第二中间文件中的代码行逐行进行语法分析,生成抽象语义树,并记录插桩代码所在的代码行数,对一个代码行进行语法分析的步骤包括:对代码行进行语法分析后,在该代码行上创建节点,并以该节点向前遍历,直到遇到插桩代码为止,向前遍历的行数与插桩代码所在代码行的行数之和作为该代码行的代码行数,并标记在该代码行;
S04,对中间语言代码进行代码优化;
S05,基于优化后的中间语言代码,生成机器指令。
2.根据权利要求1所述的面向主机系统的代码重定位方法,其特征在于,在步骤S02中,还包括:将第一中间文件中的SQL语句和/或CICS语句进行标准C函数的展开。
3.根据权利要求1所述的面向主机系统的代码重定位方法,其特征在于,对中间语言代码进行代码优化包括中间语言代码的移动、合并、删除或展开。
4.一种面向主机系统的代码重定位系统,其特征在于,包括:
插桩单元,用于对源代码按照语句行或语句块进行插桩,以获得第一中间文件,插桩代码包括助记符和行数标识;
展开单元,用于至少将第一中间文件中的头文件和宏定义进行标准C函数的展开,以获得第二中间文件;
前端映射单元,用于对第二中间文件进行语法分析,生成抽象语义树,并记录插桩代码所在代码行数,抽象语义树上的各节点进行了代码行数的标记,而后,生成中间语言代码,所述前端映射单元中,对第二中间文件中的代码行逐行进行语法分析,生成抽象语义树,并记录插桩代码所在的代码行数,对一个代码行进行语法分析的步骤包括:对代码行进行语法分析后,在该代码行上创建节点,并以该节点向前遍历,直到遇到插桩代码为止,向前遍历的行数与插桩代码所在代码行的行数之和作为该代码行的代码行数,并标记在该代码行;
后端映射单元,用于对中间语言代码进行代码优化;
代码生成单元,用于基于优化后的中间语言代码,生成机器指令。
5.根据权利要求4所述的面向主机系统的代码重定位系统,其特征在于,展开单元还用于将第一中间文件中的SQL语句和/或CICS语句进行标准C函数的展开。
6.根据权利要求4所述的面向主机系统的代码重定位系统,其特征在于,对中间语言代码进行代码优化包括中间语言代码的移动、合并、删除和/或展开。
CN201610173680.6A 2016-03-24 2016-03-24 一种面向主机系统的代码重定位方法及其系统 Active CN105843661B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610173680.6A CN105843661B (zh) 2016-03-24 2016-03-24 一种面向主机系统的代码重定位方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610173680.6A CN105843661B (zh) 2016-03-24 2016-03-24 一种面向主机系统的代码重定位方法及其系统

Publications (2)

Publication Number Publication Date
CN105843661A CN105843661A (zh) 2016-08-10
CN105843661B true CN105843661B (zh) 2019-03-29

Family

ID=56583439

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610173680.6A Active CN105843661B (zh) 2016-03-24 2016-03-24 一种面向主机系统的代码重定位方法及其系统

Country Status (1)

Country Link
CN (1) CN105843661B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11151018B2 (en) * 2018-04-13 2021-10-19 Baidu Usa Llc Method and apparatus for testing a code file
CN117111951B (zh) * 2023-08-23 2024-03-15 北京云枢创新软件技术有限公司 基于使用链的宏文本展开方法、电子设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630049A (en) * 1994-11-30 1997-05-13 Digital Equipment Corporation Method and apparatus for testing software on a computer network
CN101576850A (zh) * 2009-06-10 2009-11-11 南京航空航天大学 一种改进的面向宿主的嵌入式软件白盒测试方法
CN101872325A (zh) * 2010-06-25 2010-10-27 北京航空航天大学 一种基于谓词执行序列的软件动态缺陷定位方法
CN102214142A (zh) * 2011-07-15 2011-10-12 南京大学 无痕可管理的源代码手动定义标志插桩方法
CN102622295A (zh) * 2012-02-17 2012-08-01 北京航空航天大学 一种基于谓词执行信息分析的自适应软件缺陷定位方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630049A (en) * 1994-11-30 1997-05-13 Digital Equipment Corporation Method and apparatus for testing software on a computer network
CN101576850A (zh) * 2009-06-10 2009-11-11 南京航空航天大学 一种改进的面向宿主的嵌入式软件白盒测试方法
CN101872325A (zh) * 2010-06-25 2010-10-27 北京航空航天大学 一种基于谓词执行序列的软件动态缺陷定位方法
CN102214142A (zh) * 2011-07-15 2011-10-12 南京大学 无痕可管理的源代码手动定义标志插桩方法
CN102622295A (zh) * 2012-02-17 2012-08-01 北京航空航天大学 一种基于谓词执行信息分析的自适应软件缺陷定位方法

Also Published As

Publication number Publication date
CN105843661A (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
CN102804147B (zh) 执行abap源代码的代码检查的代码检查执行系统
CN101464905B (zh) 一种网页信息抽取的系统及方法
US7610545B2 (en) Annotations for tracking provenance
US7853924B2 (en) Systems and methods for processing non-functional commentary of computer source code
CN103597469B (zh) 集成开发环境中的实况浏览器工具
Dit et al. A dataset from change history to support evaluation of software maintenance tasks
JP6090850B2 (ja) ソースプログラム解析システム、ソースプログラム解析方法およびプログラム
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN104246775A (zh) 文本挖掘系统、文本挖掘方法和程序
CN106777036B (zh) 一种数据渲染方法及数据渲染系统
CN108846069B (zh) 一种基于标记语言的文档执行方法及装置
US9524366B1 (en) Annotations to identify objects in design generated by high level synthesis (HLS)
CN104391787A (zh) 一种针对目标方法的监控、热切入方法及装置
US10853224B2 (en) Indexing and searching a time-travel trace for arbitrary length/arbitrary alignment values
CN110442371A (zh) 一种发布代码的方法、装置、介质及计算机设备
US8478953B2 (en) Buffer snapshots from unmodifiable data piece tables
CN102236573A (zh) 用于类型化程序设计语言的名称绑定可扩展性
CN110597771A (zh) 快速导入dbf文件的方法、装置、设备及可读存储介质
CN106030532A (zh) 用于事务存储器程序的软件回放器
CN105843661B (zh) 一种面向主机系统的代码重定位方法及其系统
CN101201750B (zh) 利用语法词法分析工具为编解码提供数据的方法
CN104462272A (zh) 搜索需求分析方法和装置
CN109460236B (zh) 程序版本构建和检查方法及系统
US20170249287A1 (en) Hierarchical identifiers for html elements
CN110989998A (zh) 动态sql语句写入代码的方法、程序代码执行方法及平台

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant