KR100478463B1 - Dynamic Linking Method for Application Program - Google Patents

Dynamic Linking Method for Application Program Download PDF

Info

Publication number
KR100478463B1
KR100478463B1 KR10-2003-0050016A KR20030050016A KR100478463B1 KR 100478463 B1 KR100478463 B1 KR 100478463B1 KR 20030050016 A KR20030050016 A KR 20030050016A KR 100478463 B1 KR100478463 B1 KR 100478463B1
Authority
KR
South Korea
Prior art keywords
kernel
application program
address
file
application
Prior art date
Application number
KR10-2003-0050016A
Other languages
Korean (ko)
Other versions
KR20050010640A (en
Inventor
홍성수
박정근
Original Assignee
재단법인서울대학교산학협력재단
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 재단법인서울대학교산학협력재단 filed Critical 재단법인서울대학교산학협력재단
Priority to KR10-2003-0050016A priority Critical patent/KR100478463B1/en
Publication of KR20050010640A publication Critical patent/KR20050010640A/en
Application granted granted Critical
Publication of KR100478463B1 publication Critical patent/KR100478463B1/en

Links

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

Abstract

본 발명은 제한된 자원을 갖는 내장형 시스템에 대해서 지연바인딩을 이용하여 응용 프로그램의 동적로딩 메커니즘을 가능하도록 하는 응용 프로그램의 동적링크 방법에 관한 것이다. 본 발명의 응용 프로그램의 동적링크 방법에 따르면 메모리 관리유닛을 구비하지 않고 제한된 저장공간을 갖는 내장형 시스템에 대해서 응용 프로그램의 동적로딩 메커니즘을 지원할 수 있으며, 이로써 단일 주소공간에서 수행되는 운영체제에 대해서 수행 중에 응용 프로그램을 동적으로 추가 및 제거할 수 있다는 장점이 있다.The present invention relates to a dynamic linking method of an application program that enables a dynamic loading mechanism of an application program using delay binding for an embedded system having limited resources. According to the dynamic linking method of the application of the present invention, it is possible to support the dynamic loading mechanism of the application for an embedded system having no limited memory management unit and having limited storage space, thereby performing an operating system operating in a single address space. The advantage is that applications can be added and removed dynamically.

Description

응용 프로그램의 동적링크 방법{Dynamic Linking Method for Application Program} Dynamic Linking Method for Application Program

본 발명은 제한된 자원을 갖는 내장형 시스템에 대해서 지연바인딩을 이용하여 응용 프로그램의 동적로딩 메커니즘을 가능하도록 하는 응용 프로그램의 동적링크 방법에 관한 것이다.The present invention relates to a dynamic linking method of an application program that enables a dynamic loading mechanism of an application program using delay binding for an embedded system having limited resources.

종래로 메모리 관리유닛(Memory Management Unit : MMU)이 없는 CPU에서 수행되는 운영체제는 단일 주소공간에서 수행하기에 적합하도록 소위 라이브러리 커널의 형태를 구성하는데, 라이브러리 커널에서는 응용 프로그램과 각종의 라이브러리가 커널(kernel)과 일체로 링크되어 단일 이미지를 형성하고 이러한 단일 이미지를 타겟 시스템의 메모리에 로딩한다. 이러한 라이브러리 커널을 구성할 때, 설계자는 링크 과정에서 자신의 응용 프로그램에 필요한 각종의 서브시스템을 선택함으로써 타겟 시스템에 최적화된 단일 이미지의 라이브러리 커널을 구성하는 것이 일반적이다.Conventionally, an operating system running on a CPU without a memory management unit (MMU) configures a so-called library kernel to be suitable for execution in a single address space. In the library kernel, an application program and various libraries are configured as a kernel ( kernel, which links together to form a single image and loads that single image into the target system's memory. When constructing such a library kernel, it is common for a designer to construct a library kernel of a single image optimized for a target system by selecting various subsystems required for an application program during the linking process.

이러한 라이브러리 커널은 시스템에 최적화하여 커널을 구성하고, 그 이후에는 수행 중에 커널을 확장할 필요가 없는 소위 폐쇄방식의 내장형 시스템에 적합하다. 그러나, 최근에 널리 사용되는 정보통신 기기 중에서 PDA 등은 전술한 폐쇄방식의 내장형 시스템과는 다른 특성을 갖는데, 이들을 나열하면 (1) 사용자마다 필요한 응용 프로그램이 다르고, (2) 많은 응용 프로그램이 써드파티(third party)에 의해 제공되며, (3) 용용 프로그램의 업그레이드가 커널의 업그레이드보다 자주 발생한다는 것이다.These library kernels are optimized for the system to configure the kernel, after which it is suitable for so-called closed embedded systems that do not need to expand the kernel on the fly. However, among the widely used information and communication devices, PDAs and the like have different characteristics from the above-described closed-type embedded system. When these are listed, (1) users need different applications, and (2) many third-party applications are used. It is provided by a third party, and (3) upgrading the application occurs more often than upgrading the kernel.

이러한 특성을 갖는 소위 개방방식의 시스템은 전술한 바와 같이 라이브러리 커널로서 정적 구성된 이미지만으로는 운영이 곤란하다. 즉, 이러한 개방방식의 시스템에 대해서 정적 구성된 커널 이미지를 사용하는 경우에는 여러가지 불편한 점이 발생하는데, 예컨대 사용자 별로 서로 상이한 커널 이미지를 제공하여야 하고 또한 응용 프로그램을 업그레이드할 때마다 전체 커널 이미지를 다시 생성하여 다운로드하는 등의 불편함이 발생한다. 따라서, 라이브러리 커널을 PDA 등와 같은 개방방식의 시스템에 사용하기 위해서는 수행 중에 동적으로 응용 프로그램을 다운받아 수행시킬 수 있는 기능이 추가되어야 한다.The so-called open system having such characteristics is difficult to operate with only statically configured images as library kernels as described above. In other words, when using a statically configured kernel image for such an open system, various inconveniences occur. For example, each user must provide a different kernel image. Also, every time an application is upgraded, the entire kernel image is regenerated. Inconvenience such as downloading occurs. Therefore, in order to use the library kernel in an open system such as a PDA, a function that dynamically downloads and executes an application program during execution must be added.

이에, 본 발명은 제한된 자원을 갖는 내장형 시스템에 대해서 지연바인딩을 이용하여 응용 프로그램의 동적로딩 메커니즘을 가능하도록 하는 응용 프로그램의 동적링크 방법을 제공하는 데에 그 목적이 있다. Accordingly, an object of the present invention is to provide a dynamic linking method of an application that enables a dynamic loading mechanism of an application by using delay binding for an embedded system having limited resources.

도 1은 본 발명의 응용 프로그램의 동적링크 방법을 적용하기 위한 전체 시스템의 구조를 도시하는 도면이다. 응용 프로그램을 동적으로 로딩하는 기능은 유닉스(Unix)나 윈도우즈(Windows)와 같은 범용 운영체제에서는 기본 제공되는데, 동적로딩 기능을 제공하기 위해 응용 프로그램은 하드디스크에 저장되어 있다가 필요할 때 사용자에 의해 쉘 상에서 로딩 및 수행되고, 이를 위해 범용 운영체제는 가상 메모리(virtual memory) 시스템을 이용하여 각 응용 프로그램 별로 독립적인 주소공간을 할당한다. 반면, PDA 등과 같은 내장형 시스템의 경우에는 가상 메모리 방식을 지원하기 위한 메모리 관리유닛이 제공되지 않고 응용 프로그램을 위한 저장공간도 매우 제한적이라는 문제점이 있다. 1 is a diagram showing the structure of the entire system for applying the dynamic link method of the application of the present invention. The ability to dynamically load applications is built into general-purpose operating systems such as Unix or Windows. To provide dynamic loading, applications are stored on the hard disk and then shelled by the user when needed. In this case, the general operating system allocates an independent address space for each application program using a virtual memory system. On the other hand, in an embedded system such as a PDA, there is a problem that a memory management unit for supporting a virtual memory system is not provided and storage space for an application program is also very limited.

따라서, 본 발명에서 제안하는 응용 프로그램의 동적링크 방법은 내장형 시스템에서 응용 프로그램의 동적로딩 기능을 지원함에 있어서 다음과 같은 요구사항이 만족되도록 설계되었는데, 이들을 열거하면 (1) 동적으로 다운로드될 프로그램 모듈은 커널과는 독립적으로 컴파일이 가능해야 하고, (2) 커널이 업데이트 되어도 기존에 다운로드된 모듈을 그대로 사용할 수 있어야 하고, (3) 가상 메모리 시스템이 없는 시스템에서도 사용가능해야 하고, (4) 특정의 컴파일러에 종속적이면 안된다는 점이다.Therefore, the dynamic link method of the application program proposed in the present invention is designed to satisfy the following requirements in supporting the dynamic loading function of the application program in the embedded system, and enumerating them (1) program module to be downloaded dynamically Must be able to compile independently of the kernel, (2) be able to use modules that have already been downloaded even if the kernel is updated, (3) be available on systems without a virtual memory system, and (4) It should not be dependent on the compiler.

도 1에서, 본 발명의 동적링크 방법을 적용하기 위한 전체 시스템은 응용 프로그램을 개발하기 위한 호스트(110)와 응용 프로그램을 수행하기 위한 타겟(150)으로 구성되는데, 본 발명에 따라서 응용 프로그램을 동적으로 링크할 수 있도록 하기 위해 호스트(110)와 타겟(150)에는 각각 컴포넌트 빌더(130)와 동적로더(160)가 제공된다.In FIG. 1, the entire system for applying the dynamic link method of the present invention comprises a host 110 for developing an application and a target 150 for executing an application. In order to be able to link to the host 110 and the target 150 is provided with a component builder 130 and a dynamic loader 160, respectively.

먼저, 컴포넌트 빌더(Component Builder : 130)는 호스트(110) 상에서 수행되는데, 사용자가 작성한 응용 프로그램 소스, 즉 컴포넌트 소스(120)를 컴파일 및 링크하여 컴포넌트(140)를 생성하고, 상기 생성된 컴포넌트(140)에 대해 동적링크를 고려하여 파일정보를 수정하며, 바람직하게는 동적링크의 성능향상을 위해서 주소 재배치(relocation) 동작의 일부를 수행한다. 컴포넌트(140)는 통상적으로 공지의 ELF 형식에 따른다.First, the component builder 130 is executed on the host 110. The component builder 130 generates a component 140 by compiling and linking an application source written by a user, that is, the component source 120, and generates the generated component ( The file information is modified in consideration of the dynamic link, and preferably, a part of the address relocation operation is performed to improve the performance of the dynamic link. Component 140 typically follows a known ELF format.

한편, 동적로더(Incremental Loader : 160)는 타겟(150)의 운영체제 상에서 수행되는데, 호스트(110)로부터 다운로드되어 새로 추가되는 응용 프로그램의 컴포넌트(140)에 대해서 주소 재배치를 수행하여 상기 컴포넌트(140)가 현재 수행 중인 커널 이미지(170)와 동적으로 링크되어 타겟(150)의 운영체제 내에서 수행될 수 있도록 한다. 본 발명에서는 이렇게 다운로드되어 새로 추가되는 컴포넌트(140)가 커널 이미지(170)에 지연바인딩(late binding)되도록 하며, 이 부분에 대해서는 이후에 자세히 설명하고자 한다.On the other hand, the dynamic loader (Incremental Loader: 160) is performed on the operating system of the target 150, the component 140 by relocating the address of the component 140 of the newly added application downloaded from the host 110, the component 140 Is dynamically linked to the currently executing kernel image 170 to be performed within the operating system of the target 150. In the present invention, the component 140 thus downloaded and newly added is late bound to the kernel image 170, which will be described in detail later.

도 2는 본 발명의 응용 프로그램의 동적링크 방법에 따라서 호스트(110)의 컴포넌트 빌더(130)에서 동적로딩이 가능한 응용 프로그램의 컴포넌트(140)를 생성하고 이를 동적으로 타겟(150)으로 로딩하여 커널(170)에 링크하는 과정을 도시하는 도면이다.FIG. 2 illustrates a method of generating a component 140 of an application program that can be dynamically loaded in the component builder 130 of the host 110 according to the method of dynamically linking an application of the present invention, and dynamically loading it into the target 150 to kernel. It is a figure which shows the process of linking to 170. FIG.

본 발명에 있어서 지연바인딩에 의한 동적링크를 수행하기 위해서 타겟(150)에서는 커널(270)이 응용 프로그램 컴포넌트(140)에 제공하는 인터페이스를 정의하고, 이를 참조하여 응용 프로그램에서 사용할 스텁파일(220) 및 커널(270)에서 제공하는 벡터 테이블(280)이 생성된다. 이어서, 커널(270)과 응용 프로그램 컴포넌트(140)는 각각 벡터 테이블(280)과 스텁파일(220)과 링크되어 이미지를 생성하고, 커널(270)의 수행 중에 호스트(110)로부터 응용 프로그램의 컴포넌트(140)가 다운로드되면 동적로더(160)는 벡터 테이블(280)에 따라 응용 프로그램 컴포넌트(140)의 주소 참조를 재배치한다. 이 과정에서, 커널(270)이 제공하고 응용 프로그램 컴포넌트(140)가 사용하는 커널 서비스루틴의 주소를 벡터 테이블(280)의 위치로 재배치함으로써 커널(270)에 동적링크된 응용 프로그램 컴포넌트(140)가 타겟(150) 상에서 커널 서비스루틴을 호출할 수 있도록 한다.In the present invention, in order to perform dynamic linking by delay binding, the target 150 defines an interface provided by the kernel 270 to the application program component 140, and refers to the stub file 220 to be used in the application. And a vector table 280 provided by the kernel 270. The kernel 270 and the application component 140 are then linked with the vector table 280 and the stub file 220 to generate an image, and the components of the application from the host 110 during the execution of the kernel 270. Once 140 is downloaded, dynamic loader 160 relocates the address reference of application program 140 according to vector table 280. In this process, the application component 140 dynamically linked to the kernel 270 by relocating the address of the kernel service routine provided by the kernel 270 and used by the application component 140 to the location of the vector table 280. To call the kernel service routine on the target 150.

먼저, 커널(270)이 제공하는 커널 서비스루틴의 인터페이스를 지연바인딩을 위하여 정의하는 내용에 대해서 설명한다. 응용 프로그램의 컴포넌트(140)를 동적으로 로딩하여 커널 수행 도중에 동적으로 링크하기 위해서 본 발명에서는 라이브러리 기술파일(library description file : 230), 응용 프로그램 스텁(application stub : 220), 라이브러리 벡터 테이블(library vector table : 280) 등이 필요한데, 이 중에서 응용 프로그램 스텁(220)과 라이브러리 벡터 테이블(280)은 라이브러리 기술파일(230)로부터 자동생성 가능하다.First, a description will be given of defining an interface of a kernel service routine provided by the kernel 270 for lazy binding. In order to dynamically load the component 140 of the application and dynamically link it during kernel execution, the present invention includes a library description file 230, an application stub 220, and a library vector table. table: 280), among which the application stub 220 and the library vector table 280 can be automatically generated from the library description file 230.

우선, 라이브러리 기술파일(230)은 커널(270)이 엑스포트(export)하는 함수의 리스트를 단순한 텍스트 형태로 기술하여 구성할 수 있는데, 도 3에 라이브러리 기술파일(230)의 일 실시예를 도시하였다. 도시된 라이브러리 기술파일(230)은 단순히 함수명을 텍스트 형식으로 나타낸 것으로서, 통상적으로 전역변수는 엑스포트가 불가능하다. 보다 바람직하게는, 특정의 개발툴을 사용함으로써 라이브러리 기술파일(230)로부터 이하 설명하는 응용 프로그램 스텁(220) 및 라이브러리 벡터 테이블(280)을 자동생성한다.First, the library description file 230 may be configured by describing a list of functions exported by the kernel 270 in a simple text form. FIG. 3 illustrates an embodiment of the library description file 230. . The illustrated library description file 230 simply shows the function name in text form, and global variables cannot be exported. More preferably, the application stub 220 and the library vector table 280 described below are automatically generated from the library description file 230 by using a specific development tool.

이어서, 응용 프로그램 스텁(220)에 대해서 설명한다. 응용 프로그램은 소스파일(210)로부터 커널(270)과 독립적으로 컴파일되어 메모리 재배치가 가능한 형태, 즉 재배치 가능형 오브젝트 파일(240)로서 생성된다. 이때, 응용 프로그램은 커널(270)에서 엑스포트하고 있는 함수 위치에 대한 참조(reference)를 가지고 있어야 하는데, 실제 함수들은 대부분 링커(Linker)에 의해 임의로 배치된다. 따라서, 본 발명에서는 커널(270)이 엑스포트하는 함수에 대한 간접호출 테이블, 즉 라이브러리 벡터 테이블(280)을 커널 내부에 설정하고, 응용 프로그램에서는 벡터 테이블(280)의 베이스 주소(vec_base)로부터 해당 함수에 대한 호출루틴까지의 오프셋(0x150)을 응용 프로그램에 저장하도록 하며, 재배치 시에 오프셋과 베이스 주소를 합산함으로써 함수 위치를 얻는다. Next, the application program stub 220 will be described. The application program is compiled from the source file 210 independently of the kernel 270 and is generated as a memory relocatable form, that is, a relocatable object file 240. At this time, the application program should have a reference to the location of the function being exported from the kernel 270, and the actual functions are mostly arranged arbitrarily by the linker. Therefore, in the present invention, the indirect call table for the function exported by the kernel 270, that is, the library vector table 280 is set in the kernel, and the application program uses the function from the base address vec_base of the vector table 280. Allow the application to store an offset (0x150) up to the call routine for. The function position is obtained by summing the offset and the base address upon relocation.

응용 프로그램 스텁(220)은 링커 스크립트 파일(linker script file)로서 주어지는데, 응용 프로그램의 작성자는 응용 프로그램을 링크할 때 스텁파일(220)을 설정하여 줌으로써 응용 프로그램에서 사용하는 커널 서비스루틴의 위치를 지정할 수 있다. 도 3에 응용 프로그램 스텁파일(220)의 일 실시예를 도시하였는데, 도시된 바와 같이 스텁파일(220)의 엔트리 순서는 라이브러리 기술파일(230)의 엔트리 순서와 일치하는 것이 바람직하다. 스텁파일(220)에서 각 심볼에 할당되는 상대주소는 라이브러리 벡터 테이블(280)에서 심볼에 대응되는 함수로 점프하기 위한 엔트리의 위치에 해당한다.The application stub 220 is given as a linker script file, where the creator of the application sets the stub file 220 when linking the application to locate the kernel service routine used by the application. Can be specified. 3 illustrates an embodiment of the application program stub file 220, the entry order of the stub file 220 preferably matches the entry order of the library description file 230, as shown. The relative address assigned to each symbol in the stub file 220 corresponds to the position of an entry for jumping to a function corresponding to the symbol in the library vector table 280.

이어서, 라이브러리 벡터 테이블(280)에 대해서 설명한다. 라이브러리 벡터 테이블(280)은 커널(270)과 함께 링크되며 각 커널 서비스루틴에 대한 엔트리 포인트(entry point) 정보를 포함하는데, 벡터 테이블(280)의 베이스 주소(vec_base)로부터 각 엔트리 포인트에 대한 상대주소는 응용 프로그램 스텁파일(220)에 저장되어 호스트(110)에서 응용 프로그램의 링크에 사용한다. 도 3에 ARM 아키텍쳐용 라이브러리 벡터 테이블(280)을 실시예로서 도시하였다. 본 발명에 있어서 라이브러리 벡터 테이블(280)을 사용함으로써 얻을 수 있는 장점으로는, 라이브러리 함수 루틴을 직접 탐색하지 않아도 라이브러리 벡터 테이블(280)의 인덱스에 따라 해당 엔트리로 점프하면 원하는 라이브러리 함수루틴을 실행할 수 있다는 점과, 또한 커널(270)이 재구성되어 함수의 실제 위치가 변경되더라도 응용 프로그램에서는 벡터 테이블(280)에 대한 인덱스만 유지하면 되므로 응용 프로그램을 다시 컴파일할 필요가 없다는 점을 들 수 있다.Next, the library vector table 280 is described. The library vector table 280 is linked with the kernel 270 and contains entry point information for each kernel service routine, which is relative to each entry point from the base address vec_base of the vector table 280. The address is stored in the application stub file 220 and used by the host 110 to link the application. 3 shows a library vector table 280 for an ARM architecture as an example. Advantages of using the library vector table 280 in the present invention are that, without having to directly search the library function routine, the desired library function routine can be executed by jumping to the corresponding entry according to the index of the library vector table 280. In addition, even if the kernel 270 is reconfigured to change the actual position of the function, the application does not need to recompile the application since only the indexes on the vector table 280 are maintained.

호스트(110)에서 본 발명의 동적링크 방법에 적합한 방식으로 응용 프로그램을 생성하는 과정에 대해서 기술한다. 본 발명에서 사용하는 동적로딩이 가능한 응용 프로그램, 즉 응용 프로그램 컴포넌트(140, 240)은 커널(170, 270)과는 독립적으로 컴파일 및 링크된다. 응용 프로그램의 컴파일 과정은 일반 컴파일 과정과 동일한데, 응용 프로그램의 소스파일(210)을 컴파일하여 오브젝트 파일(240)을 생성하고, 이를 다시 링크함으로써 본 발명에 따라 동적로딩이 가능한 이미지를 생성한다. 동적로딩이 가능한 이미지를 생성하기 위해서는 이미지 내에 심볼에 관한 정보와 재배치에 관한 정보가 포함되어 있어야 하며, 또한 커널(270)이 제공하는 커널 서비스루틴과의 동적링크를 위한 정보도 포함되어 있어야 한다. 본 발명에서 사용가능한 링크 커맨드의 실시예는 다음과 같다.A process of generating an application program in a manner suitable for the dynamic link method of the present invention in the host 110 will be described. The dynamically loadable application program used in the present invention, that is, the application program components 140 and 240 are compiled and linked independently of the kernels 170 and 270. The compiling process of the application program is the same as the general compiling process, compiling the source file 210 of the application program to generate the object file 240, and linking it again to generate an image that can be dynamically loaded according to the present invention. In order to generate an image that can be dynamically loaded, information about symbol and relocation information must be included in the image, and information for dynamic linking with the kernel service routine provided by the kernel 270 must also be included. An embodiment of a link command usable in the present invention is as follows.

ld -e entry -r -d -o output *.o libos.lnkld -e entry -r -d -o output * .o libos.lnk

상기 링크 커맨드에서, 옵션 "-e"는 다음의 인자로 시작함수를 지정하는 것이고, 옵션 "-r"은 최종출력을 재배치 가능한 형태로 생성하도록 지정하는 것이며, 옵션 "-d"는 재배치 가능형의 출력인 경우에 강제적으로 BSS 섹션을 할당하도록 만드는 것으로서, 만일 옵션 "-d"가 설정되지 않으면 최종출력 이미지에 BSS 섹션이 할당되지 않아 미초기화 상태인 데이터 영역에 대한 정보를 잃어버리게 되는 문제점이 있다. 옵션 "-o"는 다음의 인자로 출력파일을 지정하는 것인데, 그 이후로 위의 컴파일 과정에서 생성된 오브젝트 파일(.o)들을 나열한다. 링크 커맨드에서 마지막에는 응용 프로그램 스텁파일(220)을 지정하는데, 이로써 벡터 테이블(280)의 오프셋 정보를 최종 이미지에 저장하여 커널(270)에서 제공하는 커널 서비스루틴과 동적으로 링크될 수 있도록 한다.In the link command, option "-e" specifies a start function with the following argument, option "-r" specifies that the final output is generated in a relocatable form, and option "-d" is relocatable. This forces the BSS section to be allocated for the output of. If the option "-d" is not set, the BSS section will not be allocated to the final output image, resulting in the loss of information about the uninitialized data area. have. The option "-o" specifies the output file with the following arguments, after which it lists the object files (.o) created during the compilation process above. In the link command, the application program stub file 220 is specified at the end, so that the offset information of the vector table 280 is stored in the final image so that it can be dynamically linked with the kernel service routine provided by the kernel 270.

도 4는 본 발명에 따른 응용 프로그램의 동적링크 방법에서 사용하는 재배치 가능형의 응용 프로그램을 컴파일 및 링크한 결과를 도시한 도면이다. test.c 프로그램에서는 커널에서 제공하는 printf() 함수를 사용하는데, 상기 printf() 함수는 라이브러리 벡터 테이블(280)의 0x150 위치에서 소위 간접호출 방식에 의해 호출된다. 도 4의 좌측 하단을 보면 생성된 이미지의 심볼 테이블 상에 printf() 함수의 상대적 위치가 .os.lib.libc 섹션 내의 오프셋 0x150으로 표시되어 있음을 알 수 있다.4 is a diagram illustrating a result of compiling and linking a relocatable application program used in the dynamic link method of an application program according to the present invention. The test.c program uses a printf () function provided by the kernel. The printf () function is called by a so-called indirect method at the 0x150 position of the library vector table 280. In the lower left of FIG. 4, it can be seen that the relative position of the printf () function is indicated by offset 0x150 in the .os.lib.libc section on the symbol table of the generated image.

한편, 이와 같이 생성된 응용 프로그램은 그 크기를 최적화하는 것이 바람직한데, 이를 위한 일 실시예로서 불필요한 심볼을 제거하는 방법을 제시한다. 즉, 최종적인 링크 후에 응용 프로그램 이미지에 존재하는 정보 중에서 실제 지연바인딩에 사용되지 않는 정보를 제거함으로써 응용 프로그램의 크기를 감소시키는 것이다. 이러한 최적화 과정을 통하여 저장공간에 차지하는 크기와 로드시간을 감소시킬 수 있다.On the other hand, it is preferable that the application program generated as described above is optimized for its size, and as an embodiment thereof, a method of removing unnecessary symbols is provided. That is, the size of the application is reduced by removing information that is not actually used for delay binding among information existing in the application image after the final link. Through this optimization process, the size and load time of the storage space can be reduced.

도 4의 우측 하단에는 재배치 테이블(relocation table)에 대한 정보가 도시되어 있다. 재배치 테이블은 본 발명에서의 재배치 과정에 있어서 필요한 정보로서, (1) 재배치 시에 수정하는 인스트럭션의 위치, (2) 재배치 시에 수정되어야 할 인스트럭션의 형태, (3) 인스트럭션이 참조하는 심볼에 대한 정보를 포함한다. 상기 재배치 테이블은 재배치 가능형의 오브젝트 파일에 포함되어 있어 재배치 과정에서 후술하는 바와 같이 적절히 사용된다. 재배치 과정에서는, 참조되는 심볼의 절대주소를 계산하고 참조하는 인스트럭션의 위치에 해당 인스트럭션의 형태에 따라 인스트럭션 내의 주소를 수정한다. 이러한 주소 재배치 문제는 다음의 도 5 및 도 6을 참조하여 자세히 설명한다.Information about the relocation table is shown in the lower right of FIG. 4. The relocation table is information necessary for the relocation process according to the present invention, and includes (1) the position of an instruction to be modified at the time of relocation, (2) the type of instruction to be modified at the time of relocation, and (3) a symbol referred to by the instruction. Contains information. The relocation table is included in the relocatable type object file and is used suitably as described later in the relocation process. In the relocation process, the absolute address of the referenced symbol is calculated and the address within the instruction is modified according to the type of the instruction at the position of the instruction to which the referenced symbol is located. This address relocation problem will be described in detail with reference to FIGS. 5 and 6.

또한, 재배치 정보 중에는 섹션 내에서 수행되는 함수에 대한 정보로서 상대주소로 이루어진 엔트리가 포함되어 있는데, 섹션(section)은 연속적인 주소공간에 할당되므로 이러한 재배치는 메모리 위치가 확정되지 않더라도 링크 이전에 미리 재배치를 수행할 수 있고, 이로써 재배치 정보로부터 관련된 엔트리를 삭제하는 것이 가능하다. 이를 통해, 응용 프로그램의 크기를 감소시켜 전술한 바와 같은 효과를 얻을 수 있다. 이러한 응용 프로그램의 최적화 과정은 소프트웨어 적으로 자동수행되도록 할 수 있다.In addition, the relocation information includes an entry of a relative address as information about a function performed in a section. Since a section is allocated to a contiguous address space, such a relocation is performed before a link even if the memory location is not determined. Relocation can be performed, which makes it possible to delete the associated entry from the relocation information. Through this, it is possible to reduce the size of the application program to obtain the effects as described above. The optimization process of these applications can be performed automatically in software.

도 5는 본 발명의 응용 프로그램의 동적링크 방법에 있어서 메모리(520) 상에 오브젝트 파일(510)의 각 섹션을 재배치하는 모습을 도시하는 도면이고, 도 6은 본 발명의 응용 프로그램의 동적링크 방법에 있어서 재배치 테이블의 각 엔트리에 대해서 실제 인스트럭션을 재배치하는 과정을 도시하는 도면이다. 도 5 및 도 6을 참조하여 본 발명의 지연바인딩 방식을 설명한다.FIG. 5 is a diagram illustrating rearrangement of each section of an object file 510 on a memory 520 in the dynamic link method of an application program of the present invention, and FIG. 6 is a dynamic link method of the application program of the present invention. Is a diagram illustrating a process of rearranging the actual instructions for each entry of the relocation table. The delay binding scheme of the present invention will be described with reference to FIGS. 5 and 6.

본 발명에 따르면, 재배치 가능형의 오브젝트 파일 이미지(240)는 타겟(150)의 커널 수행 중에 동적으로 메모리(250)에 로딩되어 커널(270)과 링크될 수 있는데, 이와 같이 커널 수행 중에 오브젝트 파일이미지를 커널(270)에 동적으로 링크하는 것을 지연바인딩(late binding)이라 한다. 본 발명에 있어서 지연바인딩 과정은 (1) 동적링크될 오브젝트 파일(510) 내의 각 섹션에 대해서 섹션주소를 할당하고 섹션 데이터를 메모리(520)에 배치하는 제1 단계; 및 (2) 오브젝트 파일(510) 내의 재배치 테이블의 각 엔트리에 해당하는 메모리 재배치를 수행하는 제2 단계를 포함하여 구성된다. 상기 제1 단계에는 커널(270)에서 제공하는 벡터 테이블(280)에 대하여 섹션을 설정하는 과정도 포함되며, 각 단계는 ELF 바이너리의 헤더정보를 이용하여 구현될 수 있다.According to the present invention, the relocatable object file image 240 may be dynamically loaded into the memory 250 and linked with the kernel 270 during the kernel execution of the target 150. Dynamically linking the image to the kernel 270 is called late binding. In the present invention, the delay binding process includes: (1) a first step of allocating a section address for each section in the object file 510 to be dynamically linked and placing the section data in the memory 520; And (2) a second step of performing memory relocation corresponding to each entry of the relocation table in the object file 510. The first step includes setting a section for the vector table 280 provided by the kernel 270, and each step may be implemented using header information of the ELF binary.

먼저, 오브젝트 파일(510)의 각 섹션에 대해서 섹션주소를 할당하는 제1 단계에 대해서 설명한다. 도 4에 도시된 바와 같이, 최종 링크과정을 거친 후 각 섹션의 주소는 미정의 상태로서 바람직하게는 "0"으로 설정되어 있는데, 타겟(150)에서 응용 프로그램을 로딩하여 수행하기 위해서는 오브젝트 파일(510)의 각 섹션이 메모리(520) 상에서 위치할 주소가 결정되어야 한다. 도 5는 오브젝트 파일(510)의 각 섹션에 대해서 섹션주소를 할당하는 과정을 도시하는데, 각 섹션에 대해 할당되는 주소인 sh_addr은 오브젝트 파일(510)을 메모리(520)에 로딩할 때 커널의 메모리 할당기(memory allocator)로부터 할당된다. 상기 할당된 섹션 주소는 메모리(520) 상에 존재하는 응용 프로그램의 섹션헤더(530)에 저장되어, 이후 각각의 인스트럭션에 대한 메모리 재배치를 수행함에 있어서 사용된다. 상기 과정에서 커널(270)의 라이브러리 벡터 테이블(280)에 대한 섹션주소도 커널(270)로부터 읽어와서 저장한다.First, a first step of allocating a section address for each section of the object file 510 will be described. As shown in FIG. 4, the address of each section after the final linking process is undefined and is preferably set to "0". In order to load and execute an application program on the target 150, an object file ( The address at which each section of 510 will be located on memory 520 must be determined. 5 shows a process of allocating section addresses for each section of the object file 510. The address allocated to each section, sh_addr, is used to load the object file 510 into the memory 520. It is allocated from the memory allocator. The assigned section address is stored in the section header 530 of the application residing on the memory 520, and then used in performing memory relocation for each instruction. In the above process, the section address for the library vector table 280 of the kernel 270 is also read from the kernel 270 and stored.

이어, 오브젝트 파일(510) 내의 재배치 테이블의 각 엔트리에 해당하는 메모리 재배치를 수행하는 제2 단계에 대해서 설명한다. 도 5를 참조하여 전술한 바와 같이 오브젝트 파일(510)의 각 섹션에 대해서 섹션주소가 정해지면 각 섹션의 내용은 실제 수행될 메모리(520)로 복사되고 프로그램 헤더에 있는 재배치 테이블의 각 엔트리에 대해서 실제 인스트럭션의 재배치가 일어난다. 본 발명에 따른 주소 재배치 과정은 (1) 참조하는 심볼에 대한 절대주소를 계산하고, (2) 재배치를 수행할 인스트럭션에서 요구하는 주소 형태로 절대주소를 변환하며, (3) 실제 인스트럭션을 수정하는 단계로 구성된다.Next, a second step of performing memory relocation corresponding to each entry of the relocation table in the object file 510 will be described. As described above with reference to FIG. 5, when a section address is determined for each section of the object file 510, the contents of each section are copied to the memory 520 to be actually executed and for each entry of the relocation table in the program header. The actual instruction relocation takes place. The address relocation process according to the present invention includes (1) calculating an absolute address for a reference symbol, (2) converting an absolute address into an address form required by an instruction to perform relocation, and (3) modifying an actual instruction. It consists of steps.

도 6은 재배치 테이블의 각 엔트리에 대해서 실제 인스트럭션을 재배치하는 과정을 도시하는데, 일 실시예로서 ARM 아키텍쳐에서 재배치 테이블의 엔트리와 분기(branch) 인스트럭션에 대한 재배치 주소계산, 그리고 이를 실제 인스트럭션에 적용하는 과정을 도시한다.6 illustrates a process of relocating an actual instruction for each entry of the relocation table. As an embodiment, relocation address calculations for entries and branch instructions of the relocation table in the ARM architecture, and applying the same to the actual instructions, are illustrated in FIG. Shows the process.

재배치 가능형 오브젝트 파일(510)에서 라이브러리 함수에 대한 분기 인스트럭션은 분기 타겟의 주소가 미결정인 형태로 생성되는데, 도 6에서 printf() 함수에 대한 분기 인스트럭션에는 타겟주소가 실제 printf() 함수의 위치가 아닌 자기자신의 주소(0x1C)로 설정되어 있음을 볼 수 있다. 한편, 재배치 테이블에는 재배치할 인스트럭션의 위치(0x1C)와 상기 인스트럭션이 참조하는 심볼(즉, printf)이 벡터 테이블 내에서 존재하는 위치(0x150)를 저장하고 있다. 도 5를 참조하여 기술한 바와 같이, 섹션 주소할당 과정이 종료되면 각 섹션의 주소와 라이브러리 벡터 테이블(280)의 위치를 알 수 있게 되는데, 도 6에서는 일 실시예로서 오브젝트 파일(510)의 text 섹션이 0x100에 할당되고 printf가 포함된 라이브러리 벡터 테이블(280)이 커널 내에서 0x400의 위치에 할당된 것으로 가정한다.In the relocatable object file 510, the branch instruction for the library function is generated in a form in which the address of the branch target is undetermined. In FIG. 6, the branch instruction for the printf () function has the target address where the actual printf () function is located. You can see that it is set to its own address (0x1C). On the other hand, the relocation table stores the position (0x1C) of the instruction to be relocated and the position (0x150) in which the symbol (that is, printf) referenced by the instruction exists in the vector table. As described with reference to FIG. 5, when the section address assignment process is completed, the address of each section and the location of the library vector table 280 can be known. In FIG. 6, the text of the object file 510 is shown. Assume that the section is assigned to 0x100 and the library vector table 280 containing printf is assigned to a location of 0x400 in the kernel.

섹션의 주소가 정해진 이후에는 실제 심볼에 대하여 벡터 테이블 내에서의 주소를 계산할 수 있다. 일 실시예로서, ARM 아키텍쳐의 분기 인스트럭션은 PC (Program Counter)에 대한 상대주소를 사용하여 분기동작을 수행하므로 타겟 심볼(즉, printf)에 대한 벡터 테이블 내의 절대주소와 현재 PC와의 차이를 계산함으로써 인스트럭션을 수정할 수 있다. 즉, 벡터 테이블 내에서 심볼 printf의 주소는 0x150이고 벡터 테이블은 가정에 의해 주소가 0x400이므로, 따라서 printf의 절대주소는 0x400 + 0x150, 즉 0x550이 된며, 또한 현재 인스트럭션의 절대위치는 text 섹션의 주소가 0x100이므로 0x100 + 0x1C, 즉 0x11C가 되는 것이다. 따라서, 심볼 printf의 상대위치는 0x550 - 0x11C, 즉 0x434가 된다.After the section is addressed, the address in the vector table can be calculated for the actual symbols. As an example, the branching instructions of the ARM architecture perform branching operations using relative addresses to PCs (program counters), thereby calculating the difference between the absolute address in the vector table for the target symbol (ie, printf) and the current PC. Instructions can be modified. That is, the symbol printf's address in the vector table is 0x150 and the vector table's address is 0x400 by assumption, so the absolute address of printf is 0x400 + 0x150, that is, 0x550, and the absolute position of the current instruction is the address of the text section. Is 0x100, so 0x100 + 0x1C, that is, 0x11C. Therefore, the relative position of the symbol printf is 0x550-0x11C, that is, 0x434.

이제 이러한 값을 사용하여 분기 인스트럭션의 타겟 주소를 변경하면 응용 프로그램을 수행함에 있어서 분기 인스트럭션은 라이브러리 벡터 테이블(280) 내의 printf 위치로 올바르게 분기할 수 있다. 이와 같은 과정을 통하여, 재배치 가능한 다른 인스트럭션들도 참조 심볼에 대한 주소가 확정되어 재배치 과정을 수행할 수 있다. 도 6에 도시된 재배치 과정은 특정 아키텍쳐의 인스트럭션 인코딩 방식에 따라 상이할 수 있는데, 이는 인스트럭션 내에 주소가 배치되는 위치와 주소의 비트수에 따라 변경될 수 있기 때문이다.Now, using these values to change the target address of the branch instruction, the branch instruction can correctly branch to the printf location in the library vector table 280 in executing the application. Through this process, other relocatable instructions may also perform relocation by determining an address of a reference symbol. The relocation process shown in FIG. 6 may be different depending on the instruction encoding scheme of a particular architecture, since it may vary depending on the location of the address within the instruction and the number of bits in the address.

본 발명의 응용 프로그램의 동적링크 방법에 따르면 메모리 관리유닛을 구비하지 않고 제한된 저장공간을 갖는 내장형 시스템에 대해서 응용 프로그램의 동적로딩 메커니즘을 지원할 수 있다는 장점이 있다.According to the dynamic link method of the application of the present invention, there is an advantage in that the dynamic loading mechanism of the application can be supported for an embedded system having a limited storage space without a memory management unit.

또한, 본 발명의 응용 프로그램의 동적링크 방법에 따르면 단일 주소공간에서 수행되는 운영체제에 대해서 수행 중에 응용 프로그램을 동적으로 추가 및 제거할 수 있다는 장점이 있다.In addition, according to the dynamic link method of the application program of the present invention, there is an advantage that the application program can be added and removed dynamically while the operating system is executed in a single address space.

도 1은 본 발명의 응용 프로그램의 동적링크 방법을 적용하기 위한 전체 시스템의 구조를 도시하는 도면.1 is a diagram showing the structure of an entire system for applying a dynamic link method of an application program of the present invention.

도 2는 본 발명의 응용 프로그램의 동적링크 방법에 따라 동적로딩이 가능한 응용 프로그램을 생성하고 이를 로딩하는 과정을 도시하는 도면.2 is a diagram illustrating a process of generating and loading an application program capable of dynamically loading according to the dynamic link method of an application program of the present invention.

도 3은 본 발명의 응용 프로그램의 동적링크 방법에서 사용되는 라이브러리 기술파일, 응용 프로그램 스텁파일, 라이브러리 벡터 테이블의 일 실시예를 도시하는 도면.3 is a diagram illustrating an embodiment of a library description file, an application stub file, and a library vector table used in a dynamic link method of an application program of the present invention.

도 4는 본 발명의 응용 프로그램의 동적링크 방법에서 사용되는 재배치 가능형의 응용 프로그램을 컴파일 및 링크한 결과를 도시한 도면.4 is a view showing a result of compiling and linking a relocatable application program used in the dynamic link method of the application program of the present invention.

도 5는 본 발명의 응용 프로그램의 동적링크 방법에 있어서 메모리 상에 오브젝트 파일의 각 섹션을 재배치하는 과정을 도시하는 도면.FIG. 5 is a diagram illustrating a process of rearranging each section of an object file on a memory in the dynamic link method of an application program of the present invention. FIG.

도 6은 본 발명의 응용 프로그램의 동적링크 방법에 있어서 재배치 테이블의 각 엔트리에 대해서 실제 인스트럭션을 재배치하는 과정을 도시하는 도면.6 is a diagram illustrating a process of relocating actual instructions for each entry of a relocation table in the dynamic link method of an application program of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

110 : 호스트110: host

120 : 컴포넌트 소스120: component source

130 : 컴포넌트 빌더130: Component builder

140 : 컴포넌트140: component

150 : 타겟150: target

160 : 동적로더160: dynamic loader

170 : 커널170: kernel

Claims (5)

응용 프로그램의 동적링크 방법에 있어서, 상기 동적링크 방법은, 상기 응용 프로그램의 컴포넌트 소스를 컴파일 및 링크하여 오브젝트 파일을 생성하는 제1 단계; 상기 오브젝트 파일에 대해 소정의 제1 주소재배치 조작을 수행하여 컴포넌트 파일을 생성하는 제2 단계; 상기 컴포넌트 파일을 타겟 시스템으로 제공하는 제3 단계; 및 상기 컴포넌트 파일에 대해서 소정의 제2 주소재배치 조작을 수행하고 상기 타겟 시스템의 커널 이미지에 상기 컴포넌트 파일을 링크시켜 상기 커널 이미지를 변경하는 제4 단계를 포함하여 구성되고, A dynamic link method of an application program, the dynamic link method comprising: a first step of generating an object file by compiling and linking a component source of the application program; A second step of generating a component file by performing a predetermined first address relocation operation on the object file; Providing the component file to a target system; And a fourth step of performing a predetermined second address relocation operation on the component file and linking the component file to a kernel image of the target system to change the kernel image. 상기 제1 주소재배치 조작은 상기 오브젝트 파일에 대해서 커널 서비스루틴의 위치참조 정보를 상기 타겟 시스템의 커널이 제공하는 커널 서비스루틴에 대한 간접 위치참조 정보로 재설정하여 수행되고, 상기 제2 주소재배치 조작은 상기 컴포넌트 파일의 각 섹션을 상기 타겟 시스템의 메모리 상에 배치하고 상기 컴포넌트 파일이 구비하는 재배치 테이블의 각 엔트리에 대응하여 인스트럭션을 재배치함으로써 수행되는 것을 특징으로 하는 응용 프로그램의 동적링크 방법.The first address relocation operation is performed by resetting location reference information of a kernel service routine with respect to the object file to indirect location reference information of a kernel service routine provided by a kernel of the target system. Placing each section of the component file in memory of the target system and relocating instructions corresponding to each entry of the relocation table included in the component file. 제1항에 있어서, 상기 제1 주소재배치 조작에서 사용하는 상기 커널 서비스루틴에 대한 간접 위치참조 정보는, 상기 커널의 커널 서비스루틴에 대한 벡터 테이블의 베이스 주소 및 상기 벡터 테이블에서 상기 커널 서비스루틴에 대한 호출루틴까지의 오프셋 값을 포함하여 구성되는 것을 특징으로 하는 응용 프로그램의 동적링크 방법.2. The method of claim 1, wherein the indirect georeference information for the kernel service routine used in the first address relocation operation is based on the base address of the vector table for the kernel service routine of the kernel and the kernel service routine in the vector table. Dynamic link method of an application program comprising an offset value up to the call routine for the. 제2항에 있어서, 상기 제1 주소재배치 조작은 상기 타겟 시스템의 커널이 제공하는 상기 커널 서비스루틴에 대한 함수명 정보 및 상기 커널 서비스루틴에 대한 호출루틴이 상기 벡터 테이블 내에서 존재하는 오프셋 정보에 기초하여 수행되는 것을 특징으로 하는 응용 프로그램의 동적링크 방법.The method of claim 2, wherein the first address relocation operation is based on function name information on the kernel service routine provided by the kernel of the target system and offset information on which a call routine for the kernel service routine exists in the vector table. Dynamic link method of the application, characterized in that performed by. 제1항에 있어서, 상기 제1 단계에서 상기 컴포넌트 소스로부터 상기 오브젝트 파일을 생성함에 있어서 상기 오브젝트 파일에 BSS 섹션이 할당되도록 하는 것을 특징으로 하는 응용 프로그램의 동적링크 방법.The method of claim 1, wherein the BSS section is allocated to the object file when generating the object file from the component source in the first step. 제1항 내지 제4항 중의 어느 하나의 항에 따른 응용 프로그램의 동적링크 방법을 구현하는 프로그램을 기록한 컴퓨터로 판독가능한 정보기록매체.A computer-readable information recording medium having recorded thereon a program for implementing the dynamic link method of an application program according to any one of claims 1 to 4.
KR10-2003-0050016A 2003-07-22 2003-07-22 Dynamic Linking Method for Application Program KR100478463B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2003-0050016A KR100478463B1 (en) 2003-07-22 2003-07-22 Dynamic Linking Method for Application Program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0050016A KR100478463B1 (en) 2003-07-22 2003-07-22 Dynamic Linking Method for Application Program

Publications (2)

Publication Number Publication Date
KR20050010640A KR20050010640A (en) 2005-01-28
KR100478463B1 true KR100478463B1 (en) 2005-03-23

Family

ID=37223012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0050016A KR100478463B1 (en) 2003-07-22 2003-07-22 Dynamic Linking Method for Application Program

Country Status (1)

Country Link
KR (1) KR100478463B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101200236B1 (en) 2006-10-31 2012-11-09 에스케이플래닛 주식회사 terminal having a lazy loading function of the wireless internet platform module and controlling method for the same

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100722233B1 (en) * 2005-10-12 2007-05-29 인포뱅크 주식회사 Method and Apparatus for Linking Separate Execution Files for Embedded System
KR100799599B1 (en) * 2006-05-03 2008-01-31 연세대학교 산학협력단 Resilient Operating System and Method for MMU-less Embedded Systems
KR101281954B1 (en) * 2006-08-08 2013-07-03 삼성전자주식회사 Method of incremental linking for embedded system
KR20080039080A (en) * 2006-10-31 2008-05-07 에스케이 텔레콤주식회사 Terminal having an interfacing function of the heterogeneity language compile library, api calling method and compile function generating method
KR100866211B1 (en) * 2007-01-03 2008-10-30 삼성전자주식회사 Apparatus and method for developing programs and a method of updating programs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101200236B1 (en) 2006-10-31 2012-11-09 에스케이플래닛 주식회사 terminal having a lazy loading function of the wireless internet platform module and controlling method for the same

Also Published As

Publication number Publication date
KR20050010640A (en) 2005-01-28

Similar Documents

Publication Publication Date Title
KR100518584B1 (en) Shared library system and method for constructing the system
US7337434B2 (en) Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device
US6460178B1 (en) Shared library optimization for heterogeneous programs
KR100864192B1 (en) Method and device for creating and using pre-internalized program files
CN111399990B (en) Method and device for interpreting and executing intelligent contract instruction
KR101213275B1 (en) System and method for providing monolithic image for use in a wireless device
US20070132774A1 (en) System and method for a patch minimization tool
CN109614165B (en) Multi-version parallel operation method and device for COM (component object model) component
US20040025083A1 (en) Generating test code for software
JPH0836488A (en) Method and device for checking run-time error using dynamic patching
JPH10320214A (en) Compile system and computer program product
KR101059633B1 (en) Heap configuration for multitasking virtual machines
US20040083467A1 (en) System and method for executing intermediate code
JP5401561B2 (en) Application of platform-dependent routines within a virtual mechanism by embedding native code in a class file
CN114816417A (en) Cross compiling method and device, computing equipment and storage medium
CN101334737A (en) Embedded equipment start-up or reset method
CN102364433A (en) Method for realizing Wine construction tool transplanting on ARM (Advanced RISC Machines) processor
KR100478463B1 (en) Dynamic Linking Method for Application Program
KR20090035521A (en) A method to use global variables for pre-efi initialization modules in efi-based firmware
JP2007510211A (en) Mapping dynamic link libraries on computer equipment
US7503040B2 (en) Configuring a shared library to accommodate relocatable data in a pervasive device
CN114880076B (en) Dynamic loading method and device for dynamic mapping file of user-mode virtual machine
CN110941433B (en) Method and system for edge-assisted deployment of third party application to microcontroller
CN116661904B (en) Device and method for packaging AppImage application software based on Shenwei platform
CN117707540A (en) Development loading method and device for decoupling of internal modules of embedded software

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130314

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee