CN1910551A - 用于解码可执行代码的方法和相关设备 - Google Patents

用于解码可执行代码的方法和相关设备 Download PDF

Info

Publication number
CN1910551A
CN1910551A CNA2005800022936A CN200580002293A CN1910551A CN 1910551 A CN1910551 A CN 1910551A CN A2005800022936 A CNA2005800022936 A CN A2005800022936A CN 200580002293 A CN200580002293 A CN 200580002293A CN 1910551 A CN1910551 A CN 1910551A
Authority
CN
China
Prior art keywords
code
subdivision
shuffling
link
runtime
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
CNA2005800022936A
Other languages
English (en)
Other versions
CN100533379C (zh
Inventor
C·I·金
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.)
Nytell Software LLC
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1910551A publication Critical patent/CN1910551A/zh
Application granted granted Critical
Publication of CN100533379C publication Critical patent/CN100533379C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/44557Code layout in executable memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Circuits Of Receivers In General (AREA)
  • Executing Machine-Instructions (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明提供了一种用于解码处理系统(例如,运行期操作系统)中的可执行代码(包括运行期的位洗牌代码)的方法和相关设备以及控制程序,并且包括下列步骤:将代码划分成多个子部分,标识能够在所述运行期之前被位洗牌的代码的子部分并且在运行期之前对所述已标识的子部分进行位洗牌以便减少在运行期所需的位洗牌。

Description

用于解码可执行代码的方法和相关设备
技术领域
本发明涉及一种用于解码诸如VLIW处理器之类的处理器中的可执行代码的方法和相关设备,特别是在尤其用于加载和再定位存储器中的处理器可执行代码的运行期(run-time)操作系统中。
背景技术
随着采用多媒体处理的增加,已经开发了能够支持大而复杂的多媒体应用的大功率处理器。
在关于这类应用的可执行代码能够被运行之前,有必要将可执行映像加载到存储器中并且随后再定位。这种再定位是二进制打补丁(binary-patching)的过程以便将可执行代码中的地址的引用与实际加载的地址空间相配。对这种地址的引用通常可以包括可执行文本片段中的决策树的起始地址,或者data、datal或bss片段中的数据地址。
可从Philips那里购买到TriMedia处理器是VLIW处理器的例子。TriMedia可执行代码是如上所述的这类代码的例子,并且在可执行代码打补丁之后,包含TriMedia可执行代码的文本片段必须被位洗牌(bit-shuffled)以便允许处理器以高速缓存高效方式解码可执行代码,特别地是在运行期。然而,这种位洗牌包括密集存储器、计算昂贵的操作,并且也将发现与正在加载的程序尺寸成比例。
当从存储器中加载可执行代码时,比如例如从高速缓存的文件系统中加载,人们发现上述的位洗牌操作形成经受的加载时间的主要组成部分。
在运行期操作系统中,比如在有人需要频繁地加载可执行代码的情况下,或者在大静态链接程序将被加载的情况下,这种位洗牌操作被认为表示对性能的重要限制。
发明内容
本发明设法提供一种用于解码运行期操作系统中的可执行代码的方法和相关设备,并且显示出优于已知这种方法和设备的优点。
根据本发明的第一方面,提供了一种用于解码包括位洗牌代码的处理系统中的可执行代码的方法,并且包括下列步骤:将代码划分成多个子部分;标识能够在处理之前被位洗牌的代码的子部分;以及在处理之前对所述标识子部分进行位洗牌以便减少所需的处理位洗牌。
本发明能够被优选地应用于预洗牌二进制代码的处理阶段,例如在稍后的链接时间段期间链接预洗牌的二进制目标代码。
在一个特定设备中,所述处理系统包括运行期操作系统并且包含在运行期的位洗牌以及标识能够在运行期之前被位洗牌的子部分。
优选地,所述一部分代码的预洗牌可能导致在20-25%的数量级内运行期洗牌延迟的减少并且优选地用来增加可执行代码加载和再定位时间。
因此能够实现运行期性能改善并且将会认识到的是,本发明证明当处理TriMedia程序和可执行代码时尤其是有利的。
优选地,所述方法包括下列步骤:在链接时,产生用于加载和再定位代码的再定位补丁表。
此外,在上述链接的末尾检查再定位补丁表以便确定打补丁代码中的哪一个地址。
优选地,所述方法包括下列步骤:产生将打补丁的子部分的记录并且在运行期按位图(bitmap)的形式洗牌。
本发明也可以包括下列步骤:读取程序加载器内的代码元素以供执行所述程序。
接着,程序加载器能够被设置成读取再定位补丁表和可执行代码并且在可执行代码内写回所述结果。
根据本发明的另一个方面,提供了用于解码处理器中的可执行代码的解码设备,并且包括用于位洗牌代码的装置,所述设备还包括:用于将代码划分成多个子部分的装置;标识能够在处理之前被位洗牌的代码的子部分的装置;和在处理之前对所述标识子部分进行位洗牌以便减少处理所需的位洗牌的装置。
优选地,所述处理器包括运行期操作系统。
优选地,所述应用包括用于产生再定位补丁表的装置,所述补丁表用于在链接时加载和再定位代码。
此外,本发明能够包括用于在链接时位洗牌已标识的子部分的装置。
优选地,提供用于产生将在运行期按位图的形式打补丁和洗牌的子部分的记录的装置。
在一个实施例中,包含程序加载器并且将其设置成读取再定位补丁表和可执行代码并且在可执行代码内写回结果。
本发明还提供一种用于这种解码的控制和用于提供上面所示的这种方法步骤的计算机程序单元和产品。
附图说明
在下文中仅仅以举例的方式参照附图进一步描述本发明,其中:
图1包括举例说明根据本发明实施例的程序可执行映像的产生的示意性框图;
图2是举例说明加载和再定位图1的程序可执行映像的示意性框图。
具体实施方式
正如将从本发明的上述定义认识到的是,有利地操纵位洗牌操作以便相对于所述代码的子部分实施洗牌操作,其中所述子部分优选地包括高速缓存尺寸块。例如,供TriMedia处理之用,特别是TriMedia1300,所述代码能够按64字节的块的形式被分解为指令高速缓存尺寸块。
通过采用本发明,人们发现可执行映像中的75-80%数量的高速缓存尺寸块需要在运行期打补丁和位洗牌。正如将认识到的是,这留下20-25%未打补丁的,从而正如本发明确定的那样,能够在运行期之前被位洗牌,特别是当程序正在被链接以形成可执行映像时。
由此,注意:这种未打补丁的64个字节块的预洗牌优选地用于按通常经验经减少运行期洗牌开销的20-25%,从而导致可执行加载和再定位时间方面的优势增加。
注意:本发明优选地在运行期之前并且在程序正在被链接时提供位洗牌。因此,在链接时,链接器优选地被设置成产生用于在运行期加载和再定位可执行代码的再定位补丁表。
在这种链接的末尾,链接器被设置成检查再定位补丁表以确定文本片段中的哪一个地址接着被打补丁。通过标识这种已打补丁的片段,很容易识别出64字节块中的哪一块需要在运行期被打补丁和洗牌。
不受打补丁影响的64字节的块接着在链接时被预洗牌,哪些块将在运行期被打补丁和洗牌的记录是由链接器按位图的形式产生的,这有利于被添加到可执行映像。
这种位图可以优选地按表示可执行文本片段中的64字节块的每一单个位排列。位图中的每一位接着充当对于加载器来说容易识别是否位洗牌与它相关联的特定的64字节块的标志。由此,位图中的第N位表示可执行文本片段中的第N个64字节块。
因此,对于N字节的可执行文本片段,需要位图中的(N+63)/64位。利用8位的字节,这仅仅将(N+63)/512添加到整个可执行代码。
现在转向图1,以示意性块的形式举例说明了根据本发明的用于产生具有预洗牌部分代码的程序可执行映像的设备。
图1中举例说明的设备10包括程序链接器12,其被设置成读取对象文件14A、14B以便将所述对象链接在一起并由此形成所需的程序可执行映像。
根据这个举例说明的本发明的实施例,并且在链接过程期间,在链接器12内形成将被打补丁的文本片段的地址的表16并且接着利用文本片段预洗牌器20通过参考文本片段补丁地址18的表16来对在运行期不需要打补丁的文本片段的64字节块进行预洗牌。
当结束这个过程时,可执行代码22能够继而沿箭头B的方向被读出并且例如包含:a.out或ELF首部的可执行首部24、指示文本片段的哪一个64字节块仍需要在运行期洗牌的洗牌位图26、设置成能在运行期打补丁文本和数据段的再定位补丁表28、文本和数据片段30,32以及BSS片段34。
现在转向图2,将会认识到如何有利地根据需要加载图1中举例说明的可执行代码22。
如上所述,所述可执行代码22包括相同的片段,尤其是洗牌位图26,标识再定位补丁表28以及文本片段30以便于引用。
TriMedia可执行文本片段的加载和再定位按如下进行。
程序加载器36被设置用于按箭头B和C所示的那样从可执行映像22中读取再定位补丁表和洗牌位图以及可执行文本代码并且用来按箭头D所示的那样再定位图像以及将此作为再定位后的文本片段30写回。
程序加载器36接着按箭头A指示的那样逐位读取洗牌位图,并且这确定是否文本片段的每一个64字节块都需要被程序加载器36内的文本片段洗牌器38洗牌。如果识别出正在考虑的片段需要洗牌,则文本片段洗牌器38能够按箭头C所示的从文本片段中读取64字节块然后对它进行洗牌,并按箭头D所示的将其写回。
正如将会认识到的是,本发明带来的优点是可适用于供运行期操作系统内所需的任何可执行代码(诸如必须在执行之前加载和再定位的TriMedia可执行代码)使用。
本发明不仅应用于程序可执行代码而且还应用于可运行库,比如TriMedia动态链接库(DLL)。
正如将认识到的是,程序和库的加载通常是由例如pSOS实时操作系统中的加载器库担任的,或者是由诸如在UNIK类操作系统(比如,Linux)或实时操作系统的整体内核中的二进制加载器函数担任的。因此,将会认识到的是,本发明的尤其有利的使用就是与必须加载和再定位TriMedia可执行代码的操作系统一起使用。
本发明不局限于上述实施例的细节。具体来讲,所述原理不局限于与运行期操作系统一起使用而是同样地例如适用于预洗牌的二进制的处理阶段,比如在稍后链接时段期间列出预洗牌的二进制目标代码。

Claims (30)

1.一种用于解码包括位洗牌代码的处理器系统中的可执行代码的方法,并且包括下列步骤:
-将代码划分成多个子部分;
-标识能够在处理之前被位洗牌的代码的子部分;以及
-在处理之前对所述标识的子部分进行位洗牌以便减少所需的处理位洗牌。
2.根据权利要求1所述的方法,其中所述系统包括运行期操作系统,并且所述已标识的子部分在运行期之前被位洗牌。
3.根据权利要求2所述的方法,并且包括下列步骤,在链接时产生用于加载和再定位代码的再定位补丁表。
4.根据权利要求3所述的方法,并且包括下列步骤,在上述链接的末尾检查再定位补丁表以便确定代码中的哪一个地址被打补丁。
5.根据权利要求2、3或4所述的方法,其中所述已标识的子部分在链接时被位洗牌。
6.根据权利要求2-5中任何一项或多项所述的方法,并且包括下列步骤:产生将在运行期按位图的形式打补丁和洗牌的子部分的记录。
7.根据权利要求6所述的方法,并且包括下列步骤:将所述位图添加到可执行代码。
8.根据权利要求2-7中任何一项或多项所述的方法,并且包括下列步骤:标识不需要在运行期打补丁的代码的子部分以便标识预洗牌的子部分。
9.根据权利要求2-8中任何一项或多项所述的方法,并且包括下列步骤:读取程序加载器内的代码元素以执行程序。
10.根据权利要求9所述的方法,其中程序加载器被设置成读取再定位补丁表和可执行代码并且在可执行代码内写回结果。
11.根据权利要求2-10中任何一项或多项所述的方法,其中所述可执行代码包括具有包含TriMedia可执行代码的文本片段的TriMedia程序。
12.根据权利要求2-11中任何一项或多项所述的方法,其中代码的每一个子部分包括高速缓存尺寸块。
13.根据权利要求12所述的方法,其中每一个高速缓存尺寸块包括64字节的块。
14.根据权利要求2-13中任何一项或多项所述的方法,用于需要在执行之前加载和再定位的任何形式的TriMedia可执行映像。
15.根据权利要求1所述的方法,并且包括在稍后链接时段期间的预洗牌代码的链接。
16.用于解码处理器中的可执行代码并且包括用于位洗牌代码的装置的解码设备,所述设备还包括:
-用于将代码划分成多个子部分的装置;
-标识能够在处理之前被位洗牌的代码的子部分的装置;和
-在处理之前对所述标识子部分进行位洗牌以便减少所需的处理位洗牌的装置。
17.根据权利要求16所述的设备,其中所述系统包括运行期操作系统,并且已标识的子部分是那些能够在运行期之前被位洗牌的子部分。
18.根据权利要求17所述的设备,并且包括用于在链接时产生用于加载和再定位代码的再定位补丁表的装置。
19.根据权利要求17或18所述的设备,并且包括用于在链接时位洗牌已标识的子部分的装置。
20.根据权利要求17、18或19所述的设备,并且包括用于产生将在运行期按位图的形式打补丁和洗牌的子部分的记录的装置。
21.根据权利要求17、18、19或20所述的设备,并且包括代码元素被读取到其中以供程序执行的程序加载器。
22.根据权利要求21所述的设备,其中程序加载器被设置成读取再定位补丁表和可执行代码并且在可执行代码内写回结果。
23.根据权利要求17所述的设备,其中代码的每一个子部分包括高速缓存尺寸块。
24.根据权利要求17所述的设备,其中每一个高速缓存尺寸块包括64字节的块。
25.根据权利要求16所述的设备,并且被设置用于在稍后链接时间段期间链接预洗牌代码。
26.一种包括计算机程序代码装置的计算机程序单元,所述计算机程序代码装置令计算机执行解码包括位洗牌代码的处理器中的可执行代码的过程,并且用于:
-将代码划分成多个子部分;
-标识能够在处理之前被位洗牌的代码的子部分;以及
-在处理之前对所述标识的子部分进行位洗牌以便减少所需的处理位洗牌。
27.根据权利要求26所述的计算机程序单元,并且被设置成控制运行期操作系统中的解码。
28.根据权利要求26所述的计算机程序单元,并且被设置成控制在稍后链接时间段期间的预洗牌代码的链接。
29.一种包括计算机可读介质并且包括如权利要求26、27或28所述的程序单元的计算机程序产品。
30.一种包括如权利要求26、27或28所述的计算机程序单元的计算机可读介质。
CNB2005800022936A 2004-01-13 2005-01-11 用于解码可执行代码的方法和相关设备 Active CN100533379C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0400660.7A GB0400660D0 (en) 2004-01-13 2004-01-13 Method and related device for use in decoding executable code
GB0400660.7 2004-01-13

Publications (2)

Publication Number Publication Date
CN1910551A true CN1910551A (zh) 2007-02-07
CN100533379C CN100533379C (zh) 2009-08-26

Family

ID=31503817

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800022936A Active CN100533379C (zh) 2004-01-13 2005-01-11 用于解码可执行代码的方法和相关设备

Country Status (8)

Country Link
US (1) US7334111B2 (zh)
EP (1) EP1709533B1 (zh)
JP (1) JP4751835B2 (zh)
CN (1) CN100533379C (zh)
AT (1) ATE401602T1 (zh)
DE (1) DE602005008196D1 (zh)
GB (1) GB0400660D0 (zh)
WO (1) WO2005069124A2 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0475137A (ja) * 1990-07-18 1992-03-10 Hitachi Ltd データ処理装置
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5862398A (en) * 1996-05-15 1999-01-19 Philips Electronics North America Corporation Compiler generating swizzled instructions usable in a simplified cache layout
US6131152A (en) * 1996-05-15 2000-10-10 Philips Electronics North America Corporation Planar cache layout and instruction stream therefor
WO1997043715A2 (en) * 1996-05-15 1997-11-20 Philips Electronics N.V. Processor with an instruction cache
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data

Also Published As

Publication number Publication date
ATE401602T1 (de) 2008-08-15
WO2005069124A2 (en) 2005-07-28
US20070162725A1 (en) 2007-07-12
JP2007520811A (ja) 2007-07-26
JP4751835B2 (ja) 2011-08-17
US7334111B2 (en) 2008-02-19
CN100533379C (zh) 2009-08-26
EP1709533B1 (en) 2008-07-16
EP1709533A2 (en) 2006-10-11
WO2005069124A3 (en) 2006-03-16
DE602005008196D1 (de) 2008-08-28
GB0400660D0 (en) 2004-02-11

Similar Documents

Publication Publication Date Title
US8424093B2 (en) System and method for updating antivirus cache
US7962959B1 (en) Computer resource optimization during malware detection using antivirus cache
US8108657B2 (en) Handling floating point operations
US7900202B2 (en) Identification of software execution data
US20040215914A1 (en) Systems and methods for multiprocessor scalable write barrier
CN1641612A (zh) 按照类型对中断计数的方法和装置
CN1234553A (zh) 减少编译代码中动态类初始化检查的代价的技术
US7506310B2 (en) Method and system for caching managed code for efficient execution on resource-constrained devices
CN1475909A (zh) 一种嵌入式系统软件补丁的实现和控制方法
US7213237B2 (en) Intermediate code preprocessing apparatus, intermediate code execution apparatus, intermediate code execution system, and computer program product for preprocessing or executing intermediate code
CN1504881A (zh) 爪哇执行设备和爪哇执行方法
CN1947094A (zh) 用于有条件地缩小可执行模块的系统和方法
US20130152071A1 (en) Stochastic Method for Program Security Using Deferred Linking
CN111240765B (zh) 一种linux压缩应用程序的加载方法
US11443833B2 (en) Data processing system and method
US7840789B2 (en) Data hiding in compiled program binaries for supplementing computer functionality
Weeks et al. Optimization of SAMtools sorting using OpenMP tasks
JP2010277440A (ja) プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
CN1910551A (zh) 用于解码可执行代码的方法和相关设备
CN1635471A (zh) 进度显示系统及方法
CN102402662B (zh) 使用反病毒缓存加速恶意软件检测的系统和方法
JP4484630B2 (ja) 可変長復号化装置および可変長復号化方法および再生システム
US20080022063A1 (en) Relocating of System Management Interface Code Within an Information Handling System
US8577936B2 (en) Fixup cache tool for object memory compaction in an information handling system
CN1269034C (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
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070824

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070824

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NITAI SOFTWARE CO., LTD.

Free format text: FORMER OWNER: KONINKL PHILIPS ELECTRONICS NV

Effective date: 20120321

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120321

Address after: Delaware

Patentee after: Nytell Software LLC

Address before: Holland Ian Deho Finn

Patentee before: Koninkl Philips Electronics NV