JPH04145536A - プログラム変換処理システムにおけるアドレス再配置処理方式 - Google Patents
プログラム変換処理システムにおけるアドレス再配置処理方式Info
- Publication number
- JPH04145536A JPH04145536A JP26815890A JP26815890A JPH04145536A JP H04145536 A JPH04145536 A JP H04145536A JP 26815890 A JP26815890 A JP 26815890A JP 26815890 A JP26815890 A JP 26815890A JP H04145536 A JPH04145536 A JP H04145536A
- Authority
- JP
- Japan
- Prior art keywords
- address
- program
- constant
- relocatable
- relocation
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[概 要]
再配置可能なアドレスに対して定数の演算が施されてい
るソースプログラムの変換処理において連係編集時に定
数値の解決を可能にするアドレス再配置処理方式に関し
。
るソースプログラムの変換処理において連係編集時に定
数値の解決を可能にするアドレス再配置処理方式に関し
。
オブジェクトモジエールに含まれる演算を伴う再配置ア
ドレスの定数の値を連係編集時に正しく求められるよう
にすることを目的とし 翻訳処理プログラムは、ソースプログラム中に再配置可
能なアドレスに対して定数の演算が施されている場合、
再配置表中に当該演算の演算種別と、上記再配置可能な
アドレスに作用させる演算数の値とを出力し。
ドレスの定数の値を連係編集時に正しく求められるよう
にすることを目的とし 翻訳処理プログラムは、ソースプログラム中に再配置可
能なアドレスに対して定数の演算が施されている場合、
再配置表中に当該演算の演算種別と、上記再配置可能な
アドレスに作用させる演算数の値とを出力し。
連係編集プログラムは、オブジェクトモジュールに付属
する再配置表により、再配置可能なアドレスに対する演
算によって解決すべき定数を検出すると、当該再配置表
中の演算種別と演算数とを用いて再配置可能なアドレス
に対する演算を実行し、当該定数の値を決定するように
構成した。
する再配置表により、再配置可能なアドレスに対する演
算によって解決すべき定数を検出すると、当該再配置表
中の演算種別と演算数とを用いて再配置可能なアドレス
に対する演算を実行し、当該定数の値を決定するように
構成した。
本発明は情報処理装置におけるプログラム変換処理シス
テムに関するものであり、特に再配置可能なアドレスに
対して定数の演算が施されているソースプログラムの変
換処理において連係編集時に定数値の解決を可能にする
アドレス再配置処理方式に関する。
テムに関するものであり、特に再配置可能なアドレスに
対して定数の演算が施されているソースプログラムの変
換処理において連係編集時に定数値の解決を可能にする
アドレス再配置処理方式に関する。
一般に、複雑で長いプログラムは複数に分割して作成さ
れ、実行直前に連係編集プログラム(リンケージエディ
タ)によって結合される。またプログラムは実行時にな
ってメモリの空き領域を割り当てられるため、プログラ
ム中のアドレスは任意の空き領域にローディングできる
よう、再配置可能な形式で作られている。
れ、実行直前に連係編集プログラム(リンケージエディ
タ)によって結合される。またプログラムは実行時にな
ってメモリの空き領域を割り当てられるため、プログラ
ム中のアドレスは任意の空き領域にローディングできる
よう、再配置可能な形式で作られている。
またプログラム中のアドレス定数があるラベルの位置の
再配置可能なアドレスの値にある演算を施した結果の値
として指定される場合がある。
再配置可能なアドレスの値にある演算を施した結果の値
として指定される場合がある。
本発明は、プログラムがこのような再配置可能なアドレ
スについての演算を含む場合に連係編集処理時に解決可
能にする方式を提供する6〔従来の技術] 第3図の例により、従来の連係編集処理を説明する。
スについての演算を含む場合に連係編集処理時に解決可
能にする方式を提供する6〔従来の技術] 第3図の例により、従来の連係編集処理を説明する。
第3図において、1.2はそれぞれ先頭アドレスがX″
oooo’のオブジェクトモジュールA、 Bであり
、オブジェクトモジュールAの長さはχ°B00となっ
ている。3は連係編集処理結果のロードプログラムであ
る。
oooo’のオブジェクトモジュールA、 Bであり
、オブジェクトモジュールAの長さはχ°B00となっ
ている。3は連係編集処理結果のロードプログラムであ
る。
連係編集処理では、オブジェクトモジュールAの後にオ
ブジェクトモジュールBをリンクしてモジュールB内の
アドレス定数の値を変換し、ロードプログラム3を作成
する。ここで図示されたオブジェクトモジュールBの先
頭アドレスx ’oo。
ブジェクトモジュールBをリンクしてモジュールB内の
アドレス定数の値を変換し、ロードプログラム3を作成
する。ここで図示されたオブジェクトモジュールBの先
頭アドレスx ’oo。
O゛はロードプログラム3においてX“0BOO’に変
換される。同様にX ’0100’もx ’ocoo“
に変換される。
換される。同様にX ’0100’もx ’ocoo“
に変換される。
ところでオブジェクトモジュールBには、アドレスX
’otoo’にcABELl /16で表わされるアド
レス定数がある。これはオブジェクトモジュールB中の
ラベルLABEL 1が存在する位Iのアドレス(図示
省略)を16で割算した結果の値を要求するものである
が、従来のシステムでは、オブジェクトモジュールBを
生成したアセンブラはバイト形式のアドレスしか取扱う
ことができないので、たとえば1ワード/16ハイトの
ワードアドレスが必要とされる場合には5図示の例のよ
うに、バイト表示のアドレス(LABEL 1 )を1
6で割算することが要求される。
’otoo’にcABELl /16で表わされるアド
レス定数がある。これはオブジェクトモジュールB中の
ラベルLABEL 1が存在する位Iのアドレス(図示
省略)を16で割算した結果の値を要求するものである
が、従来のシステムでは、オブジェクトモジュールBを
生成したアセンブラはバイト形式のアドレスしか取扱う
ことができないので、たとえば1ワード/16ハイトの
ワードアドレスが必要とされる場合には5図示の例のよ
うに、バイト表示のアドレス(LABEL 1 )を1
6で割算することが要求される。
しかし、従来システムでは、アセンブラは翻訳処理中に
、演算を伴う再配置可能アドレス(LABELl /1
6)を検出するとこれをそのままオブジェクトモジュー
ル中に出力し、翻訳制御情報として同時に作成する再配
置表(リロケーション表)には演算種別(上記の例では
「割算」)や演算数の値(上記の例では「16」)が出
力されないようになっている。
、演算を伴う再配置可能アドレス(LABELl /1
6)を検出するとこれをそのままオブジェクトモジュー
ル中に出力し、翻訳制御情報として同時に作成する再配
置表(リロケーション表)には演算種別(上記の例では
「割算」)や演算数の値(上記の例では「16」)が出
力されないようになっている。
このため、連係編集プログラムは、入力されたオブジェ
クトモジュール中のrLABEI、1/16Jを再配置
可能アドレスとして扱い、ロードプログラム3には、変
換結果のアドレスとしてLABEL 1 /16 +
X ’Boo”が出力され、求める結果が異なるため、
アセンブラ側での対応が必要とされた。
クトモジュール中のrLABEI、1/16Jを再配置
可能アドレスとして扱い、ロードプログラム3には、変
換結果のアドレスとしてLABEL 1 /16 +
X ’Boo”が出力され、求める結果が異なるため、
アセンブラ側での対応が必要とされた。
本発明は、オブジェクトモジュールに含まれる演算を伴
う再配置アドレスの定数の値を連係編集時に正しく求め
られるようにすることを目的としている。
う再配置アドレスの定数の値を連係編集時に正しく求め
られるようにすることを目的としている。
〔課題を解決するための手段]
本発明は、翻訳処理プログラムがオブジェクトモジュー
ルを生成する際、再配置可能アドレスに演算数を作用さ
せて、演算を行った結果の定数を検出したとき、再配置
表中にその演算種別と演算数の値とを出力し、連係編集
プログラムがオブジェクトモジュール間の連係編集を行
うとき、再配置表に基づいてその定数の値を演算できる
ようにしたものである。
ルを生成する際、再配置可能アドレスに演算数を作用さ
せて、演算を行った結果の定数を検出したとき、再配置
表中にその演算種別と演算数の値とを出力し、連係編集
プログラムがオブジェクトモジュール間の連係編集を行
うとき、再配置表に基づいてその定数の値を演算できる
ようにしたものである。
第1図は1本発明の原理説明図である。
図において
4は、たとえばアセンブラ言語で記述されたソースプロ
グラム(A、 B)であり、再配置可能なものである。
グラム(A、 B)であり、再配置可能なものである。
5は、アセンブラなどの翻訳処理プログラムであり、ソ
ースプログラム4を機械語プログラムのオブジェクトに
翻訳する。再配置可能アドレスに対する定数の演算を検
出すると、再配置表(後述)に演算種別と演算数を出力
する。
ースプログラム4を機械語プログラムのオブジェクトに
翻訳する。再配置可能アドレスに対する定数の演算を検
出すると、再配置表(後述)に演算種別と演算数を出力
する。
6は、翻訳処理プログラム5が翻訳生成したオブジェク
トモノニール(A、B)であり、再配置可能なものであ
る。図示の例では、 LABEL 1 /16゜すな
わちLABEL 1のアドレス値を16で割算し、lワ
ード16バイトとしたときのワードアドレスで表わした
アドレス定数をもつ。
トモノニール(A、B)であり、再配置可能なものであ
る。図示の例では、 LABEL 1 /16゜すな
わちLABEL 1のアドレス値を16で割算し、lワ
ード16バイトとしたときのワードアドレスで表わした
アドレス定数をもつ。
7は、翻訳処理プログラム5により作成された再配置表
であり、再配置可能なアドレスなどの従来からある再配
置に必要な制御情報に加えて、演算種別と演算数の値と
を含んでいる。
であり、再配置可能なアドレスなどの従来からある再配
置に必要な制御情報に加えて、演算種別と演算数の値と
を含んでいる。
8は、リンケージ・エディタなどの連係編集プログラム
であり、6のオブジェクトモジュールABをリンクし
再配置表7にしたがって再配置可能なアドレスの値を変
換する。その際演算を必要とするものについては演算を
実行する。
であり、6のオブジェクトモジュールABをリンクし
再配置表7にしたがって再配置可能なアドレスの値を変
換する。その際演算を必要とするものについては演算を
実行する。
9はCPUが実行可能なリンクされた結果のロードプロ
グラムである。
グラムである。
ロードプログラム9はロードモジュールAにロードモジ
ュールBをリンクしたものであり、ロードモジュールB
内の再配置可能アドレスは、ロードモジュールAの長さ
X ’Boo“たけ加算された値に変換される。このた
め6のオブジェクトモジエールBのX ’01(10’
番地にあったアドレス定数LABEL l /16は、
(LABEL 1 + X ’Boo’)/16ノ
形で演算され、結果の値で置き換えられる。
ュールBをリンクしたものであり、ロードモジュールB
内の再配置可能アドレスは、ロードモジュールAの長さ
X ’Boo“たけ加算された値に変換される。このた
め6のオブジェクトモジエールBのX ’01(10’
番地にあったアドレス定数LABEL l /16は、
(LABEL 1 + X ’Boo’)/16ノ
形で演算され、結果の値で置き換えられる。
第1図において、翻訳処理プログラム5は、処理を依願
されたソースプログラム4を翻訳してオブジェクトモジ
ュール6を生成し、その際再配置可能アドレスについて
再配置表7を作成し出力する。
されたソースプログラム4を翻訳してオブジェクトモジ
ュール6を生成し、その際再配置可能アドレスについて
再配置表7を作成し出力する。
連係編集プログラム8は、各オブジェクトモジュールA
、Bの連係編集を行って再配置表の指示にしたがい再配
置アドレスを変換し、ロードプログラム9を生成する。
、Bの連係編集を行って再配置表の指示にしたがい再配
置アドレスを変換し、ロードプログラム9を生成する。
オブジェクトモジュールBの開始アドレスx ”ooo
ooはロードプログラム9中テL;! X ’0000
°+ X ’e00’ = X ”0800’となり、
アドレス定数(LABEL 1/16)を含む番地のア
ドレスのX ’0100°はX ”0100”+X’B
OO’ =X’0COO’となり、 LABEL 1
/16は(LABEL 1 + X ’Boo’)/
16の演算結果となる。
ooはロードプログラム9中テL;! X ’0000
°+ X ’e00’ = X ”0800’となり、
アドレス定数(LABEL 1/16)を含む番地のア
ドレスのX ’0100°はX ”0100”+X’B
OO’ =X’0COO’となり、 LABEL 1
/16は(LABEL 1 + X ’Boo’)/
16の演算結果となる。
このように、連係編集時に再配置可能のアドレスに対す
る定数の演算は、全て正しく変換されることができる。
る定数の演算は、全て正しく変換されることができる。
[実施例]
第2図に本発明実施例による連係編集処理を説明する。
第2図において、10はオブジェクトモジュールA、1
1はオブジェクトモジュールB、12は再配置表、13
は連係編集処理結果のロードプログラムである。
1はオブジェクトモジュールB、12は再配置表、13
は連係編集処理結果のロードプログラムである。
オブジェクトモジュールBにおいて、開始アドレスはx
oooooであり、また#0126. #0186は
。
oooooであり、また#0126. #0186は
。
それぞれx ’oooo’に対する相対アドレスで表わ
された命令の再配置可能アドレスである。またLABE
L 1 、 ADR1はシンボル名、EQUはシンボル
定義命令であり、オペランドに指定された値をもつ、D
Cは定数を指定された長さの記憶域に確保する命令であ
り、データ形式、長さ、定数自体をオペランドで指定す
る。A L 3 (LABEL 1/3)はDC命令
のオペランドであり、Al1のAはアドレス定数である
こと、Lは長さ、3は長さの値が3バイトであることを
示している。(LABEL 1/3)は定数の値であり
、シンボル名LABEL 1の記憶域アドレス(101
26)を3で割算した値を示している。
された命令の再配置可能アドレスである。またLABE
L 1 、 ADR1はシンボル名、EQUはシンボル
定義命令であり、オペランドに指定された値をもつ、D
Cは定数を指定された長さの記憶域に確保する命令であ
り、データ形式、長さ、定数自体をオペランドで指定す
る。A L 3 (LABEL 1/3)はDC命令
のオペランドであり、Al1のAはアドレス定数である
こと、Lは長さ、3は長さの値が3バイトであることを
示している。(LABEL 1/3)は定数の値であり
、シンボル名LABEL 1の記憶域アドレス(101
26)を3で割算した値を示している。
したがってオブジェクトモジュールBに図示されたDC
命令は、シンボル名ADR1で示される#186のアド
レスに3バイトの記憶域を確保しシンボル名LABEL
1の記憶域のアドレス#126を3で割算した値をロ
ードすることを示している。
命令は、シンボル名ADR1で示される#186のアド
レスに3バイトの記憶域を確保しシンボル名LABEL
1の記憶域のアドレス#126を3で割算した値をロ
ードすることを示している。
再配置表12において
「制御コードJは、再配置表の形式や最終項目であるこ
とを示す。
とを示す。
「シフト」は、再配置定数X″0126’ を再配置演
算後右ヘンフトするシフト数を表す。
算後右ヘンフトするシフト数を表す。
「開始ビット」は、ディスプレイスメントで示される位
置から何ビットのところから再配置定数を設定するかを
示す相対ピント位置を表す。
置から何ビットのところから再配置定数を設定するかを
示す相対ピント位置を表す。
「ディスプレイスメントX ’000186’ 」は処
理対象位置のx ’oooo’からの変位量を示す。
理対象位置のx ’oooo’からの変位量を示す。
「再配置X ’0126’ Jは、定数演算に使用する
アドレス値が再配置可能アドレス値X ’0126°で
あることを示す。
アドレス値が再配置可能アドレス値X ’0126°で
あることを示す。
「長さX ’18’ Jは定数値の長さがX’18’ピ
ント即ち3ハイド(24ビツト)であることを示す。
ント即ち3ハイド(24ビツト)であることを示す。
「演算種別割算」は、定数演算の種別が割算であること
を示す。
を示す。
[値3」は定数演算に使用する演算数が3であることを
示す。
示す。
連係編集処理では1 この再配置表12の情報に基づい
て(LABEL 1/ 3 )の定数演算を実行する。
て(LABEL 1/ 3 )の定数演算を実行する。
その場合まずLABEL 1の記憶域アドレスX ’0
126にX ’0BOO’を加算して再配置アドレス値
を求めこれを演算数3で割算し。
126にX ’0BOO’を加算して再配置アドレス値
を求めこれを演算数3で割算し。
(X’0BOO’+x’0126’) /3 =x“o
cz6’/3= X ’0062 を得て3バイト長の定数値X″000062“としてX
’0C86°番に格納する。なお、 X’0C86
’は。
cz6’/3= X ’0062 を得て3バイト長の定数値X″000062“としてX
’0C86°番に格納する。なお、 X’0C86
’は。
X“0186”を再配置したアドレスである。
本発明によれば、バイトアドレスをワードアドレスに変
換する場合などのアドレスの定数演算値を任意の再配置
に対応して連係編集時に容易に得ることができるのでア
センブラなどの翻訳処理側で対処する必要がなくなり、
システムの構成を簡潔なものにすることができる。
換する場合などのアドレスの定数演算値を任意の再配置
に対応して連係編集時に容易に得ることができるのでア
センブラなどの翻訳処理側で対処する必要がなくなり、
システムの構成を簡潔なものにすることができる。
第1図は本発明の原理説明図、第2図は本発明実施例に
よる連係編集処理の説明図、第3図は従来システムにお
ける連係編集処理の説明図である。 第1図中 4:ソースプログラム 5:翻訳処理プログラム 6:オブジェクトモジエール 7:再配置表 8:連係編集プログラム 9:ロードプログラム 本発刈り原理官免明図 第1 図
よる連係編集処理の説明図、第3図は従来システムにお
ける連係編集処理の説明図である。 第1図中 4:ソースプログラム 5:翻訳処理プログラム 6:オブジェクトモジエール 7:再配置表 8:連係編集プログラム 9:ロードプログラム 本発刈り原理官免明図 第1 図
Claims (1)
- 【特許請求の範囲】 ソースプログラムを翻訳処理してオブジェクトモジュー
ルを生成し、その際再配置可能なアドレスについて再配
置表を作成する翻訳処理プログラムと、複数のオブジェ
クトモジュールを連係編集して、ロードプログラムを生
成し、その際上記再配置表に基づいて再配置可能なアド
レスの値を変更する連係編集プログラムとをそなえたプ
ログラム変換処理システムにおいて、 翻訳処理プログラムは、ソースプログラム中に再配置可
能なアドレスに対して定数の演算が施されている場合、
再配置表中に当該演算の演算種別と、上記再配置可能な
アドレスに作用させる演算数の値とを出力し、 連係編集プログラムは、オブジェクトモジュールに付属
する再配置表により、再配置可能なアドレスに対する演
算によって解決すべき定数を検出すると、当該再配置表
中の演算種別と演算数とを用いて再配置可能なアドレス
に対する演算を実行し、当該定数の値を決定することを
特徴とするプログラム変換処理システムにおけるアドレ
ス再配置処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP26815890A JPH04145536A (ja) | 1990-10-05 | 1990-10-05 | プログラム変換処理システムにおけるアドレス再配置処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP26815890A JPH04145536A (ja) | 1990-10-05 | 1990-10-05 | プログラム変換処理システムにおけるアドレス再配置処理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04145536A true JPH04145536A (ja) | 1992-05-19 |
Family
ID=17454712
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP26815890A Pending JPH04145536A (ja) | 1990-10-05 | 1990-10-05 | プログラム変換処理システムにおけるアドレス再配置処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04145536A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011060109A (ja) * | 2009-09-11 | 2011-03-24 | Ricoh Co Ltd | 組み込み用プログラム開発装置及び組み込み用プログラム開発方法 |
| JP2011215759A (ja) * | 2010-03-31 | 2011-10-27 | Mitsubishi Electric Corp | コード生成処理装置及びコード生成処理プログラム |
-
1990
- 1990-10-05 JP JP26815890A patent/JPH04145536A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011060109A (ja) * | 2009-09-11 | 2011-03-24 | Ricoh Co Ltd | 組み込み用プログラム開発装置及び組み込み用プログラム開発方法 |
| JP2011215759A (ja) * | 2010-03-31 | 2011-10-27 | Mitsubishi Electric Corp | コード生成処理装置及びコード生成処理プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4640684B2 (ja) | プログラムコード変換方法 | |
| US4791558A (en) | System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer | |
| JP3606561B2 (ja) | 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造 | |
| US6175935B1 (en) | Software debugging method and recording medium to which debugging program has been recorded | |
| US6314564B1 (en) | Method for resolving arbitrarily complex expressions at link-time | |
| JPH04145536A (ja) | プログラム変換処理システムにおけるアドレス再配置処理方式 | |
| US20100070951A1 (en) | Generic assembler | |
| EP0348563B1 (en) | A system and method for generating program object modules | |
| JP2025132282A (ja) | プログラミング言語変換システム、プログラミング言語変換方法、及びプログラム | |
| JP2026043647A (ja) | プログラミング言語変換システム、プログラミング言語変換方法、及びプログラム | |
| JP4965024B2 (ja) | エンディアン変換方法 | |
| JP3236714B2 (ja) | プログラム変換装置およびプログラム変換方法 | |
| JPH0228174B2 (ja) | ||
| JP2590083B2 (ja) | ソース・プログラム翻訳処理方法 | |
| JP5482016B2 (ja) | プログラマブルコントローラ | |
| JP3237591B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体 | |
| JPH0239242A (ja) | 電子計算機システムの一時作業領域割付方式 | |
| US20050166192A1 (en) | Run time compiler system and method | |
| JPS59121442A (ja) | 目的コ−ド生成処理方法 | |
| JPS585849A (ja) | 単位変換制御方法 | |
| JP2003337708A (ja) | 文字列変換システム及びプログラム | |
| JPH0373026A (ja) | コンパイル方式 | |
| JPS63127340A (ja) | 多次元配列のメモリ割付け方式 | |
| JPH0754464B2 (ja) | マイクロプログラム翻訳処理方法 | |
| JPS6411974B2 (ja) |