CN1178134C - 执行于板上系统内的中间对象代码程序的数据压缩方法 - Google Patents

执行于板上系统内的中间对象代码程序的数据压缩方法 Download PDF

Info

Publication number
CN1178134C
CN1178134C CNB998035882A CN99803588A CN1178134C CN 1178134 C CN1178134 C CN 1178134C CN B998035882 A CNB998035882 A CN B998035882A CN 99803588 A CN99803588 A CN 99803588A CN 1178134 C CN1178134 C CN 1178134C
Authority
CN
China
Prior art keywords
code
sequence
instruction
compression
command
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
CNB998035882A
Other languages
English (en)
Other versions
CN1292114A (zh
Inventor
U・P・苏尔茨
U·P·苏尔茨
G·米勒
C·孔塞
L·克劳森
C·瓜里
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.)
National Institute Of Information And Automation
Bull CP8 SA
Original Assignee
National Institute Of Information And Automation
Bull CP8 SA
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 National Institute Of Information And Automation, Bull CP8 SA filed Critical National Institute Of Information And Automation
Publication of CN1292114A publication Critical patent/CN1292114A/zh
Application granted granted Critical
Publication of CN1178134C publication Critical patent/CN1178134C/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/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction

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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及中间程序的数据压缩方法和系统。方法包括:在程序(1000)中搜索相同的序列(Si)并且计数每个序列(Si)出现的次数Ni;比较测试(1001)以寻找超过基准值的函数f(Ni)以产生(1003)特定代码(Ci)的特定指令,序列(Si)与其相关;将序列(Si)中的每个发生用中间程序中的特定代码(Ci)代替(1004)以生成与执行文件(FEX)相关的中间程序(FCC)。本发明可用于多应用便携式对象,例如微处理器卡、板上系统等。

Description

执行于板上系统内的中间对象代码程序的数据压缩方法
发明领域
本发明涉及压缩中间对象代码型程序的方法,程序可运行在提供数据处理资源的板上系统内,还涉及相应的压缩方法。
背景技术
近来,由于用于这些便携式对象的硬件和软件(具体而言是嵌入在后者中的应用程序,可以使它们运行一个或多个函数)不断得到优化,所以提供数据处理资源的板上系统可以完成更为复杂和数量更多的函数。板上系统的概念涵盖了所有便携式计算机系统,例如便携式对象、微处理器卡等,与普通的微计算机不同。
在微处理器卡(也称为芯片卡,如图1a所示与编译器结合使用以产生指令并与解释器连用从而可以使指令被微处理器运行,如图1b所示)中情况特别如此。通常情况下,如图1a所示,微处理器卡10包含与微处理器14、RAM存储器16、非易失存储器18(包括只读存储器18b和可编程存储器18a)链接的输入/输出系统12。所有这些单元通过总线与微处理器14链接。可以根据需要提供数据加密/解密模块20。
图1c示出了所有嵌入在非易失可编程存储器内的应用软件单元(例如电子钱包、电子商务或医疗保健等)、非易失可编程存储器或只读存储器内的解释器以及只读存储器ROM内的操作系统。
中间对象代码由编译器从通常用基于ASCII字符的高级语言源程序产生。由于解释器确保了中间对象代码的标准指令被翻译为可以直接由微处理器执行的指令,所以源程序和相应的中间对象代码可以由所有的标准微处理器运行。
例如(虽然这并无限定作用),微处理器卡厂商最近研制出嵌入在只读存储器ROM内部的解释器。这种类型的解释器依次读取支持应用的程序或中间对象代码,它被加载入微处理器卡的可编程存储器内。这种中间对象代码的每条标准指令由解释器解释,随后由微处理器运行。作为通用规则,中间对象代码的标准指令可以改变要处理的函数,例如算术处理和对象操纵。对象概念涉及计算的对象,例如列表、数据表等。
但是由于这些微处理器卡本身是便携式的,所以限制了后者占据的尺寸和空间。对可编程存储器的尺寸也有同样的限制,由此存储容量限定为几千字节。这种结构限制使得无法运行大型应用程序。
而且当前采用多应用板上系统的趋势面对下列事实的困扰,即在同一板上系统或微处理器卡上安装的应用数很少超过3个。
发明内容
本发明的目的是克服上述缺点,为了节省板上系统的可编程存储器内的存储空间,采用压缩用于微处理器型板上系统内使用的中间对象代码型程序,从而在压缩后者之后至少可以嵌入一个新增的应用。
本发明的另一个目标是实现压缩中间对象代码型程序的系统,它使压缩的中间对象代码型程序可以嵌入多个包含数据处理资源的应用板上系统,它可以在运行时间改变不大的情况下运行压缩的中间对象型程序并且对每个非压缩应用固有的过程是完全透明的。
本发明提出一种压缩中间对象型程序的方法,它由标准指令序列组成,该板上系统提供有存储器和能够将中间对象代码转换为可由微处理器直接运行的程序语言解释器,并且该程序一般存储在板上系统的存储器内,由于为了寻找相同的连续标准指令序列而搜寻中间对象代码程序并且至少根据高于基准值的中间对象代码程序中这些序列的一定发生次数对连续标准指令的相同序列作比较测试以寻找函数,所以效果显著。如果上述测试返回的是正响应,则通过定义特定的操作码并使该特定操作码与连续标准指令序列相关,为满足测试步骤的连续标准指令的每条相同序列产生特定的指令。此外,每次出现存储的中间对象代码程序内的标准连续指令的每个序列时用相关的特定操作代码代替以获得压缩的中间对象代码程序、一系列的标准指令和特定的操作码。解压缩表存储在存储器内,它可以在插入的每个特定操作码与涉及后者的连续标准指令序列之间建立互易的链接。该过程可以通过在可编程存储器内仅仅存储一次出现的连续标准指令相同序列优化被压缩的中间对象代码占据的存储器空间。
本发明提出的压缩中间对象代码程序和相应的多应用板上系统的方法、系统可以用于板上系统技术领域,特别用于运行和管理微处理器卡。
根据本发明的一个方面,提供一种压缩用于板上系统的标准指令序列组成的中间程序的方法,板上系统提供了存储器和能够将中间程序转换为可由微处理器直接运行的对象代码的指令,所述方法包括以下步骤:a)在中间程序内搜索连续标准指令的相同序列;b)对连续指令的相同序列作至少基于所述中间程序内这些序列的发生次数的函数的压缩测试,对于每条连续标准指令的相同序列,如果所述函数大于基准值从而测试返回正响应,则所述序列满足所述测试步骤;c)通过定义特定操作代码并使该特定操作代码与满足所述测试的连续标准指令相关产生特定指令;d)用相关的所述特定操作代码代替所述中间程序内的标准连续指令每个序列的每次出现以获得压缩的中间程序,它是标准指令和特定操作代码的后继;以及e)在所述存储器内存储执行表,它至少由插入的每个特定操作代码和与其相关的所述连续标准指令序列的互易匹配组成,通过在所述存储器内存储连续标准指令的所述相同序列的仅仅一次出现,它使所述压缩的中间程序占据的存储器空间得到优化。
根据本发明的又一方面,提供一种多应用板上系统,包含计算资源和存储器,所述多应用板上系统具有至少一个构成以所述解释器层面存储的中间程序的标准代码表;至少一个构成应用并且由一系列特定指令代码和标准指令代码组成的压缩的中间程序,所述特定指令代码对应连续标准指令序列;能够在特定操作代码与相关的连续标准指令序列之间建立互易链接的执行表,所述至少一个压缩的中间程序和所述执行表存储在所述存储器内,通过在所述可编程存储器内存储所述连续指令的相同序列的仅仅一次发生使得所述压缩的中间程序占据的存储器空间得到优化;以及将所述中间程序转换为被计算资源直接执行的指令的语言解释器,它适用于确定所读取的代码值是对应标准型代码还是对应特殊型代码,通过调用所述执行表来实现特定指令的执行。
根据本发明的另一方面,提供一种压缩由被目标单元执行的标准指令序列组成的中间程序的系统,所述系统至少包含:用于分析所有标准可执行指令的装置,它使所述中间程序借助读取过程能够区分该中间程序内包含的所有可执行标准指令序列的列表;计数构成该列表部分的可执行标准指令每个序列的中间程序内发生的次数的装置;基于一至少为所述发生次数的函数要大于基准值这一标准,向至少一个可执行标准指令的序列分配与该可执行标准指令相关的特定代码以产生特定指令的装置;在程序中用与该可执行标准指令序列相关的代表所述特定指令的特定代码代替该可执行标准指令序列出现处的装置,它使得可以产生包含连续的可执行标准指令和特定指令的压缩程序。
附图简述
通过以下结合附图对本发明的描述,可以进一步理解本发明,附图中图1a-1c示出了现有技术。
图2a为按照本发明的压缩中间对象代码程序方法的一般流程图;
图2b为示意图,它示出了如何应用获得压缩中间对象代码程序所需的不同的操作符和能够解压缩或执行该程序的参数;
图2c仅仅是示意性质的,它示出了嵌入微处理器卡可编程非易失存储器内的中间对象代码程序与解压缩和运行后者的参数;
图3a为第一文件结构的具体实施例的示意图(虽然这不具有限定作用),第一文件由运行或解压缩该中间对象代码程序的参数组成;
图3b为第二文件结构的具体实施例的示意图(虽然这不具有限定作用),第一文件由运行或解压缩该中间对象代码程序的参数组成;
图4示出了按照本发明的示意性压缩中间对象代码程序,它嵌入微处理器卡或板上应用系统非易失存储器内;
图5示出了压缩中间对象代码程序的具体方法示意例,其中涉及分开的应用或中间对象代码程序的具体代码被更新;
图6a和6b以函数单元的形式示出了按照本发明的压缩中间对象代码程序的系统。
以下借助图2a描述本发明压缩中间对象代码程序的方法。术语中间对象代码程序涵盖用于本专利申请的任何中间程序。
以下描述该方法将借助板上系统的运行,板上系统由例如图1a所示的微处理器卡(虽然并无限定作用)、如图1b所示以普通方式获得的中间对象代码程序、如图1c所示嵌入解释器的可编程存储器内的多个应用和ROM存储器内的操作系统OS组成,
中间对象代码程序由一系列的可以由微处理器通过解释器运行的标准指令系列运行。
压缩这种类型程序的方法首先将后者嵌入可编程存储器18a,在图2a所示步骤1000搜寻连续标准指令相同序列的中间对象代码,这些相同的序列用Si表示。相同序列意指在上述中间对象代码程序内可能重复出现的给定n个8位字节序列。因此相同序列的组i表示不同值i的分离序列。而且上述搜寻步骤1000包括确定每个所述相同序列Si出现次数Ni。在搜寻步骤1000结束处,找到多个相同的序列Si,每个序列Si是分离的,并且次数Ni表示中间对象代码程序内出现每个序列Si的次数。
在所述步骤1000之后,本发明的压缩方法包括在步骤1001根据与相同序列Si相关的至少出现次数Ni对链接标准指令Si的相同序列进行函数f(Ni)比较测试。在图2a中,比较测试写为:
f(Ni)>Ref.
如果对测试1001的响应是负的,这种情况下至少出现Ni次的函数小于基准值,测试1001被施加在下一相同序列组i+1,指数i在步骤1002递增。
如说明书下面所述,图2a所示步骤1000、1001和1002可以在中间对象代码程序中搜寻至少给定次数的相同序列或8位字节系列。
如果对所述测试1001的响应是正的,则本发明的压缩方法包括通过定义Ci表示的特定操作码并使其该特定操作码相关产生ISi表示的特定指令,连续标准指令序列满足测试,它是连续标准指令序列Si。在图2a中,设定具体指令的步骤写为:
ISi=Ci:Si
应该指出的是,定义特定操作码并使其与连续标准指令的序列Si相关的步骤包括分配代码值并使该代码与列表形式的所述指令序列Si相关。
在步骤1003之后,压缩方法随后进至步骤1004,在该步骤中用相关的特定操作码Ci代替中间对象代码程序内每个出现的连续标准指令序列Si以获得用FCC表示的压缩的对象代码程序,它是标准指令和特定操作码Ci的后继。
只有指数i小于相同序列次数P就可以对每个相同序列或标准指令系列Si的替代过程进行递归,从而使带数值P的指数i的比较测试1005向不1002提示返回,在步骤1002,无论何时对测试的响应为正则上述指数i递增。
特别应当指出的是,通过以这种方式迭代代替过程,将获得与后者执行文件相关的压缩的对象代码程序,该文件用FEX表示,执行文件由至少一个在每个特定代码Ci与所述连续标准指令序列Si之间的互易匹配组成。
一旦在对测试1005负的响应下获得两个上述文件(压缩的中间对象代码程序和执行文件),就可以启动存储过程,从而将获得的所述中间对象代码程序FCC和上述执行文件FEX存储在可编程存储器18a内。所述存储器可以是非易失存储器18、可编程存储器18a甚至是只读存储器18b,虽然它们不是限定性的。
尽管涉及所述的比较测试1001,应该指出的是可以定义每个相同序列Si出现至少一定次数的函数从而优化获得的压缩效果。在一个非限定的实施例中,可以将该函数设定为在每个连续标准指令的相同序列尺寸与表示为标准指令数的阈值之间进行比较。
图2b提供了工作模式的实例,它允许利用本发明的方法产生压缩的中间对象代码程序。
在开始阶段,中间对象代码程序的编制者建立包含源程序的文本文件。该程序与基于高级语言的后者通常用ASCII代码编写从而可以方便地阅读并且可以包含注释以便理解和改进。这些生成的源程序被插入称为标准编译器的普通编译器,用来将每个程序行转换为可执行的指令,或者至少是可以解释的指令,从而获得由可以被解释器解释的标准指令序列组成的中间对象代码程序。
在编译过程之后获得的中间对象代码文件放置在压缩系统内,从而可以采用图1所示的压缩方法。该压缩系统将在说明书的下面部分阐述。
上述压缩过程将产生可解释指令的文件FCC,即由压缩的中间对象代码程序和前面提及的执行文件FEX组成的文件。
以下借助具体实例描述压缩系统的操作模式。
首先压缩系统分析所有的标准指令Is并且提取构成后者的文件中已有的所有标准指令序列列表。
如果所述文件包含1000个8位字节,则压缩系统对至少两个最多Q个的8位字节序列启动搜寻程序。所述搜寻可以对两个8位字节,然后对三个8位字节等等最多到Q个8位字节。在较佳实施例中Q值为500。
因此对于由标准指令Is序列组成的每个指令序列Si,压缩系统确定该序列Si是否已经包含在列表中。如果出现这种情况,则压缩系统将一个单位加入所述序列Si的出现次数Ni上。
在所述搜寻过程结束时,压缩系统将生成包含所有被检查指令序列Si的复杂列表,每个序列包含在相关的指定中间对象代码程序中的出现次数Ni
以下给出由下列指令系列组成的中间对象代码程序的示意性表格:
1-7-3-5-7-3-7-3-5-7
而为示意目的,以下的表I中的所述指令系列包含10条指令,每条指令用一个8位字节表示并且是数字1-7,被检查指令的连续序列包含2、3、4然后是5个8位字节。
下表给出了在所述中间对象代码程序中出现次数大于或等于2的连续指令序列Si
表1
  4个8位字节     [7-3-5-7]:2
  3个8位字节     [7-3-5]:2     [3-5-7]:2
  2个8位字节     [7-3]:2     [3-5]:2     [5-7]:2
其次压缩系统用表示特定指令的代码代替某些表I的某个序列Si
根据对应标准指令的第一代码按照时间顺序确定特定指令Ci的代码。在普通的中间对象代码中,当前存在106条标准指令和代码,这些指令落在000-105之间。第一条特定指令代码Ci可以具有数值106,第二条的值为107等等。无论何时指令Si的相同序列被新的特定指令代码Ci替代,都完成这样的操作,上表中示出的清单被重新计算。
在非限定实例中,上表所示4个8位之间指令序列7-3-5-7被替代并且相应的代码106被分配,压缩的中间对象代码程序变为:
1=106-3-106
在这些条件下,以相同形式存在的标准指令序列Is和特定指令IS至少不再存在两次。显然由压缩中间对象代码程序FCC构成的文件和后者的执行或解压缩文件存储在上述压缩系统层次上。
一旦压缩系统完成压缩操作,存在中间对象代码程序,严格地讲是可以由目标系统和所述执行文件FEX执行的程序。前者包含标准的指令Is和特定的指令IS而后者包含至少一个表,它使特定代码Ci与被所述特定代码替代的标准指令序列Si链接。显然,这两个文件可以重新合并为一个同样的文件,它将后者转换为所需的目标系统,即设计为接收其的微处理器卡。
就执行文件FEX而言,应该指出的是包含用MEM-SEQ表示的至少一个文件,它由几个连续域组成,例如上述特定代码Ci域、序列域Si
在所述操作之后,单个文件或可应用的两个上述文件被发送至目标系统并且通过加载程序直接处理。该加载程序主要负责将接收的数据写入可编程存储器18a或只读存储器18b从而随后可以有效运行。
作为非限定实例,与压缩的中间对象代码程序FCC有关的文件未经处理就被从ADR-MEM-PGM表示的给定地址开始存储在所述可编程存储器18a内。
对于执行文件FEX,加载程序分析文件的数据并且动态生成用TAB-PRO表示的表,使得特定的指令代码Ci与指令序列相关。实际上,表TAB-PRO使得在所述特定指令代码Ci与使相应指令可以运行的嵌入地址之间实现互易匹配。
图2c示出了在压缩中间对象代码程序FCC的支持文件上嵌入执行文件FEX和上述文件TAB-PRO,后一文件由微处理器卡的可编程存储器18a内的加载程序生成。
在附图中,虽然在表格TAB-STD内在解释器的层次上存储了标准指令Is的代码表,但是执行文件FEX和文件TAB-PRO存储在可编程存储器18a内,使得地址跳跃与相应的特定指令代码Ci链接,这两张表使得压缩的中间对象代码程序FCC在目标单元的微处理器层次上有效运行。因此提供的可执行单元可以在下述条件下被解释器运行。
在解释如何运行压缩中间对象代码程序FCC之前,首先借助图3a和3b详细描述执行文件FEX和文件TAB-PRO的结构和它们之间的函数关系。
图3a详细描述了执行文件FEX,如上所述,除了特定代码Ci和指令序列Si以外它还包含以FM表示的宏指令结束的域,指示所述序列的结束。在较佳但非限定性实施例中,每个特定代码Ci可以插入在域的开始处例如一个8位比特,随后将每个相应的序列Si插入长度可变的第二个域。宏代码FM的结束是标准类型的并且对应上述提及的普通语言中所用的结尾。
当接收到数据结构对应图3a所示结构的执行文件FEX时,分别处理不同的域Ci、Si和FM。
首先,对应的特定指令IS的特定代码Ci被写入文件TAB-PRO而与该特定代码相关的构成所处特定指令的指令序列Si被从ADR-1表示的地址开始写入MEM-SEQ表示的文件或存储器内。该相应特定指令的代码Ci被写入地址TAB-PRO+3×(CODE-106)。在该关系中,地址是打开文件TAB-PRO的特定地址而值CODE代表相应代码Ci的数值。图3b所示的操作模式对应被任意设定为0、具有数值106的第一特定代码和随后具有数值107等等的连续特定代码的地址值TAB-PRO。为了阐述方便,图3b仅仅示出了4个特定代码106、107、110和120,其他存储器空间被填充任意数值。
在这些条件下,Adr-1是存储器MEM-SEQ中首先可用的地址,该地址对应第一指令序列Si=S1的地址Adr-1。从该构成存储器MEM-SEQ内文件打开的第一地址开始,按照加载的顺序依次写入指令序列Si。宏代码FM的结尾也被写入对应系列的结尾。
在写入存储器MEM-SEQ处理之后和检查写入过程是否正确处理的步骤之后,加载的程序写入表TAB-PRO,序列在地址值上写入存储器MEM-SEQ。加载的程序随后重新计算下一指数为i的序列Si的新写入地址,根据所述指令序列Si内运行的模式递增或递减。
以下借助图4描述上述文件FCC支持并且包含特定指令的压缩中间对象代码程序的执行过程。
借助PI表示的指令指针,利用解释器运行这种程序。实际上,指令指针PI读取待执行指令的代码、标准指令Is或特定指令IS,并且将该代码作用于触发对应其的解释器。
在运行程序的开始处,指令指针PI连同程序开始的地址(即地址ADR-MEM-PGM)加载。
解释器分析指令指针PI读取的代码值。作为该分析的部分,后者确定代码值是否对应标准类型代码Cs或者是否对应特定代码Ci。该操作从解释器层次上存储器的表TAB-STB开始并且通过将标准指令代码和标准指令Is与程序内的执行地址相关联来运行。
如果代码值读取不在后表中,则为了检查代码值读取是否存在于表TAB-PRO内,解释器发送调用以读取该表。如果代码读取不再在后表中,则解释器无法运行指令读取并且程序运行将终止,提示错误消息,这在图4的流程图内未示出。
在所述图4中,2000表示执行操作的开始,2001表示在第一程序指令上初始化指令指针的操作,而2002表示指令指针PI指示的指令被读取的操作。该操作实际上对应读取所述代码值的过程。
同样,在图4中的步骤2003,运行检查以确定在表中读取的代码值是否属于标准代码TAB-STB和该代码值是否属于表TAB-PRO,该操作实际构成步骤2003,其后是关于指令INS是否是标准的指令Is或特定指令IS。图4未示出读取代码不属于上述解释的并且两张表中一张产生错误消息的情况。
如果对所述测试2003接收到正响应并且代码读取对应特定指令,则计算指令指针PI并将其存储在堆栈内从而可以移动至下一指令。解释器从表TAB-PRO读取与特定代码Ci读取相关的指令序列Si的地址值并且用该数值初始化指令指针PI的数值。所有这些操作都用图4中的标号2004示出。在所述步骤2004之后,如图4所示,通过返回步骤2002,解释器返回读取代码的步骤。
如果所述实测2003接收到负响应并且代码读取对应开始型指令Is,则解释器将在测试步骤2005内检查该代码值是否对应代表序列结束的宏值结尾。如果是这种情况,则提取先前存储在堆栈存储器内的数值并且更新堆栈,该数据被加载入指令指针PI。步骤2006示出提取先前存储在堆栈内构成返回地址的数值的操作,其后是堆栈的更新,返回地址用ADR-RET表示。在所述步骤2006之后,解释器返回读取数值的步骤,即步骤2002。如果测试2005接收到负响应并且代码读取值对应标准型指令但是不对应宏的结尾或系列的结尾,解释器以已知方式运行代码。然而如图4所示,在这种情况下,在实际运行所述标准指令之前提供测试步骤2007。测试2007检查代码值和相应的指令INS是否对应程序结尾。如果所述测试2007接收到正响应,则由解释器运行该指令的执行步骤2008,该执行步骤与递增指令指针的步骤相关,因此它指向下一指令。在所述步骤2008之后,解释器返回读取指令指针PI指示的代码值的步骤,即读取步骤2002。
如果测试2007接收到负响应(其中指令对应程序指令的结尾),则运行结束步骤2009。在这种情况下,解释器终止动作并且转交给操作系统OS。随后等待新的命令指令。
借助图4描述的运行压缩的中间对象代码程序过程的实施例和方法并非限定性的。
首先应该指出的是,堆栈存储器可以划分为两个独立的堆栈存储器,一个堆栈存储器用于标准的指令Is而另一个用于特定指令IS,它又称为宏指令。在这种类型的实施例中,过程内部交错的特定指令的最大数是已知的。为了获得该堆栈占据的总尺寸,乘以交错程序的最大数是足够的。利用特定指令IS的分立堆栈存储器与利用单个堆栈相比,降低了总的存储器消耗。
而且为了增加代用特定指令IS的数量并且替代106~255之间特定指令的有限数量,在说明书前面所述实例中,特定代码Ci可以在两个8比特组上编码。在这种情况下,诸如数值255之类的特定代码值将指示两个8比特组上的编码。
最后,目标系统(如果是板上多应用系统)包含几个编译的和压缩的程序,即几个上述类型的文件FCC。这些程序必须独立操作。这种情况下只有一个解释器,它运行加载程序加载的所有应用程序。如果两个应用程序采用特定的指令(如说明书前面的实施例),则压缩系统可以为两个不同指令系列分配同样的特定代码Ci。
为了解决这种情况并且使解释器区分两个代码,则通过涉及所论应用的标识号的第三个参数可以补充上述涉及图3a的执行文件FEX的域。也可以存储表TAB-PRO内列出的每个分配特定代码的标识号。后一参数实际上是与包含表的文件同时加载的程序的标号,使得每个特定指令代码Ci与所论应用代替的指令序列Si相关。当解释器运行程序应用时,它将能够挑选出涉及该应用的特定指令。
显然,由于需要为所论的应用号分配新增的域,所以上述使多应用板上系统运行的过程存在增加存储器消耗的缺点。
以下借助图5描述更好的过程。
图5示出了诸如微处理器卡之类包含用A1-Ak表示的几个应用的板上系统,A1-Ak实际上构成每个应用的标识号。为此,当压缩带给定标识号A1-Ak的任何源程序或应用时,按照本发明的前述方法,目标系统(即微处理器卡)向压缩器发送存储器MEM-SEQ的内容连同相应的特定代码Ci。实际上,目标系统根据文件或表TAB-PRO和涉及应用A1-Ak的存储器MEM-SEQ的内容重新计算用F-C-ANT标识的较早的特定系数的文件。对所有的应用A1到Ak-1,文件F-C-ANT确保每个特定代码Ci与涉及其的序列Si互易地匹配。在这些条件下,在最简单但非限定性实施例中,文件F-C-ANT可以由格式与文件FEX相同的文件组成。在图5所示较佳的压缩过程中,较早指定代码的文件F-C-ANT随后被送至压缩器以告诉后者。
当借助标识号Ak压缩新应用时,压缩器将查找已经在文件F-C-ANT中注册的所有指令序列Si的发生,即实际上在更早的应用A1-Ak-1的目标系统的表TAB-PRO中。无论何时找到发生,压缩器系统用相应特定指令IS的特定代码Ci代替对应的指令序列Si。一旦完成该操作,压缩器系统可以分析标识代码Ak的应用,当然查找其他的发生以创建未存储的其他特定指令。文件F-C-ANT随后可以被更新。借助图5描述的解压缩过程可以作为压缩第一次加载到板上系统的程序或者除了其他已有压缩程序以外加载到板上系统的程序的手段。
在上述两种情况中,本发明提出的过程包括存储涉及至少一个压缩中间对象代码程序的执行表、第一假设中这些程序的第一个和第二个假设中一个或多个已有压缩程序,并且随后读取每个新增中间程序的存储执行表并压缩每个新增程序,考虑存储在前述执行表中存储的特定指令和代码。显然,这样创建的压缩中间对象代码程序除了目标系统以外无法运行,它向压缩系统提供了前面对应的相关文件F-C-ANT。
当运行压缩中间对象代码程序的方法时,诸如多应用便携式对象的板上系统包含微处理器卡和诸如微处理器、可编程存储器、只读存储器和语言解释器之类的计算资源,如图2c所示,除了代表在解释器层面上存储的中间对象代码程序的标准代码的表TAB-STD以外,包含存储在可编程存储器18a内的至少一组文件。
因此相应的便携式对象将包含至少一个压缩中间对象代码程序,即图2c所示的文件FCC。该文件可以由上述应用组成或者可以是诸如数据加密/解密之类的功能。该压缩的中间对象代码文件将包括一系列特定之类代码Ci和对应所述中间对象代码程序的指令代码的标准指令代码。特定指令代码Ci对应前述的连续标准指令Si的序列。
而且如图2c所示,执行表允许在每个特定操作代码Ci与相关的连续标准指令序列Si之间应用互易链接。所有这些文件可以使占据存储器的存储器空间得到优化,特别是便携式对象的可编程存储器18a。
如图2c所示,执行表包含对应特定指令的至少一个连续序列文件(该文件用存储器MEM-SEQ表示)和特定指令代码和地址的表TAB-PROB,这些特定指令被嵌入连续序列文件的该地址上。
压缩的中间对象代码程序如图4所示运行。
以下借助图6a和6b描述压缩中间对象代码程序的系统,它可以运行前述的压缩方法。
通常,本发明的压缩方法将描述为模块的组合,这些模块由硬件装置但是比较好的是由软件手段实现,并且数据在这些模块之间流动。
图6a示出了本发明的压缩系统,它包含至少一个模块A用于分析构成中间对象代码程序的所有直接执行指令COD-OBJ-INT。通常,支持中间对象代码程序的计算机文件被视为8比特组串或字符串并且将从对串进行相应处理的角度考察本发明压缩系统的操作模式。
从所述8比特组串开始,分析模块A可以读取对象代码程序COD-OBJ-INT,挑选和建立包含在所述程序内的所有标准指令序列Si列表。在图6a中,标准指令序列S1、Si-1、Si、Si+1…Sp根据列表符号记法以符号形式写入。因此分析模块A由对应Ni个8比特组的滑移窗口组成,该滑移窗口能够分析上述借助表1描述的序列Si。滑移窗口实际上通过卷积涉及所述窗口的8比特组串区分每个序列Si。每次发生问题中的序列Si时,由分析模块A发布计数比特BC。
如图6a所示,本发明的压缩系统还包含模块C,用于计数前述直接执行指令序列Si的所述对象代码程序的发生次数。计数模块C可以软件模块形式提供,它计数将值1分配给所述计数比特BC的连续比特数。计数模块C可以存储每个序列S1…Si-1-Si+1…Sp的相应发生次数N1…Ni-1、Ni、Ni+1…Np。这些可以列表形式存储。
而且如图6a所示,提供模块AL用于根据判据为至少一个直接可执行指令Si分配与该序列Si相关的特定代码Ci从而产生图6a中ISi表示的特定指令,从而使得至少是相应的发生次数Ni的函数大于前述参考值。
如果至少是次数Ni的函数大于上述参考值的函数值,则模块AL将发布压缩命令COM-COMP,它可以由相应值为1或0的一个比特组成。
最后,本发明的压缩系统具有压缩模块COMP,它一方面接收涉及所述中间对象代码程序COD-OBJ-INT和计数命令COM-COMP的文件。压缩模块COMP实际上使所述中间对象代码程序内的每个序列Si(考虑为8比特组)每次发生,对应的是与该指令序列相关的特定代码Ci代替的特定指令ISi
考虑到压缩模块COMP的操作模式,应该指出的是它可以包含采用滑移窗口的读取子模块(类似于分析模块),从而使标准指令Si的序列定位在所述8比特组内。实际上,当定位所述标准指令的序列Si时,如图6a所示,压缩模块可以包含所论的序列Si的左边部分和右边部分子模块以产生左串LS和右串RS。随后它可以包含串联模块,它利用构成特定指令ISi的特定代码Ci,从而可以一方面使考虑为8比特组串的相应特定代码Ci与左链LS串联,此后形成的单元与右链RS串联,确保序列Si被特定代码Ci代替。压缩模块COMP由此发送图6a中COD-OBJ-INT-COMP表示的压缩的中间对象代码程序。显然,图6a所示压缩系统使得压缩过程应用至所论的所有直接可执行指令序列Si组。
在一个非限定实施例中,图6b所示分配模块AL包含一个模块,用于计算从指令序列Si的长度开始8比特组的数量,该模块在图6b中用AL1表示。它也可以包含计算模块AL2以构成该长度Ni与标准指令该序列Si的发生次数Ni的乘积。该乘积Pi表示直接可执行指令Si序列的压缩增益。
而且,分配模块AL可以包含AL3模块,用于将乘积Pi与给定阈值S比较。阈值S可以实验确定。也可以根据下列方式的实验值确定,对于给定长度的中间对象代码程序,它对应该长度的给定百分比。
如果负响应从模块AL3运行的比较测试返回,则每个直接可执行指令序列Si的指数增加一个单位并且将新值1返回分析模块A和计数模块C。
如果正响应从模块AL3运行的比较测试返回,则模块AL4建立相应的特定代码Ci,并且最后模块AL3应用互易链接从而写入特定代码Ci和相关的直接可执行指令序列Si以构成特定指令ISi
模块AL4可以是压缩软件模块,它使得例如数值106的初始值用作向相关的对应指令序列Si分配相应值的基础。每个特定指令ISi可以随后以相应的列表写入。
对包含在法国BULL CP8出售的微处理器卡内的程序或应用所作的实时压缩测试表明压缩增益大于33%,当应用压缩过程处理移动便携式对象的三个应用时,基本上表明这种对象新增了一个应用。
在用户普通的用法下获得了压缩增益而调用宏指令产生的减速不超过如果不包括宏指令时运行的10%,这种减速源于表TAB-PRO和文件MEM-SEQ层面上的连续调用读取操作。

Claims (11)

1.一种压缩用于板上系统的标准指令序列组成的中间程序的方法,板上系统提供了存储器和能够将中间程序转换为可由微处理器直接运行的对象代码的指令,其特征在于所述方法包括以下步骤:
a)在中间程序内搜索连续标准指令的相同序列;
b)对连续指令的相同序列作至少基于所述中间程序内这些序列的发生次数的函数的压缩测试,对于每条连续标准指令的相同序列,如果所述函数大于基准值从而测试返回正响应,则所述序列满足所述测试步骤;
c)通过定义特定操作代码并使该特定操作代码与满足所述测试的连续标准指令相关产生特定指令;
d)用相关的所述特定操作代码代替所述中间程序内的标准连续指令每个序列的每次出现以获得压缩的中间程序,它是标准指令和特定操作代码的后继;以及
e)在所述存储器内存储执行表,它至少由插入的每个特定操作代码和与其相关的所述连续标准指令序列的互易匹配组成,通过在所述存储器内存储连续标准指令的所述相同序列的仅仅一次出现,它使所述压缩的中间程序占据的存储器空间得到优化。
2.如权利要求1所述的方法,其特征在于所述函数还是每条连续指令的相同序列大小的函数。
3.如权利要求1所述的方法,其特征在于为了压缩多个中间程序,所述方法还包括以下步骤:
存储涉及至少一个压缩的中间程序的执行表,并且对于每个新增的中间程序进行压缩处理;
读取所述存储的执行表;以及
考虑该执行表内存储的特定代码和指令,对每个新增的程序运行压缩过程。
4.一种运行通过应用如权利要求1所述压缩方法获得的压缩的中间程序的方法,程序由存储在板上系统存储器内的连续标准指令和特定操作代码组成,其特征在于包含以下步骤:
在所述存储器内借助互易链接识别包含至少一个与特定操作代码相关的连续指令序列的执行表的存在;
经解释器调用命令以读取压缩的中间程序的连续标准指令或特定操作代码,并且在特定操作代码存在时;
借助读取指令从存储器检索与所述特定操作代码相关的连续指令的所述序列,并且在标准指令存在时;
借助读取指令命令执行该指令。
5.如权利要求4所述的方法,其特征在于如果调用与特定操作指令相关的连续指令序列,则在与特定操作代码相关的堆栈内递增程序计数器的当前值,并且程序指针指向所述特定指令新的第一条指令,此后,在指令运行至特定指令序列结尾处时,所述程序计数器递减并且执行过程以下一指令或特定操作代码开始而继续。
6.如权利要求5所述的方法,其特征在于与特定操作代码相关的堆栈和与标准指令相关的堆栈是单一的堆栈。
7.一种多应用板上系统,包含计算资源和存储器,其特征在于所述多应用板上系统具有至少一个构成以所述解释器层面存储的中间程序的标准代码表;
至少一个构成应用并且由一系列特定指令代码和标准指令代码组成的压缩的中间程序,所述特定指令代码对应连续标准指令序列;
能够在特定操作代码与相关的连续标准指令序列之间建立互易链接的执行表,所述至少一个压缩的中间程序和所述执行表存储在所述存储器内,通过在所述可编程存储器内存储所述连续指令的相同序列的仅仅一次发生使得所述压缩的中间程序占据的存储器空间得到优化;以及
将所述中间程序转换为被计算资源直接执行的指令的语言解释器,它适用于确定所读取的代码值是对应标准型代码还是对应特殊型代码,通过调用所述执行表来实现特定指令的执行。
8.如权利要求7所述的板上系统,其特征在于所述执行表至少包含:
对应特定指令的连续序列文件;
特定指令代码表和这些特定指令嵌入连续序列表内的地址。
9.如权利要求8所述的板上系统,其特征在于对应特定指令的连续序列的文件和特定指令代码表存储在所述板上系统的可编程存储器内。
10.一种压缩由被目标单元执行的标准指令序列组成的中间程序的系统,其特征在于所述系统至少包含:
用于分析所有标准可执行指令的装置,它使所述中间程序借助读取过程能够区分该中间程序内包含的所有可执行标准指令序列的列表;
计数构成该列表部分的可执行标准指令每个序列的中间程序内发生的次数的装置;
基于一至少为所述发生次数的函数要大于基准值这一标准,向至少一个可执行标准指令的序列分配与该可执行标准指令相关的特定代码以产生特定指令的装置;
在程序中用与该可执行标准指令序列相关的代表所述特定指令的特定代码代替该可执行标准指令序列出现处的装置,它使得可以产生包含连续的可执行标准指令和特定指令的压缩程序。
11.如权利要求10所述的系统,其特征在于所述向至少一个可执行标准指令的序列分配与该可执行标准指令相关的特定代码以产生特定指令的装置至少包括:
至少根据该可执行标准指令序列出现次数的长度计算函数值的装置,所述函数代表该可执行标准指令序列的压缩增益;
将该函数的数值与阈值进行比较的装置,并且如果所述比较返回正响应;
借助互易链接将特定代码和可执行标准指令的序列写入文件以构成所述特定指令的装置。
CNB998035882A 1998-11-06 1999-11-04 执行于板上系统内的中间对象代码程序的数据压缩方法 Expired - Lifetime CN1178134C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR98/14012 1998-11-06
FR9814012A FR2785695B1 (fr) 1998-11-06 1998-11-06 Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants

Publications (2)

Publication Number Publication Date
CN1292114A CN1292114A (zh) 2001-04-18
CN1178134C true CN1178134C (zh) 2004-12-01

Family

ID=9532472

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998035882A Expired - Lifetime CN1178134C (zh) 1998-11-06 1999-11-04 执行于板上系统内的中间对象代码程序的数据压缩方法

Country Status (10)

Country Link
US (1) US6952820B1 (zh)
EP (1) EP1046105B1 (zh)
JP (1) JP2002529849A (zh)
CN (1) CN1178134C (zh)
AR (1) AR021109A1 (zh)
BR (1) BR9906784A (zh)
CA (1) CA2317950C (zh)
FR (1) FR2785695B1 (zh)
HK (1) HK1033778A1 (zh)
WO (1) WO2000028416A1 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010007146A1 (en) * 1999-12-23 2001-07-05 Uwe Hansmann Method for providing a set of software components
FR2806188A1 (fr) * 2000-03-10 2001-09-14 Schlumberger Systems & Service Dispositif a circuit integre comportant un programme applicatif
FR2828296B1 (fr) * 2001-08-03 2003-12-12 Trusted Logic Procede de compression de code objet interprete par factorisation d'expressions arborescentes
FR2829252B1 (fr) * 2001-08-30 2004-10-01 Gemplus Card Int Compression d'un programme en langage intermediaire
DE10216602A1 (de) * 2002-04-15 2003-10-30 Giesecke & Devrient Gmbh Optimierung von compilergeneriertem Programmcode
JP4239060B2 (ja) * 2002-08-30 2009-03-18 ソニー株式会社 符号化装置および方法、データ処理装置および方法、並びにプログラム
CN1332315C (zh) * 2002-09-27 2007-08-15 佛山市顺德区顺达电脑厂有限公司 内存测试方法
US7203935B2 (en) * 2002-12-05 2007-04-10 Nec Corporation Hardware/software platform for rapid prototyping of code compression technologies
FR2853741B1 (fr) * 2003-04-14 2005-09-09 Gemplus Card Int Procede de gestion d'un code executable telecharge dans un systeme embarque reprogrammable
GB0315165D0 (en) * 2003-05-02 2003-08-06 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
US7617490B2 (en) * 2003-09-10 2009-11-10 Intel Corporation Methods and apparatus for dynamic best fit compilation of mixed mode instructions
US20060242631A1 (en) * 2005-04-22 2006-10-26 Andersen Jakob R Process and system for sharing program fragments
JP4944033B2 (ja) * 2005-07-27 2012-05-30 パナソニック株式会社 情報処理システム、情報処理方法、実行バイナリイメージ作成装置、実行バイナリイメージ作成方法、実行バイナリイメージ作成プログラム、実行バイナリイメージ作成プログラムを記録したコンピュータ読み取り可能な記録媒体、実行バイナリイメージ実行装置、実行バイナリイメージ実行方法、実行バイナリイメージ実行プログラム及び実行バイナリイメージ実行プログラムを記録したコンピュータ読み取り可能な記録媒体
US8024711B2 (en) * 2005-08-10 2011-09-20 Microsoft Corporation Software analysis tool
WO2007099324A1 (en) * 2006-03-01 2007-09-07 Symbian Software Limited Duplicate code detection
WO2007145366A1 (en) * 2006-06-15 2007-12-21 Kabushiki Kaisha Toshiba Portable electronic device and control method thereof
CN101398752B (zh) * 2007-09-29 2011-08-31 国际商业机器公司 重叠指令存取单元和重叠指令存取方法
US8395537B2 (en) * 2008-01-14 2013-03-12 Nxp B.V. Methods for compressing and decompressing mifare applications
CN101739404B (zh) * 2008-11-05 2012-08-29 爱思开电讯投资(中国)有限公司 字节码优化数据库及其建立方法以及字节码优化方法
DE102008043680A1 (de) * 2008-11-12 2010-05-20 Robert Bosch Gmbh Verfahren und Einrichtung zur Code-Komprimierung und Code-Dekomprimierung
US20110029761A1 (en) * 2009-08-03 2011-02-03 Chih-Ta Star Sung Method and apparatus of reducing CPU chip size
CN102420843B (zh) * 2011-06-24 2015-12-02 北京奇虎科技有限公司 一种基于云压缩链接的压缩和解压缩方法、装置及系统
US9098307B2 (en) * 2011-07-22 2015-08-04 National Instruments Corporation Rearrangement of algebraic expressions based on operand ranking schemes
DE102014005605A1 (de) * 2014-04-15 2015-10-15 Giesecke & Devrient Gmbh Verfahren zum Ausführen einer Codefolge auf einem Sicherheitsmodul
CN105528365A (zh) 2014-09-30 2016-04-27 国际商业机器公司 用于管理可执行文件的方法和装置
IN2015CH03522A (zh) * 2015-07-09 2015-07-24 Syscom Corp Pvt Ltd
CN106656200B (zh) * 2016-12-13 2019-11-08 合肥工业大学 一种程序计数器压缩方法及其硬件电路
FR3070775B1 (fr) * 2017-09-04 2019-08-23 Vsora Allocation dynamique utilisant plusieurs piles
CN114238250A (zh) * 2021-11-03 2022-03-25 奇安信科技集团股份有限公司 程序文件压缩方法、装置及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL100987A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Method and device for encoding
IL100986A (en) * 1991-02-27 1997-01-10 Digital Equipment Corp Method for compiling code
JPH06507990A (ja) * 1991-05-24 1994-09-08 ブリティッシュ・テクノロジー・グループ・ユーエスエイ・インコーポレーテッド コンピュータのための最適化コンパイラ
ES2184066T3 (es) * 1996-10-25 2003-04-01 Schlumberger Systems & Service Uso de un lenguaje de programacion de alto nivel con microcontrolador.
FR2757970B1 (fr) * 1996-12-30 1999-03-26 Gemplus Card Int Procede de chargement d'un programme d'utilisation dans un support a puce
US6260190B1 (en) * 1998-08-11 2001-07-10 Hewlett-Packard Company Unified compiler framework for control and data speculation with recovery code
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors

Also Published As

Publication number Publication date
FR2785695A1 (fr) 2000-05-12
EP1046105A1 (fr) 2000-10-25
WO2000028416A1 (fr) 2000-05-18
EP1046105B1 (fr) 2017-02-22
AR021109A1 (es) 2002-06-12
BR9906784A (pt) 2000-10-17
HK1033778A1 (en) 2001-09-21
US6952820B1 (en) 2005-10-04
CN1292114A (zh) 2001-04-18
CA2317950C (fr) 2007-06-05
JP2002529849A (ja) 2002-09-10
FR2785695B1 (fr) 2003-01-31
CA2317950A1 (fr) 2000-05-18

Similar Documents

Publication Publication Date Title
CN1178134C (zh) 执行于板上系统内的中间对象代码程序的数据压缩方法
CN108197306B (zh) Sql语句处理方法、装置、计算机设备和存储介质
CN1752976A (zh) 文件管理程序、数据结构及文件管理装置
CN1304941C (zh) 用于自主硬件辅助的线程栈跟踪的装置与方法
US8566372B2 (en) Method and device for dynamically loading relocatable file
US9600305B2 (en) Code partitioning for enhanced performance
US9304898B2 (en) Hardware-based array compression
CN1744045A (zh) 改善数据高速缓存性能的方法和设备
CN1826586A (zh) 软件原子化
CN105404521A (zh) 一种增量升级方法及相关装置
CN111078290A (zh) 一种用于可扩展指令集的编译器及编译方法
CN1834922A (zh) 程序变换方法及程序变换系统
CN106843842B (zh) 一种应用程序配置文件的更新方法及装置
CN1641587A (zh) 用于改进爪哇虚拟机性能的方法和系统
CN1922574A (zh) 无需额外的代码分析来进行链接时代码优化的方法和系统
CN1818868A (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
CN105808209A (zh) 用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备
CN1278931A (zh) 特别适于译码数字音频信号的数字信号处理器
CN1252566A (zh) 直接存储器存取控制方法和装置
CN1601519A (zh) 文档变换系统
CN116521576A (zh) Eda软件数据处理系统
CN1310116C (zh) 具有功率控制功能的微处理器以及指令转换装置
CN1295778C (zh) 一种验证芯片硬件行为与软件模拟行为的一致性的方法
CN1879067A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1033778

Country of ref document: HK

CX01 Expiry of patent term

Granted publication date: 20041201

CX01 Expiry of patent term