JPH07129408A - 言語処理プログラムの実行方式 - Google Patents

言語処理プログラムの実行方式

Info

Publication number
JPH07129408A
JPH07129408A JP6030656A JP3065694A JPH07129408A JP H07129408 A JPH07129408 A JP H07129408A JP 6030656 A JP6030656 A JP 6030656A JP 3065694 A JP3065694 A JP 3065694A JP H07129408 A JPH07129408 A JP H07129408A
Authority
JP
Japan
Prior art keywords
data
information
variable information
program
processing step
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
JP6030656A
Other languages
English (en)
Inventor
Kiyouko Ishida
亨子 石田
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 JP6030656A priority Critical patent/JPH07129408A/ja
Priority to US08/304,944 priority patent/US5802372A/en
Priority to DE69424364T priority patent/DE69424364T2/de
Priority to EP94114389A priority patent/EP0647900B1/en
Publication of JPH07129408A publication Critical patent/JPH07129408A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】データ領域を節減し、且つアーキテクチャの差
異に関係なくデータ割付け処理を統一することのできる
言語処理プログラムの実行方式を提供する。 【構成】本発明は、入力ファイル101および出力ファ
イル107に対応する言語処理プログラム実行手段10
2として、入力ファイル101よりソースプログラムを
入力する入力部103と、入力されたソースプログラム
を解析する構文解析部104と、解析されたソースプロ
グラムに対応するオブジェクトプログラムを生成するコ
ード生成部105と、生成されたオブジェクトプログラ
ムを出力ファイル107に出力する出力部106とを備
えて構成されており、コード生成部105は、入力ソー
スプログラム中の外部変数情報のデータ幅を解析して、
所定のデータ領域に割付けるデータ割付け解析部108
と、データ幅ごとに分類された変数情報を保持する変数
情報保持部109とにより構成されている。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は言語処理プログラムの実
行方式に関する。
【0002】
【従来の技術】従来の言語処理プログラムの実行方式に
おいては、外部変数情報のデータ割付は、当該変数情報
の出現順に行われているのが通例である。例えば、次に
示す表1に示されるCソースプログラムの一例の場合に
おいては、プログラム内における変数情報の出現順はc
1 、i、c2 、1であり、データ割付けもc1 、i、c
2 、1の順番に行われている。c1 およびc2 はデータ
幅が1バイトの変数情報であり、iはデータ幅が2バイ
トの変数情報、そして1はデータ幅が4バイトの変数情
報である。
【0003】
【表1】
【0004】また、図5は、上記のc1 、i、c2 、1
がデータ領域に割付けられた時のイメージ図である。図
5において、c1 が100C番地から割付けられた時に
は、iは100B番地、c2 は1009番地、1は10
008番地に割付けられる。しかし、計算機のアーキテ
クチャによっては、奇数番地に割付けられたデータをア
クセスできないものがあり、或はまたアクセスはできる
ものの偶数番地に割付けた方が実行速度が速いものなど
がある。このような場合には、全てのデータをアクセス
することができるように、或はまたプログラムの実行速
度を高めるために、アライメントと呼ばれる処理が行わ
れる。
【0005】このアライメントとは、データ領域に割付
けられたデータをアクセスする時のデータ割付け制限で
あり、一般に、2バイトアライメント、4バイトアライ
メントというようなアライメントがある。2バイトアラ
イメントとは、変数をデータ領域に割付ける際に、2の
倍数のアドレスに割付けることてあり、4バイトアライ
メントとは、4の倍数のアドレスに割付けることを意味
している。
【0006】図5に示されるデータ領域のイメージ図に
おいて、2バイトアライメントが必要な計算機において
は、100C番地に割付けられた1バイトデータのc1
をアクセスすることはできるが、100B番地に割付け
られた2バイトデータであるiをアクセスすることはで
きない。また、1バイトデータであっても、奇数番地に
割付けられたc2 をアクセスすることはできない。
【0007】図3(b)は、図5に示されるデータ領域
に対するデータ割付けとして、2バイトアライメントに
より当該データ領域に割付けた場合のイメージ図であ
る。図5と図3(b)のイメージ図における相違点は、
図3(b)においては、c1 とiとの間と、c2 と1と
の間に、それぞれ1バイトの補正領域がとられているこ
とである。また、図3(c)は、図5に示されるデータ
割付けとして、4バイトアライメントによりデータ領域
に割付けた場合のイメージ図である。図3(c)におい
ては、c1 とiとの間に1バイトの補正領域がとられて
おり、c2 と1との間には3バイトの補正領域がとられ
ている。
【0008】同様のことが、プログラム実行時に行われ
る関数呼び出しについても云うことができる。次の表2
に示されるCソースプログラムの※3においては、関数
mainより関数funcが呼び出されている。その際
に、関数funcに渡す引き数1,c2 、i、c1 は、
スタックと呼ばれるメモリ領域に積まれる。また、図9
の※1と※2は関数のプロトタイプ宣言と云われるもの
であり、関数が返す値と引き数の型とを指定するもので
ある。もしもプログラム中にプロトタイプ宣言がないよ
うな場合には、引き数は整数拡張されてスタック領域に
積まれる。
【0009】
【表2】
【0010】従来、関数の引き数をスタック領域に積む
場合には、引き数の記述順に行われている。表2に示さ
れる※3においては、引き数は1、c2 、i、c1 の順
番で記述されている。この場合、引き数はc1 、i、c
2 、1の順番でスタック領域に積まれていた。図8
(a)は、表2に示されるプログラム例によりfunc
を呼出した直後スタック領域を示すイメージ図であり、
図8(b)は、subを呼出した直後におけるスタック
領域のイメージ図である。図8(a)におけるおよび
図8(b)におけるは、スタック領域の同一の番地よ
り積まれている。これは、funcから処理が戻ってき
た際に、一時的に使用されていたスタック領域が元に戻
されるためである。
【0011】次に、表3に示されるCソースプログラム
は、関数mainより関数funcを呼出し、更に関数
funcより関数subを呼出している場合の例であ
る。
【0012】
【表3】
【0013】また、図9(a)、(b)および(c)
は、表3に示されるプログラム例により、subを呼出
した直後におけるスタック領域を示すイメージ図であ
る。図9(b)は、2バイトアライメントにより引き数
をスタック領域に積んだ場合のスタック領域を示し、図
9(c)は、4バイトアライメントにより引き数をスタ
ック領域に積んだ場合のスタック領域を示している。図
9(a)、(b)および(c)における戻り番地とは、
funcでの処理を終了した際に、mainに戻ってく
るために必要な情報であり、図9においては、4バイト
の場合を例としている。表2に示されるプログラムの例
に対して、表3に示されるプログラムの例においては、
スタック領域は連続して使用される。上述したように、
従来の言語処理プログラムの実行方式においては、アラ
イメント処理が必要なデータ割付けを行う場合には補正
領域を算出する必要があり、これにより、実際のデータ
量よりもデータ領域がより多く使用されている。また、
アーキテクチャの差異により、2バイトアライメント、
4バイトアライメントというようにアライメント量が異
なるために、各計算機のアーキテクチャごとにアライメ
ント処理が異なっているという問題がある。
【0014】なお、従来例の一つとして、特開平2−2
4726号公報に示される最適データ割付け方式におい
ては、データを参照する場合に、ベースレジスタにアド
レスを設定することを必要とする計算機用のデータ配置
に関する提案が為されている。しかしながら、この提案
において対象としている計算機は、直接アドレスを指定
することにより参照可能であり、且つ指定アドレスがデ
ータ幅によりアライメントを必要とする計算機に限定さ
れているという問題がある。
【0015】
【発明が解決しようとする課題】上述した従来の言語処
理プログラムの実行方式においては、アライメント処理
を必要とするデータ割付けを行う場合には、対応する補
正領域を算出する必要があり、従って、データ領域もそ
の分だけ余計に使用されるという欠点がある。
【0016】また、計算機のアーキテクチャの差異によ
り、2バイトアライメント、4バイトアライメントとい
うようにアライメント量が異なっているために、対応す
る各計算機のアーキテクチャごとにアライメント処理が
異なるという欠点がある。
【0017】本発明の目的は、このような課題を解決
し、アライメント領域を削減して、データ格納領域を節
減した言語処理プログラムの実行方式を提供することに
ある。
【0018】
【課題を解決するための手段】第1の発明の言語処理プ
ログラムの実行方式は、ソースプログラムを入力する入
力手段と、この入力手段から入力されたソースプログラ
ムを解析する構文解析手段と、前記構文解析手段により
解析されたソースプログラムに対応するオブジェクトプ
ログラムを生成するコード生成手段とを少なくとも備え
て構成され、前記ソースプログラムより前記オブジェク
トプログラムを生成して出力する言語処理ブログラムの
実行方式において、前記コード生成手段が、前記ソース
プログラム中の変数情報のデータ幅を解析するデータ解
析手段と、前記変数情報と前記データ解析手段により解
析されたデータ幅情報とを保持する情報保持手段と、前
記変数情報をデータ幅の大きいものから当該変数情報の
出現順に所定のデータ領域に割付けるデータ割付け手段
とを少なくとも備えて構成されることを特徴としてい
る。
【0019】なお、前記データ割付け手段としては、前
記変数情報を、当該変数情報のデータ幅の2のベき乗の
降順にデータ領域に割付ける機能を有するように構成し
てもよい。
【0020】また、第2の発明の言語処理プログラムの
実行方式は、ソースプログラムを入力する入力手段と、
この入力手段から入力されたソースプログラムを解析す
る構文解析手段と、前記構文解析手段により解析された
ソースプログラムに対応するオブジェクトプログラムを
生成するコード生成手段とを少なくとも備えて構成さ
れ、前記ソースプログラムより前記オブジェクトプログ
ラムを生成して出力する言語処理ブログラムの実行方式
において、前記コード生成手段が、前記ソースプログラ
ム中の変数情報のデータ幅を解析するデータ解析手段
と、当該データ解析手段により解析された変数情報のデ
ータ幅情報を参照して当該変数情報を所定のデータ領域
に割付ける順番を解析し、所定の割付け順番情報を出力
する割付け順序解析手段と、前記変数情報と前記データ
幅情報と前記割付け順番情報とを保持する情報保持手段
と、前記変数情報を前記割付け順番情報による順番に従
ってデータ領域に割付けるデータ割付け手段とを少なく
とも備えて構成されることを特徴としている。
【0021】
【実施例】次に、本発明について図面を参照して説明す
る。
【0022】図1は本発明の第1の実施例のシステム構
成を示すブロック図である。図1に示されるように、本
実施例は、ソースプログラムを格納する入力ファイル1
01と、生成されたオブジェクトプログラムを入力して
格納する出力ファイル107とを含み、これらの入力フ
ァイル101および出力ファイル107に対応する言語
処理プログラム実行手段102として、入力ファイル1
01よりソースプログラムを入力する入力部103と、
入力されたソースプログラムを解析する構文解析部10
4と、解析されたソースプログラムに対応するオブジェ
クトプログラムを生成するコード生成部105と、生成
されたオブジェクトプログラムを出力ファイル107に
出力する出力部106とを備えて構成されている。な
お、コード生成部105は、入力ソースプログラム中の
外部変数情報のデータ幅を解析して、所定のデータ領域
に割付けるデータ割付け解析部108と、データ幅ごと
に分類された変数情報を保持する変数情報保持部109
とにより構成されている。また、前述のプログラム中の
外部変数情報のデータ幅を解析する手段は、図1におけ
るデータ割付け解析部108に相当し、また変数情報と
解析されたデータ幅を保持する手段は、変数情報保持部
109に相当している。
【0023】図2は、図1に示される第1の実施例の言
語処理プログラム実行手段102に含まれるデータ割付
け解析部108における処理手順を示すフローチャート
である。なお、本実施例においては、プログラムの中に
おいて取扱われる外部変数情報は、データ幅が1バイ
ト、2バイトおよび4バイトのみであるものとする。
【0024】まず、入力部103より入力されたソース
プログラムは、構文解析部104において、データ定
義、式、関数、関数定義および分岐などの単位(以下、
レコード単位と云う)に解析され、中間ファイルとして
出力される。読込み処理ステップ201においては、構
文解析部104より出力される前記中間ファイルが1レ
コード単位にて読込まれて、終了判定処理ステップ20
2に移行する。
【0025】終了判定処理ステップ202においては、
読込み処理ステップ201において読込まれたレコード
情報が、中間ファイルの最後の情報であるか否かが判定
される。もしも中間ファイルの最後の情報である場合に
は、データ割付け処理ステップ210に移行する。ま
た、中間ファイルの最後の情報でない場合には、データ
定義判定処理ステップ203に移行する。
【0026】データ定義判定処理ステップ203におい
ては、読込み処理ステップ201において読込まれたレ
コード情報が、データ定義の情報であるか否かが判定さ
れる。当該レコード情報がデータ定義の情報である場合
には、データ幅解析処理ステップ205に移行する。ま
た、当該レコード情報がデータ定義の情報でない場合に
は、オブジェクト生成処理ステップ204に移行して、
当該処理ステップ204において読込まれたレコード情
報のオブジェクトが生成される。
【0027】データ幅解析処理ステップ205において
は、読込まれたレコード情報が4バイトのデータ幅を有
する変数情報であるか否かが判定される。もしも、4バ
イトのデータ幅を有する変数情報である場合には、デー
タ割付け処理ステップ206に移行し、そうでない場合
には、データ幅解析処理ステップ207に移行する。デ
ータ割付け処理ステップ206においては、読込まれた
変数情報をデータ領域に割付けるオブジェクトが生成さ
れ、読込み処理ステップ201に戻る。
【0028】データ幅解析処理ステップ207において
は、読込まれたレコード情報が2バイトのデータ幅を有
する変数情報が否かが判定される。もしも2バイトのデ
ータ幅を有する変数情報である場合には変数格納処理ス
テップ208に移行し、そうでない場合には、変数格納
処理ステップ209に移行する。変数格納処理ステップ
208および209においては、読込まれた変数情報が
変数情報保持部109の該当するデータ幅の欄に格納さ
れる。格納された後には、読込み処理ステップ201に
戻る。
【0029】下記の表4は、変数格納処理ステップ20
8および209において、変数情報が格納される変数情
報保持部109のイメージ図である。1バイト、2バイ
トというデータ幅ごとに変数情報が分類されて格納され
てゆく。
【0030】
【表4】
【0031】データ割付け処理ステップ210において
は、変数格納処理ステップ208において、変数情報保
持部109に格納されたデータ幅が2バイトの変数情報
を、データ領域に割付けるオブジェクトが生成され、デ
ータ割付け処理211に移行する。データ割付け処理ス
テップ211においては、変数格納処理ステップ209
において、変数情報保持部109に格納されたデータ幅
が1バイトの変数情報を、データ領域に割付けるオブジ
ェクトが生成される。
【0032】今、前述の表1に示されるプログラム例
を、入力部103において入力ファイル101として取
扱うソースプログラムであるものとする。上記プログラ
ムを入力ファイル101とする場合においては、次の処
理手順により処理が行われる。
【0033】まず、構文解析部104においては、表1
の〜は、データ定義であるものと解析され、中間フ
ァイルとして出力される。読込み処理ステップ201に
おいては、構文解析部104より出力された中間ファイ
ルは1レコード単位にて読込まれる。変数情報c1 のレ
コード情報が読込まれると、変数格納処理ステップ20
9において変数情報保持部109にc1 が格納される。
下記の表5は、その時の変数情報保持部109のイメー
ジ図である。表2におけるのところにc1 が格納され
た後に、読込み処理ステップ201に移行する。
【0034】
【表5】
【0035】次に、変数情報iのレコード情報が読込ま
れると、変数格納処理ステップ208において、表5の
のところにiが格納され、読込み処理ステップ201
に移行する。次いで変数情報c2 のレコード情報が読込
まれると、変数格納処理ステップ209において、表5
ののところにc2 が格納され、読込み処理ステップ2
01に移行する。
【0036】次に、変数情報1のレコード情報が読込ま
れると、データ割付け処理ステップ206において変数
情報1をデータ領域に割付けるオブジェクトが生成さ
れ、読込み処理ステップ201に移行する。図3(a)
は、表1に示されるCソースプログラム中の外部変数情
報が、データ領域に割付けられた時のイメージ図であ
り、この時点において、変数情報1は、図3(a)にお
けるのところに割付けられる。
【0037】構文解析部104から出力される中間ファ
イルが全て読み終わると、データ割付け処理ステップ2
10において、変数情報保持部109に格納されている
データ幅が2バイトの変数情報を、データ領域に割付け
るオブジェクトが生成される。前記表5において、デー
タ幅が2バイトの変数情報はiであり、このiをデータ
領域に割付けるオブジェクトが生成される。
【0038】次に、データ割付け処理ステップ211に
おいて、変数情報保持部109に格納されているデータ
幅が1バイトの変数情報を、データ領域に割付けるオブ
ジェクトが生成される。表5において、データ幅が1バ
イトの変数情報はc1 およびc2 であり、このc1 およ
びc2 をデータ領域に割付けるオブジェクトが生成され
る。図3(a)における〜が、これらの変数情報c
1 、iおよびc2 がそれぞれデータ領域に割付けられた
時のイメージになる。
【0039】以上説明したように、本実施例において
は、プログラム中の外部変数情報を、データ幅の大きい
ものから出現順にデータ領域に割付けることにより、従
来、今まで必要とされていた補正領域を算出する必要性
がなくなり、変数情報に対応するデータ領域を節減する
ことができる。また、2バイトアライメントの場合にお
いても、または4バイトアライメントの場合であって
も、同様にデータ領域に変数情報を割付けることが可能
となるため、計算機のアーキテクチャの差異によるデー
タ割付け処理を統一して実行することができる。
【0040】次に、本発明の第2の実施例について説明
する。本実施例は、前述の第1の実施例とは、基本的な
システム構成は同一であり、図1に示されるとうりであ
る。本実施例の第1の実施例との相違点は、図1に示さ
れるデータ割付け解析部108において、変数情報をデ
ータ幅ごとに分類して変数情報保持部109に格納する
のではなく、変数情報名と、その変数情報のデータ幅と
を変数情報保持部1019に格納する機能を有している
ことである。なお、以下における本実施例の説明におい
ては、第1の実施例の場合と同様に、プログラムの中で
取扱う外部変数情報は、データ幅が1バイト、2バイト
および4バイトのみとし、第1の実施例と共通する内容
についてはその説明を省略し、当該実施例との相違点に
関する動作内容についてのみ説明するものとする。
【0041】図4は、本実施例における言語処理プログ
ラム実行手段102のデータ割付け解析部における処理
手順を示すフローチャートである。本実施例における処
理ステップ401〜406までは、第1の実施例の場合
と同様の処理が行われる。変数格納処理ステップ407
においては、読込まれた変数情報と変数情報のデータ幅
とが変数情報保持部109に格納され、読込み処理ステ
ップ401に戻る。
【0042】下記の表6は、本実施例の変数情報保持部
109のイメージ図である。左半分には変数情報名が含
まれ、右半分にはデータ幅の情報が含まれている。変数
格納処理ステップ407においては、読込まれた変数情
報とその変数情報のデータ幅が、読込まれた順に変数情
報保持部109に格納されてゆく。
【0043】
【表6】
【0044】データ割付け処理ステップ408において
は、変数情報保持部109に格納されている情報を読込
み、データ幅が2バイトの変数情報をデータ領域に割付
けるオブジェクトが生成される。この処理手順が2バイ
トの変数情報がなくなるまで行われて、データ割付け処
理ステップ409に移行する。
【0045】データ割付け処理ステップ409において
は、データ割付け処理ステップ408における場合と同
様に、変数情報保持部109に格納されている情報を読
込む処理が行われる。この処理ステップにおいて、デー
タ幅が1バイトの変数情報のみをデータ領域に割付ける
オブジェクトが生成される。
【0046】また、次の表7は、第1の実施例の場合と
同様に、表1を入力ファイル101とした場合に、変数
格納処理ステップ407において変数情報が格納される
変数情報保持部109のイメージ図である。
【0047】
【表7】
【0048】この場合において、データ割付け処理ステ
ップ408において、表7に示される変数情報保持部1
09の情報を読込んだ場合には、次の処理手順が行われ
る。まず、最初の変数情報c1 は、データ幅が1バイト
であるため無視される。次に変数情報iはデータ幅が2
バイトであるので、iをデータ領域に割付けるオブシェ
クトが生成される。次いで、変数情報c2 はデータ幅が
1バイトであるため、これも無視される。そして、その
次には読込むべき変数情報が存在しないので、データ割
付け処理ステップ409に移行する。同様にして、デー
タ割付け処理ステップ409においては、データ幅が1
バイトの変数c1 およびc2 をデータ領域に割付けるオ
ブジェクトが生成される。
【0049】図3(a)〜(c)においては、アライメ
ントを考慮してデータ割付けを行った場合と、本発明に
おいてデータ割付けを行った場合とが比較されており、
2バイトアライメントの場合には、2バイト分のデータ
領域の削減が可能であり、また4バイトアライメントの
場合には、4バイト分のデータ領域の削減が可能である
ことが分かる。また、図3(a)に示されるように、ア
ライメントの量に関係なく同じようにデータ領域に変数
情報を割付けることが可能となるため、アーキテクチャ
の差異によるデータ割付け処理を統一して実行すること
ができる。
【0050】次に、本発明の第3の実施例について説明
する。本実施例の第1および第2の実施例との相違点
は、前述の第1および第2の実施例においては、プログ
ラム中の外部変数情報をデータ領域に割付ける手法を用
いているのに対して、本実施例においては、関数の引き
数をスタック領域に割付けるという手法を用いている点
にある。本実施例において取扱うプログラムは、プログ
ラム中に関数のプロトタイプ宣言があるプログラムか、
または関数定義が関数呼出しより前にあるプログラムで
あるものとする。また、プログラムの中で取扱う関数の
引き数は、データ幅が1バイト、2バイトおよび4バイ
トのみであるものとする。
【0051】図6は、本発明の第3の実施例のシステム
構成を示すブロック図である。図5に示されるように、
本実施例は、ソースプログラムを格納する入力ファイル
601と、生成されたオブジェクトプログラムを入力し
て格納する出力ファイル607とを含み、これらの入力
ファイル601および出力ファイル607に対応する言
語処理プログラム実行手段602として、入力ファイル
601よりソースプログラムを入力する入力部603
と、入力されたソースプログラムを解析する構文解析部
604と、解析されたソースプログラムに対応するオブ
ジェクトプログラムを生成するコード生成部605と、
生成されたオブジェクトプログラムを出力ファイル60
7に出力する出力部606とを備えて構成されている。
【0052】なお、コード生成部605は、入力ソース
プログラム中の外部変数情報のデータ幅を解析して、所
定のデータ領域に割付けるデータ割付け解析部608
と、データ領域に割付ける順番を解析する割付け順序解
析部610と、変数情報、解析されたデータ幅情報およ
び割付け順番情報等を保持する変数情報保持部609と
により構成されている。なお、プログラム中の外部変数
情報のデータ幅を解析する手段は、データ割付け解析部
608に相当し、変数情報と解析されたデータ幅および
割付け順番を保持する手段は、変数情報保持部609に
相当しており、またデータ領域に割付ける順番を解析す
る手段は、割付け順番解析部610に相当している。図
1との対比により明らかなように、本実施例の、構成上
における第1および第2の実施例との相違点は、コード
生成部605に対して、新たに割付け順序解析部610
が付加されていることであり、入力ファイル601、入
力部603、構文解析部604、データ割付解析部60
8、変数情報保持部609、出力部606および出力フ
ァイル607等の作用については、図1に示される対応
する構成要素と同様である。
【0053】図7は、図6に示される第3の実施例の言
語処理プログラム実行手段602に含まれるデータ割付
け解析部608と、割付け順番解析部610における処
理手順を示すフローチャートである。
【0054】第1および第2の実施例の場合と同様に、
読込み処理ステップ701においては、構文解析部60
4より出力される中間ファイルが1レコ−ド単位にて読
込まれ、終了判定処理ステップ701に移行する。終了
判定処理ステップ701においては、読込み処理ステッ
プ701において読込まれたレコード情報が、中間ファ
イルの最後の情報であるか否かが判定される。もしも中
間ファイルの最後の情報である場合には、プログラムは
終了する。また、そうでない場合には、関数宣言判定処
理ステップ703に移行して、関数宣言判定処理ステッ
プ703において、読込処理ステップ701において読
込まれたレコード情報が、関数宣言であるか、または関
数定義であるかが判定される。もしも、関数宣言か関数
定義である場合には読込処理ステップ704に移行す
る。また、そうでない場合には、関数引き数判定処理ス
テップ710に移行する。
【0055】読込み処理ステップ704においては、読
込み処理ステップ701の場合と同様に中間ファイルを
1レコード単位にて読込み、引し数判定処理ステップ7
05に移行する。引し数判定処理ステップ705におい
ては、読込み処理ステップ704において読込まれたレ
コード情報が引き数であるか否かが判定される。もしも
引き数である場合には、データ幅解析処理ステップ70
6に移行する。また、そうでない場合には、割付け順解
析処理ステップ708に移行する。データ幅解析処理ス
テップ706においては、読込まれたレコード情報から
引き数のデータ幅が解析され、格納処理ステップ707
に移行する。格納処理ステップ707においては、読込
まれた引き数のデータ幅を変数情報保持部609に格納
し、読込み処理ステップ704に移行する。読込み処理
ステップ704から格納処理ステップ707までの処理
手順は、引き数がなくなるまで繰返して実行される。
【0056】割付け順解析処理ステップ708において
は、変数情報保持部609に格納されているデータ幅の
情報から、データ領域に割付ける順番が解析され、格納
処理ステップ709に移行する。データ領域に割付ける
順番は、データ幅が4バイト、2バイト、1バイトの順
番とし、同じデータ幅の場合には引き数の読込まれた順
番とする。格納処理ステップ709においては、割付け
順解析処理ステップ708において解析された割付け順
番情報を変数情報保持部609に格納し、読込み処理ス
テップ701に戻る。
【0057】関数引き数判定処理ステップ710におい
ては、読込まれたレコード情報が関数の引き数であるか
否かが判定される、もしも、関数の引き数である場合に
は、割付け情報読込み処理ステップ711に移行する。
また、そうでない場合には、オブジェクト生成処理ステ
ップ715に移行する。割付け情報読込み処理ステップ
711においては、変数情報保持部609に格納されて
いる割付け順番情報を読込み、読込み処理ステップ71
2に移行する。読込み処理ステップ712においては、
割付け順番情報を参照しながら中間ファイルを読込み、
スタック割付け処理ステップ713に移行する。スタッ
ク割付け処理ステップ713においては、読込んだ引き
数をスタック領域に積むためのオブジェクトを生成し、
関数引き数判定処理ステップ714に移行する。関数引
き数処理ステップ714においては、変数情報保持部6
09に格納されている引き数を参照して、スタック領域
に積んでいない引き数がある間は、読込み処理ステップ
712に移行して処理を繰返して行う。そして、全ての
引き数についての処理が終了した後に、オブジェクト生
成処理ステップ715に移行する。
【0058】前述の表3のプログラムを、入力部603
において入力ファイル601として取扱うソースプログ
ラムとする。まず、構文解析部604において、表3の
プログラムに対する中間ファイルが出力される。下記に
示される表8は、表3の※1と※3に対するレコード情
報である。表8に示されるレコード情報に対して、次の
順にて処理が行われる。
【0059】
【表8】
【0060】読込み処理ステップ701において、表8
における※5が読込まれると、関数解析処理ステップ7
03において関数宣言であると判定され、読込み処理ス
テップ704に移行する。読込み処理ステップ704に
おいて、次のレコート情報である表8のが読込まれ
る。次いで引き数判定処理ステップ705において、表
8のは引き数のレコード情報であるので、データ幅解
析処理ステップ706に移行する。データ幅解析処理ス
テップ706においては、表8のはデータ幅が1バイ
トの引き数であるものと判定され、格納処理ステップ7
07において、変数情報保持部609に当該データ幅情
報が格納されて、読込み処理ステップ704に戻る。表
9は、その時の変数情報保持部609のイメージ図であ
る。前記データ幅解析処理ステップ706においては、
この表9のに4が格納される。
【0061】
【表9】
【0062】同様にして、表8における〜が処理さ
れて、表9の〜にデータ幅が格納される。次に、表
8における※6が読込まれると、引き数判定処理ステッ
プ705において引き数ではないと判定されて、割付け
順解析処理ステップ708に移行する。割付け順解析処
理ステップ708において、表9に示される変数情報保
持部609の情報を読込んだ場合には、次のような処理
が行われる。
【0063】まず、データ幅が4バイトの引き数は表9
におけるのみであるため、割付け順番を1とする。次
に、データ幅が2バイトの引き数は表9ののみである
ため、割付け順番を2とする。次に、データ幅が1バイ
トの引き数は表9のとであるが、データ幅が同じ場
合には、読込まれた順に割付けられるために、表9の
を割付け順番3、表9のを割付け順番4とする。次い
で、格納処理ステップ709において、割付け順解析処
理ステップ708において解析された割付け順番情報が
変数情報保持部609に格納され、読込処理ステップ7
01に戻る。下記に示される表10は、表9の変数情報
保持部609に割付け順番情報を加えた場合のイメージ
図である。
【0064】
【表10】
【0065】次に、読込処理ステップ701において表
8のが読込まれると、これを受けて、関数引き数判定
処理ステップ710においては、関数の引き数であるも
のと判定され、割付け情報読込み処理ステップ711に
移行する。割付け情報読込み処理ステップ711におい
ては、表10に示される変数情報保持部609に格納さ
れている割付け順番情報を読込む。そして読込み後に、
読込み処理ステップ712に移行する。読込み処理ステ
ップ712においては、読込まれた割付け順番情報の1
番に対応する引き数のレコード情報を読込む。表10に
おいて割付け順番が1番なのはである。このは、関
数宣言時において4番目に読込まれた引き数であるの
で、表8のを読込み、スタック割付け処理ステップ7
13において、1をスタック領域い積むためのオブジェ
クトを生成する。
【0066】同様にして、表8の、、の順番にレ
コード情報を読込み、スタック領域に積むためのオブジ
ュクトを生成する。図9(a)に示される〜は、そ
の時のスタック領域のイメージ図である。また、図9
(a)におけるおよびは、表3に示される※4につ
いて処理を行った場合のイメージに対応する。図9
(a)〜(c)を参照して、アライメントを考慮して引
き数を積んだ場合と、本発明において引き数を積んだ場
合とを比較することにより、2バイトアライメントの場
合には、3バイト分のスタック領域が削減され、4バイ
トアライメントの場合には、7バイト分のスタック領域
が削減されることが分る。
【0067】以上説明したように、プログラム中の関数
の引き数を、データ幅の大きいものからスタック領域に
積むことにより、従来は必要とされていた補正領域の算
出は不要となり、スタック領域を節減することが可能と
なる。また、2バイトアライメントの場合においても、
4バイトアライメントの場合においても、同様にスタッ
ク領域に引き数を積むことができる。
【0068】
【発明の効果】以上説明したように、本発明は、プログ
ラム中の変数をデータ幅ごとに分類し、当該データ幅の
大きいものから出現順にデータ領域に割付けることによ
り、従来必要とされてきた補正領域の算出が不要とな
り、データ領域を節減することができるという効果があ
る。
【0069】また、アライメントの量には関係なく、同
じようにデータ領域に変数を割付けることが可能となる
ために、アーキテクチャの差異によるデータ割付け処理
を統一して実行することができるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1および第2の実施例のシステム構
成を示すブロック図である。
【図2】第1の実施例のデータ割付け解析部における処
理のフローチャートを示す図である。
【図3】データ領域のイメージ図である。
【図4】第2の実施例のデータ割付け解析部における処
理のフローチャートを示す図である。
【図5】データ領域のイメージ図である。
【図6】本発明の第3の実施例のシステム構成を示すブ
ロック図である。
【図7】第3の実施例のデータ割付け解析部および割付
け順序解析部における処理のフローチャートを示す図で
ある。
【図8】データ領域のイメージ図である。
【図9】データ領域のイメージ図である。
【符号の説明】
101、601 入力ファイル 102、602 言語処理プロクラム実行手段 103、603 入力部 104、604 構文解析部 105、605 コード生成部 106、606 出力部 107、607 出力ファイル 108、608 データ割付け解析部 109、609 変数情報保持部 201、401、701、704、712 読込み処
理ステップ 202、402、702 終了判定処理ステップ 203、403 データ定義判定処理ステップ 204、404、715 オブジェクト生成処理ステ
ップ 205、207、405、706 データ幅解析処理
ステップ 206、210、211、406、408、409
データ割付け処理ステップ 208、209、407 変数格納処理ステップ 610 割付け順序解析部 703 関数宣言判定処理ステップ 705 引き数判定処理ステップ 707、709 格納処理ステップ 708 割付け順解析処理ステップ 710、714 関数引き数判定処理ステップ 711 割付け情報読込み処理ステップ 713 スタック割付け処理ステップ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムを入力する入力手段
    と、この入力手段から入力されたソースプログラムを解
    析する構文解析手段と、前記構文解析手段により解析さ
    れたソースプログラムに対応するオブジェクトプログラ
    ムを生成するコード生成手段とを少なくとも備えて構成
    され、前記ソースプログラムより前記オブジェクトプロ
    グラムを生成して出力する言語処理ブログラムの実行方
    式において、 前記コード生成手段が、前記ソースプログラム中の変数
    情報のデータ幅を解析するデータ解析手段と、前記変数
    情報と前記データ解析手段により解析されたデータ幅情
    報とを保持する情報保持手段と、前記変数情報をデータ
    幅の大きいものから当該変数情報の出現順に所定のデー
    タ領域に割付けるデータ割付け手段とを少なくとも備え
    て構成されることを特徴とする言語処理プログラムの実
    行方式。
  2. 【請求項2】 前記データ割付け手段が、前記変数情報
    を、当該変数情報のデータ幅の2のベき乗の降順にデー
    タ領域に割付けるように機能することを特徴とする請求
    項1記載の言語処理プログラムの実行方式。
  3. 【請求項3】 ソースプログラムを入力する入力手段
    と、この入力手段から入力されたソースプログラムを解
    析する構文解析手段と、前記構文解析手段により解析さ
    れたソースプログラムに対応するオブジェクトプログラ
    ムを生成するコード生成手段とを少なくとも備えて構成
    され、前記ソースプログラムより前記オブジェクトプロ
    グラムを生成して出力する言語処理ブログラムの実行方
    式において、 前記コード生成手段が、前記ソースプログラム中の変数
    情報のデータ幅を解析するデータ解析手段と、当該デー
    タ解析手段により解析された変数情報のデータ幅情報を
    参照して当該変数情報を所定のデータ領域に割付ける順
    番を解析し、所定の割付け順番情報を出力する割付け順
    序解析手段と、前記変数情報と前記データ幅情報と前記
    割付け順番情報とを保持する情報保持手段と、前記変数
    情報を前記割付け順番情報による順番に従ってデータ領
    域に割付けるデータ割付け手段とを少なくとも備えて構
    成されることを特徴とする言語処理プログラムの実行方
    式。
JP6030656A 1992-09-13 1994-02-28 言語処理プログラムの実行方式 Pending JPH07129408A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP6030656A JPH07129408A (ja) 1993-09-13 1994-02-28 言語処理プログラムの実行方式
US08/304,944 US5802372A (en) 1992-09-13 1994-09-13 Language processing system
DE69424364T DE69424364T2 (de) 1993-09-13 1994-09-13 Parameterspeicherbereichszuordnung
EP94114389A EP0647900B1 (en) 1993-09-13 1994-09-13 Parameter storage space allocation

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP22629293 1993-09-13
JP5-226292 1993-09-13
JP6030656A JPH07129408A (ja) 1993-09-13 1994-02-28 言語処理プログラムの実行方式

Publications (1)

Publication Number Publication Date
JPH07129408A true JPH07129408A (ja) 1995-05-19

Family

ID=26369050

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6030656A Pending JPH07129408A (ja) 1992-09-13 1994-02-28 言語処理プログラムの実行方式

Country Status (4)

Country Link
US (1) US5802372A (ja)
EP (1) EP0647900B1 (ja)
JP (1) JPH07129408A (ja)
DE (1) DE69424364T2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2211515C (en) * 1997-07-25 2001-12-11 Kevin Alexander Stoodley System and method of local data alignment for stack memory
CN108446122B (zh) * 2018-03-22 2021-10-29 中国银行股份有限公司 一种参数一致性验证方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63140338A (ja) * 1986-12-02 1988-06-11 Nec Corp コンパイラにおける変数のメモリ割付け方式

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1248238A (en) * 1985-10-17 1989-01-03 Francis D. Lawlor Compiler including retargetable data generation
JPH0792757B2 (ja) * 1988-07-14 1995-10-09 日本電気株式会社 最適データ割付け方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63140338A (ja) * 1986-12-02 1988-06-11 Nec Corp コンパイラにおける変数のメモリ割付け方式

Also Published As

Publication number Publication date
EP0647900B1 (en) 2000-05-10
US5802372A (en) 1998-09-01
DE69424364T2 (de) 2001-02-08
EP0647900A1 (en) 1995-04-12
DE69424364D1 (de) 2000-06-15

Similar Documents

Publication Publication Date Title
US6363436B1 (en) Method and system for loading libraries into embedded systems
JPH01306923A (ja) 異種言語間連絡方式
EP0889405A1 (en) Software debugging method
US8341606B2 (en) Method of invoking inlined method and java virtual machine using the method
JP2000353097A (ja) 低密回の干渉グラフを生成する方法および装置
JPH07129408A (ja) 言語処理プログラムの実行方式
US5283901A (en) Microcomputer with high speed access memory and language processing program execution system
JPH01118931A (ja) プログラム変換方式
US5765148A (en) Database processing apparatus and database processing method for variable length objects, and computer-readable memory medium for storing database processing program
JP6475888B1 (ja) プログラム変換システム
JP2000122876A (ja) 情報処理装置
EP0803806A2 (en) Data conversion mechanism for computer system
JPH07105013A (ja) レジスタ割り付け方式
JP3338466B2 (ja) 主記憶アクセス最適化処理装置
JP3481268B2 (ja) ライブラリのモジュール管理方式
JP2809073B2 (ja) 配列のメモリ割り付け方式
JP3192177B2 (ja) オブジェクト処理装置
JP3018666B2 (ja) 言語処理装置
JP2002108628A (ja) プログラム変換装置
JPH0792757B2 (ja) 最適データ割付け方式
JPH07141189A (ja) オーバレイリンク方式
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JPH03269619A (ja) 漢字フィールドをソートキーとするソート処理方式
JPH0390931A (ja) Rom化プログラムの生成方法
JPH0465714A (ja) 計算機システムのロードモジュール管理方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19980317