JPH01116829A - プログラムの翻訳方式 - Google Patents

プログラムの翻訳方式

Info

Publication number
JPH01116829A
JPH01116829A JP62276335A JP27633587A JPH01116829A JP H01116829 A JPH01116829 A JP H01116829A JP 62276335 A JP62276335 A JP 62276335A JP 27633587 A JP27633587 A JP 27633587A JP H01116829 A JPH01116829 A JP H01116829A
Authority
JP
Japan
Prior art keywords
library
program
instruction
libraries
macro
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
JP62276335A
Other languages
English (en)
Inventor
Akiyuki Yamamoto
山本 昭之
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP62276335A priority Critical patent/JPH01116829A/ja
Publication of JPH01116829A publication Critical patent/JPH01116829A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概要〕 本発明は、高級プログラム言語の所定の命令をオペレー
ティングシステムに登録されたライブラリに肩代わりさ
せるプログラムの翻訳方式に関し、指示されたオペレー
ティングシステムにより目的プログラムを出し分けるコ
ンパイラとライプシリの原始プログラムとを一元化する
ことを目的とし・、 目的プログラム中ム定のインタフェース処理に対応し′
て設けられるインタフェース処理のうちオペレーティン
グシステムに依存する命令コードを所定のマクロ命令に
置き換えた前記第1および第2のライブラリを生成する
共通の原始プログラムと、該マクロ命令に対応した前記
第1および第2のライブラリの命令コードを登録する登
録ファイルと、指示されたオペレーティングシステムに
基づき該原始プログラムの所定のマクロ命令を前記命令
コードに置換して第1または第2のライブラリの原始プ
ログラムをそれぞれ生成するマクロプロセッサとを備え
、オペレーティングシステムに依存するインタフェース
処理を該ライブラリに対応せしめるとともに、異なる前
記命令コードをマクロ命令で置き換えて第1および第2
のライブラリを生成するように構成する。
〔産業上の利用分野〕 本発明は、命令コード体系が同一でオペレーティングシ
ステムO3が異なる複数システムに対する目的プログラ
ム(以下オブジェクトと称する)を出し分けるクロスコ
ンパイラに係わり、特に高級プログラム言語で記述され
たプログラム中の特定の命令をサブプログラム(以下ラ
イブラリと称する)に肩代わりさせる翻訳方式の改良に
関する。
CoBOL等高級プログラム言語におけるコンパ・イラ
では、入出力、演算命令等を実行する一連の命令コード
をサブプログラムとしてシステムに登録しておき、翻訳
中にその命令が検出されたときそのライブラリを呼出す
オブジェクトを生成する翻訳方式が採用されている。
しかし、対象システムのオペレーティングシステムO3
が異なるオブジェクトを出し分けるクロスコンパイラで
は、呼出すライブラリもそのO3に依存したものである
から、呼出し時のインタフェース処理もそのO3に対応
させねばならない。
一方ライブラリを開発するときも機能が同一であっても
そのO3に対応したものをそれぞれ個別に開発しなけれ
ばならず、このため、クロスコンパイラ、ライブラリの
開発工数、プログラム管理上の問題点が生じ、一元化さ
れた翻訳方式が求められている。
〔従来の技術〕
第6図はOSIにおける呼出し関係図、第7図はO32
における呼出し関係図である。
第6図(1)はデータ群をそれぞれ桁合わせ処理して1
0進−2進処理(以下型変換)を指示するC0BOLプ
ログラムの命令をライブラリaに肩代わりさせる例を示
したもので、プログラム翻訳中にこの命令を検出したと
きクロスコンパイラは処理対象のデータ(以下入力デー
タ)が存在する領域Aのアドレス情報と、処理結果のデ
ータ(出力データ)を格納する領域Bのアドレス情報と
をスタックに格納してライブラリaを呼出すオブジェク
ト(以下C0BOLオブジエクト)を生成する。
ライブラリa、ライブラリbはそれぞれオペレーティン
グシステムO3Iの管理下で登録されたサブプログラム
であって、呼出されたライブラリaはスタックより入力
データのアドレス情報を取り出し作業領域Cで入力デー
タを桁合わせ処理した後、処理結果が格納されている作
業領域Cのアドレス情報をスタックに格納してライブラ
リbを呼出し、ライブラリbは桁合わせ処理された入力
データのアドレス情報をスタックより取り出して型変換
を行う。
このライブラリbは桁合わせ無し型変換のときC0BO
Lオブジエクトからも直接呼出しされるもので、第6図
(II)に示すように、C0BOLオブジエクトはライ
ブラリaの呼出し時と同様に入出力データの領域Aと領
域Bのアドレス情報をスタックしてライブラリbを呼出
す。
上記呼出し関係を説明するため、以下にアドレス情報の
通知方法について説明する。
プログラムを実行するプロセッサ(以下インテル社製、
 18086を例とする)のアドレス空間を論理的に指
定するものとして、64にバイト幅のセグメントがあり
、それぞれデータ種別、使用法によって・ コードセグメントC3コード領域 データセグメントDS    データ領域スタックセグ
メントSS   スタック領域エクストラセグメントB
S  ワーク領域の4種のセグメントが使い分けられる
これらのセグメントに格納されたデータは、それぞれの
セグメントレジスタ(以下DSレジスタ。
SSレジスタ・・と称する)にセグメントの起点アドレ
ス(セグメントアドレス)を、各セグメントに対応する
レジスタにセグメント内アドレス(オフセット)、をそ
れぞれセットすることにより指定することができ、実行
時にはセグメントアドレス+オフセットにより物理アド
レスが生成されてアドレスされる。
これらのセグメントのアドレス空間はそれぞれ16バイ
トおきに設定可能であり、また各セグメントのアドレス
空間を同一アドレス空間として使用することができる。
プログラムを翻訳するとき上記4種のセグメントが使用
されるが、O81ではアドレス空間がDS=BS≠SS
と定義されているため、呼出し先に入出力データのセグ
メントアドレスとオフセットとを通知しなければならな
い。
第6図(1)においてC0DOLオブジエクトは入出力
データの格納領域A、 BをDS上におき(O5(A 
) 、OS  (B )等と称する〕、それぞれのセグ
メントアドレスおよびオフセットを所定のスタック領域
(BP + n + BP + m  ; BPは現ベ
ースポインタ、n、mはスタックポインタ)に格納して
ライブラリaを呼出し、ライブラリaは入力データを読
取りスタックSS上に作業領域Cを設けて桁合わせ処理
を行った後、作業領域C+ %’fl域Bのセグメント
アドレスとオフセットとをスタック(領域BP+n’ 
、 BP+m、’)した後ライブラリbを呼出す。
ライブラリbは現DSレジスタの内容を退避してスタッ
ク領域BP+n’ のセグメントアドレス(作業領域C
)をDSレジスタヘセットし、続いてBP+m’のセグ
メントアドレスをBSレジスタにセントした後型変換を
行う。型変換処理後はさらにDSレジスタの内容を元に
戻しライブラリaにリターンする。
C0BOLオブジエクトがライブラリbを直接呼出しす
るときは領域へのセグメントアドレスをスタック領域の
BP+n’ に、領域BのセグメントアドレスをBP+
m’ に格納して呼出しする。
ライブラリbでは前述の前処理によりスタック領域BP
+n’ のセグメントアドレスをDSレジスタにセット
するが、これは領域A  (DS)のセグメントアドレ
スを再セットするものであり、この前処理によりライブ
ラリbはC0BOLオブジエクトとライブラリaとの両
方から呼出しが可能となっている。
一方オペレーティングシステムO32は、DS=I!5
=SSと定義されたもので、インタフェース処理が異な
るライブラリal、ライブラリb゛が別Gζ設けられる
即ち、DS2ではセグメントを指定する必要がなく呼出
し時に使用されていたセグメントアドレス(DSレジス
タの内容)がそのまま使用できるため、C0BOLオブ
ジエクトはオフセットを与えるのみでよく、また作業領
域CはDS上にあるからライブラ+Jalもライブラリ
b゛にオフセットを通知するのみでよい。従ってライブ
ラリb”も前述の前処理、−後処理が不要のものとなっ
ている。
なお、第6図、第7図はセグメント関係図を示したもの
で、SSの処理、オフセット処理等は図示省略している
〔発明が解決しようとする問題点〕
以上説明したように、同じプロセッサであってもオペレ
ーティングシステムO8が異なると、クロスコンパイラ
が生成するオブジェクトのインタフェース処理が異なる
とともに、同一データ処理のライブラリでもO8に依存
してインタフェース処理が異なるものであった@ このため、クロスコンパイラはライブラリを呼出すごと
にO3に対処してオブジェクトを出し分けなければなら
ず、またライブラリはその原始プログラムを別々に開発
しなければならず、開発工数。
保守工数とともにプログラムの管理上の問題点が生じて
いた。
本発明は上記問題点を解決し、クロスコンパイラ、ライ
ブラリの一元化を図るプログラムの翻訳。
方式を提供することを目的とする。
〔問題点を解決するための手段〕
上記目的のため、本発明のプログラムの翻訳方式は、第
1図本発明の原理説明図に示すように、目的プログラム
の所定のインタフェース処理に対応して設けられるイン
タフェース処理のうちオペレーティングシステムに依存
する命令コード(4)を所定のマクロ命令(2)に置き
換えた前記第1および第2のライブラリを生成する共通
の原始プログラム(1)と、 該マクロ命令に対応した前記第1および第2のライブラ
リの命令コード(4)を登録する登録ファイル(5)と
、 指示されたオペレーティングシステムに基づき該原始プ
ログラムの所定のマクロ命令を前記命令コードに置換し
て第1または第2のライブラリの原始プログラム(6,
7)をそれぞれ生成するマクロプロセッサ(3)とを備
える。
〔作用〕 ライブラリ呼出しのためのインタフェース処理は第】お
よび第2のライブラリで対応できる共通のインタフェー
ス処理とし、ライブラリ側でosに対応したインタフェ
ース処理を行わせる。
さらに第1および第2のライブラリの原始プログラム6
.7を共通の原始プログラム1として開発し、O3によ
って異なる命令コード4をマクロ命令2で記述する。
この原始プログラム1をマクロプロセッサ3は指示され
たオペレーティングシステムに基づき登録ファイル5に
登録された命令コード4と置き換えて、第1または第2
のライブラリの原始プログラム6.7を生成する。
この結果、1つの原始プログラム1でO8対応の第1お
よび第2のライブラリが自動生成され、またクロスコン
パイラはO8対応でオブジェクトを出し分ける必要がな
くなる。
以上によりライブラリ開発の一元化、コンパイラにおけ
るインタフェース処理の一元化が達成される。
〔実施例〕
本発明の実施例を図を用いて説明する。
第2図は実施例のブロック図、第3図はライブラリaa
のインタフェース処理例を表す図、第4図はスタック状
態を表す図、第5図はライブラリ作成フロー図である。
以下の実施例は前述した従来例に基づき説明する。なお
、以下の説明ではライブラリaaが第1のライブラリに
ライブラリa′が第2のライブラリに対応する。
C0BOLオブジエクトは、オペレーティングシステム
O3に依存しないインタフェース処理として、即ち、入
出力データの領域A、Bのアドレス情報としてオフセッ
トのみ通知し、各ライブラリは領域A、Bは必ずデータ
セグメントDS上にあるとして現OSレジスタの内容を
参照して処理するように構成される。
従って052に対応するライブラリa″、ライブラIJ
b”は従来と同じでよく、またライブラリbはオフセッ
トのみ通知されるO82のライブラリb′と同一となる
。 (以下ライブラリb゛とする)このためO81のラ
イブラリa (以下ライブラリaaとする)はライブラ
リb゛を呼出すためのインタフェース処理が必要となる
第3図はライブラリaaのライブラリb゛ に対するイ
ンタフェース処理部分を示したもので、桁合わせ処理し
た領域C(SS上)のセグメントアドレスをDSレジス
タに、領域Cのオフセットを、C0BOLオブジエクト
がライブラリb゛を呼出すとき領域へのオフセットを格
納するスタック領域(同一ポインタ値1図ではBP+8
)に、出力データのオフセントCSS上、領域B”とす
る)を領域Bのオフセットを格納するスタック領域(B
f’+6)にそれぞれセットして呼出し、リターン後は
OSレジスタの復元。
出力データの領域B°から領域Bへの複写処理を行う。
なお、上記スタック状態は第4図に示す。
第3図#5TACK 、、で示された部分はライブラリ
a゛とは異なる部分であり、後述するようにライブラリ
a°ではライブラリaaの命令コードのうち不要の所(
#5TACK 1. #5TACK 2. #5TAC
K 4 ”) はNOOr’ERATION 、 NO
Pに置き換えられ、別の命令コードの所(#5TACK
 3 )はその命令コードに置き換えられる。
ライブラリaa、  ライブラリa°の原始プログラム
6.7は共通の原始プログラム1としてアセンブリ言語
で作成され、前述の異なる命令コード4はマクロ命令2
として設定された#5TACK1.9STACK2のを
用いて記述される。
マクロプロセッサ3は、第2図に示すように、原始プロ
グラム1を順次読取り解析し、マクロ命令2.即ち#5
TACK 、、が検出されると、登録ファイル5を参照
して指示されたO8に対応する命令コード4を抽出して
置き換える。
例えば、# 5TACK2が検出されると、OSIが指
定された場合は、 r’Usll OS   ・・・DSレジスタの退避M
OVE AX、SS・・・SSレジスタの内容をDSレ
ジスMOVE O3,AX    タニセットに置き換
え(スイッチするとも称する) 、 OS2の場合は NOP にスイッチする。
以上により同じ原始プログラム1よりライブラリaaま
たはライブラリa゛の原始プログラム6.7を生成する
ことができる。
なお、生成されたそれぞれの原始プログラム6゜7は、
第5図に示すように共通のアセンブラ10で翻訳される
が、どちらか一方のオブジェクト形式で出力されるため
他方はオブジェクト形式変換が行われ、それぞれのリン
ケージエディタ11によりロードモジュール、即ちライ
ブラリaa、  ライブラリa′が生成される。
以上のごと< 、C0BOLオブジエクトはO3に依存
しないインタフェース処理により生成され、またライブ
ラリの原始プログラムもO3によって異なるインタフェ
ース処理部分がマクロ命令によって記述されるため、ク
ロスコンパイラおよびライブラリの原始プログラムを一
元化することができる。
なお、上記実施例ではC0DOLオブジエクトが呼出し
たライブラリがさらに次のライブラリを呼出す場合を示
したが、次のライブラリを呼出しせず直接C0BOLオ
ブジエクトにリターンするライブラリでもO3による異
なる部分が生じるため、この部分をマクロ命令で置き換
えることにより前記同様に一元化が達成できることは勿
論である。
〔発明の効果〕
本発明は、オペレーティングシステム依存のインタフェ
ース処理部分をライブラリに肩代わりさせるとともに、
その異なる部分をマクロ命令で記述してライブラリを生
成する翻訳方式を提供するもので、クロスコンパイラ、
ライブラリ開発の一元化が達成でき、開発、保守工数の
低減およびプログラム管理上に多大の効果がある。
【図面の簡単な説明】
第1図は本発明の原理図、 第2図は実施例のブロック図、 第3図はライブラリaaのインタフェース処理例を表す
図、 第4図はスタック状態を表す図、 第5図はライブラリ生成フロー図、 第6図はOSIにおける呼出し関係図、第7図は052
における呼出し関係図、である。図中、 ■は原始プログラム、 2はマクロ命令、3はマクロプ
ロセッサ、4は命令コード、5は登録ファイル、 6は第1のライブラリの原始プログラム、7は第2のラ
イブラリの原始プログラム、10はアセンブラ、 11はリンケージエディタ、 aaは第1のライブラリ、alは第2のライブラリ、で
ある。 第1図 X3w+のブロック図 第2図 ライブラリa8のインクフェース処理例を表す口笛3図 ライプ91月誠フロー図 第5図 ([)桁合わせ有り型変換処理の呼出し関係図(■)h
治わせ無し型詔」υy屋の呼出し間係図OSIにおける
呼出し間係図 第6図

Claims (1)

  1. 【特許請求の範囲】 高級プログラム言語で記述されたプログラムの所定の命
    令をそれぞれ異なるオペレーティングシステム(OS1
    、OS2)の管理下で実行する第1および第2のライブ
    ラリを設け、該プログラムより前記所定の命令を検出し
    たとき該オペレーティングシステムに共通する所定のイ
    ンタフェース処理を行って指示されたオペレーティング
    システムに対応する該ライブラリを呼出す目的プログラ
    ムを生成するプログラムの翻訳方式であって、 前記目的プログラムの所定のインタフェース処理に対応
    して設けられるインタフェース処理のうちオペレーティ
    ングシステムに依存する命令コード(4)を所定のマク
    ロ命令(2)に置き換えた前記第1および第2のライブ
    ラリを生成する共通の原始プログラム(1)と、 該マクロ命令に対応した前記第1および第2のライブラ
    リの命令コード(4)を登録する登録ファイル(5)と
    、 指示されたオペレーティングシステムに基づき該原始プ
    ログラムの所定のマクロ命令を前記命令コードに置換し
    て第1または第2のライブラリの原始プログラム(6、
    7)をそれぞれ生成するマクロプロセッサ(3)とを備
    え、 オペレーティングシステムに依存するインタフェース処
    理を該ライブラリに対応せしめるとともに、異なる前記
    命令コードをマクロ命令で置き換えて第1および第2の
    ライブラリを生成することを特徴とするプログラムの翻
    訳方式。
JP62276335A 1987-10-30 1987-10-30 プログラムの翻訳方式 Pending JPH01116829A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62276335A JPH01116829A (ja) 1987-10-30 1987-10-30 プログラムの翻訳方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62276335A JPH01116829A (ja) 1987-10-30 1987-10-30 プログラムの翻訳方式

Publications (1)

Publication Number Publication Date
JPH01116829A true JPH01116829A (ja) 1989-05-09

Family

ID=17568010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62276335A Pending JPH01116829A (ja) 1987-10-30 1987-10-30 プログラムの翻訳方式

Country Status (1)

Country Link
JP (1) JPH01116829A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133820A (ja) * 2005-11-14 2007-05-31 Nec Corp プログラム開発支援装置およびプログラム開発支援方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57113147A (en) * 1980-12-31 1982-07-14 Fujitsu Ltd Compiling system for incorporated instruction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57113147A (en) * 1980-12-31 1982-07-14 Fujitsu Ltd Compiling system for incorporated instruction

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133820A (ja) * 2005-11-14 2007-05-31 Nec Corp プログラム開発支援装置およびプログラム開発支援方法

Similar Documents

Publication Publication Date Title
US5381547A (en) Method for dynamically linking definable program elements of an interactive data processing system
US6243864B1 (en) Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths
JP2666847B2 (ja) 異種言語間連絡方式
US6983458B1 (en) System for optimizing data type definition in program language processing, method and computer readable recording medium therefor
JP4487479B2 (ja) Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム
CN110928577B (zh) 一种带异常返回的向量存储指令的执行方法
US7219337B2 (en) Direct instructions rendering emulation computer technique
US20060253271A1 (en) Method for facilitating transformation of multi-threaded process-oriented object code to event-based object code
JPH01116829A (ja) プログラムの翻訳方式
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP3318051B2 (ja) 翻訳処理方法
JPH0683615A (ja) 命令セットエミュレーションを行う計算機
JPH01277934A (ja) パラメータリスト参照方法の切換え方式
US5093917A (en) Method for passing data parameters between a calling program and a called subroutine in a command analysis table of a computer stored data base system
JP5845788B2 (ja) 実行制御プログラム、実行制御装置および実行制御方法
CN114489683B (zh) 一种类java语言基于JVM的函数式编程语法实现方法
JP3018783B2 (ja) コンパイル方式
JP2002149417A (ja) レジスタ退避・回復方法
JPH05173788A (ja) 計算機装置
JPH11272473A (ja) プログラム言語処理装置のコード最適化方式
JPH1124939A (ja) プログラム変換方法
JPH06131196A (ja) 最適化処理方式
JPH09171467A (ja) エミュレーション装置及びその方法
JPH0561687A (ja) コンパイラの処理方式
KR20000032612A (ko) 칠 컴파일러의 실행시간 스택프레임 구성 방법