JP2000330768A - 実行可能プログラムの入口設定方法 - Google Patents

実行可能プログラムの入口設定方法

Info

Publication number
JP2000330768A
JP2000330768A JP11139278A JP13927899A JP2000330768A JP 2000330768 A JP2000330768 A JP 2000330768A JP 11139278 A JP11139278 A JP 11139278A JP 13927899 A JP13927899 A JP 13927899A JP 2000330768 A JP2000330768 A JP 2000330768A
Authority
JP
Japan
Prior art keywords
program
address
entrance
entry
executable program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11139278A
Other languages
English (en)
Inventor
Shukuyu Kudo
淑裕 工藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP11139278A priority Critical patent/JP2000330768A/ja
Publication of JP2000330768A publication Critical patent/JP2000330768A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 ソースプログラムの修正、分割、再翻訳なし
にプログラムの入口を任意のルーチンの入口に設定する
ことができる実行可能プログラムの入口設定方法を実現
する。 【解決手段】 目的プログラムを結合するリンカを用い
て目的プログラムを結合させる際に、実行可能プログラ
ムの入口アドレスを設定しておき、実行可能プログラム
の実行時に、設定された入口アドレスをロードし、その
アドレスに分岐するので、mainなどの決まった入口
名をプログラムの入口にする必要がなくなる結果、ソー
スプログラムの修正、分割、再翻訳なしにプログラムの
入口を任意のルーチンの入口に設定することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、実行可能プログラ
ムの作成方法に関し、特にソースプログラムの修正、分
割、再翻訳なしに実行可能プログラムの入口を、任意の
ルーチンの入口に設定する実行可能プログラムの入口設
定方法に関する。
【0002】
【従来の技術】図4を参照して実行可能プログラムを作
成する従来の手順について説明する。例えば、図4に図
示するように、ソースプログラムがa.f1−1のファ
イルで構成されるとする。ユーザプログラムの入口はP
ROGRAM文で指定されたMAIN1−2である。入
口がMAINのルーチンはSUB1のCALL文1−3
を持ち、同じファイル中の入口がSUB1であるルーチ
ン1−4を呼び出している。ユーザはこのファイルをコ
ンパイラ1−5で翻訳し、目的プログラムa.o1−6
を作成する。
【0003】目的プログラムa.o1−6にはMAIN
の外部名定義1−7と、もう一つの名前mainの外部
名定義1−8がコンパイラによって作成される。これら
は同じ位置にある。また、SUB1を呼び出すためのj
ump命令1−9とSUB1の外部名参照1−10が作
成される。また、ルーチンSUB1の入口に対して、S
UB1の外部名定義1−11がコンパイラによって作成
される。次に、ユーザは目的プログラムをリンカ1−1
7を使って結合し、実行可能プログラム1−18を作成
する。このとき、リンカによりスタートアップルーチン
1−12も自動的に結合される。スタートアップルーチ
ン1−12には、プログラムの初期設定を行う処理1−
13とプログラムの終了処理1−16がある。
【0004】また、mainという名前の外部名参照1
−15があり、そこにmainへのjump命令1−1
4がある。mainの外部名参照1−15とmainの
外部名定義1−8はリンカ1−17によって結合され
る。同じように、SUB1の外部名参照1−10とSU
B1の外部名定義1−11も結合される。リンカ1−1
7によって結合されたとき、外部名定義のあるアドレス
がjump命令の分岐先として設定される。
【0005】次に、図5はこうした従来技術に基づき作
成された実行可能プログラム1−18の構成図である。
実行可能プログラム2−1の実行時に、プログラムは2
−2の実行可能プログラムの開始位置から実行される。
最初に、2−3のプログラムの初期設定の処理が行わ
れ、次に2−4のjump命令により、アドレス0x8
000(2−6)に分岐する。アドレス0x8000
(2−6)は、MAINの外部名定義2−7/main
の外部名定義2−8のあるアドレスである。このアドレ
スに分岐した後、引き続きユーザの記述したMAINの
コードが実行される。そして、2−9のjump命令に
より、アドレス0xA000(2−11)に分岐する。
【0006】アドレス0xA000(2−11)は、S
UB1の外部名定義2−12のあるアドレスである。そ
して、SUB1のコードを実行した後、return命
令2−13に到達し、MAINに戻り、MAINのju
mp命令2−9の直後の命令からMAINのコードの実
行を続ける。そして、2−10のreturn命令に到
達し、スタートアップルーチンに戻り、2−4のjum
p命令の直後から実行を続け、プログラムの終了処理2
−5を実行し、プログラム全体の実行を終了する。
【0007】次に、ユーザがプログラムの入口をSUB
1に変更するときのプログラムの作成、実行方法を図6
および図7を参照して説明する。まずユーザはファイル
a.f1−1からルーチンSUB1を切り出し、別のフ
ァイルb.f3−2にし、SUBROUTINE文をP
ROGRAM文3−3に書き直す。3−1はSUB1が
切り出されたあとのa.fのファイルである。ユーザは
b.f(3−2のみをコンパイラ3−4で翻訳し、目的
プログラム3−5を作成する。目的プログラムb.o3
−5にはSUB1の外部名定義3−6と、もう一つの名
前mainの外部名定義3−7がコンパイラによって作
成される。
【0008】次に、ユーザは目的プログラムb.o3−
5とスタートアップルーチン3−8をリンカ3−13を
使って結合し、実行可能プログラム3−14を作成す
る。3−8のスタートアップルーチンは、図4に図示し
た1−12と同じものである。スタートアップルーチン
3−8のmainという名前の外部名参照3−11と目
的プログラムb.o3−5中のmainの外部名定義3
−7はリンカ3−13によって結合され、外部名定義の
あるアドレスがjump命令3−10の分岐先として設
定される。
【0009】図7はこうして作成された実行可能プログ
ラム3−14の構成図である。実行可能プログラム4−
1の実行時に、プログラムは4−2の実行可能プログラ
ムの開始位置から実行される。最初に、2−3と同じ4
−3のプログラムの初期設定の処理が行われ、次に4−
4のjump命令により、アドレス0x7000(4−
6)に分岐する。アドレス0x7000(4−6)は、
SUB1の外部名定義4−7/mainの外部名定義4
−8のあるアドレスである。このアドレスに分岐した
後、引き続きユーザの記述したSUB1のコードが実行
される。そして、SUB1のコードを実行した後、re
turn命令4−9に到達し、スタートアップルーチン
に戻り、4−4のjump命令の直後から実行を続け、
2−5と同じプログラムの終了処理4−5を実行し、プ
ログラム全体の実行を終了する。
【0010】
【発明が解決しようとする課題】ところで、上述した従
来技術にあっては、mainの外部名定義がリンカに入
力される目的プログラム中に複数あってはならない為、
プログラムの入口を変えるために、ユーザがファイルを
分割しなければならない、という問題が生じる。また、
従来技術では、リンカに入力される目的プログラム中に
mainの外部名定義が一つでなければならないので、
プログラムの入口を変えるために、ユーザがプログラム
を修正し、SUBROUTINE文をPROGRAM文
に書き直さなければならず、煩雑な操作が必要になる。
【0011】加えて、従来技術では、プログラムの入口
を変えるためには元のソースプログラム分割したり、書
き直さなければならない為、プログラムの入口を変える
ために、ユーザがソースプログラムを再翻訳しなければ
ならない。要するに、従来技術ではソースプログラムの
修正、分割、再翻訳なしに実行可能プログラムの入口
を、任意のルーチンの入口に設定することができない、
という問題がある。そこで本発明は、上述した事情に鑑
みてなされたもので、ソースプログラムの修正、分割、
再翻訳なしにプログラムの入口を任意のルーチンの入口
に設定することができる実行可能プログラムの入口設定
方法を提供することを目的としている。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の発明では、目的プログラムを結合
する結合手段を備え、目的プログラム結合時に実行可能
プログラムの入口アドレスを設定する入口アドレス設定
手段と、実行可能プログラムの実行時に、設定された入
口アドレスをロードし、そのアドレスに分岐する入口ア
ドレスロード/分岐手段とを備えることを特徴とする。
【0013】上記請求項1に従属する請求項2に記載の
発明によれば、前記入口アドレス設定手段は、目的プロ
グラムを結合して実行可能プログラムを作成する時に、
ユーザの指定した入口の外部名定義を入力された目的プ
ログラムの中から探し出し、その外部名定義に割り付け
たアドレスをスタートアップルーチンの入口アドレス設
定領域に設定することを特徴とする。
【0014】本発明では、入口アドレス設定手段が目的
プログラムを結合する結合手段を用いて目的プログラム
を結合させる際に、実行可能プログラムの入口アドレス
を設定し、入口アドレスロード/分岐手段が実行可能プ
ログラムの実行時に、設定された入口アドレスをロード
し、そのアドレスに分岐するので、mainなどの決ま
った入口名をプログラムの入口にする必要がなくなる結
果、プログラムの入口を変えるためにファイル分割した
り、SUBROUTINE文をPROGRAM文に書き
直す必要もなくなる上、PROGRAM文などでソース
プログラム上、入口として宣言されていないルーチンも
プログラムの入口として利用できる。さらに、ソースプ
ログラムの分割、修正の必要がなくなる為、ソースプロ
グラムを再翻訳する必要もなくなり、プログラム作成の
生産性も向上する。
【0015】
【発明の実施の形態】以下、図面を参照して本発明の実
施の一形態について説明する。 (1)発明の概要 まず、図1を参照して本発明の概要について説明する。
図1に図示するように、本発明では入口アドレス設定領
域5−4と、そこから入口のアドレスをロードし、ロー
ドしたアドレスに分岐する入口アドレスロード/分岐手
段5−5を持つスタートアップルーチン5−3と、ユー
ザが指定した入口名の外部名定義のアドレスを入口アド
レス設定領域5−4に設定する入口アドレス設定手段5
−2をもつリンカ5−1とから構成される。
【0016】このような構成において、リンカ5−1の
入口アドレス設定手段5−2は、ユーザによって指定さ
れた入口名の外部名定義を入力された目的プログラムの
中から探し出す。見つからなかったときは、エラーとし
て目的プログラムの結合を中断終了し、実行可能プログ
ラムを作成しない。一方、ユーザの指定した入口の外部
名定義が見つかった時には、自動的にリンカ5−1に入
力されるスタートアップルーチン5−3の入口アドレス
設定領域5−4に、見つけた外部名定義のアドレスを設
定する。そして、リンカ5−1は目的プログラムの結合
を行い、実行可能プログラムを作成する。
【0017】実行可能プログラムの実行時、スタートア
ップルーチン5−3の先頭から実行が始まる。そして、
プログラムの初期設定の処理が終わったら、入口アドレ
スロード/分岐手段5−5が入口アドレス設定領域5−
4から、外部名定義のアドレスをロードし、そこに分岐
する。そして、分岐した位置、つまり、ユーザの指定し
た入口の外部名定義のある場所からプログラムの実行を
継続する。そして、ユーザのコードの実行が終了した
ら、スタートアップルーチンに戻り、プログラムの終了
処理を実行し、実行可能プログラムの実行を終了する。
【0018】(2)実施例 次に、図2〜図3を参照して本発明に実施例について説
明する。まず、図2は本発明に実施例によるプログラム
作成方法を説明する為の図である。図2に示すように、
ユーザのソースプログラムがa.f6−1のファイルで
構成されるとする。このユーザプログラムに含まれるル
ーチンは二つあり、それぞれの入口がMAIN6−2、
SUB16−4である。入口がMAINのルーチンはS
UB1のCALL文6−3を持ち、同じファイル中の入
口がSUB1であるルーチン6−4を呼び出している。
【0019】6−5は入力されたソースプログラムを翻
訳して目的プログラムを出力するコンパイラである。6
−6は、6−1のソースプログラムがコンパイラ6−5
によって翻訳された目的プログラムである。目的プログ
ラムは、同じ位置にMAINの外部名定義6−7、ma
inの外部名定義6−8を持ち、そして、SUB1の外
部参照6−10、SUB1へのjump命令6−9、S
UB1の外部名定義6−11を持つ。
【0020】6−12はスタートアップルーチンであ
る。スタートアップルーチン6−12は、entry_
addressという名前の入口アドレス設定領域6−
13を持つ。また、その処理として、プログラムの初期
設定6−14、入口アドレスロード/分岐手段6−1
5、プログラムの終了処理6−18を持つ。入口アドレ
スロード/分岐手段6−15には、entry_add
ressという名前の入口アドレス設定領域から、値を
レジスタにロードするload命令6−16、レジスタ
中のアドレスに分岐するjump命令6−17がある。
6−19は目的プログラム、スタートアップルーチンを
結合するリンカである。リンカ6−19は、6−21の
オプションで指定された名前(SUB1)をentry
_addressという名前の入口アドレス設定領域6
−13に設定する、入口アドレス設定手段6−20を持
つ。6−21は、リンカによって作成された実行可能プ
ログラムである。
【0021】次に、図3は上述したプログラム作成方法
に従って作成された実行可能プログラム7−1の構成図
である。リンカ6−19によって作成された実行可能プ
ログラム7−1において、7−3はentry_add
ressという名前の入口アドレス設定領域であり、ス
タートアップルーチン6−12に含まれていたものであ
る。7−2は実行可能プログラムの開始位置で、実行可
能プログラムの実行はこのアドレスから始まる。
【0022】7−4はプログラムの初期設定、7−5は
入口アドレスロード/分岐手段、7−8はプログラムの
終了処理であり、スタートアップルーチン6−12に含
まれていたものである。入口アドレスロード/分岐手段
7−5は、entry_addressという名前の入
口アドレス設定領域から、値をレジスタにロードするl
oad命令7−6、レジスタ中のアドレスに分岐するj
ump命令7−7がある。7−9は、SUB1の外部名
定義であり、目的プログラム6−6に含まれていたもの
である。
【0023】さて、上述したように、a.f6−1のフ
ァイルから、入口がSUB16−4の実行可能プログラ
ムを作成する場合、最初にユーザはa.f6−1のファ
イルをコンパイラ6−5で翻訳して目的プログラムa.
o6−6を作成する。そして、リンカ6−19を使って
スタートアップルーチン6−12と目的プログラムa.
o6−6を結合し、実行可能プログラム6−22を作成
する。その時、そのルーチンをプログラムの入口にする
かをオプション6−21を使って指定する。そこではS
UB1を指定すると、6−20の入口アドレス設定手段
は、オプション6−21で指定されたSUB1の外部名
定義6−11のアドレス0xA000を入口アドレス設
定領域6−13に設定する。以上でプログラムの作成を
終了する。
【0024】次に、こうして作成された実行可能プログ
ラムを実行する場合、実行可能プログラム7−1では、
実行可能プログラムの開始位置7−2から実行開始され
る。つまり、最初に、7−4のプログラムの初期設定の
処理が実行される。次に入口アドレスロード/分岐手段
7−5のentry_addressという名前の入口
アドレス設定領域7−3から、設定されたアドレスのl
oad命令7−6が実行され、$reg1のレジスタ
に、SUB1の外部名定義のアドレス0xA000が設
定される。そして、7−7のjump命令で$reg1
に設定されたアドレスであるSUB1の外部名定義7−
9の位置に分岐する。そして、SUB1のルーチンの処
理を継続して実行し、return命令でスタートアッ
プルーチンに戻り、7−8のプログラムの終了処理を実
行し、実行可能プログラムの実行を終了する。
【0025】以上のように、本実施例によれば、mai
nなどの決まった入口名をプログラムの入口にする必要
がないので、プログラムの入口を変えるためにファイル
分割したり、SUBROUTINE文をPROGRAM
文に書き直す必要もなくなる上、PROGRAM文など
でソースプログラム上、入口として宣言されていないル
ーチンもプログラムの入口として利用できる。さらに、
ソースプログラムの分割、修正の必要がなくなる為、ソ
ースプログラムを再翻訳する必要もなくなり、プログラ
ム作成の生産性も向上する。
【0026】
【発明の効果】本発明によれば、入口アドレス設定手段
が目的プログラムを結合する結合手段を用いて目的プロ
グラムを結合させる際に、実行可能プログラムの入口ア
ドレスを設定し、入口アドレスロード/分岐手段が実行
可能プログラムの実行時に、設定された入口アドレスを
ロードし、そのアドレスに分岐するので、mainなど
の決まった入口名をプログラムの入口にする必要がなく
なる結果、プログラムの入口を変えるためにファイル分
割したり、SUBROUTINE文をPROGRAM文
に書き直す必要もなくなる上、PROGRAM文などで
ソースプログラム上、入口として宣言されていないルー
チンもプログラムの入口として利用できる。さらに、ソ
ースプログラムの分割、修正の必要がなくなる為、ソー
スプログラムを再翻訳する必要もなくなり、プログラム
作成の生産性も向上する。
【図面の簡単な説明】
【図1】 本発明の実施の一形態を示すブロック図であ
る。
【図2】 本発明の実施例によるプログラム作成方法を
示す図である。
【図3】 本発明の実施例により作成された実行可能プ
ログラムの構成を説明するための図である。
【図4】 従来例によるプログラム作成方法を示す図で
ある。
【図5】 従来例により作成される実行可能プログラム
の構成を示す図である。
【図6】 従来例によりプログラムの入口を変更すると
きのプログラム成方法を示す図である。
【図7】 従来例によりプログラムの入口を変更すると
きに作成される実行可能プログラムの構成を示す図であ
る。
【符号の説明】
5−1…リンカ、5−2…入口アドレス設定手段、5−
3…スタートアップルーチン、5−4…入口アドレス設
定領域、5−5…入口アドレスロード/分岐手段。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 目的プログラムを結合する結合手段を備
    え、目的プログラム結合時に実行可能プログラムの入口
    アドレスを設定する入口アドレス設定手段と、 実行可能プログラムの実行時に、設定された入口アドレ
    スをロードし、そのアドレスに分岐する入口アドレスロ
    ード/分岐手段とを備える実行可能プログラムの入口設
    定方法。
  2. 【請求項2】 前記入口アドレス設定手段は、目的プロ
    グラムを結合して実行可能プログラムを作成する時に、
    ユーザの指定した入口の外部名定義を入力された目的プ
    ログラムの中から探し出し、その外部名定義に割り付け
    たアドレスをスタートアップルーチンの入口アドレス設
    定領域に設定することを特徴とする請求項1記載の実行
    可能プログラムの入口設定方法。
JP11139278A 1999-05-19 1999-05-19 実行可能プログラムの入口設定方法 Pending JP2000330768A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11139278A JP2000330768A (ja) 1999-05-19 1999-05-19 実行可能プログラムの入口設定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11139278A JP2000330768A (ja) 1999-05-19 1999-05-19 実行可能プログラムの入口設定方法

Publications (1)

Publication Number Publication Date
JP2000330768A true JP2000330768A (ja) 2000-11-30

Family

ID=15241570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11139278A Pending JP2000330768A (ja) 1999-05-19 1999-05-19 実行可能プログラムの入口設定方法

Country Status (1)

Country Link
JP (1) JP2000330768A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置

Similar Documents

Publication Publication Date Title
US5778212A (en) Interprocedural analysis user interface
WO2005006119A3 (en) An extensible type system for representing and checking consistency of program components during the process of compilation
JP2002517033A (ja) 静的束縛された機能呼出から動的束縛された機能呼出への再コンパイルを必要としない動的切り換え
US6101326A (en) Method and apparatus for frame elimination for simple procedures with tail calls
JP2000330768A (ja) 実行可能プログラムの入口設定方法
US20010042241A1 (en) Apparatus and method for executing program using just-in time-compiler system
CN108376074B (zh) 一种基于嵌入式系统的RancherOS ros核心模块移植方法
CN114840195B (zh) 一种针对iOS SDK静态库的私有化方法
CN101650654A (zh) 字节码运行平台的可定制方法和装置
CN114546409A (zh) 一种编译产物与源码隔离的方法、系统及存储介质
TOKKMORI et al. Implementing Continuation based language in LLVM and Clang
US5875337A (en) Modifier for a program executing parallel processes that reduces wait time for access to a shared resource
Pillora Getting Started with Grunt: The JavaScript Task Runner
Ambler et al. Browserify
JPH0683597A (ja) オブジェクト指向プログラム開発装置およびオブジェクト指向プログラム開発方法
CN112068816B (zh) 防止js全局污染的方法、存储介质
Varma Reserved Words and Built-In Commands
Sharan et al. Scripting in Java
Freeman et al. Your First Angular App
Johnson et al. Reserved Words and Built-In Commands
Lazzarini et al. Introduction to the Programming Environment
Angelopoulos Upsh: A Unix to Prolog Shell
Sillanpaa et al. PATC Course: Spring School in Computational Chemistry-General Material
JPH03282731A (ja) プログラム処理装置
JPS63298451A (ja) デバグ用目的プログラム生成方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040127