WO2015083234A1 - 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム - Google Patents

関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム Download PDF

Info

Publication number
WO2015083234A1
WO2015083234A1 PCT/JP2013/082465 JP2013082465W WO2015083234A1 WO 2015083234 A1 WO2015083234 A1 WO 2015083234A1 JP 2013082465 W JP2013082465 W JP 2013082465W WO 2015083234 A1 WO2015083234 A1 WO 2015083234A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
program
address
additional
execution
Prior art date
Application number
PCT/JP2013/082465
Other languages
English (en)
French (fr)
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 PCT/JP2013/082465 priority Critical patent/WO2015083234A1/ja
Publication of WO2015083234A1 publication Critical patent/WO2015083234A1/ja

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
    • G06F9/44526Plug-ins; Add-ons
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Definitions

  • the present invention relates to a technique for executing a program that calls a function.
  • a function used by a plurality of applications is a DLL (a program that stores the program as a component and saves it as a file. Dynamic link library) is used.
  • a large-scale OS for performing file management and memory management is required as software, and a high-speed CPU (Central Processing Unit) for operating the OS and a large-sized ROM are required as hardware.
  • Read Only Memory requires a RAM (Random Access Memory) for allocating virtual memory.
  • Control devices that control automobiles have strict cost conditions and cannot have the same environment as information-related control devices. Therefore, in a vehicle control apparatus, a program (object code) using a statically determined absolute address is generally used so that it can be operated with less resources while suppressing processing load.
  • Patent Document 1 proposes a method for keeping the rewritten portion of the program within a local range.
  • a program is composed of a plurality of modules, the plurality of modules are compiled and linked, the plurality of modules are stored in a storage medium, and map information indicating the address of a function used in each module is stored in the storage medium. is doing.
  • the function address is read from the map information, and the function is accessed using the read address.
  • the map information is updated for the function whose address has changed. That is, in the prior art, it is necessary to perform the link again when the program is changed.
  • the object of the present invention is to enable a function to be called from the program without linking the function and the program that calls the function by linkage.
  • the table generation apparatus of the present invention A function address list including a first function name for identifying a first function and a first function address for specifying a first function area in which the first function is stored; A list storage unit for storing a used function list including a first used function name for identifying a first used function to be recorded; When the first used function name included in the used function list and the first function name included in the function address list are the same, when the first used function is called from the execution program A function call table generation unit that sets the first function address in a function call table that is a table to be referred to.
  • a function call table in which a function address of a function to be used is set.
  • the use function can be called from the execution program without linking the use function and the execution program that calls the use function by linkage.
  • FIG. 1 is a configuration diagram of an information processing system 100 according to Embodiment 1.
  • FIG. 3 is a functional configuration diagram of a basic program development device 200 according to Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of a function address list 280 according to Embodiment 1.
  • FIG. 3 is a functional configuration diagram of an additional program development device 300 according to Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of a used function list 380 according to Embodiment 1.
  • FIG. 3 is a functional configuration diagram of an additional program registration device 400 according to Embodiment 1.
  • FIG. FIG. 11 is a diagram showing an example of a link table 480 in the first embodiment.
  • 3 is a functional configuration diagram of a program execution device 500 according to Embodiment 1.
  • FIG. 6 is a diagram showing a storage area of an execution device storage unit 590 according to Embodiment 1.
  • FIG. 6 is a flowchart of link table generation processing in the first embodiment.
  • 3 is a flowchart of a function call process in the first embodiment.
  • 6 is a diagram illustrating an example of a storage area of an execution device storage unit 590 according to Embodiment 1.
  • FIG. 3 is a diagram illustrating an example of a hardware configuration of an additional program registration device 400 according to Embodiment 1.
  • Embodiment 1 FIG. A description will be given of a mode in which a function can be called from the program without linking the function and the program that calls the function by linkage.
  • a function can be rephrased as a module, a subroutine, a method, or a procedure.
  • FIG. 1 is a configuration diagram of an information processing system 100 according to the first embodiment. A configuration of the information processing system 100 according to Embodiment 1 will be described with reference to FIG.
  • the information processing system 100 is a system for executing a program having a plurality of functions (hereinafter referred to as a basic program) and a program using a function of the basic program (hereinafter referred to as an additional program).
  • the additional program may be a new program or a program obtained by changing a part of an existing program.
  • the information processing system 100 includes a basic program development device 200, an additional program development device 300, an additional program registration device 400, and a program execution device 500.
  • the basic program development device 200 (an example of a function address list generation device) is a device for developing a basic program.
  • the basic program developer uses the basic program development apparatus 200 to develop the basic program.
  • the basic program is a standard application program for controlling an automobile.
  • the function of the basic program is a device driver that provides an interface for controlling automobile parts.
  • the additional program development device 300 (an example of a used function list generation device) is a device for developing an additional program.
  • the developer of the additional program uses the additional program development device 300 to develop the additional program.
  • the additional program is an application program that controls automobile parts.
  • the additional program registration device 400 (an example of a function call table generation device) is a device that registers an additional program in the program execution device 500.
  • the program execution device 500 is a device that executes a basic program and an additional program.
  • the program execution device 500 is a vehicle control device that controls a vehicle by executing a basic program and an additional program.
  • FIG. 2 is a functional configuration diagram of the basic program development device 200 according to the first embodiment. A functional configuration of the basic program development apparatus 200 in the first embodiment will be described with reference to FIG.
  • the basic program development device 200 includes a basic program development unit 210, a function address list generation unit 220, and a basic program storage unit 290.
  • the basic program development unit 210 generates a source file of a basic program and a source file of a function to be included in the basic program (hereinafter referred to as a public function) according to instructions from the program developer.
  • the source file of the basic program is referred to as a basic source program 260
  • the source file of the public function is referred to as a public function source code 261.
  • the basic program development unit 210 generates an object file of the basic program by compiling and linking each source file.
  • the object file of the basic program is referred to as a basic object program 270.
  • the basic object program 270 includes a public function object 271 that is an object code of a public function.
  • the basic program development unit 210 generates a map file 272 when each source file is linked.
  • the map file 272 is a file including address information of symbols (for example, public functions) included in the object file.
  • the function address list generation unit 220 acquires the address information of the public function from the map file 272, and generates a function address list 280 indicating an address for specifying a storage area in which the public function is stored.
  • the basic program development device 200 may include a registration unit that registers (stores or installs) the basic object program 270 in the program execution device 500, or a transmission unit that transmits the function address list 280 to the additional program registration device 400. .
  • the basic program storage unit 290 stores data used, generated or input / output by the basic program development device 200.
  • the basic program storage unit 290 stores a basic source program 260, a public function source code 261, a basic object program 270, a map file 272, and a function address list 280.
  • FIG. 3 is a diagram showing an example of the function address list 280 in the first embodiment. An example of the function address list 280 in the first embodiment will be described with reference to FIG.
  • the function address list 280 associates numbers, public function names, and addresses.
  • the public function name indicates an identifier for identifying the public function
  • the address indicates a head address of a storage area in which the public function is stored.
  • the public function A is stored in a storage area starting from 0x101000. That is, the public function A can be used by accessing a storage area starting from 0x101000.
  • FIG. 4 is a functional configuration diagram of the additional program development device 300 according to the first embodiment. A functional configuration of the additional program development apparatus 300 according to the first embodiment will be described with reference to FIG.
  • the additional program development apparatus 300 includes an additional program development unit 310, a used function list generation unit 320, and an additional program storage unit 390.
  • the additional program development unit 310 generates a source file of the additional program according to instructions from the program developer.
  • the source file of the additional program is referred to as an additional source program 360.
  • the additional source program 360 includes function call code 361.
  • the function call code 361 is a source code of a function call process (for example, a module, a subroutine, a function, a method, a procedure, or an instruction code) that calls a public function.
  • the program developer describes a call function (an example of the function call code 361), which is a function call processing function, in the additional source program 360.
  • the program developer can call a statement that calls the calling function (the function name of the calling function, the function name of the public function, (Including arguments) is described in the additional source program 360.
  • the program developer may describe a command statement for calling a public function in the additional source program 360, as in normal programming. In that case, the additional program development unit 310 converts a command statement for calling the public function into a command statement for calling the call function.
  • the additional program development unit 310 generates an object file for the additional program by compiling and linking the additional source program 360.
  • the object file of the additional program is referred to as an additional object program 370.
  • the additional object program 370 includes a function call code 371 that is an object code of the function call process.
  • the used function list generation unit 320 specifies a public function (hereinafter referred to as a used function) called from the additional program based on the additional source program 360, and generates a used function list 380 that is a list of the specified used functions.
  • a used function a public function (hereinafter referred to as a used function) called from the additional program based on the additional source program 360, and generates a used function list 380 that is a list of the specified used functions.
  • the additional program development apparatus 300 may include a transmission unit that transmits the used function list 380 to the additional program registration apparatus 400.
  • the additional program storage unit 390 stores data used, generated or input / output by the additional program development apparatus 300.
  • the additional program storage unit 390 stores an additional source program 360, an additional object program 370 (an example of an execution program), and a used function list 380.
  • FIG. 5 is a diagram showing an example of the used function list 380 in the first embodiment. An example of the used function list 380 in the first embodiment will be described with reference to FIG.
  • the used function list 380 associates numbers with used function names.
  • the number indicates the order in which the used functions are called, and the used function name indicates an identifier for identifying the used function.
  • the used function list 380 means that the additional program calls the public functions A, C, and E among the plurality of public functions in the order of the public function A, the public function C, and the public function E.
  • the used function list 380 may not include a number column. In this case, the public function identified by the usage function name set to the Kth in the usage function list 380 is the public function called from the additional program.
  • FIG. 6 is a functional configuration diagram of the additional program registration apparatus 400 according to the first embodiment. A functional configuration of the additional program registration device 400 according to the first embodiment will be described with reference to FIG.
  • the additional program registration device 400 includes a link table generation unit 410 (an example of a function call table generation unit), an additional program registration unit 420 (an example of a function call table registration unit), and a registration device storage unit 490.
  • the link table generation unit 410 generates a link table 480 (an example of a function call table) based on the function address list 280 and the used function list 380.
  • the link table 480 is a table indicating an address for specifying a storage area in which a public function (used function) called from the additional program is stored.
  • the additional program registration unit 420 registers (stores and installs) the additional object program 370 and the link table 480 in the storage medium of the program execution device 500 by transmitting the additional object program 370 and the link table 480 to the program execution device 500. )
  • the additional program registration device 400 registers a function address list 280 from the basic program development device 200, a reception unit that receives the used function list 380 from the additional program development device 300, and a basic object program 270 to the program execution device 500.
  • a registration unit or the like may be provided.
  • the registration device storage unit 490 stores data used, generated, or input / output by the additional program registration device 400.
  • the registration device storage unit 490 stores a function address list 280, a used function list 380, a link table 480, and an additional object program 370.
  • the user stores in advance the function address list 280, the additional object program 370, and the used function list 380 in the registration device storage unit 490.
  • FIG. 7 is a diagram illustrating an example of the link table 480 in the first embodiment. An example of the link table 480 in the first embodiment will be described with reference to FIG.
  • the link table 480 includes one or more records in which a start address of a storage area in which a public function (used function) called from the additional program is stored is set.
  • the size of the record is a predetermined size (for example, 4 bytes).
  • the address set in the Kth record of the link table 480 is the start address of the public function called from the additional program to the Kth.
  • the public function A called first from the additional program is stored in a storage area starting from 0x101000
  • the public function C called second from the additional program is stored in a storage area starting from 0x101B00. This means that the public function E to be called first is stored in the storage area starting from 0x102100.
  • the link table 480 may include a number field indicating the order in which the public functions are called, as in the use function list 380 (see FIG. 5).
  • FIG. 8 is a functional configuration diagram of the program execution device 500 according to the first embodiment. A functional configuration of the program execution device 500 in the first embodiment will be described with reference to FIG.
  • the program execution device 500 includes a program writing unit 510, a program execution unit 520, and an execution device storage unit 590 (an example of a main storage unit).
  • the program writing unit 510 stores the basic object program 270, the additional object program 370 or the link table 480 input to the program execution device 500 in the execution device storage unit 590.
  • the program writing unit 510 receives the additional object program 370 and the link table 480 from the additional program registration device 400, and writes the received additional object program 370 and link table 480 in the storage area of the execution device storage unit 590.
  • the program execution unit 520 executes the additional object program 370 stored in the execution device storage unit 590.
  • the program execution unit 520 executes a public function (used function) called by the function call code 371 when the additional object program 370 is executed.
  • the execution device storage unit 590 stores data used, generated or input / output by the program execution device 500.
  • the execution device storage unit 590 is configured using a flash ROM (an example of a nonvolatile memory) that can rewrite data.
  • the execution device storage unit 590 stores a basic object program 270, an additional object program 370, and a link table 480.
  • FIG. 9 is a diagram illustrating a storage area of the execution device storage unit 590 according to the first embodiment.
  • the storage area of the execution device storage unit 590 in Embodiment 1 will be described with reference to FIG.
  • the execution device storage unit 590 includes a basic program area 591 and one or more additional program areas 592.
  • the basic program area 591 is a storage area for storing the basic object program 270.
  • the additional program area 592 is a storage area for storing the additional object program 370 and the link table 480.
  • the additional program area 592 includes an object area 593 that stores the additional object program 370 and a link table area 594 that stores the link table 480.
  • the storage area starting from the top address of the additional program area 592 is the object area 593
  • the additional object program 370 is stored in the storage area starting from the top address of the object area 593.
  • the link table 480 is stored in a storage area starting from the top address of the link table area 594.
  • the offset value of the link table area 594 is described in the additional source program 360, and the offset value is defined in the additional object program 370.
  • the offset value means a relative address. That is, the offset value of the link table area 594 is a relative address of the head of the link table area 594 with respect to the head address of the additional program area 592 (or the object area 593).
  • the offset value of the link table area 594 is a predetermined value.
  • FIG. 10 is a flowchart of the link table generation process in the first embodiment.
  • the link table generation process according to the first embodiment will be described with reference to FIG.
  • the link table generation unit 410 of the additional program registration device 400 (see FIG. 6) generates a link table 480 (see FIG. 7) by a link table generation process described below.
  • the link table generation unit 410 acquires one unacquired used function name from the used function list 380 (see FIG. 5). For example, the link table generation unit 410 acquires one used function name from the used function list 380 in the order of numbers (or in the order of setting). For example, the link table generating unit 410 acquires the first used function name (public function A) from the used function list 380 in FIG.
  • the number of the used function name acquired in S101 is referred to as K number.
  • the used function identified by the Kth used function name is a public function called Kth from the additional program.
  • the link table generation unit 410 acquires from the function address list 280 (see FIG. 3) an address associated with the same public function name as the Kth used function name acquired in S101. For example, when the used function name acquired in S101 is the public function A, the link table generation unit 410 acquires the address (0x101000) associated with the public function A from the function address list 280 of FIG. Hereinafter, the address acquired in S102 is referred to as a Kth address. After S102, the process proceeds to S103.
  • the link table generation unit 410 sets the Kth address acquired in S102 in the Kth record of the link table 480 (see FIG. 7). For example, the link table generation unit 410 adds one record to the link table 480 and sets the Kth address in the added record (Kth record). For example, the link table generating unit 410 sets the address (0x101000) of the public function A that is the first used function in the first record of the link table 480 (see FIG. 7). After S103, the process proceeds to S104.
  • the link table generation unit 410 determines whether or not an unused function name that has not been acquired in S101 remains. If an unacquired used function name remains (YES), the process returns to S101. If there are no unacquired used function names remaining (NO), the link table generation process ends.
  • the link table 480 (see FIG. 7) is generated by the link table generation process (see FIG. 10).
  • the link table 480 is stored in the execution device storage unit 590 of the program execution device 500 together with the additional object program 370 (see FIG. 9).
  • FIG. 11 is a flowchart of the function call process in the first embodiment.
  • the function call process in Embodiment 1 is demonstrated based on FIG.
  • the function call process is a process described as a function call code 371 in the additional object program 370.
  • the Kth function call processing when the function call code 371 is executed K times will be described.
  • the number of times the function call code 371 is executed can be stored using a variable that is incremented each time the function call code 371 is executed.
  • the program execution unit 520 adds the offset value of the link table area 594 to the address value of the start address of the object area 593 in which the additional object program 370 being executed is stored, so that the start of the link table 480 is obtained. Calculate the address. At this time, the program execution unit 520 can use the address value of the start address of the additional object program 370 as the address value of the start address of the object area 593. Further, the program execution unit 520 can use the offset value of the link table area 594 that is a value defined in the additional object program 370. After S111, the process proceeds to S112.
  • FIG. 12 is a diagram illustrating an example of a storage area of the execution device storage unit 590 according to the first embodiment.
  • the program execution unit 520 calculates the start address (0x11F000) of the link table 480 by adding the offset value (0x00F000) of the link table area 594 to the address value (0x110000) of the start address of the object area 593. To do.
  • the description will be continued from S112.
  • the program execution unit 520 calculates the offset value of the Kth record by multiplying the record size of the link table 480 by (K-1). At this time, the program execution unit 520 can use a record size that is a value defined in the additional object program 370. Then, the program execution unit 520 calculates the start address of the Kth record in the link table 480 by adding the offset value of the Kth record to the address value of the start address of the link table 480. After S112, the process proceeds to S113.
  • the record size of the link table 480 is 4 bytes (0x4).
  • the program execution unit 520 accesses the Kth record in the link table 480 using the head address of the Kth record in the link table 480. Then, the program execution unit 520 reads the address from the Kth record of the link table 480.
  • the address set in the Kth record of the link table 480 is the start address of the public function called up to the Kth.
  • the program execution unit 520 calls the Kth public function by accessing the storage area starting from the address read from the Kth record of the link table 480. After S114, the Kth function call processing ends.
  • FIG. 13 is a diagram illustrating an example of a hardware configuration of the additional program registration device 400 according to the first embodiment. An example of the hardware configuration of the additional program registration device 400 according to the first embodiment will be described with reference to FIG. However, the hardware configuration of the additional program registration device 400 may be different from the configuration shown in FIG.
  • the additional program registration device 400 is a computer that includes an arithmetic device 901, an auxiliary storage device 902, a main storage device 903, a communication device 904, and an input / output device 905.
  • the arithmetic device 901, auxiliary storage device 902, main storage device 903, communication device 904, and input / output device 905 are connected to the bus 909.
  • the arithmetic device 901 is a CPU (Central Processing Unit) that executes a program.
  • the auxiliary storage device 902 is, for example, a ROM (Read Only Memory), a flash memory, or a hard disk device.
  • the main storage device 903 is, for example, a RAM (Random Access Memory).
  • the communication device 904 performs communication via the Internet, a LAN (local area network), a telephone line network, or other networks in a wired or wireless manner.
  • the input / output device 905 is, for example, a mouse, a keyboard, or a display device.
  • the program is normally stored in the auxiliary storage device 902, loaded into the main storage device 903, read into the arithmetic device 901, and executed by the arithmetic device 901.
  • an operating system OS
  • a program for realizing the function described as “ ⁇ unit” is stored in the auxiliary storage device 902.
  • the OS and the program that realizes the functions described as “ ⁇ units” are loaded into the main storage device 903 and executed by the arithmetic device 901. “ ⁇ part” can be read as “ ⁇ processing” and “ ⁇ process”.
  • the hardware configuration of the basic program development device 200, the additional program development device 300, and the program execution device 500 is the same as that of the additional program registration device 400.
  • the basic program development device 200 generates a function address list 280 that lists the addresses of public functions that the basic program discloses to the additional program.
  • the additional program development apparatus 300 generates a used function list 380 that lists public functions of basic programs used by the additional program.
  • the additional program registration apparatus 400 stores the address of the public function used by the additional program in the link table 480.
  • the program execution device 500 includes a link table 480 along with objects of additional programs.
  • Embodiment 1 has the following effects, for example.
  • An object whose link has not been resolved (additional object program 370) can be added on without using a linker.
  • link destination address information address of function used
  • link destination address information is stored in the link table 480. Therefore, even if the link destination address information changes, if the link table 480 is updated, the object can be added on without recreating the object.
  • the first embodiment is an example of a form of the information processing system 100. That is, the information processing system 100 may not include some of the components described in the first embodiment. Further, the information processing system 100 may include components that are not described in the first embodiment.
  • a plurality of devices (for example, the basic program development device 200 and the additional program development device 300) provided in the information processing system 100 may be configured as a single device. Each device included in the information processing system 100 may be configured by a plurality of devices instead of a single device.
  • the processing procedure described in the first embodiment using a flowchart or the like is an example of the processing procedure of the method according to the first embodiment and the processing procedure of the program. That is, the method and the program according to the first embodiment may be realized by a processing procedure partially different from the processing procedure described in the first embodiment.
  • 100 information processing system 200 basic program development device, 210 basic program development unit, 220 function address list generation unit, 260 basic source program, 261 public function source code, 270 basic object program, 271 public function object, 272 map file, 280 Function address list, 290 basic program storage unit, 300 additional program development device, 310 additional program development unit, 320 used function list generation unit, 360 additional source program, 361 function call code, 370 additional object program, 371 function call code, 380 Used function list, 390 additional program storage unit, 400 additional program registration device, 410 link table generation unit, 42 Additional program registration unit, 480 link table, 490 registration device storage unit, 500 program execution device, 510 program writing unit, 520 program execution unit, 590 execution device storage unit, 591 basic program area, 592 additional program area, 593 object area, 594 Link table area, 901 arithmetic device, 902 auxiliary storage device, 903 main storage device, 904 communication device, 905 input / output device, 909 bus.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

 基本プログラム開発装置(200)は、基本プログラムが追加プログラムに公開する公開関数のアドレスを列挙した関数アドレスリストを生成する。追加プログラム開発装置(300)は、追加プログラムが使用する基本プログラムの公開関数を列挙した使用関数リストを生成する。追加プログラム登録装置(400)は、追加プログラムが使用する公開関数のアドレスをリンクテーブルに格納する。プログラム実行装置(500)は、基本プログラムと追加プログラムとリンクテーブルとを備え、追加プログラムと追加プログラムが使用する公開関数とを実行する。

Description

関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム
 本発明は、関数を呼び出すプログラムを実行するための技術に関するものである。
 情報系の制御装置では、複数のアプリケーションから使用される機能は、そのプログラムを部品化してファイルとして保存しておき、アプリケーション起動時にOS(オペレーティングシステム)がファイルを仮想メモリに呼び出して利用するDLL(ダイナミックリンクライブラリ)の手法が用いられる。この手法を実現するためには、ソフトウェアとしてはファイル管理やメモリ管理を行う規模の大きなOSが必要であり、ハードウェアとしてはOSを動かすための高速なCPU(Central Processing Unit)やサイズの大きなROM(Read Only Memory)、仮想メモリを割り当てるためのRAM(Random Access Memory)を必要とする。
 自動車を制御する制御装置は、コストの条件が厳しく情報系の制御装置と同じ環境を持つことはできない。よって、自動車の制御装置では、一般的に処理負荷を抑えながら省リソースで動かすことができように、静的に定まった絶対アドレスを用いたプログラム(オブジェクトコード)が用いられる。
 制御装置のプログラムが改修された場合、制御装置のフラッシュROMに格納されているプログラムの書き換えが行われる。しかし、プログラムの全体を書き換えると時間がかかるため、プログラムの書き換え箇所を局所的な範囲に抑える方法が提案されている(特許文献1)。
 従来技術では、プログラムを複数のモジュールで構成し、複数のモジュールをコンパイルおよびリンクし、複数のモジュールを記憶媒体に記憶し、各モジュールで使用される関数のアドレスを示すマップ情報を記憶媒体に記憶している。各モジュールを実行したときにはマップ情報から関数のアドレスを読み出し、読み出したアドレスを用いて関数にアクセスする。また、いずれかのモジュールが変更され、又は、新たなモジュールが追加されたときには全てのモジュールが新たにリンクされ、アドレスが変わった関数についてマップ情報が更新される。
 つまり、従来技術では、プログラムが変更されたときにリンクを再び行う必要がある。
特開2009-288858号公報
 本発明は、関数と関数を呼び出すプログラムとをリンケージによって結合しなくても、そのプログラムから関数を呼び出せるようにすることを目的とする。
 本発明のテーブル生成装置は、
 第一の関数を識別する第一の関数名と前記第一の関数が記憶される第一の関数領域を特定するための第一の関数アドレスとを含んだ関数アドレスリストと、実行プログラムから呼び出される第一の使用関数を識別する第一の使用関数名を含んだ使用関数リストとを記憶するリスト記憶部と、
 前記使用関数リストに含まれる前記第一の使用関数名と前記関数アドレスリストに含まれる前記第一の関数名とが同じである場合、前記実行プログラムから前記第一の使用関数が呼び出されるときに参照されるテーブルである関数呼び出しテーブルに前記第一の関数アドレスを設定する関数呼び出しテーブル生成部とを備える。
 本発明によれば、使用関数の関数アドレスが設定された関数呼び出しテーブルを生成することができる。この関数呼び出しテーブルを使用関数を呼び出すときに参照することにより、使用関数と使用関数を呼び出す実行プログラムとをリンケージによって結合しなくても、その実行プログラムから使用関数を呼び出すことができる。
実施の形態1における情報処理システム100の構成図である。 実施の形態1における基本プログラム開発装置200の機能構成図である。 実施の形態1における関数アドレスリスト280の一例を示す図である。 実施の形態1における追加プログラム開発装置300の機能構成図である。 実施の形態1における使用関数リスト380の一例を示す図である。 実施の形態1における追加プログラム登録装置400の機能構成図である。 実施の形態1におけるリンクテーブル480の一例を示す図である。 実施の形態1におけるプログラム実行装置500の機能構成図である。 実施の形態1における実行装置記憶部590の記憶領域を示す図である。 実施の形態1におけるリンクテーブル生成処理のフローチャートである。 実施の形態1における関数呼び出し処理のフローチャートである。 実施の形態1における実行装置記憶部590の記憶領域の一例を示す図である。 実施の形態1における追加プログラム登録装置400のハードウェア構成の一例を示す図である。
 実施の形態1.
 関数と関数を呼び出すプログラムとをリンケージによって結合しなくても、そのプログラムから関数を呼び出せるようにする形態について説明する。
 関数はモジュール、サブルーチン、メソッド、手続きなどとも言い換えることができる。
 図1は、実施の形態1における情報処理システム100の構成図である。
 実施の形態1における情報処理システム100の構成について、図1に基づいて説明する。
 情報処理システム100は、複数の関数を備えるプログラム(以下、基本プログラムという)と基本プログラムの関数を使用するプログラム(以下、追加プログラムという)とを実行するためのシステムである。なお、追加プログラムは新たなプログラムであってもよいし、既存のプログラムの一部を変更したプログラムでもあってもよい。
 情報処理システム100は、基本プログラム開発装置200と、追加プログラム開発装置300と、追加プログラム登録装置400と、プログラム実行装置500とを備える。
 基本プログラム開発装置200(関数アドレスリスト生成装置の一例)は、基本プログラムを開発するための装置である。基本プログラムの開発者は、基本プログラム開発装置200を用いて基本プログラムの開発を行う。例えば、基本プログラムは、自動車を制御するための標準的なアプリケーションプログラムである。例えば、基本プログラムの関数は、自動車の部品を制御するためのインタフェースを提供するデバイスドライバである。
 追加プログラム開発装置300(使用関数リスト生成装置の一例)は、追加プログラムを開発するための装置である。追加プログラムの開発者は、追加プログラム開発装置300を用いて追加プログラムの開発を行う。例えば、追加プログラムは、自動車の部品を制御するアプリケーションプログラムである。
 追加プログラム登録装置400(関数呼び出しテーブル生成装置の一例)は、追加プログラムをプログラム実行装置500に登録する装置である。
 プログラム実行装置500は、基本プログラムおよび追加プログラムを実行する装置である。例えば、プログラム実行装置500は、基本プログラムおよび追加プログラムを実行することによって自動車を制御する自動車制御装置である。
 図2は、実施の形態1における基本プログラム開発装置200の機能構成図である。
 実施の形態1における基本プログラム開発装置200の機能構成について、図2に基づいて説明する。
 基本プログラム開発装置200は、基本プログラム開発部210と、関数アドレスリスト生成部220と、基本プログラム記憶部290とを備える。
 基本プログラム開発部210は、プログラム開発者の指示に従って基本プログラムのソースファイルと、基本プログラムに含める関数(以下、公開関数という)のソースファイルとを生成する。以下、基本プログラムのソースファイルを基本ソースプログラム260といい、公開関数のソースファイルを公開関数ソースコード261という。
 基本プログラム開発部210は、各ソースファイルをコンパイルおよびリンクすることによって、基本プログラムのオブジェクトファイルを生成する。以下、基本プログラムのオブジェクトファイルを基本オブジェクトプログラム270という。基本オブジェクトプログラム270は公開関数のオブジェクトコードである公開関数オブジェクト271を含む。
 基本プログラム開発部210は、各ソースファイルをリンクしたときにマップファイル272を生成する。マップファイル272は、オブジェクトファイルに含まれるシンボル(例えば、公開関数)のアドレス情報を含んだファイルである。
 関数アドレスリスト生成部220は、マップファイル272から公開関数のアドレス情報を取得し、公開関数が記憶される記憶領域を特定するためのアドレスを示す関数アドレスリスト280を生成する。
 基本プログラム開発装置200は、基本オブジェクトプログラム270をプログラム実行装置500に登録(記憶、インストール)する登録部、または、関数アドレスリスト280を追加プログラム登録装置400に送信する送信部などを備えてもよい。
 基本プログラム記憶部290は、基本プログラム開発装置200が使用、生成または入出力するデータを記憶する。
 例えば、基本プログラム記憶部290は、基本ソースプログラム260と、公開関数ソースコード261と、基本オブジェクトプログラム270と、マップファイル272と、関数アドレスリスト280とを記憶する。
 図3は、実施の形態1における関数アドレスリスト280の一例を示す図である。
 実施の形態1における関数アドレスリスト280の一例について、図3に基づいて説明する。
 関数アドレスリスト280は番号と公開関数名とアドレスとを対応付けている。
 公開関数名は公開関数を識別する識別子を示し、アドレスは公開関数が記憶される記憶領域の先頭アドレスを示す。
 例えば、公開関数Aは0x101000から始まる記憶領域に記憶される。つまり、0x101000から始まる記憶領域にアクセスすることによって公開関数Aを使用することができる。
 図4は、実施の形態1における追加プログラム開発装置300の機能構成図である。
 実施の形態1における追加プログラム開発装置300の機能構成について、図4に基づいて説明する。
 追加プログラム開発装置300は、追加プログラム開発部310と、使用関数リスト生成部320と、追加プログラム記憶部390とを備える。
 追加プログラム開発部310は、プログラム開発者の指示に従って追加プログラムのソースファイルを生成する。以下、追加プログラムのソースファイルを追加ソースプログラム360という。追加ソースプログラム360は関数呼び出しコード361を含む。関数呼び出しコード361は、公開関数を呼び出す関数呼び出し処理(例えば、モジュール、サブルーチン、関数、メソッド、手続きまたは命令コード)のソースコードである。
 例えば、プログラム開発者は、関数呼び出し処理用の関数である呼び出し関数(関数呼び出しコード361の一例)を追加ソースプログラム360に記述する。また、プログラム開発者は、公開関数を呼び出す命令文(公開関数の関数名および引数を含む)の代わりに、呼び出し関数を呼び出す命令文(呼び出し関数の関数名、公開関数の関数名、公開関数の引数などを含む)を追加ソースプログラム360に記述する。但し、プログラム開発者は、通常のプログラミングと同様に、公開関数を呼び出す命令文を追加ソースプログラム360に記述してもよい。その場合、追加プログラム開発部310は、公開関数を呼び出す命令文を、呼び出し関数を呼び出す命令文に変換する。
 追加プログラム開発部310は、追加ソースプログラム360をコンパイルおよびリンクすることによって、追加プログラムのオブジェクトファイルを生成する。以下、追加プログラムのオブジェクトファイルを追加オブジェクトプログラム370という。追加オブジェクトプログラム370は関数呼び出し処理のオブジェクトコードである関数呼び出しコード371を含む。
 使用関数リスト生成部320は、追加ソースプログラム360に基づいて追加プログラムから呼び出される公開関数(以下、使用関数という)を特定し、特定した使用関数のリストである使用関数リスト380を生成する。
 追加プログラム開発装置300は、使用関数リスト380を追加プログラム登録装置400に送信する送信部などを備えてもよい。
 追加プログラム記憶部390は、追加プログラム開発装置300が使用、生成または入出力するデータを記憶する。
 例えば、追加プログラム記憶部390は、追加ソースプログラム360と、追加オブジェクトプログラム370(実行プログラムの一例)と、使用関数リスト380とを記憶する。
 図5は、実施の形態1における使用関数リスト380の一例を示す図である。
 実施の形態1における使用関数リスト380の一例について、図5に基づいて説明する。
 使用関数リスト380は、番号と使用関数名とを対応付けている。
 番号は使用関数が呼び出される順番を示し、使用関数名は使用関数を識別する識別子を示す。
 使用関数リスト380は、追加プログラムが複数の公開関数のうちの公開関数A、C、Eを公開関数A、公開関数C、公開関数Eの順番で呼び出すことを意味している。
 使用関数リスト380は番号の列を備えなくても構わない。その場合、使用関数リスト380のK番目に設定されている使用関数名によって識別される公開関数が、追加プログラムからK番目に呼び出される公開関数である。
 図6は、実施の形態1における追加プログラム登録装置400の機能構成図である。
 実施の形態1における追加プログラム登録装置400の機能構成について、図6に基づいて説明する。
 追加プログラム登録装置400は、リンクテーブル生成部410(関数呼び出しテーブル生成部の一例)と、追加プログラム登録部420(関数呼び出しテーブル登録部の一例)と、登録装置記憶部490とを備える。
 リンクテーブル生成部410は、関数アドレスリスト280と使用関数リスト380とに基づいてリンクテーブル480(関数呼び出しテーブルの一例)を生成する。
 リンクテーブル480は、追加プログラムから呼び出される公開関数(使用関数)が記憶される記憶領域を特定するためのアドレスを示すテーブルである。
 追加プログラム登録部420は、追加オブジェクトプログラム370とリンクテーブル480とをプログラム実行装置500に送信することによって、追加オブジェクトプログラム370とリンクテーブル480とをプログラム実行装置500の記憶媒体に登録(記憶、インストール)する。
 追加プログラム登録装置400は、関数アドレスリスト280を基本プログラム開発装置200から受信する受信部、使用関数リスト380を追加プログラム開発装置300から受信する受信部、基本オブジェクトプログラム270をプログラム実行装置500に登録する登録部などを備えても構わない。
 登録装置記憶部490は、追加プログラム登録装置400が使用、生成または入出力するデータを記憶する。
 例えば、登録装置記憶部490は、関数アドレスリスト280と、使用関数リスト380と、リンクテーブル480と、追加オブジェクトプログラム370とを記憶する。
 例えば、利用者は、関数アドレスリスト280と追加オブジェクトプログラム370と使用関数リスト380とを登録装置記憶部490に予め記憶する。
 図7は、実施の形態1におけるリンクテーブル480の一例を示す図である。
 実施の形態1におけるリンクテーブル480の一例について、図7に基づいて説明する。
 リンクテーブル480は、追加プログラムから呼び出される公開関数(使用関数)が記憶される記憶領域の先頭アドレスが設定される1つ以上のレコードを備える。レコードのサイズは予め決められたサイズ(例えば、4バイト)である。
 リンクテーブル480のK番目のレコードに設定されたアドレスが、追加プログラムからK番目に呼び出される公開関数の先頭アドレスである。
 リンクテーブル480は、追加プログラムから最初に呼び出される公開関数Aが0x101000から始まる記憶領域に記憶され、追加プログラムから二番目に呼び出される公開関数Cが0x101B00から始まる記憶領域に記憶され、追加プログラムから三番目に呼び出される公開関数Eが0x102100から始まる記憶領域に記憶されることを意味している。
 リンクテーブル480は、使用関数リスト380(図5参照)と同様に、公開関数が呼び出される順番を示す番号の欄を備えても構わない。
 図8は、実施の形態1におけるプログラム実行装置500の機能構成図である。
 実施の形態1におけるプログラム実行装置500の機能構成について、図8に基づいて説明する。
 プログラム実行装置500は、プログラム書き込み部510と、プログラム実行部520と、実行装置記憶部590(主記憶部の一例)とを備える。
 プログラム書き込み部510は、プログラム実行装置500に入力された基本オブジェクトプログラム270、追加オブジェクトプログラム370またはリンクテーブル480を実行装置記憶部590に記憶する。
 例えば、プログラム書き込み部510は、追加プログラム登録装置400から追加オブジェクトプログラム370とリンクテーブル480とを受信し、受信した追加オブジェクトプログラム370とリンクテーブル480とを実行装置記憶部590の記憶領域に書き込む。
 プログラム実行部520は、実行装置記憶部590に記憶された追加オブジェクトプログラム370を実行する。
 プログラム実行部520は、追加オブジェクトプログラム370を実行したときに、関数呼び出しコード371によって呼び出される公開関数(使用関数)を実行する。
 実行装置記憶部590は、プログラム実行装置500が使用、生成または入出力するデータを記憶する。例えば、実行装置記憶部590はデータの書き換えが可能であるフラッシュROM(不揮発性メモリの一例)を用いて構成される。
 例えば、実行装置記憶部590は、基本オブジェクトプログラム270と、追加オブジェクトプログラム370と、リンクテーブル480とを記憶する。
 図9は、実施の形態1における実行装置記憶部590の記憶領域を示す図である。
 実施の形態1における実行装置記憶部590の記憶領域について、図9に基づいて説明する。
 実行装置記憶部590は、基本プログラム領域591と一つ以上の追加プログラム領域592とを備える。
 基本プログラム領域591は、基本オブジェクトプログラム270を記憶する記憶領域である。
 追加プログラム領域592は、追加オブジェクトプログラム370とリンクテーブル480とを記憶する記憶領域である。追加プログラム領域592は、追加オブジェクトプログラム370を記憶するオブジェクト領域593と、リンクテーブル480を記憶するリンクテーブル領域594とを備える。
 例えば、追加プログラム領域592の先頭アドレスから始まる記憶領域がオブジェクト領域593であり、追加オブジェクトプログラム370はオブジェクト領域593の先頭アドレスから始まる記憶領域に記憶される。
 例えば、リンクテーブル480はリンクテーブル領域594の先頭アドレスから始まる記憶領域に記憶される。リンクテーブル領域594のオフセット値が追加ソースプログラム360に記述され、そのオフセット値が追加オブジェクトプログラム370に定義される。オフセット値は相対アドレスを意味する。つまり、リンクテーブル領域594のオフセット値とは、追加プログラム領域592(またはオブジェクト領域593)の先頭アドレスに対するリンクテーブル領域594の先頭の相対アドレスのことである。リンクテーブル領域594のオブセット値は予め決められた値である。
 図10は、実施の形態1におけるリンクテーブル生成処理のフローチャートである。
 実施の形態1におけるリンクテーブル生成処理について、図10に基づいて説明する。
 追加プログラム登録装置400(図6参照)のリンクテーブル生成部410は、以下に説明するリンクテーブル生成処理によってリンクテーブル480(図7参照)を生成する。
 S101において、リンクテーブル生成部410は、使用関数リスト380(図5参照)から未取得の使用関数名を一つ取得する。例えば、リンクテーブル生成部410は、使用関数リスト380から番号順(または設定順)に使用関数名を一つ取得する。
 例えば、リンクテーブル生成部410は、図5の使用関数リスト380から1番目の使用関数名(公開関数A)を取得する。
 以下、S101で取得される使用関数名の番号をK番という。K番の使用関数名によって識別される使用関数は、追加プログラムからK番目に呼び出される公開関数である。
 S101の後、処理はS102に進む。
 S102において、リンクテーブル生成部410は、S101で取得されたK番の使用関数名と同じ公開関数名に対応付けられたアドレスを、関数アドレスリスト280(図3参照)から取得する。
 例えば、S101で取得した使用関数名が公開関数Aである場合、リンクテーブル生成部410は、図3の関数アドレスリスト280から公開関数Aに対応付けられたアドレス(0x101000)を取得する。
 以下、S102で取得されるアドレスをK番のアドレスという。
 S102の後、処理はS103に進む。
 S103において、リンクテーブル生成部410は、S102で取得されたK番のアドレスを、リンクテーブル480(図7参照)のK番目のレコードに設定する。例えば、リンクテーブル生成部410は、リンクテーブル480にレコードを一つ追加し、追加したレコード(K番目のレコード)にK番のアドレスを設定する。
 例えば、リンクテーブル生成部410は、1番の使用関数である公開関数Aのアドレス(0x101000)を、リンクテーブル480の1番目のレコードに設定する(図7参照)。
 S103の後、処理はS104に進む。
 S104において、リンクテーブル生成部410は、S101で取得していない未取得の使用関数名が残っているか否かを判定する。
 未取得の使用関数名が残っている場合(YES)、処理はS101に戻る。
 未取得の使用関数名が残っていない場合(NO)、リンクテーブル生成処理は終了する。
 リンクテーブル生成処理(図10参照)によってリンクテーブル480(図7参照)が生成される。
 リンクテーブル480は、追加オブジェクトプログラム370と共に、プログラム実行装置500の実行装置記憶部590に記憶される(図9参照)。
 図11は、実施の形態1における関数呼び出し処理のフローチャートである。
 実施の形態1における関数呼び出し処理について、図11に基づいて説明する。
 関数呼び出し処理は、追加オブジェクトプログラム370に関数呼び出しコード371として記述された処理である。
 以下、関数呼び出しコード371がK回実行された場合のK回目の関数呼び出し処理について説明する。なお、関数呼び出しコード371が実行された回数は、関数呼び出しコード371が実行される毎にインクリメントされる変数を用いて記憶することができる。
 S111において、プログラム実行部520は、実行している追加オブジェクトプログラム370が記憶されているオブジェクト領域593の先頭アドレスのアドレス値にリンクテーブル領域594のオフセット値を加算することによって、リンクテーブル480の先頭アドレスを算出する。
 このとき、プログラム実行部520は、追加オブジェクトプログラム370の先頭アドレスのアドレス値をオブジェクト領域593の先頭アドレスのアドレス値として用いることができる。また、プログラム実行部520は、追加オブジェクトプログラム370に定義された値であるリンクテーブル領域594のオフセット値を用いることができる。
 S111の後、処理はS112に進む。
 図12は、実施の形態1における実行装置記憶部590の記憶領域の一例を示す図である。
 図12において、プログラム実行部520は、オブジェクト領域593の先頭アドレスのアドレス値(0x110000)にリンクテーブル領域594のオフセット値(0x00F000)を加算することによって、リンクテーブル480の先頭アドレス(0x11F000)を算出する。
 図11に戻り、S112から説明を続ける。
 S112において、プログラム実行部520は、リンクテーブル480のレコードサイズを(K-1)倍することによって、K番目のレコードのオフセット値を算出する。このとき、プログラム実行部520は、追加オブジェクトプログラム370に定義された値であるレコードサイズを用いることができる。
 そして、プログラム実行部520は、リンクテーブル480の先頭アドレスのアドレス値にK番目のレコードのオフセット値を加算することによって、リンクテーブル480のK番目のレコードの先頭アドレスを算出する。
 S112の後、処理はS113に進む。
 図12において、プログラム実行部520は、リンクテーブル480の先頭アドレスのアドレス値(0x11F000)に2番目のレコードのオフセット値(0x4=0x4×1)を加算することによって、2番目のレコードの先頭アドレス(0x11F004)を算出する。ここで、リンクテーブル480のレコードサイズは4バイト(0x4)である。
 図11に戻り、S113から説明を続ける。
 S113において、プログラム実行部520は、リンクテーブル480のK番目のレコードの先頭アドレスを用いて、リンクテーブル480のK番目のレコードにアクセスする。
 そして、プログラム実行部520は、リンクテーブル480のK番目のレコードからアドレスを読み出す。リンクテーブル480のK番目のレコードに設定されているアドレスは、K番目に呼び出される公開関数の先頭アドレスである。
 S113の後、処理はS114に進む。
 S114において、プログラム実行部520は、リンクテーブル480のK番目のレコードから読み出したアドレスから始まる記憶領域にアクセスすることによって、K番目に呼び出される公開関数を呼び出す。
 S114の後、K回目の関数呼び出し処理は終了する。
 図13は、実施の形態1における追加プログラム登録装置400のハードウェア構成の一例を示す図である。
 実施の形態1における追加プログラム登録装置400のハードウェア構成の一例について、図13に基づいて説明する。但し、追加プログラム登録装置400のハードウェア構成は図13に示す構成と異なる構成であってもよい。
 追加プログラム登録装置400は、演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905を備えるコンピュータである。
 演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905はバス909に接続している。
 演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
 補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリまたはハードディスク装置である。
 主記憶装置903は、例えば、RAM(Random Access Memory)である。
 通信装置904は、有線または無線でインターネット、LAN(ローカルエリアネットワーク)、電話回線網またはその他のネットワークを介して通信を行う。
 入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
 プログラムは、通常は補助記憶装置902に記憶されており、主記憶装置903にロードされ、演算装置901に読み込まれ、演算装置901によって実行される。
 例えば、オペレーティングシステム(OS)が補助記憶装置902に記憶される。また、「~部」として説明している機能を実現するプログラムが補助記憶装置902に記憶される。そして、OSおよび「~部」として説明している機能を実現するプログラムは主記憶装置903にロードされ、演算装置901によって実行される。「~部」は「~処理」「~工程」と読み替えることができる。
 「~の判断」、「~の判定」、「~の抽出」、「~の検知」、「~の設定」、「~の登録」、「~の選択」、「~の生成」、「~の入力」、「~の出力」等の処理の結果を示す情報、データ、ファイル、信号値または変数値が主記憶装置903または補助記憶装置902に記憶される。また、追加プログラム登録装置400が使用するその他のデータが主記憶装置903または補助記憶装置902に記憶される。
 基本プログラム開発装置200、追加プログラム開発装置300およびプログラム実行装置500のハードウェア構成は、追加プログラム登録装置400と同様である。
 実施の形態1において、例えば、以下のような情報処理システム100について説明した。
 基本プログラム開発装置200は、基本プログラムが追加プログラムに公開する公開関数のアドレスを列挙した関数アドレスリスト280を生成する。
 追加プログラム開発装置300は、追加プログラムが使用する基本プログラムの公開関数を列挙した使用関数リスト380を生成する。
 追加プログラム登録装置400は、追加プログラムが使用する公開関数のアドレスをリンクテーブル480に格納する。
 プログラム実行装置500は、追加プログラムのオブジェクトと共にリンクテーブル480を備える。
 実施の形態1は、例えば、以下のような効果を奏する。
 リンクが未解決のオブジェクト(追加オブジェクトプログラム370)をリンカを用いずにアドオンすることができる。
 オブジェクトにリンク先のアドレス情報(使用関数のアドレス)が格納される代わりに、リンクテーブル480にリンク先のアドレス情報が格納される。そのため、リンク先のアドレス情報が変わっても、リンクテーブル480を更新すれば、オブジェクトを作り直さなくても、オブジェクトをアドオンすることができる。
 実施の形態1は、情報処理システム100の形態の一例である。
 つまり、情報処理システム100は、実施の形態1で説明した構成要素の一部を備えなくても構わない。また、情報処理システム100は、実施の形態1で説明していない構成要素を備えても構わない。
 また、情報処理システム100が備える複数の装置(例えば、基本プログラム開発装置200と追加プログラム開発装置300)を1台の装置で構成してもよい。また、情報処理システム100が備える各装置は1台の装置ではなく複数台の装置で構成してもよい。
 実施の形態1においてフローチャート等を用いて説明した処理手順は、実施の形態1に係る方法の処理手順およびプログラムの処理手順の一例である。つまり、実施の形態1に係る方法およびプログラムは、実施の形態1で説明した処理手順と一部異なる処理手順で実現されても構わない。
 100 情報処理システム、200 基本プログラム開発装置、210 基本プログラム開発部、220 関数アドレスリスト生成部、260 基本ソースプログラム、261 公開関数ソースコード、270 基本オブジェクトプログラム、271 公開関数オブジェクト、272 マップファイル、280 関数アドレスリスト、290 基本プログラム記憶部、300 追加プログラム開発装置、310 追加プログラム開発部、320 使用関数リスト生成部、360 追加ソースプログラム、361 関数呼び出しコード、370 追加オブジェクトプログラム、371 関数呼び出しコード、380 使用関数リスト、390 追加プログラム記憶部、400 追加プログラム登録装置、410 リンクテーブル生成部、420 追加プログラム登録部、480 リンクテーブル、490 登録装置記憶部、500 プログラム実行装置、510 プログラム書き込み部、520 プログラム実行部、590 実行装置記憶部、591 基本プログラム領域、592 追加プログラム領域、593 オブジェクト領域、594 リンクテーブル領域、901 演算装置、902 補助記憶装置、903 主記憶装置、904 通信装置、905 入出力装置、909 バス。

Claims (6)

  1.  第一の関数を識別する第一の関数名と前記第一の関数が記憶される第一の関数領域を特定するための第一の関数アドレスとを含んだ関数アドレスリストと、実行プログラムから呼び出される第一の使用関数を識別する第一の使用関数名を含んだ使用関数リストとを記憶するリスト記憶部と、
     前記使用関数リストに含まれる前記第一の使用関数名と前記関数アドレスリストに含まれる前記第一の関数名とが同じである場合、前記実行プログラムから前記第一の使用関数が呼び出されるときに参照されるテーブルである関数呼び出しテーブルに前記第一の関数アドレスを設定する関数呼び出しテーブル生成部と
    を備えることを特徴とする関数呼び出しテーブル生成装置。
  2.  前記関数呼び出しテーブルは、複数の関数アドレスが設定される複数の関数アドレスレコードを含み、
     前記使用関数リストは、前記実行プログラムから呼び出される複数の使用関数を識別する複数の使用関数名を前記複数の使用関数のそれぞれの使用関数が呼び出される順番に対応付けて含み、
     前記関数呼び出しテーブル生成部は、前記使用関数リストに基づいて前記複数の使用関数のうちの前記第一の使用関数が呼び出される順番を特定し、前記関数呼び出しテーブルに含まれる前記複数の関数アドレスレコードのうちの前記第一の使用関数が呼び出される順番の関数アドレスレコードに前記第一の関数アドレスを設定する
    ことを特徴とする請求項1に記載の関数呼び出しテーブル生成装置。
  3.  前記実行プログラムを実行するプログラム実行装置に前記関数呼び出しテーブルを記憶ささせる関数呼び出しテーブル登録部を備える
    ことを特徴とする請求項1に記載の関数呼び出しテーブル生成装置。
  4.  前記実行プログラムは、前記関数呼び出しテーブルに含まれる前記第一の関数アドレスに基づいて前記第一の関数を呼び出す関数呼び出しコードを含んだプログラムである
    ことを特徴とする請求項1に記載の関数呼び出しテーブル生成装置。
  5.  第一の関数が記憶される第一の関数領域と、前記第一の関数領域を特定するための第一の関数アドレスを含んだ関数呼び出しテーブルが記憶される関数呼び出しテーブル領域と、前記関数呼び出しテーブルに含まれる前記第一の関数アドレスに基づいて前記第一の関数を呼び出す関数呼び出しコードを含んだ実行プログラムが記憶される実行プログラム領域とを備える主記憶部と、
     前記実行プログラム領域に記憶された前記実行プログラムを実行し、前記実行プログラムを実行したときに前記関数呼び出しコードによって呼び出される前記第一の関数を実行するプログラム実行部と
    を備えることを特徴とするプログラム実行装置。
  6.  第一の関数が記憶される第一の関数領域を特定するための第一の関数アドレスを含んだ関数呼び出しテーブルに含まれる前記第一の関数アドレスに基づいて前記第一の関数を呼び出す関数呼び出しコード
    を備えることを特徴とする実行プログラム。
PCT/JP2013/082465 2013-12-03 2013-12-03 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム WO2015083234A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/082465 WO2015083234A1 (ja) 2013-12-03 2013-12-03 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/082465 WO2015083234A1 (ja) 2013-12-03 2013-12-03 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム

Publications (1)

Publication Number Publication Date
WO2015083234A1 true WO2015083234A1 (ja) 2015-06-11

Family

ID=53273031

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/082465 WO2015083234A1 (ja) 2013-12-03 2013-12-03 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム

Country Status (1)

Country Link
WO (1) WO2015083234A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018150820A1 (ja) 2017-02-17 2018-08-23 日立オートモティブシステムズ株式会社 情報処理装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064319A (ja) * 1992-06-23 1994-01-14 Nec Corp オペレーティング・システムにおける共有ルーチン管理方式
JPH11353180A (ja) * 1998-06-10 1999-12-24 Hitachi Telecom Technol Ltd プログラム制御方法
JP2004341667A (ja) * 2003-05-14 2004-12-02 Yaskawa Electric Corp 制御装置のカスタマイズ方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064319A (ja) * 1992-06-23 1994-01-14 Nec Corp オペレーティング・システムにおける共有ルーチン管理方式
JPH11353180A (ja) * 1998-06-10 1999-12-24 Hitachi Telecom Technol Ltd プログラム制御方法
JP2004341667A (ja) * 2003-05-14 2004-12-02 Yaskawa Electric Corp 制御装置のカスタマイズ方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018150820A1 (ja) 2017-02-17 2018-08-23 日立オートモティブシステムズ株式会社 情報処理装置

Similar Documents

Publication Publication Date Title
US8683462B2 (en) Handling calls to native code in a managed code environment
US8694988B2 (en) Runtime extensions
JP6294886B2 (ja) アプリケーション用の中間言語コードからネイティブコードを生成すること
US8392895B2 (en) Firmware extension method and firmware builder
CN107168749B (zh) 一种编译方法、装置、设备和计算机可读存储介质
US9582623B2 (en) Dynamically loaded system-level simulation
TW201820131A (zh) 進程管理方法及裝置
CN104754062A (zh) 基于互联网的信息推广方法、服务器及用户终端
CN109857432B (zh) 一种游戏应用的热更新方法和装置
US8397217B2 (en) Integrating templates into tests
KR101092373B1 (ko) 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법
US20120324430A1 (en) Aliasing buffers
WO2015083234A1 (ja) 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム
KR20130020135A (ko) 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법
CN113220314B (zh) App资源加载及apk生成方法、装置、设备及介质
WO2022179101A1 (zh) 存储架构下的软件存储方法
KR101083271B1 (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
JP2016029547A (ja) 実行モジュール生成装置、及び電子制御装置
JP2016062311A (ja) 更新装置及び情報処理方法
JP6128259B2 (ja) 情報処理システム及び情報処理方法
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP2014229114A (ja) OSGiサービス登録装置、登録方法および登録プログラム
CN110084005A (zh) 一种代码的处理方法及装置
CN114416219B (zh) 系统函数调用方法、装置、电子设备及可读介质
Kachman et al. Configurable reprogramming methodology for embedded low-power devices

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13898593

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13898593

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP