JP3368141B2 - アセンブラ言語ソースプログラム生成装置 - Google Patents
アセンブラ言語ソースプログラム生成装置Info
- Publication number
- JP3368141B2 JP3368141B2 JP08834696A JP8834696A JP3368141B2 JP 3368141 B2 JP3368141 B2 JP 3368141B2 JP 08834696 A JP08834696 A JP 08834696A JP 8834696 A JP8834696 A JP 8834696A JP 3368141 B2 JP3368141 B2 JP 3368141B2
- Authority
- JP
- Japan
- Prior art keywords
- assembler
- condition
- source program
- box
- source
- 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 - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S715/00—Data processing: presentation processing of document, operator interface processing, and screen saver display processing
- Y10S715/961—Operator interface with visual structure or function dictated by intended use
- Y10S715/965—Operator interface with visual structure or function dictated by intended use for process control and configuration
- Y10S715/966—Computer process, e.g. operation of computer
- Y10S715/967—Visual or iconic programming
Description
よびマイクロコンピュータのソフトウェア開発用のCA
SE(Computer Aided Software Engineering )ツール
に関し、特に、構造化マクロ言語や木構造チャートか
ら、アセンブラ言語またはジャンプ命令を持つプログラ
ム言語のソースプログラムを自動生成するための装置に
関する。
あるPAD(Problem Analysis Diagram)チャートの記
述例を示す。なお以下本願発明の明細書では、チャート
とは一般的に木構造チャートを示し、リストとはプログ
ラムのソース行を指すものとする。また、条件1、条件
2などはアセンブラ言語で条件判断に用いるフラグの状
態を表わす。
300、302、304、306、308、310、3
12、314、316、318および320からなって
いる。PADチャートの実行順序は上から下へであり、
具体的処理のアルゴリズムは一連のボックス中に記述さ
れる。
しループなどのプログラム構造に対応して、専用のボッ
クスが定義されている。図1に示す例ではボックス30
6および312がその例である。これらの構造中のソー
ス行は、そのボックスの右側のボックスに階層的に記述
されるようになっている。すなわちボックス306の内
容はボックス310、312、314、316および3
18により記述され、ボックス312の内容はボックス
320に記述されている。
り、ループやジャンプ構造が出現した場合にはその構造
の右側に記述されている一連のボックスをさらに上から
下に実行する。そしてその一連のボックスの実行が終了
したら、元に戻ってその構造のさらに下方に実行を続け
る。そして、チャートの最も下に達したら実行を終了す
る。
hen else構造の記述例である。以下、PADチャートに
ついて説明する。また図2を含め以下では、チャートの
右下部分に各構造の図式ファイルの内部記憶形式を示
す。
クス中には条件1を記述し、条件1が真であればチャー
トBを実行し、条件1が偽であればチャートCを実行し
た後、プログラムの実行をさらに下に移す。図2におい
て、条件1のボックスの上下に「(真)」「(偽)」を
表記しているが、これは暗黙の宣言として上側が条件1
=真、下側が条件1=偽のときに実行されることを示し
ている。したがって実際にはこの表記はチャート上には
行なわれていない。
件1=真の場合についてチャートBを実行するが、条件
1=偽の場合には何も実行されない。図3(B)の場合
には、条件1=真の場合には何も実行されず、条件1=
偽の場合にチャートCが実行される。
hen 構造の実行が終了すると、プログラムの実行はさら
に下に移る。
この構造では、まずチャートBを実行し、その後で条件
1についてその真偽を判断する。条件1=偽なら再度チ
ャートBを実行し、条件1=真ならrepeat until構造を
終了してプログラムの実行をさらに下に移す。
には(A)および(B)の2通りの記述例を示す。この
2つの記述例の違いはdo while構造ボックスの左側に縦
線を入れるか、右側に縦線を入れるかのボックスの表現
方法の違いだけであり、実際のプログラムの実行順序に
は相違はない。do while構造ではまず、条件2の真偽の
判断を行なう。条件2=真ならばチャートBを実行し再
び先頭に戻り条件2の判断を行なう。条件2=偽の場合
にはチャートBを実行せずにdo while構造を終了してプ
ログラムの実行をさらに下に移す。図5が図4と異なる
のは、図4では必ず最初に少なくとも一度だけチャート
Bが実行されるのに対し、図5ではチャートBが全く実
行されない場合もあり得るということである。
造はループ内からの途中脱出を含んでいる。この構造で
はまず、チャートBを実行し、その次に条件1の真偽を
判断する。ここで条件1=真ならN+1/2 構造を終了し、
条件1=偽ならチャートCを実行して再びチャートBの
実行に戻る。N+1/2 構造を終了したら、プログラムの実
行はさらに下に移る。
構造は、プログラム内のラベルAに無条件にジャンプす
る。
ログラム中の位置を示すラベル名を定義する。
構造は、条件判断やジャンプなどを伴わない処理を記述
するために使用する。
構造やループ構造は図式として表現されており、これら
ジャンプ、ループ図式のためのボックス中には、判断条
件のみが記述される。
語の場合には、条件判断部とその判断結果を用いたジャ
ンプ命令とが、ソースの離れた位置に存在したり、複数
行にわたる場合がしばしばある。そのため、従来の木構
造チャートのようにボックス中に判断条件のみ記述する
ことしか許されていない場合、あえてアセンブラ言語で
木構造チャートを記述すると不自然さが目立つという問
題点があった。
以下のような問題がある。FORTRAN,C, BASIC, PASCAL,
COBOL等の言語では、文法・表記法が標準化および構造
化されている。そのため木構造チャートからこれらの言
語のソースリストを生成するのは、各言語に応じた専用
アルゴリズムを用いれば比較的簡単に行なえる。しか
し、マイクロコンピュータ開発に使用されるアセンブラ
言語は、CPUの種類によって、表記方法やコマンドの
種類が千差万別であって、統一された言語体系というも
のがない。CPUごとにハードウェアが異なるため、共
通化できない命令、フラッグまたはレジスタなどが多数
存在する。そのため、マイクロコンピュータで実行させ
るべきプログラムを木構造チャートで表現しようとする
と、CPUによって異なった表現を使用せざるを得な
い。そのため、こうした木構造チャートからアセンブラ
言語のソースリストを自動的に生成するためには、各C
PU専用のソース自動生成処理系を作る必要があり、効
率的とは言えないという問題点があった。
るアセンブラ言語では、相補的な条件判断命令のうち双
方を備えたアセンブラ言語体系もあれば、一方しかない
アセンブラ言語もある。これらはCPUの種類によって
千差万別である。そのためこうしたCPUの相違にかか
わらず木構造チャートからソースリストを自動生成する
のは困難であり、各CPU専用の処理系が必要であっ
た。この点でも、従来はアセンブラ言語のソースプログ
ラムを生成するのは非効率的であった。
木構造チャートからアセンブラソースを自動生成するた
めには、上に述べたようにCPUごとにアセンブラソー
ス自動生成処理系を設計しなくてはならない。そのた
め、CPUが異なると、同じ処理でも別のアセンブラソ
ース自動生成処理系を設計し直さなくてはならず、この
点でも非効率的であった。
にジャンプ可能な命令(LONG JUMP命令と呼ぶ)と、プ
ログラムカウンタの前後128バイト程度しかジャンプ
できない命令(SHORT JUMP命令と呼ぶ)との2種類のジ
ャンプ命令が用意されているものがある。一般にSHORT
JUMP命令は、LONG JUMP 命令よりもバイト数が少なく、
実行も速い。またプログラムサイズが小さくなるという
利点がある。したがってこれら命令を区別するアセンブ
ラ言語では、そのプログラムサイズも小さくなり、実行
も改善される。
アセンブラ言語に対応したこのようなジャンプ命令の区
別を表現する方法がなかったので、木構造チャートから
こうした命令を区別したアセンブラ言語のソースリスト
の自動生成を行なうことは極めて困難であった。そうし
た手段の一例としてはたとえば、LONG JUMP 命令および
SHORT JUMP命令を、ソースプログラムの命令のバイト数
から自動的に判断するような処理系を作成することが考
えられる。しかしながら、既に述べたように各CPUご
とにこのような区別をする処理系を作成することは非効
率的であり、実際上採用することはできないという問題
がある。
する場合、自動生成のアルゴリズム上でソースリスト中
にラベルが重複して生成される場合が多々あった。この
ようにラベルが重複して生成されるとプログラムサイズ
が大きくなるだけではなく、プログラムの理解を困難と
するという問題点があった。
は、CPUの種類にかかわらず、同一の木構造チャート
からさまざまなCPUのためのアセンブラ言語に対応し
たアセンブラ言語ソースプログラムを作成することがで
きる装置を提供することである。
アセンブラ言語の命令体系に、相補的な条件判断命令の
双方とも備えられているか、一方しか備えられていない
かにかかわらず、同一の木構造チャートから種々のアセ
ンブラ言語に対応したソースプログラムを生成すること
ができる装置を提供することである。
P 命令とSHORT JUMP命令とが準備されたアセンブラ言語
ではそれらを有効に活用し、かつ種々のアセンブラ言語
に対応して同一の木構造チャートからソースプログラム
を生成することができる装置を提供することである。
るソースプログラム中に、重複したラベルが存在しない
ようにし、それによってソースリストの理解を容易にす
ることができるソースプログラム生成装置を提供するこ
とである。
係るアセンブラ言語ソースプログラム生成装置は、分岐
に関するボックス中にソース行記述を許し、かつ分岐に
関する各ボックスに、対応する判断条件の記述を許すよ
うに拡張された木構造チャートに基づいて、任意のアセ
ンブラ言語のソースプログラムを生成するためのもので
ある。この装置は、目的となるアセンブラ言語の命令の
記述形式を、異なるアセンブラ言語間で共通に定められ
た書式に従って記述したテーブルを記憶するための記憶
手段と、木構造チャートを読込んで、アセンブラ言語の
種類に依存しない所定の変換手順に従ってアセンブラ言
語のソースプログラムを生成するための手段とを含む。
生成するための手段は、あるボックスからのソースプロ
グラムの生成において、前記記憶手段に記憶された前記
テーブル内の命令の記述形式を参照し、かつ対応するボ
ックス内のソース行記述および判断条件の記述に基づい
て、目的となるアセンブラ言語に適合した命令を生成す
る。
言語の命令の記述形式を、異なるアセンブラ言語間で共
通に定められた書式でテーブル化する。そしてアセンブ
ラ言語の種類に依存しない所定の変換手順に従って木構
造チャートからアセンブラ言語のソースプログラムを生
成する際に、このテーブルを参照することによって、異
なるアセンブラ言語に適合した形式でソースプログラム
を生成する。テーブルをメンテナンスすることで、異な
るCPUに対応した各種のアセンブラ言語に適合したソ
ースプログラムを、同一の木構造チャートから、かつ共
通のソース生成規則を用いて生成することができる。
ログラム生成装置は、請求項1に記載の装置であって、
前記テーブルは、目的となるアセンブラ言語の、相補的
な条件判断命令の相互の関係をさらに記述している。そ
して、生成するための手段は、分岐を記述したボックス
からのソースプログラムの生成において、記憶手段に記
憶されたテーブル内の分岐命令の記述形式と、相補的な
条件判断命令の相互の関係の記述とを参照し、かつ対応
するボックス内のソース行記述および判断条件の記述に
基づいて、利用可能な分岐命令を定めることにより、目
的となるアセンブラ言語に適合した分岐命令を生成す
る。
言語体系で、相補的な条件判断命令のうちの一方がない
場合にも、テーブルを参照することにより代替の条件判
断命令を見出すことができる。そのため、アセンブラ言
語が、相補的な条件判断命令の一方しか持たないか双方
とも持つかにかかわらず、同一の木構造チャートから、
共通のソース生成規則を用いて、アセンブラ言語ソース
プログラムを生成することが可能である。
語ソースプログラム生成装置は、ジャンプ命令に関する
ボックス内にLONG JUMP 命令とSHORT JUMP命令との区別
を記述することを許し、かつ分岐に関するボックス中に
ソース行記述を許すことにより、異なるアセンブラ言語
について共通の形式で記述できるように拡張された木構
造チャートに基づいて、任意のアセンブラ言語のソース
プログラムを生成するための装置である。この装置は、
目的となるアセンブラ言語の命令の記述形式を、異なる
アセンブラ言語間で共通に定められた書式に従って記述
したテーブルを記憶するための記憶手段を含む。このテ
ーブルは、LONG JUMP 命令とSHORT JUMP命令とを別個の
ものとして記憶している。アセンブラ言語ソースプログ
ラム生成装置は、木構造チャートを読込んで、アセンブ
ラ言語の種類に依存せず、かつ、LONG JUMP 命令とSHOR
T JUMP命令とを区別する所定の変換手順に従ってアセン
ブラ言語のソースプログラムを生成するための手段をさ
らに含む。生成するための手段は、あるボックスからの
ソースプログラムの生成において、記憶手段に記憶され
たテーブル内の命令の記述形式を参照し、かつ対応する
ボックス内のソース行記述とLONG JUMP 命令およびSHOR
T JUMP命令の区別に関する記述とに基づいて、目的とな
るアセンブラ言語に適合した命令を生成する。
およびSHORT JUMP命令の区別があるアセンブラ言語体系
や、そうした区別がないアセンブラ言語体系がある。本
発明によれば、LONG JUMP 命令およびSHORT JUMP命令の
区別を木構造チャートで記述可能なため、LONG JUMP 命
令およびSHORT JUMP命令の区別がある場合には、テーブ
ルを参照することによりそれらを区別して使用して適切
なソースプログラムを作成できる。また、LONG JUMP 命
令およびSHORT JUMP命令の区別がないアセンブラ言語の
場合にも、テーブルを参照して代替の命令を見出すこと
ができる。そのため、アセンブラ言語が、LONG JUMP 命
令およびSHORT JUMP命令の区別を持つか否かにかかわら
ず、同一の木構造チャートから、共通のソース生成規則
を用いて、ソースプログラムを生成することが可能であ
る。
語ソースプログラム生成装置は、条件判断に関するボッ
クス中にソース行記述を許し、かつ条件判断に関するボ
ックスに対する判断条件の記述を各ボックスに許すよう
に拡張された木構造チャートに基づいて、任意のアセン
ブラ言語のソースプログラムを生成するための装置であ
る。この装置は、目的となるアセンブラ言語の命令の記
述形式を、異なるアセンブラ言語間で共通に定められた
書式に従って記述したテーブルを記憶するための記憶手
段と、木構造チャートを読込んで、アセンブラ言語の種
類に依存しない所定の変換手順に従ってアセンブラ言語
のソースプログラムを生成するための手段とを含む。生
成するための手段は、あるボックスからのソースプログ
ラムの生成において、ソースプログラム中にラベルを生
成することがある。アセンブラ言語ソースプログラム生
成装置は、さらに、生成するための手段によってソース
プログラム中に重複して生成される複数個のラベルを検
出するための重複ラベル検出手段と、重複ラベル検出手
段により検出された重複して生成される複数個のラベル
のうち、あるものを残して他を削除するためのラベル削
除手段とを含む。
センブラ言語ソースプログラムの生成において、自動生
成に起因して複数のラベルが重複して生成される場合、
それらが検出されて、重複するラベルが削除される。し
たがって、最終的に生成されるソースリストは簡略とな
り、その理解は容易になる。
て使用される木構造チャートの表記方法について図10
〜図14を参照して説明する。この表記方法の特徴とし
て、条件判断ボックス中にプログラムリストを記述する
ことを許すとともに、ボックス外の適切な位置に、分岐
のための判断条件を記述するようにしている。以下図1
0〜図14を参照して各構造について説明する。なお、
分岐条件としては、C(キャリ、桁溢れ)、NC(ノン
キャリ)、Z(ゼロ)、NZ(非ゼロ)等の判断条件が
考えられる。
す。図10に示すように、条件判断ボックス中にはプロ
グラムリストAを記述でき、複数行にわたる条件判断プ
ログラムを記述することができる。また、図10に示さ
れるように、条件判断ボックスの上下に分岐条件「条件
1」、「条件2」を記述することを許している。なお、
これら図面では、各チャートに対応して、その右下に各
チャートの内部記憶形式を示している。
た結果、条件1が真であればチャートBを実行し、条件
2が真であればチャートCを実行する。このif then el
se構造の実行を終了したら、プログラムの実行はさらに
下に移る。このように条件判断ボックス内にリストAの
記述を許すようにしたことにより、従来は判断ボックス
では真偽の判断しか行なえなかったのに対し、この表記
方法ではボックス自体に判断機能を持たせることができ
るようになったと考えられる。
は、互いに相補的な条件であると考えられる。このよう
な条件を互いに逆条件の関係にあると呼ぶことにする。
2つの条件が逆条件の関係にあれば、一方の条件(たと
えば条件1)さえ記述してあれば、他方(たとえば条件
2)の条件記述を省略しても条件1=偽の場合として処
理することができる。
11(A)(B)に、if then 構造の異なる表記形態を
示すが、それらが表わすアルゴリズムは同じである。図
11(A)または(B)を参照して、まず条件判断ボッ
クス中のリストAを実行した後、条件1=真であればチ
ャートBを実行する。条件2=真(条件1=偽と同じ意
味)の場合には何も実行せずにif then 構造を終了し、
プログラムの実行をさらに下に移す。
す。本構造では、条件判断ボックス内にリストAを記述
できるようにするとともに、ボックスの左下にループ終
了条件を、ボックスの右下にループ継続条件をそれぞれ
記述するようにしている。図12に示される構造では、
チャートBを実行した後、リストAを実行する。そして
その結果条件1=真であればrepeat until構造を終了
し、条件2=真なら再びチャートBから実行する。この
構造の実行が終了したらプログラムの実行はさらに下に
移る。
13に示されるdo while構造では、条件判断ボックス内
にリストAを記述することを許し、ボックスの左下にル
ープ終了条件を、右下にループ継続条件をそれぞれ記述
するようにしている。図13に示される構造では、まず
リストAを実行し、その結果条件1=真ならdo while構
造を終了し、条件2=真ならチャートBを実行した後再
びリストAから実行する。本構造の実行が終了したらプ
ログラムの実行はさらに下に移る。
造では条件判断ボックス内にリストAを記述することを
許し、ボックスの左下にループ終了条件を、右下にルー
プ継続条件をそれぞれ記述するようにしている。図14
に示される記述例では、チャートBを実行した後リスト
Aを実行し、その結果条件1=真ならN+1/2 構造を終了
し、条件2=真ならチャートCを実行してその後チャー
トBを再び実行する。本構造が終了したら、プログラム
の実行はさらに下に移る。
ャートボックス外に判断条件を記述することを許してい
る。その結果判断ボックス内にソースリストを記述する
ことが可能となり、アセンブラ言語による木構造チャー
トの記述がしやすくなるとともに、後に述べるように同
一のプログラム生成系を用いて、種々のアセンブラ言語
に対するソースプログラム生成を行なうことが可能にな
った。
ースを自動生成するときに参照されるテーブルの一般形
式を示す。実際に使用するときには、このテーブルはテ
ーブルファイルまたは、プログラム中に固定的に組込ま
れた参照用のデータテーブルとして取扱われる。本発明
に従ったアセンブラ言語ソースプログラム自動生成装置
において、各種CPUに対応したさまざまなアセンブラ
言語には、このテーブル400をメンテナンスすること
によって対応することができる。
の記述規則について示す。図15に示されるテーブル4
00の第1行目は「HEADER: 」という記述の後に、アセ
ンブラ命令行の命令の前に挿入する行先頭文字列を定義
している。本文字列としては一般に、スペースまたはタ
グ文字が使用される。
に、コメント行の先頭に使用されるべきコメント文字を
定義している。具体例としては「;」がある。
ラベル定義行でラベルシンボルの後に使用されるべき文
字列を定義している。本文字列には一般に「:」が使用
される。
MP: 」という記述の後に、条件判断ジャンプ時に参照さ
れる条件判断ジャンプ命令と、逆条件判断ジャンプ命令
とに関する定義を行なっている。なおこの場合の逆条件
判断ジャンプ命令とは、条件判断ジャンプ命令の判断す
る条件の逆条件について判断を行なう命令のことを言
う。これら行の記述規則は以下のようになっている。す
なわち、まず「JUMP: 」という記述をした後ろに木構造
チャート上の条件表記、木構造チャート上の逆条件表
記、および条件が真の場合のアセンブラジャンプ命令、
という3つの文字列をこの順番で記述する、というもの
である。
は互いに逆条件の関係になっている。そして、第4行目
で条件1に関する一連の定義を、第5行目で条件2に関
する一連の定義をそれぞれ行なっている。
とにより、条件1=真に対応するジャンプ命令と、条件
1=偽に対応するアセンブラ条件命令とが次のようにし
て簡単に求められる。
命令は、第4行目の記述より文字列1であることは明ら
かである。
命令は、次のようにして求められる。まず、第4行目の
記述より条件1の逆条件が条件2であることを求める。
次に、条件2に関し記述してある行をテーブルより検索
する。この場合、テーブル400の第5行目に条件2に
関する記述が発見される。条件2=真に対応するアセン
ブラジャンプ命令が文字列2であることは容易にわか
る。条件2=真と条件1=偽とは同じことであるので、
文字列2が、条件1=偽である場合のアセンブラジャン
プ命令であることが求められる。
て、文字列1または文字列2をヌル文字とした場合に
は、対応する命令がないことを表わすものとする。こう
すれば、文字列1または文字列2がヌル文字がどうかを
知ることにより、対応する命令がないかあるかを簡単に
定義したり参照したりすることができる。
ジャンプ命令の定義方法を示す。絶対ジャンプ命令は条
件を持たない命令である。したがって6行目に示すよう
に、条件表記と逆条件表記との双方をヌル文字とする。
これにより、条件を持たない絶対ジャンプ命令が文字列
3であることが示されている。
は、条件判断ボックスの中にリストを記述できるように
するとともに、条件判断ボックスの判断条件をそのボッ
クスの近傍に記述できるようにした点に特徴がある。本
明細書では、このような木構造チャートを拡張木構造チ
ャートと呼ぶことにする。
対して、図15に示したテーブル400の内容を用いる
と、拡張木構造チャートからアセンブラプログラムを生
成することができ、しかも種々のCPUに対して同一の
プログラム生成規則を用い、かつ図15に示すテーブル
400をCPUの種類に応じて変えることで、CPUに
対するアセンブラプログラムを生成することができる。
ス中に記述されるリストなどの内容は、アセンブラ言語
命令の形式で記入されていることを前提とする。この場
合、図9に示したような順次処理については、そのまま
アセンブラソースに変換する。このとき、図4〜図8に
示される木構造チャートと、図10〜図14に示される
木構造チャートとを共に使用できるようにし、これらの
木構造はアセンブラジャンプ命令の必要な構造として、
最適なアセンブラジャンプ命令およびジャンプ先ラベル
名の自動生成により、各木構造の実行順序に応じたアセ
ンブラソースリストを生成できる規則を実現した。この
場合ソース生成規則は、木構造中に使用されている文字
と、図15のテーブルによって定義された文字列と、適
時自動生成されるラベル名とを組合せるような規則とし
た。したがって木構造チャートと、図15に示されるテ
ーブルとを与えられれば、ソース生成規則を適用してソ
ースプログラムを生成できる。
の実施形態では各チャートごとに適切な文字列の後ろに
連番を付けて生成される。ラベル名として採用される文
字列は任意であるが、わかりやすくするためには、その
チャートに付けられている名称を使用することが考えら
れる。
木構造チャートは、従来からも用いられていた図4〜図
9の記述形式と、図10〜図14の記述形式とを許して
いる。
件に対応したジャンプ命令が必ず存在するとは限らな
い。したがってアセンブラ言語がどのようなものであろ
うとも適切なソースプログラムを生成するためには、ソ
ース自動生成規則として、各チャートの条件分岐部で
は、どちらか一方の条件のみに注目し、その条件に対応
したアセンブラジャンプ命令が存在する場合と存在しな
い場合との2通りの場合を考慮している。発明の実施の
形態を述べる前に、各木構造に対してどのようにしてソ
ースプログラムを生成するか、についての規則の具体的
な例を説明する。
り」とは「条件1=真でジャンプするアセンブラジャン
プ命令が存在する」ことを示す。また「条件1 JUMP命
令なし」とは、「条件1=真でジャンプするアセンブラ
ジャンプ命令が存在しない」ことを示す。
自動生成規則である。図16(A)はif then else木構
造であり、図16(B)はそのフローチャート表現であ
る。図16(C)および(D)は、それぞれ条件1JUMP
命令ありの場合と条件1JUMP命令なしの場合のソース自
動生成規則である。なお、条件1JUMP命令が存在するか
否かは、既に述べたように図15に示すテーブル400
の内容を参照することによって判別できる。
ソース生成規則は、条件1=真に対応したアセンブラジ
ャンプ命令がある場合の生成規則である。図16(C)
の第1行目は、条件判断ボックス中のリストAをアセン
ブラ言語に置き換えたものを示している。リストAは一
般に、複数のアセンブラ命令行を含む。リストAをソー
スコード化するためには、各命令の先頭に、図15に示
したテーブル400中の「行先頭文字列」として定義さ
れた文字列を付加することにより達成できる。
場合に、自動生成したラベル1までジャンプすることを
示すアセンブラジャンプ命令である。このアセンブラジ
ャンプ命令は、図15に示したテーブル400に示され
るように、適切なジャンプ命令の行に定義された文字列
1に、さらに自動生成されたラベル1を続けて記述する
ことにより得られる。
る。コメント行はコメント文字列のみからなり、プログ
ラムの適切な区切り行として使用される。
きに実行されるチャートCのアセンブラソース自動生成
結果である。
else構造の最後にジャンプするために生成される行であ
る。このジャンプ命令としては、図15のテーブル40
0の第6行目に示した絶対ジャンプ命令が用いられる。
飛び先としてはラベル2が自動生成され、この絶対ジャ
ンプ命令の後に付加される。
条件1=真のときに実行するチャートBの先頭を示すラ
ベル行である。この行は、自動生成されたラベル1と、
この行がラベルであることを示すラベル文字列とからな
る。このラベル文字列は図15のテーブル400の第3
行目に示された形式により定義される。
きに実行されるチャートBのアセンブラソース自動生成
結果である。第9行目は、if then else構造の実行の最
後の位置に生成されるラベル行である。このラベル名と
してはラベル2が自動生成され、さらにこの行がラベル
行であることを示すラベル文字列を含む。このラベル文
字列もまた、図15のテーブル400の第3行目に記載
された形式で定義される。
ンブラジャンプ命令がない場合のソース生成規則を示
す。図16(D)が図16(C)と異なるのは、条件1
=真のアセンブラジャンプ命令を使用せずに、条件1=
偽と等価な条件2=真に対応したアセンブラジャンプ命
令を使用してソースリストを自動生成していることであ
る。これは、このように相補的な命令、すなわち逆条件
に対応したアセンブラジャンプ命令については、アセン
ブラ言語にかかわらず必ずそのいずれか一方が存在して
いることを利用している。
(D)のいずれか一方を使用すれば、対応のアセンブラ
ソースリストを自動生成することができる。図16
(C)(D)のいずれを使用するかは、条件1=真のと
きのJUMP命令が存在するか否かに基づいて判別すればよ
い。
動生成規則を示す。図17(A)および(B)はいずれ
もif then 木構造であり、図17(C)はそのフローチ
ャート表現である。すなわち図17(A)(B)はいず
れも、リストAを実行し、その結果条件1=真であれば
チャートBを実行し、条件2=真(条件1=偽)であれ
ば何もしないことを示す。
木構造に対応したソース自動生成規則を示す。なお図1
7(A)および(B)は、if then 木構造の表現上のバ
リエーションをすべて記述するために、条件判断後に実
行される処理(チャートB)の木構造での位置を変えた
だけであり、アルゴリズム的には全く同一の処理を意味
する。
ス自動生成規則はそれぞれ、条件2=真に対応したアセ
ンブラジャンプ命令がある場合のソース生成規則と、条
件2=真に対応したアセンブラジャンプ命令がない場合
のソース生成規則とである。ソース生成規則中の各行の
記載の内容については、図16(C)(D)の各行と同
様であるため、これ以後の説明では、特別の場合を除き
繰返さないことにする。
対するソース自動生成規則である。図18は図12に示
した拡張木構造チャートに対応するものであり、図19
は図4に示した構造に対応する。
(B)のフローチャートと等価である。条件2=真に対
応したアセンブラジャンプ命令がある場合には図18
(C)のソース自動生成規則を、条件2=真に対応した
アセンブラジャンプ命令がない場合には図18(D)に
示したソース自動生成規則を、それぞれ用いてアセンブ
ラソースを自動生成する。
図19(B)のフローチャートと等価である。条件2=
真に対応したアセンブラジャンプ命令がある場合には図
19(C)に示したソース自動生成規則を用い、条件2
=真に対応したアセンブラジャンプ命令がない場合には
図19(D)に示したソース自動生成規則を用いてアセ
ンブラソースを自動生成する。図20および図21は、
do while構造に対応するソース自動生成規則である。図
20は図13に示した拡張された木構造チャートのdo w
hile構造に対応するものであり、図21は図5に示した
木構造チャートに対応したものである。
0(B)のフローチャートと等価である。条件1=真に
対応したアセンブラジャンプ命令の有無に応じて、図2
0(C)または(D)に示すソース自動生成規則を用い
てアセンブラソースを自動生成する。
5(A)および(B)に示した構造に対応しているが、
条件判断ボックスの形状が異なるのみで、そのアルゴリ
ズムはいずれも図21(C)に示したフローチャートと
等価である。条件1=真に対応したアセンブラジャンプ
命令の有無に応じて図21(D)または(E)に示した
ソース自動生成規則を用いてアセンブラソースを自動生
成する。
したソース自動生成規則を示す。図22は図14に示し
た拡張木構造チャートでのN+1/2 構造に関するものであ
り、図23は図6に示した木構造チャートに対応したも
のである。
(B)のフローチャートと等価である。条件1=真に対
応したアセンブラジャンプ命令の有無に応じて図22
(C)または(D)に示した自動生成規則を用いてアセ
ンブラソースを自動生成する。
(B)のフローチャートと等価である。条件1=真に対
応したアセンブラジャンプ命令の有無に応じて図23
(C)または(D)に示したソース自動生成規則を用い
てアセンブラソースを自動生成する。
るソース自動生成規則を示す。本構造は無条件にジャン
プする。そのため図15のテーブル400の第6行目に
記載された形式で定義される絶対ジャンプ命令を使用す
る。すなわち、絶対ジャンプ命令の行に提示された文字
列3を用いて図24(B)に示されるようにジャンプ命
令行およびコメント行を生成する。
成規則を示す。このラベル構造は図8に示したラベル構
造に対応したものである。なお図25(A)ではラベル
Aの上下にチャートBおよびチャートCが存在する場合
を示した。ソース自動生成においては、図25(B)に
示すようにチャートBの解析結果とチャートCの解析結
果との間にラベル行が挿入される。このラベル行は、図
24に示したジャンプ構造のジャンプ先を記述するため
に用いられる。
関するソース自動生成規則を示す。この順次処理構造は
図9に示した構造に対応する。この場合のソース自動生
成規則は図26(B)に示すように、リストAに対して
その先頭に図15のテーブル400の第1行目の形式に
よって定義される行先頭文字列を付加した行とコメント
文字からなるコメント行とを含む。
ーブルを用いて、既に述べたようなソース自動生成規則
を使用してアセンブラソースプログラムを自動生成する
装置の実施の形態について以下説明する。なお、以下に
述べる処理は計算機上でのソフトウェアとして実現さ
れ、その処理についてフローチャートとして示すが、こ
れら処理の一部は再帰呼出を許す構造となっているもの
とする。
計算機システムの構成を示す。図27を参照して、この
システムはCPU(中央処理装置)、主記憶、入出力制
御装置などを含むホスト計算機410と、このホスト計
算機410に接続されたプリンタ412、ファイル装置
414およびCRT(Cathode Ray Tube)端末416と
を含む。ホスト計算機410としては、典型的な構成の
コンピュータを用いることができる。ファイル装置41
4は、木構造チャートを図式ファイルとして記憶した
り、生成されるソースファイルを記憶したりするための
ものである。なお、アセンブラ言語に対応した変換のた
めのテーブルは、たとえばファイル装置414に保存さ
れてホスト計算機410のメモリ上に読出されて利用さ
れてもよいし、ソフトウェア中に固定されたテーブルと
して準備されてもよい。
としてZ−80と呼ばれるマイクロコンピュータに対応
したアセンブラ言語のソースプログラム生成用のテーブ
ル420を示す。Z−80は典型的な8ビット汎用CP
Uであって、その命令体系についてはよく知られてい
る。
コメント行であって、ソース自動生成には特に関係しな
い。第2行目はアセンブラコマンド行の先頭に挿入され
る行先頭文字列である。本実施例では文字列として8個
の空白が使用される。
メント文字を定義している。本実施例では4個の空白を
使用している。第4行目はラベル行においてラベルの後
に付加する文字列を定義する。本実施例では「:」を使
用している。
岐に関するジャンプ命令を定義している。第5行目はジ
ャンプ命令「 JR 」を定義している。条件お
よび逆条件の双方ともヌル文字が定義されている。した
がってこのジャンプ命令「JR 」は絶対ジャンプ命令
である。
(キャリー)に関する条件分岐命令を定義している。条
件「C」と「NC」とは逆条件の関係にある。ここで
は、C=真ならジャンプ命令「 JR C,」を採
用し、NC=真ならジャンプ命令「 JR NC,」
を採用するものとする。
(ゼロ)に関する条件分岐命令を定義している。条件
「Z」と条件「NZ」(非ゼロ)とは逆条件の関係にあ
る。ここでは、Z=真ならジャンプ命令「 JR
Z,」を採用し、NZ=真ならジャンプ命令「
JR NZ,」を採用するものとする。
「PO」、「PE」に関する条件分岐命令を定義してい
る。条件「PO」と条件「PE」とは逆条件の関係にあ
る。ここでは、PO=真ならジャンプ命令「 JP
PO,」を採用し、PE=真ならジャンプ命令「
JP PE,」を採用する。
「P」、「M」に関する条件分岐命令を定義している。
条件「P」と条件「M」とは逆条件の関係にある。ここ
では、P=真ならジャンプ命令「 JP P,」を
採用し、M=真ならジャンプ命令「 JP M,」
を採用する。
」、「B--<>0」に関する条件分岐命令を定義してい
る。条件「B--=0 」と「B--<>0」とは逆条件の関係にあ
る。ここでは、「B--=0 」=真に対応するジャンプ命令
は存在していない。「B--<>0」=真ならジャンプ命令
「 DJNJ 」を採用する。なお、条件「B--=0
」、「B--<>0」は「Z−80のBレジスタの値を1引
いた後のBレジスタの値が0ならば「B--=0 」=真、0
でなければ「B--<>0」=真」を示す条件記述である。
410上で実行される、アセンブラソースプログラム自
動生成のためのソフトウェアのフローチャートを示す。
なお本実施の形態では、上に述べたようにZ−80につ
いてのアセンブラソースプログラムを生成するが、図2
9〜図39のフローチャートは、対象となるアセンブラ
言語の種類に依存しない。単に図28に示すテーブル4
20を、他のアセンブラ言語に対応したテーブルと置換
するだけでよい。以下、図29〜図39に示したフロー
チャートについて説明する。なおこのフローチャート
は、図16〜図26に示したソースプログラム自動生成
規則を実現するものである。
のメインプログラムでは、まずステップB1で初期化処
理を行なう。初期化処理では、木構造チャートの各ボッ
クス要素を指し示すポインタや、出力されるソースプロ
グラム部のポインタなど、さまざまな変数の初期設定が
行なわれる。
スプログラムを一時的に記憶するためのソースバッファ
を確保する処理が行なわれる。
式でファイル装置に蓄えられている木構造チャートのチ
ャート名情報を読出す。この場合、どの木構造チャート
を変換するかは、たとえば画面上に表示された木構造チ
ャート名のリストのうち、所望の1つをマウスポインタ
などで選択することにより指定できる。読出されたチャ
ート名は、生成されるアセンブラソースで使用されるラ
ベル名文字列として記憶される。
を、生成されるプログラム文字列の先頭ラベル名として
ソースバッファに出力する。さらにB5で、木構造チャ
ートの要素を指し示すポインタを、木構造チャートの最
初のボックスに進める。この場合の最初のボックスと
は、チャート名情報の直後に記憶されているボックスで
ある。
アセンブラプログラムを自動生成する手続を実行する。
この手続については図30以下を参照してさらに詳細に
説明する。
が終了したら、B7において、生成されたプログラムが
格納されているソースバッファの内容をファイル装置に
出力する。この場合、出力はプログラムソースファイル
の形式で行なわれる。その後ステップB8で自動生成処
理を終了する。
出される、実際に木構造チャートからアセンブラソース
を生成するチャートボックス解析処理のフローチャート
である。既に述べたように、本アルゴリズムでは再帰呼
出が許されている。そのためまずチャートボックス解析
処理のステップC1では、生成するアセンブラソースを
一時的に記憶するためのワークバッファをファイル装置
内に確保する。すなわち、このチャートボックス解析処
理が行なわれる度に、そのためのワークバッファが確保
される。
が示すボックスが、図16〜図26の木構造チャートの
どれと一致するかを、ステップC2、C4、C6、C
8、C10、C12、C14、およびC16の条件判断
部でそれぞれ判断し、一致した木構造チャートに対応し
た木構造チャート解析処理ルーチンをステップC3、C
5、C7、C9、C11、C13、C15およびC17
でそれぞれコールする。
順次処理構造を解析する順次処理ルーチン(C3)と、
if then else構造を解析するためのif then else処理ル
ーチン(C5)と、if then 構造を解析するif then 処
理ルーチン(C7)と、repeat until構造を解析するた
めのrepeat until処理ルーチン(C9)と、do while構
造を解析するためのdo while構造処理ルーチン(C1
1)と、N+1/2 構造を解析するためのN+1/2 処理ルーチ
ン(C13)と、JUMP構造を解析するJUMP処理ルーチン
(C15)と、ラベル構造を解析するためのラベル処理
ルーチン(C17)とを含む。
バッファに解析結果がアセンブラソースとして格納され
る。
18でこのワークバッファの内容をソースバッファに追
加する。
ファを解析し、C20で木構造チャートを指すポインタ
を次のボックスに移す。
構造ボックスが存在するか否かについて判断する。木構
造ボックスが存在すれば、解析を継続するために図30
のC1にジャンプする。木構造ボックスが存在しなけれ
ば制御はC22に進み、サブルーチンをリターンする。
31に示したチャートボックス解析処理は、図29のメ
インプログラムのみから呼出されるのではなく、図30
でコールしたサブルーチンからも呼出すことができる再
帰的サブルーチンとなっている。これらサブルーチンか
らこのチャートボックス解析処理が呼出される場合に
は、この処理は解析結果を各サブルーチンに返すように
構成されている。
る順次処理構造をアセンブラソースに変換するためのサ
ブルーチン処理である。この処理のステップD1では、
図26(B)の自動生成規則を採用してアセンブラソー
スリストを生成し、ワークバッファに書込む。このとき
行なわれる処理は、図26(B)に示されるように、ま
ず図26(A)に示される木構造チャートのボックス内
のリストAの先頭に行先頭文字列(テーブルから得られ
る)を書込む。次に、アルゴリズムの区切りの意味でコ
メント文字列からなるコメント行をワークバッファに書
込んだ後D2に進んでリターンする。
されるif then else構造をアセンブラソースに変換する
ためのサブルーチン処理のフローチャートを示す。まず
ステップE1で、条件1=真に対応するジャンプ命令が
あるかどうかを図28のテーブル420を参照して求め
る。より具体的には、図28のテーブル420の各行の
中に「条件1」、「条件2」、「文字列」が定義された
「JUMP: 」で始まる行があるか否かを調べる。こうして
対応するジャンプ命令が存在すると判断された場合には
ステップE3に制御を進め、ジャンプ命令が存在しない
場合にはステップE2に制御を進める。
ジャンプ命令が存在する場合に対応して、後に使用する
ラベル名を新たに2個生成する。そしてステップE5に
処理を進め、図16(C)に示される自動生成規則を採
用して、アセンブラソースを生成する。そして生成され
たアセンブラソースをワークバッファに書込む。なお、
図16(C)の第4行目および第8行目に「チャートC
解析結果」「チャートB解析結果」とあるのは、図30
に示したチャートボックス解析サブルーチンを再帰的に
コールして、図16(A)のif then else構造中に含ま
れるチャートB構造およびチャートC構造から自動生成
されたアセンブラソースのことを指す。
ァを出力先のソースバッファに指定してチャートボック
ス解析サブルーチンをコールする。チャートボックス解
析サブルーチンは、図31のステップC18で書込むソ
ースバッファとして、指定された現在のワークバッファ
を使用する。すなわち、自動生成されたチャートB、チ
ャートCのアセンブラソースはそれぞれ、現在のワーク
バッファに出力された上チャートボックス解析サブルー
チンから図33のサブルーチンに戻される。なお以降の
図において、同様の「チャートB解析結果」「チャート
C解析結果」などの記載がある場合、その内容は上述と
同じである。したがってその各々に対する詳しい説明を
繰返すことは行なわない。
理が終了すると制御はE6に進みサブルーチンを終了す
る。
しない場合には、ステップE1からステップE2に制御
が進み、後に使用するラベルを2個生成する。次にステ
ップE4で図16(D)の生成規則を採用してアセンブ
ラソースを生成する。生成されたアセンブラソースはワ
ークバッファに格納される。E4の後制御はE6に進み
サブルーチンが終了する。
hen 構造をアセンブラソースに変換するサブルーチン処
理である。まずF1で、条件2=真に対応するジャンプ
命令が存在するかどうかについて判断する。条件2=真
に対応するジャンプ命令が存在した場合には制御はステ
ップF3に、存在しない場合には制御はステップF2に
進む。
した場合には、ステップF3で後に使用されるラベル名
を新たに1個生成する。続いてステップF5で、図17
(D)に示される自動生成規則を採用してアセンブラソ
ースを生成する。生成されたアセンブラソースはワーク
バッファに書出される。その後制御はF6に進んでこの
サブルーチンを終了する。
ない場合、ステップF2で後に使用されるラベル名を2
個新たに生成する。続いてF4で図17(E)に示され
る自動生成規則を採用してアセンブラソースを生成す
る。生成されたアセンブラソースはワークバッファに書
込まれ、制御はステップF6に進んでこのサブルーチン
を終了する。
peat until構造をアセンブラソースに変換するサブルー
チン処理を示す。まずステップG1で、対象となるボッ
クスが図18(A)に示されるボックスかどうかについ
て判断する。もし対象となるボックスが図18(A)の
ボックスであれば制御はG3に、さもなければ対象とな
るボックスは図19(A)に示されるボックスであると
判断し制御はG2にそれぞれ進む。
命令が存在するか否かについて判断する。対応するジャ
ンプ命令が存在すれば制御はステップG7に、存在しな
い場合には制御はステップG6に、それぞれ進む。
を新たに1個生成する。次いでG11で、図18(C)
の自動生成規則を採用して生成されたアセンブラソース
をワークバッファに書込み、G12に制御を進めてサブ
ルーチンを終了する。
が存在しないと判定された場合、G6でラベル名を2個
新たに生成する。その後G10で図18(D)に示され
る自動生成規則を採用してアセンブラソースを生成す
る。生成されたアセンブラソースはワークバッファに書
込まれる。その後制御はステップG12に進み、このサ
ブルーチンを終了する。
(A)のボックスではないと判定された場合、対象とな
るボックスは図19(A)のボックスであると判断し、
ステップG2で条件2=真に対応するジャンプ命令があ
るかどうかについて判断する。対応するジャンプ命令が
あれば制御はステップG5に、なければG4にそれぞれ
進む。
プG5でまず後に使用するラベル名を1個生成する。続
いてステップG9で図19(C)を採用してアセンブラ
ソースを生成し、ワークバッファに書込む。この後制御
はステップG12に進んでこのサブルーチンを終了す
る。
ジャンプ命令がないと判定された場合、まずステップG
4で後に使用するラベル名を2個新たに生成する。次い
でG8で図19(D)の自動生成規則を採用してアセン
ブラソースを生成し、ワークバッファに書込む。この後
ステップG12でこのサブルーチンを終了する。
ルされるdo while構造をアセンブラソースに変換するサ
ブルーチン処理のフローチャートである。また図37
は、図30のステップC13でコールされるN+1/2 構造
をアセンブラソースに変換するためのサブルーチン処理
のフローチャートである。図36および図37の処理手
順はいずれも、図35の処理手順とほぼ同一で、対象と
なるボックスの形状と、対応する自動生成規則とが異な
るだけである。したがって図36および図37について
は、その詳細な説明はここでは繰返さない。
JUMP構造をアセンブラソースに変換するためのサブルー
チン処理のフローチャートである。図38を参照して、
まずステップJ1で図24(B)に示された自動生成規
則を採用してアセンブラソースを生成する。生成された
アセンブラソースはワークバッファに書込まれ、ステッ
プJ2でこのサブルーチン処理を終了する。
ラベル構造をアセンブラソースに変換するためのサブル
ーチン処理のフローチャートである。ステップK1で、
図25(B)の自動生成規則を採用してアセンブラソー
スを生成し、ワークバッファに書込む。この後制御はK
2に進みこのサブルーチンを終了する。
を用いて、実際に木構造チャートをアセンブラソースに
変換する例を示す。図40に、拡張された木構造チャー
トの一例を示す。このチャートのモジュール名は「test
prog」である。
の位置を示し、この木構造チャートがどのような図式フ
ァイルの形式で格納されているかを図42に示す。図4
2において「↓」は改行を示す。
うち「CP」のボックスについて示し、図44にこのボ
ックスの図式ファイルの格納形式をわかりやすく示す。
を読込んで、これをアセンブラソースプログラムに変換
していく。
ャートの変換対象部分を、右側に自動生成されたアセン
ブラソースプログラムを示す。
ログラムを起動する。このプログラムは図29に示した
ものである。そして変数初期化およびソースバッファ確
保を行なった後、図45に示すように図40の木構造チ
ャートのチャート名「testprog」を読込み、ソースバッ
ファに出力する。図45の右側がこのときのソースバッ
ファの内容を示す。
処理が実行される。この木構造チャートの最初の木構造
は図46の左側に示す順次処理ボックスL1である。し
たがって図32の処理に従ってアセンブラソースが生成
される。そして図31のC18でソースバッファに出力
された結果を図46の右側に示す。
されるrepeat until構造L2である。このボックスは図
53(B)のボックスであるので、図35のG2に制御
が進む。図28のテーブル420を参照すると、条件
「B--=0 」の逆条件「B--<>0」=真に対応する条件ジャ
ンプ命令があることがわかる(テーブル420の最終
行)。そのためG2の判断結果はYESとなり制御はG
5およびG9に進む。G9で図19(C)に従ったソー
ス生成を行なうことにより、図47の右側に示されるワ
ークバッファ内容を得る。
0に示すL3〜L10までの木構造(これは図47右側
の「ソースA」の部分に対応する)が含まれているた
め、新たにワークバッファ2が確保され、図30のチャ
ートボックス解析処理ルーチンが再帰的にコールされ
る。再帰的にコールされたチャートボックス解析ルーチ
ンは、これらボックスL3〜L10までの木構造をさら
に解析してソース自動生成を行なってワークバッファに
出力する。図48の上側は再帰的に解析されるチャート
の一部を示し、図48の下側は第2のワークバッファに
出力されたチャートの一部のソース解析結果である。
L3〜L10からアセンブラソースを自動生成し、第2
のワークバッファに出力した結果が図49(A)であ
る。さらにこの結果を用いて、ワークバッファに生成さ
れるrepeat until構造L2全体のアセンブラソースを図
49(B)に示す。図49(B)のアセンブラソース
は、さらに図31のC18においてソースバッファに出
力される。
ャートから自動生成され、ソースファイルに出力された
アセンブラソースプログラムリストを図50に示す。こ
のアセンブラソースが図40に示される木構造チャート
の変換結果である。
は、従来の木構造チャートでは表現できなかった。そこ
で、これら命令を区別するための記述を木構造チャート
の一部に明記するように拡張し、処理のどこでLONG JUM
P 命令が必要かを一目でかわるようにした拡張木構造チ
ャート表記法を以下に示す。第2の実施の形態はこのよ
うにさらに拡張された木構造チャートからアセンブラソ
ースを生成するためのものである。
いと飛び越せない大きさのソースリストはソースリスト
ボックスの左端を太線で強調することにし、さらにその
ボックスの近傍に「long」という表記を行なうこととし
た。以下、図51〜63を参照して、この拡張木構造チ
ャートの記述方法について説明する。
造中のチャートB構造がLONG JUMP命令でないと飛び越
せないことを示している。同時に、チャートB構造がLO
NG JUMP 命令でないと飛び越せないためにこのif then
else構造全体もLONG JUMP 命令でないと飛び越せないこ
とを示している。このチャートの図式ファイルとしての
保存形式を図51の下部に示している。図52以下で
も、各チャートに対応の図式ファイルの格納形式を各図
の右下に示す。
構造中のチャートB構造およびif then 構造全体がLONG
JUMP 命令でないと飛び越せないことを示している。図
53(A)(B)の木構造チャートは、repeat until構
造中のチャートB構造がLONGJUMP 命令でないと飛び越
せないことを示している。図54(A)(B)(C)の
木構造チャートは、do while構造中のチャートB構造お
よびdo while構造全体がLONG JUMP 命令でないと飛び越
せないことを示している。
ついて示している。特に図55および図56は、チャー
トB構造およびN+1/2 構造全体がLONG JUMP 命令でない
と飛び越せないことを示している。図57および図58
はチャートC構造およびN+1/2 構造全体がLONG JUMP 命
令でないと飛び越せないことを示す。図59および図6
0は、チャートB構造およびチャートC構造およびN+1/
2 構造全体がともにLONG JUMP 命令でないと飛び越せな
いことを示す。
ャートであって、使用されるジャンプ命令がLONG JUMP
命令であることを示す。図62にはラベル構造の記述を
示すが、ラベル構造ではLONG JUMP 指定はない。図63
に順次処理のチャートを示す。順次処理のチャートで
は、ボックスの左端を太線にしてその左側に「long」の
文字を記載することにより、リストAがLONG JUMP 命令
でないと飛び越せないことを示している。
ORT JUMP命令を区別して表記するように拡張された木構
造チャートからアセンブラソースリストを生成する際に
参照されるテーブルの形式を図64に示す。図64に示
すテーブル430は、第1の実施形態で使用したテーブ
ル400(図15)に、LONG JUMP 命令およびSHORTJUM
P命令に関する情報を付加したものである。
の第4行目に示すように、条件1=真に対応するアセン
ブラジャンプ命令を文字列1で示している。しかしこの
第2の実施形態では、アセンブラジャンプ命令の項目を
2つに増やした。そして、図64の第4行目に示される
ように、条件1=真に対応するアセンブラジャンプ命令
として文字列1と文字列4との2つを定義するように定
めた。ここで文字列1は条件1=真に対応するアセンブ
ラSHORT JUMP命令であり、文字列4は条件1=真に対応
するアセンブラLONG JUMP 命令を示すものとする。
価な条件2=真に対応するアセンブラSHORT JUMP命令を
文字列2で、アセンブラLONG JUMP 命令を文字列5で定
義している。6行目には、無条件にジャンプするアセン
ブラSHORT JUMP命令を文字列3で、アセンブラLONG JUM
P 命令を文字列6で定義している。
ブラジャンプ命令としてSHORT JUMP命令とLONG JUMP 命
令とをテーブルで定義することにより、各種条件判断の
結果に従って、対応するアセンブラLONG JUMP 命令およ
びSHORT JUMP命令を簡単に求めることができる。
命令およびSHORT JUMP命令の区別を許す拡張木構造チャ
ートから、図64に示すテーブル430を参照して、種
々のCPUに対してLONG JUMP 命令およびSHORT JUMP命
令を適宜用いたアセンブラソースプログラムを生成する
ために必要な、汎用のソースプログラム生成規則を得る
ことができる。以下、そうした普遍的なアセンブラソー
スプログラム生成規則(アルゴリズム)について説明す
る。なお以下に説明するアセンブラソースプログラム生
成規則は、第1の実施形態で使用された一連のソースプ
ログラムの自動生成規則に基づき、さらにアセンブラ言
語特有のLONG JUMP 命令およびSHORT JUMP命令の区別を
加味するようにしたものである。
装置で使用される自動生成規則を、対応する木構造チャ
ートと、各木構造チャートと等価なフローチャートとと
もに示している。なおこれらの図面のうち「条件1 SH
ORT JUMP命令あり」との記載は「条件1=真でSHORT JU
MPするジャンプ命令がある」ことを示す。「条件1SHOR
T JUMP命令なし」とは「条件1=真でSHORT JUMPするジ
ャンプ命令がない」ことを示す。「条件2 JUMP命令な
し」とは「条件2=真でジャンプする命令はSHORT JUMP
命令もLONG JUMP 命令も存在しない」ことを示す。1つ
の生成規則に「条件1 SHORT JUMP命令なし」と「条件
2 LONG JUMP 命令あり」とが記載されている場合は、
その生成規則が両方の条件のAND条件のときに適用さ
れることを示す。すなわち、上に述べた条件は「条件1
=真でSHORT JUMPするジャンプ命令がなく、かつ、条件
2=真でLONG JUMP するジャンプ命令がある」ことを示
す。
れている場合、その適用優先順序は図に付加されている
アルファベットの先の方が高い。これは、生成されるア
センブラソースプログラムの行数や、バイト数がより少
なくなるような規則を優先して適用するためである。す
なわち、たとえば図65の生成規則(C)〜(F)のう
ちでは、まず(C)を最初に適用し、条件が成立しなけ
れば(D)を適用し、(C)も(D)も駄目であれば
(E)を適用し、(E)も駄目であれば(F)を適用
し、というようにアルファベットの始めの方から順に生
成規則を適用していくものとする。
ス自動生成規則である。図65(A)は図51の木構造
チャートに対応したものであり、図65(B)のフロー
チャートと等価である。条件1=真に対応したSHORT JU
MP命令およびLONG JUMP 命令、ならびに条件2=真に対
応したSHORT JUMP命令およびLONG JUMP 命令の有無に応
じて、図65(C)〜(F)に示されたソース自動生成
規則を用いてアセンブラソースを自動生成する。
動生成規則である。図66(A)は図52(A)に、図
66(B)は図52(B)に示されたものである。これ
らはif then 木構造のバリエーションをすべて記述する
ために、条件判断後に実行される処理(チャートB)の
木構造での位置を変えただけで、アルゴリズム的には同
一であって図66(C)のフローチャートと等価であ
る。図66(D)〜(G)に示されたソース自動生成規
則はそれぞれ、条件1=真および条件2=真に対応した
SHORT JUMP命令およびLONG JUMP 命令に有無に応じて適
用される規則である。
対応するソース自動生成規則を示す。図67(A)は図
53(A)に、図68(A)は図53(B)にそれぞれ
対応する。
(B)のフローチャートと等価である。図67(C)〜
(F)のソース自動生成規則は、条件1=真、条件2=
真に対応したSHORT JUMP命令およびLONG JUMP 命令の有
無に応じて適用される規則である。
ローチャートと等価である。条件1=真、条件2=真に
対応したSHORT JUMP命令およびLONG JUMP 命令の有無に
応じて図68(C)〜(F)に示したソース自動生成規
則を適用することによりアセンブラソースを自動生成す
る。
構造に対応するソース自動生成規則を示す。図69
(A)は図54(A)の木構造チャートに対応する。図
70(A)および(B)はそれぞれ、図54(B)およ
び(C)の木構造チャートに対応する。
(B)のフローチャートと等価である。図69(A)の
do while構造は、飛び越すのにLONG JUMP 命令が必要な
チャートBを構造内に持っている。そして、条件1=
真、条件2=真に対応したSHORTJUMP命令およびLONG JU
MP 命令の有無に応じて、図69(C)〜(F)に示さ
れたソース自動生成規則を適用してアセンブラソースを
自動生成する。
0(C)に示すフローチャートと等価である。条件1=
真、条件2=真に対応したSHORT JUMP命令およびLONG J
UMP命令の有無に応じて、図70(D)〜(G)に示さ
れたソース自動生成規則を適用してアセンブラソースを
自動生成する。
ソース自動生成規則を示す。図71(A)に示すN+1/2
構造は図55に示す構造であり、図71(B)に示すフ
ローチャートと等価である。このN+1/2 構造は、飛び越
すのにLONG JUMP 命令が必要なチャートBを構造内に持
っている。条件1=真、条件2=真に対応したSHORT JU
MP命令およびLONG JUMP 命令の有無に応じて、図71
(C)〜(F)を適用してアセンブラソースを自動生成
する。
る。このN+1/2 構造は、飛び越すのにLONG JUMP 命令が
必要なチャートBを構造内に持っており、図72(B)
のフローチャートと等価である。この構造は条件1=
真、条件2=真に対応したSHORT JUMP命令およびLONG J
UMP 命令の有無に応じて図72(C)〜(F)に示され
たソース自動生成規則を適用してアセンブラソースを自
動生成する。
に対応している。このN+1/2 構造は飛び越すのにLONG J
UMP 命令が必要なチャートCを構造内に持っており、図
73(B)のフローチャートと等価である。条件1=
真、条件2=真に対応したSHORT JUMP命令およびLONG J
UMP 命令の有無に応じて、図73(C)〜(F)に示さ
れたソース自動生成規則を適用してアセンブラソースを
自動生成する。
に示したN+1/2 構造に対応したものである。このN+1/2
構造は、飛び越すのにLONG JUMP 命令が必要なチャート
Cを構造内に持っており、図74(B)のフローチャー
トと等価である。条件1=真、条件2=真に対応したSH
ORT JUMP命令およびLONG JUMP 命令の有無に応じて、図
74(C)〜(F)に示したソース自動生成規則を適用
してアセンブラソースを自動生成する。
たものである。この構造は、飛び越すのにLONG JUMP 命
令が必要なチャートBおよびチャートCをその構造内に
持っており、図75(B)のフローチャートと等価であ
る。条件1=真、条件2=真に対応したSHORT JUMP命令
およびLONG JUMP 命令の有無に応じて、図75(C)〜
(F)のソース自動生成規則を適用してアセンブラソー
スを自動生成する。
造である。このN+1/2 構造は、飛び越すのにLONG JUMP
命令が必要なチャートBおよびチャートCをその構造内
に有しており、図76(B)のフローチャートと等価で
ある。条件1=真、条件2=真に対応したSHORT JUMP命
令およびLONG JUMP 命令の有無に応じて、図76(C)
〜(F)のソース自動生成規則を適用してアセンブラソ
ースを自動生成する。
自動生成規則を示す。図77(A)は図61に示したジ
ャンプ構造であり、それに対応したソース生成出力を図
77(B)に示す。ジャンプ構造そのものは1行のアセ
ンブラ命令で表わされるので、飛び越すのにLONG JUMP
命令は必要ではない。しかしジャンプ命令そのものがSH
ORT JUMP命令またはLONG JUMP 命令となり得るので、図
77(A)に示されるようにジャンプ構造ボックスの左
端を太線にすることにより、採用されるジャンプ命令が
LONG JUMP 命令であることを示すように定義した。した
がってこの場合図77(B)に示されるように、採用さ
れるジャンプ命令は文字列6(図64参照)である。図
78にラベル構造に対するソース自動生成規則を示す。
ラベル構造にはジャンプ命令は含まれない。そのため図
78(B)に示されるソース自動生成規則は図25
(B)に示される第1の実施の形態におけるソース自動
生成規則と異なるところがない。
成規則を示す。図79(B)に示されるソース自動生成
規則は、図26(B)に示される第1の実施の形態の生
成規則と同じである。しかしこの図79の場合には、こ
の順次処理構造(リストA)を飛び越すのにLONG JUMP
命令が必要である。したがってこの順次処理構造を飛び
越すジャンプ命令があった場合には、そのジャンプ命令
をLONG JUMP 命令とする必要がある。
表記形式を用いて記述された木構造チャートをアセンブ
ラソースプログラムに変換するための第2の実施の形態
について説明する。ハードウエアとしては、この第2の
実施の形態は図27に示される第1の実施の形態と同じ
ものを用いるが、しかし、図28に示される第1の実施
の形態のテーブル420に代えて図80に示すテーブル
440を用いる。なお図80に示すテーブル440は、
Z−80のアセンブラソースプログラムを自動生成する
ために用いられるものであり、他のCPUのアセンブラ
言語ソースプログラムを作成する場合には、そのアセン
ブラ言語に対応したテーブルを利用する必要がある。
ブラソースプログラムに変換される木構造チャートの例
を図81に示す。この図81の木構造チャートのチャー
ト名は「longprog」である。この木構造チャートを用い
た具体的な例については後述する。
する。このテーブル440は、図64のテーブル430
として基本的な考え方が示されたテーブルについてZ−
80を対象としたアセンブラ言語表現を適用したもので
ある。テーブル440の1行目はコメント行であって、
ソース自動生成には関係しない。
挿入される行先頭文字列である。本実施の形態では文字
列「 」(スペース8個)を使用する。第3行目
はコメント行の先頭に付加するコメント文字である。本
実施の形態では「;」を使用する。第4行目はラベル行
においてラベルの後に付加する文字列を定義する。本実
施の形態では「:」を使用する。
に関するSHORT JUMP命令およびLONGJUMP 命令の定義で
ある。第5行目はSHORT JUMP命令「 JR 」、
およびLONG JUMP 命令「 JP 」を定義してい
る。条件および逆条件の両方がヌル文字で定義されてい
るため、このジャンプ命令「 JR 」および
「 JP 」は絶対ジャンプ命令であることがわ
かる。
に関する条件分岐命令を定義している。条件「C」と条
件「NC」とは逆条件の関係にある。ここでは、C=真
ならSHORT JUMP命令「 JR C,」またはLONG J
UMP 命令「 JP C,」を採用し、NC=真ならS
HORT JUMP命令「 JR NC,」またはLONG JUMP
命令「 JP NC,」を採用する。
に関する条件分岐命令を定義している。条件「Z」と条
件「NZ」とは逆条件の関係にある。ここでは、Z=真
ならSHORT JUMP命令「 JR Z,」またはLONG J
UMP 命令「 JP Z,」を採用し、NZ=真なら
SHORT JUMP命令「 JR NZ,」またはLONG JUMP
命令「 JP NZ,」を採用する。
「PO」,「PE」に関する条件分岐命令を定義してい
る。条件「PO」と条件「PE」とは逆条件の関係にあ
る。条件判断「PO」、「PE」はいずれもSHORT JUMP
命令は持たない。しかしLONG JUMP 命令はSHORT JUMP命
令として使用しても特に問題が生ずることはないので、
便宜上LONG JUMP 命令をSHORT JUMP命令としても定義し
ておく。ここではPO=真のときにはSHORT JUMP命令、
LONG JUMP 命令とも「 JP PO,」を採用し、P
E=真ならSHORT JUMP命令、LONG JUMP 命令とも「
JP PE,」を採用するものとする。
「P」、「M」に関する条件分岐命令を定義している。
条件「P」と条件「M」とは逆条件の関係にある。条件
判断「P」、「M」はともにSHORT JUMP命令は持たな
い。しかしLONG JUMP 命令はSHORT JUMP命令命令として
使用しても特に問題はないので、便宜上LONG JUMP 命令
はSHORT JUMP命令としても定義しておく。ここではP=
真ならSHORT JUMP命令、LONG JUMP 命令とも「
JP P,」を採用し、M=真ならSHORT JUMP命令、LONG
JUMP 命令とも「 JP M,」を採用する。
」、「B--<>0」に関する条件分岐命令を定義してい
る。条件「B--=0 」と条件「B--<>0」とは逆条件の関係
にある。ここでは、「B--=0 」=真に対応するジャンプ
命令はSHORT JUMP命令およびLONGJUMP 命令のいずれも
ない。「B--<>0」=真ならSHORT JUMP命令「 DJ
NZ」はあるがLONG JUMP 命令は存在しない。このため、
「B--<>0」=真に対応するLONG JUMP 命令をソース自動
生成アルゴリズムが参照したときには、自動生成を中断
してエラーメッセージを出力するようにする。なお、条
件「B--=0 」、「B--<>0」は「Z−80のBレジスタの
値を1引いた後のBレジスタの値」が0であれば「B--=
0 」=真、0でなければ「B--<>0」=真を示す条件記述
である。
ORT JUMPおよびLONG JUMP 記述がされた拡張木構造チャ
ートからアセンブラソースプログラムを自動生成するた
めの具体的な処理を図82以下のフローチャートに示
す。なお本実施の形態ではZ−80のアセンブラソース
プログラムの生成について示しているが、図80のテー
ブル440に代えて他のアセンブラ言語用のテーブルを
用いれば、同じフローチャートに従った処理で、別種の
アセンブラ言語用のソースプログラムを生成することが
できる。また図83〜図102の処理は、第1の実施の
形態のチャートボックス解析処理と同じく、再帰呼出し
が可能な構造となっている。
ログラムのフローチャートである。このフローのステッ
プM1〜M8はそれぞれ、図29に示した第1の実施の
形態のメインプログラムのステップB1〜B8に対応
し、その内容も同一である。したがってここではこれら
についての詳しい説明は繰返さない。
ートを解析してアセンブラソースプログラムを生成し、
ソースバッファに格納するサブルーチンであるチャート
ボックス解析処理のフローチャートを示す。図83およ
び図84に示したステップN1〜N22はそれぞれ、図
30および図31に示した第1の実施の形態のチャート
ボックス解析処理の各ステップC1〜C22と同じであ
る。したがって図83および図84についての詳細な説
明はここでは繰返さない。
LONG JUMP 構造を持つ場合にもソースプログラムを生成
できるものであるが、実際のプログラミングに当たって
は大部分の木構造がSHORT JUMP命令のみを含む場合が多
い。SHORT JUMP命令のみを用いる場合のアセンブラプロ
グラムの自動生成規則は、第1の実施の形態で使用した
フローチャートで示される処理をそのまま使用すること
ができる。したがって以下の説明では、木構造中にLONG
JUMP がない場合には第1の実施の形態で説明した対応
の構造に対する自動生成規則を流用するものとする。こ
の場合の各生成規則解釈は第1の実施の形態のものを使
用する。
理のステップN3でコールされる順次処理構造をアセン
ブラソースプログラムに変換するためのサブルーチン処
理のフローチャートを示す。ステップP1において、対
象とする順次処理ボックスにLONG JUMP 記述があるかど
うかについて判断する。LONG JUMP 記述がなければ制御
はP2に進み、図32に示したSHORT JUMPのみのときの
アセンブラソースプログラム生成処理を実行する。一方
LONG JUMP 記述がある場合には制御はP3に進む。P3
では図79(B)の生成規則を採用してアセンブラソー
スプログラムを生成し、ワークバッファに書込む。ステ
ップP2またはP3の後制御はP4に進みサブルーチン
を終了する。
コールされるif then else構造をアセンブラソースプロ
グラムに変換するためのサブルーチン処理を示すフロー
チャートである。まずステップQ1で、対象とするif t
hen else構造にLONG JUMP 記述があるかどうかについて
判断する。LONG JUMP 記述がなければ制御はステップQ
2に進み、図33に示したSHORT JUMPのみのときのアセ
ンブラソースプログラム生成処理を実行してステップQ
14に進み処理を終了する。
れた場合には、制御はQ3に進む。Q3では、条件1=
真に対応するSHORT JUMP命令があるかどうかを判断す
る。条件1=真に対応するSHORT JUMP命令が存在した場
合には制御はQ4に進む。Q4では後のステップQ5で
使用するラベル名を2個新たに生成する。続いてQ5で
は、図65(C)に示された自動生成規則を採用してア
センブラソースプログラムを生成し、ワークバッファに
書込んだ後図87のステップQ14に進んでサブルーチ
ンを終了する。
T JUMP命令が存在しないと判定された場合には制御はス
テップQ6に進む。Q6では、条件2=真に対応するLO
NG JUMP 命令があるかどうかについての判定が行なわれ
る。条件2=真に対応するLONG JUMP 命令が存在する場
合には制御はQ7に進む。Q7では、後のQ8で使用さ
れるラベル名を2個新たに生成する。次いでQ8では、
図65(D)に示された自動生成規則を採用してアセン
ブラソースプログラムを生成し、ワークバッファに書込
んだ後図87のQ14に進んで処理を終了する。
令が存在しないと判定された場合には図87のQ9に進
む。Q9では、条件1=真に対応するLONG JUMP 命令が
あるかどうかについての判定が行なわれる。条件1=真
に対応するLONG JUMP 命令が存在する場合には制御はQ
10に進む。Q10では、後のQ11で使用されるラベ
ル名を2個新たに生成する。次いでステップQ11で、
図65(E)の自動生成規則を採用してアセンブラソー
スプログラムを生成し、ワークバッファに書込んだ後Q
14に進んで処理を終了する。
P 命令が存在しないと判定された場合には制御はQ12
に進む。Q12では、後のQ13で使用されるラベル名
を3個新たに生成する。次いでQ13では、図65
(F)に示された自動生成規則を採用してアセンブラソ
ースプログラムを生成し、ワークバッファに書込んだ後
Q14へ進んで処理を終了する。
then 構造をアセンブラソースに変換するためのサブル
ーチン処理を示すフローチャートである。図88および
図89における処理R1〜R14は、基本的には図86
および図87の処理Q1〜Q14と同様である。SHORT
JUMP命令しか存在しない場合には図34のif then 処理
を実行する(R2)。LONG JUMP 構造が対象となるボッ
クスに含まれるときには、条件1=真、条件2=真に対
応するSHORT JUMP命令およびLONG JUMP 命令の有無によ
り、それぞれ図66(D)〜(G)を採用してアセンブ
ラソースを生成し、ワークバッファに書込んだ後R14
に制御を進めてこのサブルーチンを終了する。既に述べ
たように図88および図89の流れは図86および図8
7と同様であるので、その詳細についてはここでは繰返
さない。
コールされる、repeat until構造をアセンブラソースプ
ログラムに変換するためのサブルーチン処理のフローチ
ャートである。ステップS1で、対象となるrepeat unt
il構造にLONG JUMP 記述が存在するかどうかを判断す
る。LONG JUMP 記述が存在しなければ制御はS2に進
み、図35に示したSHORT JUMP命令のみのrepeat until
構造からアセンブラソースプログラムを生成するための
処理を実行してステップS3でこのサブルーチンを終了
する。
場合には制御はS4に進む。S4では、対象となるrepe
at until構造が図67(A)に示されるボックスか否か
について判断する。ボックスが図67(A)のボックス
であれば制御はS6に、さもなければ制御はS5に進
む。
対応するSHORT JUMP命令およびLONGJUMP 命令の有無に
より、それぞれ図67(C)〜(F)の自動生成規則を
採用してアセンブラソースプログラムを生成し、ワーク
バッファに書込む(S8、S10、S14、S16、S
20、S22、S24、S26)。その後制御はS27
に進みこのサブルーチンは終了する。
クスではないと判定された場合にはS5以下で、条件1
=真、条件2=真に対応するSHORT JUMP命令およびLONG
JUMP 命令の有無に従って、図68(C)〜(F)の自
動生成規則を採用してアセンブラソースプログラムを生
成し、ワークバッファに書込む(S7、S9、S13、
S15、S19、S21、S23、S25)。その後制
御はS27に進みこのサブルーチンは終了する。
ルされる、do while構造をアセンブラソースプログラム
に変換するためのサブルーチン処理のフローチャートで
ある。まずT1で、対象とするdo while構造にLONG JUM
P 記述があるかどうかについて判定する。LONG JUMP 記
述がなければ制御はT2に進む。T2では図36に示
す、SHORT JUMPのみのときのdo while処理からのアセン
ブラソース生成のための処理を実行する。その後制御は
T3に進みこのサブルーチンは終了する。
場合には制御はT4に進む。T4では、対象とするdo w
hile構造のボックスが図69(A)のボックスかどうか
についての判定を行なう。図69(A)のボックスであ
れば制御はT6に、さもなけれが制御はT5にそれぞれ
進む。
図69(A)のボックスの場合には、T6以下のステッ
プで、条件1=真、条件2=真に対応するSHORT JUMP命
令およびLONG JUMP 命令の有無により、それぞれ図69
(C)〜(F)の自動生成規則を採用してアセンブラソ
ースプログラムを生成しワークバッファに書込む(T
8、T10、T14、T16、T20、T22、T2
4、T26)。この後制御はT27に進みこのサブルー
チンを終了する。
5以下の処理で条件1=真、条件2=真に対応するSHOR
T JUMP命令およびLONG JUMP 命令の有無により、それぞ
れ図70(D)〜(G)の自動生成規則を採用してアセ
ンブラソースプログラムを生成し、ワークバッファに書
込む(T7、T9、T13、T15、T19、T21、
T23、T25)。この後制御はT27に進みこのサブ
ルーチンを終了する。
いてコールされる、N+1/2 構造をアセンブラソースプロ
グラムに変換するためのサブルーチン処理のフローチャ
ートである。図96を参照して、まずU1で、対象とす
るN+1/2 構造にLONG JUMP 記述があるかどうかについて
の判定を行なう。LONG JUMP 記述がなければ制御はU2
に進む。U2では、図37のN+1/2 のループ処理に従っ
たアセンブラソース生成処理を実行する。この後制御は
図101のU74に進みこのサブルーチンを終了する。
れた場合には制御はU3に進む。U3では、対象とする
N+1/2 構造が、図71(A)のボックスかどうかについ
ての判定を行なう。図71(A)のボックスであると判
定された場合には制御は図97のU4に進む。U4以下
の処理では、条件1=真、条件2=真に対応するSHORT
JUMP命令およびLONG JUMP 命令の有無により、それぞれ
図71(C)〜(F)に示される自動生成規則を採用し
てアセンブラソースプログラムを生成しワークバッファ
に書込む(U5、U6、U8、U9、U11、U12、
U13、U14)。この後制御は図101のU74に進
みこのサブルーチンを終了する。
が図71(A)のボックスではないと判定された場合に
は制御はU15に進む。U15では、対象となるN+1/2
構造が図72(A)のボックスかどうかについての判定
を行なう。図72(A)のボックスであれば制御は図9
8のU16に進む。U16以下では、条件1=真、条件
2=真に対応するSHORT JUMP命令およびLONG JUMP 命令
の有無により、それぞれ図72(C)〜(F)に示され
る自動生成規則を採用してアセンブラソースプログラム
を生成しワークバッファに書込む(U17、U18、U
20、U21、U23、U24、U25、U26)。こ
の後制御は図101のU74に進みこのサブルーチンを
終了する。
造が図72(A)のボックスではないと判定された場合
には、制御はU27に進む。U27では、対象となるN+
1/2構造が図73(A)のボックスか否かについての判
定を行なう。図73(A)のボックスである場合には制
御は図99のU28に進む。U28以下の処理では、条
件1=真、条件2=真に対応するSHORT JUMP命令および
LONG JUMP 命令の有無により、それぞれ図73(C)〜
(F)に示された自動生成規則を採用してアセンブラソ
ースプログラムを生成してワークバッファに書込む(U
29、U30、U32、U33、U35、U36、U3
7、U38)。この後このサブルーチンを終了する。
構造が図73(A)のボックスではないと判定された場
合には制御はU39に進む。U39では、対象となるN+
1/2構造が図74(A)のボックスか否かについての判
定を行なう。図74(A)のボックスであれば制御は図
100のU40に進む。U40以下では、条件1=真、
条件2=真に対応するSHORT JUMP命令およびLONG JUMP
命令の有無により、それぞれ図74(C)〜(F)に示
された自動生成規則を採用してアセンブラソースプログ
ラムを生成してワークバッファに書込む(U41、U4
2、U44、U45、U47、U48、U49、U5
0)。この後このサブルーチンを終了する。
る構造が図74(A)のボックスではないと判定された
場合には制御はU51に進む。U51では、N+1/2 構造
が図75(A)のボックスか否かについての判定を行な
う。図75(A)のボックスであると判定された場合に
は制御は図101のU53に進む。U53以下では、条
件1=真、条件2=真に対応するSHORT JUMP命令および
LONG JUMP 命令の有無により、それぞれ図75(C)〜
(F)に示された自動生成規則を採用してアセンブラソ
ースプログラムを生成しワークバッファに書込む(U5
5、U57、U61、U63、U67、U69、U7
1、U73)。この後このサブルーチンを終了する。
(A)のボックスではないと判定された場合には制御は
図102のU52に進む。U52以下の処理では、条件
1=真、条件2=真に対応するSHORT JUMP命令およびLO
NG JUMP 命令の有無により、それぞれ図76(C)〜
(F)に示された自動生成規則を採用してアセンブラソ
ースプログラムを生成しワークバッファに書込む(U5
4、U56、U60、U62、U66、U68、U7
0、U72)。この後制御はU74に進みこのサブルー
チンを終了する。
るジャンプ処理のサブルーチンのフローチャートを示
す。図103を参照して、V1において、対象とするJU
MP処理構造にLONG JUMP 記述が存在するか否かについて
の判定を行なう。LONG JUMP 記述がなければ制御はV2
に進み、図38に示されるSHORT JUMPのみのときのジャ
ンプ処理を実行して処理を終了する(V4)。
には制御はV3に進む。V3では、図77(B)に示さ
れた自動生成規則を採用してアセンブラソースプログラ
ムを生成しワークバッファに書込む。この後制御はV4
に進みこのサブルーチンを終了する。
る、ラベル処理構造をアセンブラソースプログラムに変
換するためのサブルーチン処理のフローチャートであ
る。既に述べたようにラベル処理構造はLONG JUMP 、SH
ORT JUMPとは無関係な構造である。このためラベル処理
構造の変換では、まずステップW1で図78(B)に示
された自動生成規則を採用してアセンブラソースプログ
ラムを生成しワークバッファに書込む。この後制御はW
2に進んでこの処理を終了する。
形態の装置を使用して、図81に示す木構造チャート
「longprog」をアセンブラソースプログラムに自動変換
する経過を示す。このとき使用されるテーブルは図80
のテーブル440である。
起動する。そして変数初期化およびソースバッファ確保
を行なった後、図81に示す木構造チャートのチャート
名「longprog」を読込みソースバッファに出力する。木
構造チャートのうち読込まれる部分を図105(A)
に、ソースバッファへの出力結果を図105(B)に、
それぞれ示す。
移る。この図81に示される木構造チャートの最初の木
構造は順次処理ボックスX1である。したがって図85
の処理に従ってアセンブラソースプログラムを自動生成
し、ソースバッファに出力する。変換される木構造を図
106(A)に、ソースバッファへの出力結果を図10
6(B)にそれぞれ示す。
き木構造はrepeat until構造X2である。この構造は図
90〜図92に示したフローチャートに従ってアセンブ
ラソースプログラムに変換される。図90のS1におけ
る判断では、このrepeat until構造はLONG JUMP 記述さ
れた構造を内部構造に持っているため、制御はS4に進
む。S4の判断では、このrepeat until構造は図67
(A)のボックスであるので、制御はS5に進む。図8
0のテーブル440から、条件「B--=0 」=真に対応す
るジャンプ命令はSHORT JUMP命令およびLONG JUMP 命令
のいずれも存在しない。また逆条件「B--<>0」=真に対
応するジャンプ命令はLONG JUMP 命令が存在せずSHORT
JUMP命令のみ存在する。したがって制御はS23および
S25に進み、図107(B)に示される結果を得る。
ただし図107(A)に示されるrepeat until構造内に
は図81に示されるX3〜X10までの木構造(「ソー
スA」)が含まれているため、新たに第2のワークバッ
ファを確保して図83以下のチャートボックス解析処理
を再帰的にコールする。再帰的にコールされたチャート
ボックス解析ルーチンはX3〜X10までの木構造をさ
らに解析してソース自動生成を行ない、その結果を返
す。図108(A)は再帰的に解析されるチャートの一
部を示す。図108(B)は、第2のワークバッファに
出力される、図108(A)に対応したチャート部分の
ソース解析内容である。このようにしてX3〜X10ま
での木構造チャートからアセンブラソースプログラムを
自動生成し、第2のワークバッファに出力した結果を図
109(A)に示す。
ーチンの終了時に、図109(A)の結果を用いてワー
クバッファに生成されたrepeat until構造X2(図8
1)全体のアセンブラソースプログラムを図109
(B)に示す。このアセンブラソースプログラムは、図
84のN18に示されるように、さらにソースバッファ
に出力される。このようにして、図81のX1〜X12
までの木構造チャートから自動生成されソースファイル
に出力されたアセンブラソースプログラムが図110に
示したものである。これが、図81に示す木構造チャー
トを自動変換によってZ−80のアセンブラソースプロ
グラムに変換したものである。
トについては、以下のような問題点が考えられる。たと
えば図111に示す木構造チャートをアセンブラソース
プログラムに変換する場合を考える。この場合、この木
構造チャートmultifは、構造的に同じ戻り位置を持つ2
つのif then 構造Y2およびY3を持っている。そのた
め上述の実施の形態に従ってアセンブラソースプログラ
ムを自動生成した結果、図112に示すように、ソース
リストの同一位置に連続して2つのラベルmultif2およ
びmultif1が生成されることになる。
は特別な意味はなく、むしろこれら2つのラベルはソー
スプログラムの複雑さを増し、プログラムの容量を無駄
に増加させるだけである。
生成された場合には、そのラベル名をどちらかに統一し
不要なラベルを削除することによって、冗長なラベルの
発生を防ぐようにする。そうすることにより、生成され
たアセンブラソースプログラムが簡略化されてより理解
しやすくなるとともに、ソースプログラムの容量が無駄
に増加することがなくなる。冗長なラベルを取除いた後
のソースリストは図113のようになる。
簡略化を行なう方法として、チャートボックス解析ルー
チンを図114および図115に示されるように変更す
ることが考えられる。図114および図115のチャー
トボックス解析サブルーチンが図30および図31に示
された第1の実施の形態のチャートボックス解析ルーチ
ンと異なるのは、ステップC18の前に、ステップC2
3〜C25を設けて、これにより重複したラベルを削除
するようにした点である。他の部分においては図114
および図115は図30および図31と同じであり、こ
こではその詳細については繰返さない。
23で、ワークバッファの最終行がラベル名か否かにつ
いての判定を行なう。ラベル名でなければラベルの重複
は起こり得ないから制御はC18に進んでワークバッフ
ァの内容をソースバッファに書込む。一方C23におい
てワークバッファの最終行がラベル名であると判定され
た場合には制御はC24に進む。
ベル名か否かについての判定を行なう。ソースバッファ
の次の行がラベル名でなければこの場合もラベルの重複
は起こらないので制御はC18に進む。
場合には制御はC25に進む。C25では、ワークバッ
ファ内のアセンブラソースプログラム中で言及されてい
るこのラベル名を、すべてC24で検出されたラベル名
と一致するように変更するとともに、ワークバッファの
最終行を削除する処理を行なう。この処理の後制御をC
18に進める。
ことにより、最終的に生成されるアセンブラソースプロ
グラムにおいて、ラベル名が無駄に重複することが避け
られる。
ンブラ言語に対応した木構造チャートの記述方法をPA
Dチャートに対して拡張したが、他の木構造チャートに
対しても適用することができる。たとえば構造化フロー
チャート、SPDチャート、YACCチャート、HCP
チャートなどが考えられる。さらに上述の実施の形態で
はアセンブラ言語についてソースプログラムを生成する
場合について説明したが、アセンブラ言語以外の非構造
化言語にも適用することができる。
らアセンブラソースプログラム自動生成を行なうとき
に、CVUやアセンブラ言語に依存せずに同じ処理手順
を用いて自動生成を行なうために、基本となる命令参照
テーブルを定めたこのテーブルは、テーブルファイルと
して自動生成プログラムとは分離した形式にして、CP
Uやアセンブラ言語が変わるたびにメンテナンスができ
るようにしてもよいし、ソースプログラム中にデータテ
ーブルとして固定して持たせることにより、単一のCP
Uまたは言語の専用にしてもよい。
図である。
を示す図である。
す図である。
を示す図である。
す図である。
示す図である。
す図である。
図である。
である。
ャートを示す図である。
である。
す図である。
である。
である。
形式を示す図である。
アセンブラプログラム自動生成規則を示す図である。
の自動生成規則を示す図である。
ラムの自動生成規則を示す図である。
ラムの自動生成規則を示す図である。
の自動生成規則を示す図である。
の自動生成規則を示す図である。
の自動生成規則を示す図である。
の自動生成規則を示す図である。
ンブラソースプログラムの自動生成規則を示す図であ
る。
ブラソースプログラムの自動生成規則を示す図である。
ンブラソースソースプログラムの自動生成規則を示す図
である。
ステムのブロック図である。
テーブルを示す図である。
ム自動生成処理のメインプログラムフローチャートであ
る。
ローチャートである。
ローチャートである。
ある。
ログラムの自動生成サブルーチンのフローチャートであ
る。
アセンブラソースプログラム生成処理のサブルーチンの
フローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
ンブラソースプログラムの自動生成処理のサブルーチン
のフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
センブラソースプログラムの自動生成処理のサブルーチ
ンのフローチャートである。
ースプログラムに変換される木構造チャートの例を示す
図である。
チャート図である。
納形式を示す図である。
る。
納形式を簡略に示した図である。
グラムの自動生成の経過を示す図である。
グラムの自動生成の経過を示す図である。
グラムの自動生成の経過を示す図である。
グラムの自動生成の経過を示す図である。
グラムの自動生成の経過を示す図である。
ラムを示す図である。
拡張木構造チャートを示す図である。
木構造チャートを示す図である。
拡張木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
木構造チャートを示す図である。
構造チャートを示す図である。
木構造チャートを示す図である。
の一般形式を示す図である。
らのアセンブラソースプログラムの自動生成規則を示す
図である。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
らのアセンブラソースプログラムの自動生成規則を示す
図である。
らのアセンブラソースプログラムの自動生成規則を示す
図である。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
センブラソースプログラムの自動生成規則を示す図であ
る。
アセンブラソースプログラムの自動生成規則を示す図で
ある。
れるテーブルを示す図である。
ースプログラムに自動変換される木構造チャートの一例
を示す図である。
ースプログラムの自動生成処理のメインプログラムのフ
ローチャートである。
析処理のサブルーチンのフローチャートである。
析処理のサブルーチンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
構造からのアセンブラソースプログラムの自動生成処理
のサブルーチンのフローチャートである。
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
のアセンブラソースプログラムの自動生成処理のサブル
ーチンのフローチャートである。
のアセンブラソースプログラムの自動生成処理のサブル
ーチンのフローチャートである。
のアセンブラソースプログラムの自動生成処理のサブル
ーチンのフローチャートである。
からのアセンブラソースプログラムの自動生成処理のサ
ブルーチンのフローチャートである。
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
られるアセンブラソースプログラムを示す図である。
理に伴なう問題を指摘するための、木構造チャートの一
例を示す図である。
成されたアセンブラソースプログラムを示す図である。
ら、重複したラベルを削除したプログラムを示す図であ
る。
プログラムのうち、チャートボックス解析のサブルーチ
ンのフローチャートである。
プログラムのうち、チャートボックス解析のサブルーチ
ンのフローチャートである。
Claims (4)
- 【請求項1】 分岐に関するボックス中にソース行記述
を許し、かつ分岐に関する各ボックスに、対応する判断
条件の記述を許すように拡張された木構造チャートに基
づいて、任意のアセンブラ言語のソースプログラムを生
成するためのアセンブラ言語ソースプログラム生成装置
であって、 目的となるアセンブラ言語の命令の記述形式を、異なる
アセンブラ言語間で共通に定められた書式に従って記述
したテーブルを記憶するための記憶手段と、 木構造チャートを読込んで、アセンブラ言語の種類に依
存しない所定の変換手順に従ってアセンブラ言語のソー
スプログラムを生成するための手段とを含み、 前記生成するための手段は、あるボックスからのソース
プログラムの生成において、前記記憶手段に記憶された
前記テーブル内の命令の記述形式を参照し、かつ対応す
る前記ボックス内のソース行記述および判断条件の記述
に基づいて、前記目的となるアセンブラ言語に適合した
命令を生成する、アセンブラ言語ソースプログラム生成
装置。 - 【請求項2】 前記テーブルは、目的となるアセンブラ
言語の、相補的な条件判断命令の相互の関係をさらに記
述しており、 前記生成するための手段は、分岐を記述したボックスか
らのソースプログラムの生成において、前記記憶手段に
記憶された前記テーブル内の分岐命令の記述形式と、前
記相補的な条件判断命令の相互の関係の記述とを参照
し、かつ対応する前記ボックス内のソース行記述および
判断条件の記述に基づいて、利用可能な分岐命令を定め
ることにより、前記目的となるアセンブラ言語に適合し
た分岐命令を生成する、請求項1に記載のアセンブラ言
語ソースプログラム生成装置。 - 【請求項3】 ジャンプ命令に関するボックス内にLONG
JUMP 命令とSHORTJUMP命令との区別を記述することを
許し、かつ分岐に関するボックス中にソース行記述を許
すことにより、異なるアセンブラ言語について共通の形
式で記述できるように拡張された木構造チャートに基づ
いて、任意のアセンブラ言語のソースプログラムを生成
するためのアセンブラ言語ソースプログラム生成装置で
あって、 目的となるアセンブラ言語の命令の記述形式を、異なる
アセンブラ言語間で共通に定められた書式に従って記述
したテーブルを記憶するための記憶手段を含み、 前記テーブルは、LONG JUMP 命令とSHORT JUMP命令とを
別個のものとして記憶しており、 前記アセンブラ言語ソースプログラム生成装置は、 木構造チャートを読込んで、アセンブラ言語の種類に依
存せず、かつ、LONG JUMP 命令とSHORT JUMP命令とを区
別する所定の変換手順に従ってアセンブラ言語のソース
プログラムを生成するための手段をさらに含み、 前記生成するための手段は、あるボックスからのソース
プログラムの生成において、前記記憶手段に記憶された
前記テーブル内の命令の記述形式を参照し、かつ対応す
る前記ボックス内のソース行記述とLONG JUMP 命令およ
びSHORT JUMP命令の区別に関する記述に基づいて、前記
目的となるアセンブラ言語に適合した命令を生成する、
アセンブラ言語ソースプログラム生成装置。 - 【請求項4】 条件判断に関するボックス中にソース行
記述を許し、かつ条件判断に関するボックスに対する判
断条件の記述を各ボックスに許すように拡張された木構
造チャートに基づいて、任意のアセンブラ言語のソース
プログラムを生成するためのアセンブラ言語ソースプロ
グラム生成装置であって、 目的となるアセンブラ言語の命令の記述形式を、異なる
アセンブラ言語間で共通に定められた書式に従って記述
したテーブルを記憶するための記憶手段と、 木構造チャートを読込んで、アセンブラ言語の種類に依
存しない所定の変換手順に従ってアセンブラ言語のソー
スプログラムを生成するための手段とを含み、 前記生成するための手段は、あるボックスからのソース
プログラムの生成において、ソースプログラム中にラベ
ルを生成することがあり、 前記アセンブラ言語ソースプログラム生成装置はさら
に、 前記生成するための手段によってソースプログラム中に
重複して生成される複数個のラベルを検出するための重
複ラベル検出手段と、 前記重複ラベル検出手段により検出された重複して生成
される複数個のラベルのうち、あるものを残して他を削
除するためのラベル削除手段とを含む、アセンブラ言語
ソースプログラム生成装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08834696A JP3368141B2 (ja) | 1996-04-10 | 1996-04-10 | アセンブラ言語ソースプログラム生成装置 |
EP97105774A EP0801346B1 (en) | 1996-04-10 | 1997-04-08 | Retargetable device for generating assembly-language programs from extended tree structure diagrams |
US08/833,644 US6061514A (en) | 1996-04-10 | 1997-04-08 | Device for generating source programs of multiple kinds of assembler languages from extended tree structure chart by applying the same source generation rules |
CN97110517A CN1107908C (zh) | 1996-04-10 | 1997-04-10 | 汇编语言源程序生成方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08834696A JP3368141B2 (ja) | 1996-04-10 | 1996-04-10 | アセンブラ言語ソースプログラム生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09282176A JPH09282176A (ja) | 1997-10-31 |
JP3368141B2 true JP3368141B2 (ja) | 2003-01-20 |
Family
ID=13940288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08834696A Expired - Fee Related JP3368141B2 (ja) | 1996-04-10 | 1996-04-10 | アセンブラ言語ソースプログラム生成装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6061514A (ja) |
EP (1) | EP0801346B1 (ja) |
JP (1) | JP3368141B2 (ja) |
CN (1) | CN1107908C (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19817617C1 (de) * | 1998-04-21 | 1999-09-09 | Deutsche Telekom Mobil | Verfahren zur Konvertierung baumstrukturierter Daten |
US6973639B2 (en) * | 2000-01-25 | 2005-12-06 | Fujitsu Limited | Automatic program generation technology using data structure resolution unit |
GB2366402A (en) | 2000-08-30 | 2002-03-06 | Ibm | Syntax validation using syntax trees |
US6986122B2 (en) * | 2001-06-07 | 2006-01-10 | International Business Machines Corporation | IF statement having an expression setup clause to be utilized in structured assembly language programming |
US7036117B2 (en) | 2001-08-24 | 2006-04-25 | International Business Machines Corporation | Optimal code generation for structured assembly language expressions |
US7458068B2 (en) * | 2002-10-09 | 2008-11-25 | Raytheon Company | Vertical requirements development system and method |
US7305655B2 (en) * | 2002-10-09 | 2007-12-04 | Raytheon Company | Vertical requirements development system and method |
US7111287B2 (en) * | 2003-01-10 | 2006-09-19 | International Business Machines Corporation | Global processor resource assignment in an assembler |
US7506320B2 (en) | 2004-09-09 | 2009-03-17 | International Business Machines Corporation | Generating sequence diagrams using call trees |
US8209662B2 (en) | 2006-12-04 | 2012-06-26 | Microsoft Corporation | Application retargeting |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0640302B2 (ja) * | 1984-01-30 | 1994-05-25 | 株式会社日立製作所 | 図式・ソ−スプログラム自動生成方法 |
US4860204A (en) * | 1987-02-05 | 1989-08-22 | Softron, Inc. | Computer based workstation for development of graphic representation of computer programs |
JPH0298731A (ja) * | 1988-10-05 | 1990-04-11 | Kobe Steel Ltd | プログラムコード生成装置 |
JPH07107667B2 (ja) * | 1989-03-10 | 1995-11-15 | 株式会社日立製作所 | プログラム自動生成方法 |
US5761508A (en) * | 1992-01-31 | 1998-06-02 | Asahi Kasei Kogyo Kabushiki Kaisha | Information processing system and method applied to the development of computer programs |
CA2134059C (en) * | 1993-10-29 | 2009-01-13 | Charles Simonyi | Method and system for generating a computer program |
US5854929A (en) * | 1996-03-08 | 1998-12-29 | Interuniversitair Micro-Elektronica Centrum (Imec Vzw) | Method of generating code for programmable processors, code generator and application thereof |
-
1996
- 1996-04-10 JP JP08834696A patent/JP3368141B2/ja not_active Expired - Fee Related
-
1997
- 1997-04-08 EP EP97105774A patent/EP0801346B1/en not_active Expired - Lifetime
- 1997-04-08 US US08/833,644 patent/US6061514A/en not_active Expired - Lifetime
- 1997-04-10 CN CN97110517A patent/CN1107908C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0801346B1 (en) | 2001-07-04 |
JPH09282176A (ja) | 1997-10-31 |
US6061514A (en) | 2000-05-09 |
EP0801346A1 (en) | 1997-10-15 |
CN1167297A (zh) | 1997-12-10 |
CN1107908C (zh) | 2003-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3368141B2 (ja) | アセンブラ言語ソースプログラム生成装置 | |
JP3327818B2 (ja) | プログラム変換装置及び記録媒体 | |
JPH07234790A (ja) | プログラム変換処理装置およびプログラム変換処理方法 | |
US6360355B1 (en) | Hardware synthesis method, hardware synthesis device, and recording medium containing a hardware synthesis program recorded thereon | |
US5822592A (en) | Method and system for determining source code location | |
US7539983B2 (en) | Tool for processing software programs using modified live-ness definition | |
EP0692115B1 (en) | System for conversion of loop functions to continuation-passing style | |
JP2002527816A (ja) | プログラム最適化装置および方法 | |
US5758164A (en) | Method and system for processing language | |
JPH11272503A (ja) | プログラムのテストデータ自動生成装置 | |
Barnard et al. | Hierarchic syntax error repair for LR grammars | |
JP7468209B2 (ja) | プログラム生成装置、プログラム生成方法及びプログラム | |
CN112825031B (zh) | 基于json格式的流程描述方法及装置 | |
JP2001265605A (ja) | コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム | |
JP2008084261A (ja) | プログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラム | |
JP2000194569A (ja) | コンパイル装置、コンパイル方法、コンパイルプログラムを格納したコンピュ―タ読み取り可能な記録媒体および目的プログラムを格納したコンピュ―タ読み取り可能な記録媒体 | |
JP3637606B2 (ja) | データ処理装置 | |
JP3036900B2 (ja) | アセンブラ処理装置 | |
JPH05158706A (ja) | 中間言語の最適化処理方式 | |
JP2000194567A (ja) | コンパイル装置、コンパイル方法、コンパイルプログラムを格納したコンピュ―タ読み取り可能な記録媒体および目的プログラムを格納したコンピュ―タ読み取り可能な記録媒体 | |
JP2003050700A (ja) | プログラム変換方法 | |
JPWO2020110249A1 (ja) | 対話装置、対話方法、及び対話プログラム | |
JP2006344097A (ja) | if文を編集するプログラムおよびif文を編集する方法 | |
CN115421702A (zh) | 一种动态表单实现代码开发的方法 | |
JPH0157815B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20021022 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081108 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091108 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091108 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101108 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111108 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111108 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121108 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |