对芯片卡上被再装入到处理器的工作存储器之中的程序模块进行链接的方法技术

技术编号:2881720 阅读:195 留言:0更新日期:2012-04-11 18:40
将芯片卡上被再装入的程序模块链接到同样被再装入的库之上的方法,其中,所述方法被划分为两部分,其中第一部分可以在程序模块被编译之后的任意时间点上进行,而用于对符号参考进行解析的第二部分只须在芯片卡上的程序模块被装入后进行。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种对被再装入到处理器的工作存储器之中的程序模块进行链接的方法,所述程序模块譬如位于芯片卡上。本专利技术所探讨的是如下问题在将来的多应用芯片卡上,除了静态地预先装入的操作系统和标准库外,还应该能够由用户再装入专用的程序模块。由于如下原因这至今还不能实现每个程序都基于一些地址,在这些地址位置上对程序进行处理。由于对需再装入的程序而言,它完全不知道芯片卡上的哪些地址已经被占用,所以必须创造一种可能性,使得需再装入的程序可以在任意的地址上运行;也就是说,该需装入的程序必须可以在芯片卡上再定位。我们希望可再装入的模块在其总数上可以超过芯片卡上可供使用的物理地址范围。从而可以不给所述的模块分配固定的物理地址范围。因此,当模块装载到卡片上时,卡片上的操作系统必须能够为其动态地分配自由的存储区。对此,需再装入的模块必须告诉芯片卡它必须访问哪些库。在确认允许该模块访问相应的库之后,所述模块还必须同该库链接起来,也就是说,为访问设定相应的逻辑地址。逻辑地址由卡片的操作系统进行管理,并为其单值地分配物理地址。如果所有库都位于固定的地址范围,则可以对新模块进行静态地预链接,而无需对芯片卡进行改变。但是,如果库位于动态分配的地址范围,则必须动态地把新模块链接到该库上,也就是说,必须给新模块设定当前有效的、所述库的逻辑地址。于是在编程时,该新模块只包含库的名字和相应用符号表示的程序段参考,必要时还包含有应该访问的其它参考。于是,在链接过程中,所述的这些参考必须由当前有效的逻辑地址、尤其是库的相应程序段的逻辑地址来代替。原则上讲,链接过程可以在卡片终端内或在芯片卡上进行。第一种情形被视为是极不安全的,因为必须要保证终端不被干扰操作。此外,在终端和卡片之间的通信链路上,数据还可能被干扰操作。由于在链接过程中必须对符号参考作出解析,所以动态链接的新模块在原则上和其链接过程之前的状态是不相同的,因此在芯片卡中不能对静态预定义的程序标志进行检验。唯一安全的办法就是在芯片卡上安装链接程序。但它的问题是,在传统的链接策略中需要一个相当复杂的分析程序来读取目标代码和满足动态参考,而这在卡片上需要许多存储器资源。迄今为止,现有技术对此问题还没有解决办法。因此,迄今还不能利用合理的费用在足够安全的芯片卡上按动态分配的地址范围来使用库。在该领域内,最接近的现有技术是由DE 197 23 676 A1给出的。该文献同样讲述了一种把程序再装到芯片卡上的方法。根据该现有技术,程序是按照相应的程序库进行动态分配的。然而,由于在该现有技术中只能换算和匹配程序内的转移地址,所以该方法不能实现由动态再装入的程序对其它动态再装入的程序或动态再装入的地址进行访问。因此,该现有技术也没有解决如下任务,即对于同样按动态分配的地址范围而存放的库,可再装入的应用不能对其实现访问。据此,本专利技术的任务在于提供一种方法,其中,可再装入的应用能够对动态分配地址范围的库进行访问,而且不会因为调出的、譬如在卡片终端内运行的链接过程而产生安全问题。根据本专利技术,该任务由如下方式来解决链接过程被划分为两部分,其中,第一部分可以在程序模块被编译之后的任意时间点上进行,而用于对符号参考进行解析的第二部分只须在程序模块被装载后进行。为了节省附加的资源,需要尤其优选地利用一种简单的自动器来解析所述的动态参考。如果在所述方法的第一部分生成一个具有首部的目标文件,且在该首部内具有需链接的库及其程序段的有关信息,那么,便可形成一种尤为简单的程序结构。在此,所述目标文件的首部还附加地包含有在原本的目标代码中所采用的动态参考的有关信息,这是尤其优选的。如果按照块的顺序来分析原本目标代码,则在卡片上的处理是尤其简单的,其中,每个块的开头具有如下信息,即在第一符号参考出现之前可能读入多少个目标代码字节,而且,所述块以该符号参考而结束。有一种尤其简单的处理可通过如下方式来有利地实现,即在链接过程的第二部分开始时,把所述目标代码的首部暂存在工作存储器内,并在那儿给所述的动态参考分配卡片上的实际地址。一种尤为简单的链接过程在于,在卡片上的链接过程的第二部分期间,总是读入一个块始端,再存入无需转换动态参考就可读入的字节的数目,然后把没有该块始端的块读入到卡片上的存储器中,而且在块的结束处,从被转换过的目标代码首部读入卡片上的实际地址,以替代所述的动态参考。下面借助附图示出的实施例来详细阐述本专利技术。图中附图说明图1为按照本专利技术链接方法的第一部分所建立的目标文件结构;图2为目标代码首部中的参考被转换成绝对地址后的程序状态,其中编制了一个参考表;图3为目标代码首部中的参考被转换后的程序状态,其中生成了一个参考栈;图4为参考被转换后的程序状态,其中生成了一个位置表;以及图5为参考被转换后的程序状态,其中地址已被代替。在所述的本专利技术实施例中,实现了芯片卡上的程序模块的动态再装入。在此,链接程序的复杂部分必须被裂解,并从卡片中调出。在卡片中只是运行一个简单的自动器,由它完成对符号参考的解析。下面通过目标文件的新链接格式来充分讲述卡片上的链接程序目标文件的首部10内具有需要链接的库及其程序段的有关信息,以及在原本目标代码中所采用的相应符号参考。此处的原本目标代码为块序列12、14、16。块的始端具有如下信息,即在第一动态参考出现之前可能读入多少个程序代码字节。由第一动态参考来结束所述的块。如同其被传输给芯片卡一样,目标文件的相应结构如图1所示。目标文件包括一个首部10,它总是含有需链接的相应库和相应程序段的名字、以及所属的符号参考。尾随该目标首部之后的是各个目标代码块,其中,块的开始总是给出了块长度,而且每个块都以符号参考而结束。图1所示这种结构的目标代码的编制可以在程序编译后的任意时间点和在任意计算机上实现。在芯片卡上只须实现所述链接过程的第二部分由卡片上的链接程序读入目标首部,并给所述的符号参考分配卡片上的实际地址。如果位于目标代码中经常需要少量的符号参考,则最好根据实际地址设立该符号参考的分配表。于是,该信息必须在整个链接过程中存在。倘若许多动态参考只是很少地在目标代码中调用,则可以通过如下方式进一步简化该链接过程,即符号参考按照其在目标代码中出现的顺序而排列在目标代码的首部10之中。在该情形下,也可以直接在目标代码中给出应该被替代的地址。于是取消所述的块结构。下述可能性也是很有意义的,即直接在块的结束处列出随后每次被解析的名字和符号参考。当在卡片上根据实际的物理地址进行转换之后,在首部10内便形成一个按顺序的绝对地址表,正如它们必须被加入到目标代码中一样。对此,无须替代所述的首部,如果相应的表格被保持在存储器中,那么就足够了。该表格在装载之后可以被清除,以便大大节省存储空间。在生成该地址表格或地址列表之后分别读入一个块的始端,并存入无需转换符号参考就能读入到程序段中的字节的数目。在此,只给出该块的字节数目的块始端并不一起被接收到程序代码中。在块的结束处,由当前的实际地址来替代所述的符号参考。在此,要么在目标代码首部10内引入对照表,要么从相应的表格中简单地调出属于该块的物理地址。在后一种组织方式下,所述的首部也可以按栈存储器(栈)的形式进行组织。然后可以处理下一个块。图2~5示出了在首部10的动态本文档来自技高网...

【技术保护点】
对再装入到处理器的工作存储器之中的程序模块进行链接的方法,其特征在于:所述方法被划分为两部分,其中,第一部分可以在程序模块被编译之后的任意时间点上进行,而用于对符号参考进行解析的第二部分只须在程序模块被装入到工作存储器后进行。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:C梅J弗雷瓦尔德O布里克塞尔
申请(专利权)人:因芬尼昂技术股份公司
类型:发明
国别省市:DE[德国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1