JP3049814B2 - マイクロコンピュータの言語処理装置 - Google Patents

マイクロコンピュータの言語処理装置

Info

Publication number
JP3049814B2
JP3049814B2 JP3104878A JP10487891A JP3049814B2 JP 3049814 B2 JP3049814 B2 JP 3049814B2 JP 3104878 A JP3104878 A JP 3104878A JP 10487891 A JP10487891 A JP 10487891A JP 3049814 B2 JP3049814 B2 JP 3049814B2
Authority
JP
Japan
Prior art keywords
variable area
variable
proc
access memory
routine
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.)
Expired - Lifetime
Application number
JP3104878A
Other languages
English (en)
Other versions
JPH04311227A (ja
Inventor
裕之 増山
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 JP3104878A priority Critical patent/JP3049814B2/ja
Priority to US07/864,605 priority patent/US5283901A/en
Priority to EP92106083A priority patent/EP0508412B1/en
Priority to DE69228084T priority patent/DE69228084T2/de
Publication of JPH04311227A publication Critical patent/JPH04311227A/ja
Application granted granted Critical
Publication of JP3049814B2 publication Critical patent/JP3049814B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロコンピュータ
に利用され、特に、マイクロコンピュータ内部に、命令
によって高速にデータの読み出し、書き込み可能な特定
のメモリ領域としての、高速アクセスメモリを持つ、マ
イクロコンピュータ用の言語処理プログラムの実行方式
に関する。
【0002】
【従来の技術】言語処理プログラムが、入力したソース
を翻訳し、その結果として生成したファイルをオブジェ
クトモジュール(以下、オブジェクトという。)とい
う。
【0003】マイクロコンピュータを選ぶ場合、低コス
ト化を考え、安いチップを使用するために、性能が悪く
なる。そのため、プログラムを開発する場合、言語処理
結果であるオブジェクトの実行が速いこと、およびオブ
ジェクトのサイズが小さいことを期待する。
【0004】一般にマイクロコンピュータの言語処理
おいては、短い命令コードによりアクセスできるメモリ
領域を持つことが普通であり、これを高速アクセスメモ
リと呼ぶ。短い命令コードによりアクセスできるため、
命令バイト数を小さくすることができるだけでなく、命
令フェッチおよび命令デコードが高速にできるために命
令実行時間も短くなる利点がある。
【0005】従来の言語処理プログラムの実行方式で
は、マイクロコンピュータが高速アクセスメモリを持っ
ていた場合でも、高速アクセスメモリは通常のメモリよ
りメモリサイズが小さく、メモリの割り付けについては
考慮されていなかったため、すべての変数を通常のメモ
リに割り当てていた。
【0006】
【発明が解決しようとする課題】前述したように、従来
のマイクロコンピュータにおける言語処理プログラムの
実行方式では、変数を高速アクセスメモリにではなく、
通常のメモリに割り当てていた。
【0007】一般に通常のメモリのデータの読み出し、
書き込みスピードは高速アクセスメモリのデータの読み
出し、書き込みスピードよりかなり遅くなるため、従来
の言語処理プログラムの実行方式では、高速な変数の操
作を含むオブジェクトを生成できない欠点があった。さ
らに、一般に通常のメモリのデータの読み出し、書き込
みのオブジェクトコードは、高速アクセスメモリのデー
タの読み出し、書き込みのオブジェクトコードよりバイ
ト数が大きいため、限られた高速アクセスメモリに格納
できるコンパクトなオブジェクトを生成できない欠点が
あった。
【0008】本発明の目的は、前記の欠点を除去するこ
とにより、高速な変数の操作を含み、かつコンパクトな
オブジェクトを生成できる言語処理プログラムの実行方
式を有するマイクロコンピュータの言語処理装置を提供
することにある。
【0009】
【課題を解決するための手段】本発明は、高速にデータ
の読み出し書き込み可能な高速アクセスメモリと、ソー
スプログラム情報を入力して解析しオブジェクト情報を
出力する言語処理プログラム実行手段とを備えたマイク
ロコンピュータの言語処理装置において、前記言語処理
プログラム実行手段は、前記ソースプログラムの各サブ
ルーチンが使用する変数領域を計算する変数領域解析手
段と、各サブルーチンの呼び出しの相関関係のフローグ
ラフを作成するフローグラフ生成手段と、前記変数領域
のサイズおよび前記フローグラフからプログラム全体が
使用する最大変数領域を計算する最大変数領域検出手段
と、この計算された最大変数領域が前記高速アクセスメ
モリの領域よりも小さい場合、前記高速アクセスメモリ
に変数を割り付けたオブジェクト情報を出力する出力手
段とを含むことを特徴とする。
【0010】
【作用】入力されるソースプログラムについて、変数領
域解析手段により、そのサブルーチンの使用する変数領
域を計算し、フロー生成手段により各サブルーチンの呼
び出しの相関関係のフローグラフを作成し、最大変数領
域検出手段により前記変数領域のサイズとフローグラフ
からプログラム全体が使用する最大変数領域を計算す
る。そして、出力手段によりこの計算された最大変数領
域が高速アクセスメモリの領域よりも小さいときは、高
速アクセスメモリに変数を割り付けたオブジェクト情報
を出力する。
【0011】従って、高速な変数の操作を含み、かつコ
ンパクトなオブジェクトを生成することが可能となる。
【0012】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0013】図1は本発明の一実施例を示すブロック構
成図である。本実施例は、高速にデータの読み出し書き
込み可能な高速アクセスメモリ110と、ソースプログ
ラム情報を入力ファイル101から入力部103により
入力して解析しオブジェクト情報を出力ファイル106
に出力する言語処理プログラム実行手段102とを備え
たマイクロコンピュータの言語処理装置において、本発
明の特徴とするところの、言語処理プログラム実行手段
102は、前記ソースプログラムの各サブルーチンが使
用する変数領域を計算する変数領域解析手段としての変
数領域解析部107と、各サブルーチンの呼び出しの相
関関係のフローグラフを作成するフローグラフ生成手段
としてのフローグラフ生成部108と、前記変数領域の
サイズおよび前記フローグラフからプログラム全体が使
用する最大変数領域を計算する最大変数領域検出手段と
しての最大変数領域検出部109と、この計算された最
大変数領域が高速アクセスメモリ110の領域よりも小
さい場合、高速アクセスメモリ110に変数を割り付け
たオブジェクト情報を出力する出力手段としての出力部
105とを含んでいる。そして、変数領域解析部10
7、フローグラフ生成部108および最大変数領域検出
部109は構文解析部104に含まれる。
【0014】次に、本実施例の動作について説明する。
なお、各サブルーチン中の関数呼び出しには、再帰的呼
び出しはないものとし、取り扱う変数はサブルーチン内
の変数のみとする。
【0015】変数領域解析部107の処理は、既存の言
語処理プログラムの構文解析部が行っている処理を流用
することにより実現可能である。また、フローグラフ生
成部108の処理についても、既存の言語処理プログラ
ムの構文解析部が出力する情報により実現可能である。
【0016】図2は、変数領域解析部107およびフロ
ーグラフ生成部108から生成された各サブルーチンの
変数領域のサイズおよび関数呼び出しのフローグラフで
ある。名前main、Proc 1等はサブルーチン
名、数字2、6等は各サブルーチンの変数領域のサイズ
である。変数領域のサイズの単位はバイトである。
【0017】図3は、図1の最大変数領域検出部109
における処理のフローチャートである。
【0018】本実施例では、最大変数領域検出部109
における処理ルーチン名をgetstackとし、図2
に示す内容のフローグラフを最大変数領域検出部109
の入力情報とする。さらに、関数を呼ぶ側を親、関数を
呼ばれる側を子供、および関数呼び出しがない関数をリ
ーフ関数という。図2で例えば、Proc1はmain
の子供であり、Proc 3の親である。Proc 5
はリーフ関数である。
【0019】最大変数領域検出ルーチンget sta
ckは、ルーチンmainからスタートし、リーフ関数
に至るまで再帰的に処理を行う。ルーチンがリーフ関数
である場合、get stackはリーフ関数が使用す
る変数領域のサイズを返す。ルーチンがリーフ関数でな
い場合、ルーチンの子供に渡って各サブルーチンに関し
て変数領域を計算させ、その結果の最大値をルーチンの
変数領域のサイズとして返す。
【0020】変数領域解析部107およびフローグラフ
生成部108から生成されたフローグラフは、最大変数
領域検出部109において、図3に示す手順で処理され
る。
【0021】リーフ関数判定処理ステップ301は、現
在処理中のルーチンがリーフ関数であるか否かを判定す
る。もし、現在処理中のルーチンがリーフ関数であれ
ば、変数領域返却処理ステップ309に移る。そうでな
ければ、初期化処理ステップ302に移る。初期化処理
ステップ302は、子供が使用する変数領域のサイズで
最大のものを格納するメモリ領域(以下、maxとい
う。)および子供の数をカウントするメモリ領域(以
下、countという。)を0に初期化する。
【0022】子供数判定処理ステップ303は、cou
ntが子供の数より小さいか否かを判定する。もし、c
ountが子供の数より小さければ、変数領域検出処理
ステップ304に移る。そうでなければ、子供に対する
すべての処理が終了したと判定され、変数領域返却処理
ステップ308に移る。変数領域検出処理ステップ30
4は、子供が使用する変数領域のサイズで最大のものを
検出するために、get stackの再帰的呼び出し
を行う。
【0023】変数領域判定処理ステップ305は、変数
領域検出処理ステップ304で検出された変数領域のサ
イズがmaxより大きいか否かを判定する。もし、前記
サイズがmaxより大きければ、変数領域設定処理ステ
ップ306に移る。そうでなければ、子供数カウント処
理ステップ307に移る。
【0024】変数領域設定処理ステップ306は、変数
領域検出処理ステップ304で検出された変数領域のサ
イズをmaxに設定する。子供数カウント処理ステップ
307は、countの内容に1を加える。変数領域返
却処理ステップ308は、maxの内容に現在処理中の
ルーチンの変数領域のサイズを加えたものを返す。変数
領域返却処理ステップ309は、現在処理中のルーチン
の変数領域のサイズを返す。
【0025】以下、図2に示した内容のフローグラフが
最大変数領域検出部109に入力されて、ルーチンma
inの変数領域の最大値である20を返す処理を説明す
る。
【0026】まず、第一レベルとして、ルーチンmai
nが使用する変数領域の最大値を計算するために、ma
inの子供であるProc 1、Proc 2、Pro
c4、Proc 5、Func 1およびFunc 2
の六つに対して変数領域を計算させ、各変数領域のサイ
ズの中の最大値にルーチンmainの変数領域のサイズ
を加えたものをルーチンmainの使用変数領域の最大
値とする。
【0027】第二レベルとして、ルーチンProc
2、Proc 5およびFunc 2がリーフ関数であ
るため、それぞれ変数領域のサイズとして16、8およ
び2を返す。次に、ルーチンProc 1が使用する変
数領域の最大値を計算するために、Proc 1の子供
であるProc 3、Proc 4およびProc 5
の三つに対して変数領域を計算させ、各変数領域のサイ
ズの中の最大値にルーチンProc 1の変数領域のサ
イズを加えたものをルーチンProc1の使用変数領域
の最大値とする。ルーチンProc 4およびFunc
1に対してもルーチンProc 1と同様な処理を行
う。
【0028】第三レベルとして、ルーチンProc
5、Func 2およびFunc 3がリーフ関数であ
るため、それぞれ変数領域のサイズとして、8、2およ
び0を返す。次に、ルーチンProc 3が使用する変
数領域の最大値を計算するために、Proc 3の子供
であるProc 5に対して変数領域を計算させ、前記
変数領域のサイズにルーチンProc 3の変数領域の
サイズを加えたものをルーチンProc 3の使用変数
領域の最大値とする。ルーチンProc 4に対しても
ルーチンProc 3と同様な処理を行う。
【0029】第四レベルとして、ルーチンProc 5
およびFunc 3がリーフ関数であるため、それぞれ
変数領域のサイズとして8および0を返す。
【0030】次に、第三レベルに戻ると、ルーチンPr
oc 3が使用する変数領域の最大値は、8にルーチン
Proc 3の変数領域のサイズ4を加えた12であ
る。ルーチンProc 4に対してもルーチンProc
3と同様に求めると10となる。従って、ルーチンP
roc 3、Proc 4、Proc 5、Func2
およびFunc 3が使用する変数領域の最大値は、そ
れぞれ12、10、8、2および0である。
【0031】第二レベルに戻ると、ルーチンProc
1が使用する変数領域の最大値は、12、10および8
の中の最大値12にルーチンProc 1の変数領域の
サイズ6を加えた18である。ルーチンProc 4お
よびFunc 1に対してもルーチンProc 1と同
様に求めると10および10となる。従って、ルーチン
Proc 1、Proc 2、Proc 4、Proc
5、Func 1およびFunc 2が使用する変数
領域の最大値は、それぞれ18、16、10、8、10
および2である。
【0032】第一レベルに戻ると、ルーチンmainが
使用する変数領域の最大値は、18、16、10、8、
10および2の中の最大値18にルーチンmainの変
数領域のサイズ2を加えた20となる。
【0033】一般に、マイクロコンピュータが持つ高速
アクセスメモリ110のメモリサイズは128バイトか
ら256バイト程度であり、本実施例では、プログラム
全体の変数領域の最大サイズが20バイトであり、高速
アクセスメモリ110のメモリサイズより小さいので、
高速アクセスメモリ110に変数を割り付けることがで
きる。
【0034】図4は入力ファイル101の内容であるソ
ースプログラム400の説明図である。左側の数字とそ
れに続くコロンは、ソースプログラム中の行番号を表し
ている。
【0035】図5は図4のソースプログラムの変数を通
常のメモリに割り当てた場合のソースプログラムの5行
目のオブジェクトコード500を示す説明図および図6
は図4のソースプログラムの変数を高速アクセスメモリ
110に割り当てた場合のソースプログラムの5行目の
オブジェクトコード600を示す説明図である。
【0036】図5および図6の各命令は、表1の命令セ
ットに従う。
【0037】
【表1】 ここで、表1の命令セットは、「ニーモニック 第一オ
ペランド、第二オペランド」の形式を持つ。また、no
vw命令は第二オペランドの内容を第一オペランドに格
納する。addw命令は第一オぺランドに第二オペラン
ドの内容を加える。
【0038】また、図4のソースプログラム中のtot
al、data1およびdata2は、図6では高速ア
クセスメモリ領域のHRO1、HRO2およびHRO3
に相当する。
【0039】表1より、図5に示したオブジェクトコー
ド500の各行の命令の、バイト数は、合計で13バイ
トとなり、クロック数は合計で50クロックとなる。こ
れに対し、図6に示したオブジェクトコード600の各
行の命令のバイト数合計で6バイトとなり、クロック数
は合計で25クロックとなる。
【0040】以上の説明により、プログラム全体の変数
領域の最大サイズが高速アクセスメモリのメモリサイズ
より小さい場合には、高速アクセスメモリに変数を割り
付けることができ、高速な変数の操作を含むオブジェク
トを生成し、さらに、コンパクトなオブジェクトを生成
できる。
【0041】
【発明の効果】以上説明したように、本発明は、従来の
言語処理プログラムの実行方式を有するマイクロコンピ
ュータでは実現できなかった高速アクセスメモリへの変
数の割り付けを行うことによって、高速な変数の操作を
含むオブジェクトを生成できるとともに、コンパクトな
オブジェクトを生成できる効果がある。また、実施例で
はサブルーチン内の変数のみを扱っていたが、サブルー
チン外の変数についても同様に扱えば、一つのファイル
内のすべての変数を高速アクセスメモリに割り付けるこ
とも可能であり、一層の優れた効果を得ることができ
る。
【図面の簡単な説明】
【図1】 本発明の一実施例を示すブロック構成図。
【図2】 そのフローグラフの一例を示す説明図。
【図3】 その最大変数領域検出部における処理手順を
示すフローチャート。
【図4】 ソースプログラムの一例を示す説明図。
【図5】 変数を通常のメモリに割り当てた場合のオブ
ジェクトコードの一例を示す説明図。
【図6】 変数を高速アクセスメモリに割り当てた場合
のオブジェクトコードの一例を示す説明図。
【符号の説明】
101 入力ファイル 102 言語処理プログラム実行手段 103 入力部 104 構文解析部 105 出力部 106 出力ファイル 107 変数領域解析部 108 フローグラフ生成部 109 最大変数領域検出部 110 高速アクセスメモリ 301〜309 処理ステップ 400 ソースプログラム 500、600 オブジェクトコード

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 高速にデータの読み出し書き込み可能な
    高速アクセスメモリと、 ソースプログラム情報を入力して解析しオブジェクト情
    報を出力する言語処理プログラム実行手段とを備えたマ
    イクロコンピュータの言語処理装置において、 前記言語処理プログラム実行手段は、前記ソースプログ
    ラムの各サブルーチンが使用する変数領域を計算する変
    数領域解析手段と、 各サブルーチンの呼び出しの相関関係のフローグラフを
    作成するフローグラフ生成手段と、 前記変数領域のサイズおよび前記フローグラフからプロ
    グラム全体が使用する最大変数領域を計算する最大変数
    領域検出手段と、 この計算された最大変数領域が前記高速アクセスメモリ
    の領域よりも小さい場合、前記高速アクセスメモリに変
    数を割り付けたオブジェクト情報を出力する出力手段と
    を含むことを特徴とするマイクロコンピュータの言語処
    理装置
JP3104878A 1991-04-09 1991-04-09 マイクロコンピュータの言語処理装置 Expired - Lifetime JP3049814B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP3104878A JP3049814B2 (ja) 1991-04-09 1991-04-09 マイクロコンピュータの言語処理装置
US07/864,605 US5283901A (en) 1991-04-09 1992-04-07 Microcomputer with high speed access memory and language processing program execution system
EP92106083A EP0508412B1 (en) 1991-04-09 1992-04-08 Microcomputer with rapid-access memory and compiler optimised for use therewith
DE69228084T DE69228084T2 (de) 1991-04-09 1992-04-08 Mikrorechner mit Hochgeschwindigkeitsspeicher und optimisierter Compiler dafür

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3104878A JP3049814B2 (ja) 1991-04-09 1991-04-09 マイクロコンピュータの言語処理装置

Publications (2)

Publication Number Publication Date
JPH04311227A JPH04311227A (ja) 1992-11-04
JP3049814B2 true JP3049814B2 (ja) 2000-06-05

Family

ID=14392460

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3104878A Expired - Lifetime JP3049814B2 (ja) 1991-04-09 1991-04-09 マイクロコンピュータの言語処理装置

Country Status (4)

Country Link
US (1) US5283901A (ja)
EP (1) EP0508412B1 (ja)
JP (1) JP3049814B2 (ja)
DE (1) DE69228084T2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517629A (en) * 1992-08-26 1996-05-14 Boland; R. Nick K. Methods for analyzing computer program performance
WO1994025917A1 (en) * 1993-04-26 1994-11-10 Comdisco Systems, Inc. Method for scheduling synchronous data flow graphs
JP3233245B2 (ja) * 1993-07-01 2001-11-26 日本電気株式会社 言語処理方法
JPH0934725A (ja) * 1995-07-15 1997-02-07 Nec Corp 言語処理装置及び言語処理方法
JP3060907B2 (ja) * 1995-07-28 2000-07-10 日本電気株式会社 言語処理プログラムの処理方式
US7275242B2 (en) * 2002-10-04 2007-09-25 Hewlett-Packard Development Company, L.P. System and method for optimizing a program
US20200050783A1 (en) * 2017-03-02 2020-02-13 Mitsubishi Electric Corporation Information processing device and computer readable medium

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043870A (en) * 1982-02-24 1991-08-27 At&T Bell Laboratories Computer with automatic mapping of memory contents into machine registers during program execution
US4897780A (en) * 1984-10-09 1990-01-30 Wang Laboratories, Inc. Document manager system for allocating storage locations and generating corresponding control blocks for active documents in response to requests from active tasks
US4782444A (en) * 1985-12-17 1988-11-01 International Business Machine Corporation Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering
JP2749039B2 (ja) * 1987-11-06 1998-05-13 株式会社日立製作所 オブジェクト生成方法
US5161216A (en) * 1989-03-08 1992-11-03 Wisconsin Alumni Research Foundation Interprocedural slicing of computer programs using dependence graphs
EP0458512A3 (en) * 1990-05-24 1993-03-24 American Telephone And Telegraph Company Visible cache processing

Also Published As

Publication number Publication date
DE69228084T2 (de) 1999-08-19
DE69228084D1 (de) 1999-02-18
JPH04311227A (ja) 1992-11-04
EP0508412A2 (en) 1992-10-14
EP0508412B1 (en) 1999-01-07
EP0508412A3 (en) 1993-06-16
US5283901A (en) 1994-02-01

Similar Documents

Publication Publication Date Title
Krall Efficient JavaVM just-in-time compilation
US6353925B1 (en) System and method for lexing and parsing program annotations
US7596783B2 (en) Methods and apparatus to implement annotation based thunking
US5586328A (en) Module dependency based incremental compiler and method
JP5325925B2 (ja) Nベースタイプの演算式の最適化
US6363522B1 (en) Method and apparatus for handling exceptions as normal control flow
US8732678B2 (en) Methods and apparatus for dynamic best fit compilation of mixed mode instructions
US20040019770A1 (en) Optimization apparatus, compiler program, optimization method and recording medium
EP1063585A2 (en) Operation code encoding
Hummel et al. Annotating the Java bytecodes in support of optimization
Gries et al. Some ideas on data types in high-level languages
US7086044B2 (en) Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
CN109460237A (zh) 代码的编译方法及装置
JP3049814B2 (ja) マイクロコンピュータの言語処理装置
JP3437932B2 (ja) 配列レンジ・チェックのためのコード生成方法及び装置、並びにバージョニング方法及び装置
EP0708940B1 (en) Multiple entry point method dispatch
WO2001050242A2 (en) Program profiling
JP2000353097A (ja) 低密回の干渉グラフを生成する方法および装置
US6973645B2 (en) Compiler, operation processing system and operation processing method
CN113900657A (zh) 读取数据规则的方法和电子设备、存储介质
Bose Instruction set design for support of high-level languages
JP2932812B2 (ja) 言語処理プログラム実行装置
Gray Declarative specifications for automatically constructed compilers
JP3018783B2 (ja) コンパイル方式
JPH07129408A (ja) 言語処理プログラムの実行方式