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
Application number
JP08834696A
Other languages
English (en)
Other versions
JPH09282176A (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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP08834696A priority Critical patent/JP3368141B2/ja
Priority to EP97105774A priority patent/EP0801346B1/en
Priority to US08/833,644 priority patent/US6061514A/en
Priority to CN97110517A priority patent/CN1107908C/zh
Publication of JPH09282176A publication Critical patent/JPH09282176A/ja
Application granted granted Critical
Publication of JP3368141B2 publication Critical patent/JP3368141B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S715/00Data processing: presentation processing of document, operator interface processing, and screen saver display processing
    • Y10S715/961Operator interface with visual structure or function dictated by intended use
    • Y10S715/965Operator interface with visual structure or function dictated by intended use for process control and configuration
    • Y10S715/966Computer process, e.g. operation of computer
    • Y10S715/967Visual or iconic programming

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本願発明は、コンピュータお
よびマイクロコンピュータのソフトウェア開発用のCA
SE(Computer Aided Software Engineering )ツール
に関し、特に、構造化マクロ言語や木構造チャートか
ら、アセンブラ言語またはジャンプ命令を持つプログラ
ム言語のソースプログラムを自動生成するための装置に
関する。
【0002】
【従来の技術】図1に、従来の木構造チャートの1種で
あるPAD(Problem Analysis Diagram)チャートの記
述例を示す。なお以下本願発明の明細書では、チャート
とは一般的に木構造チャートを示し、リストとはプログ
ラムのソース行を指すものとする。また、条件1、条件
2などはアセンブラ言語で条件判断に用いるフラグの状
態を表わす。
【0003】図1のPADチャートは11個のボックス
300、302、304、306、308、310、3
12、314、316、318および320からなって
いる。PADチャートの実行順序は上から下へであり、
具体的処理のアルゴリズムは一連のボックス中に記述さ
れる。
【0004】PADチャートにおいて、条件判断や繰返
しループなどのプログラム構造に対応して、専用のボッ
クスが定義されている。図1に示す例ではボックス30
6および312がその例である。これらの構造中のソー
ス行は、そのボックスの右側のボックスに階層的に記述
されるようになっている。すなわちボックス306の内
容はボックス310、312、314、316および3
18により記述され、ボックス312の内容はボックス
320に記述されている。
【0005】PADチャートの実行順序は上から下であ
り、ループやジャンプ構造が出現した場合にはその構造
の右側に記述されている一連のボックスをさらに上から
下に実行する。そしてその一連のボックスの実行が終了
したら、元に戻ってその構造のさらに下方に実行を続け
る。そして、チャートの最も下に達したら実行を終了す
る。
【0006】図2は従来のPADチャートにおけるif t
hen else構造の記述例である。以下、PADチャートに
ついて説明する。また図2を含め以下では、チャートの
右下部分に各構造の図式ファイルの内部記憶形式を示
す。
【0007】図2を参照して、if then else構造のボッ
クス中には条件1を記述し、条件1が真であればチャー
トBを実行し、条件1が偽であればチャートCを実行し
た後、プログラムの実行をさらに下に移す。図2におい
て、条件1のボックスの上下に「(真)」「(偽)」を
表記しているが、これは暗黙の宣言として上側が条件1
=真、下側が条件1=偽のときに実行されることを示し
ている。したがって実際にはこの表記はチャート上には
行なわれていない。
【0008】図3(A)に示される構造の場合には、条
件1=真の場合についてチャートBを実行するが、条件
1=偽の場合には何も実行されない。図3(B)の場合
には、条件1=真の場合には何も実行されず、条件1=
偽の場合にチャートCが実行される。
【0009】図3(A)(B)の両方の場合とも、if t
hen 構造の実行が終了すると、プログラムの実行はさら
に下に移る。
【0010】図4はrepeat until構造の記述例である。
この構造では、まずチャートBを実行し、その後で条件
1についてその真偽を判断する。条件1=偽なら再度チ
ャートBを実行し、条件1=真ならrepeat until構造を
終了してプログラムの実行をさらに下に移す。
【0011】図5はdo while構造の記述例である。図5
には(A)および(B)の2通りの記述例を示す。この
2つの記述例の違いはdo while構造ボックスの左側に縦
線を入れるか、右側に縦線を入れるかのボックスの表現
方法の違いだけであり、実際のプログラムの実行順序に
は相違はない。do while構造ではまず、条件2の真偽の
判断を行なう。条件2=真ならばチャートBを実行し再
び先頭に戻り条件2の判断を行なう。条件2=偽の場合
にはチャートBを実行せずにdo while構造を終了してプ
ログラムの実行をさらに下に移す。図5が図4と異なる
のは、図4では必ず最初に少なくとも一度だけチャート
Bが実行されるのに対し、図5ではチャートBが全く実
行されない場合もあり得るということである。
【0012】図6はN+1/2 構造の記述例である。この構
造はループ内からの途中脱出を含んでいる。この構造で
はまず、チャートBを実行し、その次に条件1の真偽を
判断する。ここで条件1=真ならN+1/2 構造を終了し、
条件1=偽ならチャートCを実行して再びチャートBの
実行に戻る。N+1/2 構造を終了したら、プログラムの実
行はさらに下に移る。
【0013】図7はジャンプ構造の記述例である。この
構造は、プログラム内のラベルAに無条件にジャンプす
る。
【0014】図8はラベル構造である。この構造は、プ
ログラム中の位置を示すラベル名を定義する。
【0015】図9は順次処理構造の記述例である。この
構造は、条件判断やジャンプなどを伴わない処理を記述
するために使用する。
【0016】以上、一般の木構造チャートではジャンプ
構造やループ構造は図式として表現されており、これら
ジャンプ、ループ図式のためのボックス中には、判断条
件のみが記述される。
【0017】
【発明が解決しようとする課題】しかし、アセンブラ言
語の場合には、条件判断部とその判断結果を用いたジャ
ンプ命令とが、ソースの離れた位置に存在したり、複数
行にわたる場合がしばしばある。そのため、従来の木構
造チャートのようにボックス中に判断条件のみ記述する
ことしか許されていない場合、あえてアセンブラ言語で
木構造チャートを記述すると不自然さが目立つという問
題点があった。
【0018】一方、アセンブラ言語に固有の問題として
以下のような問題がある。FORTRAN,C, BASIC, PASCAL,
COBOL等の言語では、文法・表記法が標準化および構造
化されている。そのため木構造チャートからこれらの言
語のソースリストを生成するのは、各言語に応じた専用
アルゴリズムを用いれば比較的簡単に行なえる。しか
し、マイクロコンピュータ開発に使用されるアセンブラ
言語は、CPUの種類によって、表記方法やコマンドの
種類が千差万別であって、統一された言語体系というも
のがない。CPUごとにハードウェアが異なるため、共
通化できない命令、フラッグまたはレジスタなどが多数
存在する。そのため、マイクロコンピュータで実行させ
るべきプログラムを木構造チャートで表現しようとする
と、CPUによって異なった表現を使用せざるを得な
い。そのため、こうした木構造チャートからアセンブラ
言語のソースリストを自動的に生成するためには、各C
PU専用のソース自動生成処理系を作る必要があり、効
率的とは言えないという問題点があった。
【0019】またマイクロコンピュータ開発に使用され
るアセンブラ言語では、相補的な条件判断命令のうち双
方を備えたアセンブラ言語体系もあれば、一方しかない
アセンブラ言語もある。これらはCPUの種類によって
千差万別である。そのためこうしたCPUの相違にかか
わらず木構造チャートからソースリストを自動生成する
のは困難であり、各CPU専用の処理系が必要であっ
た。この点でも、従来はアセンブラ言語のソースプログ
ラムを生成するのは非効率的であった。
【0020】また、アセンブラ言語を用いて記述された
木構造チャートからアセンブラソースを自動生成するた
めには、上に述べたようにCPUごとにアセンブラソー
ス自動生成処理系を設計しなくてはならない。そのた
め、CPUが異なると、同じ処理でも別のアセンブラソ
ース自動生成処理系を設計し直さなくてはならず、この
点でも非効率的であった。
【0021】また、CPUによっては、全アドレス空間
にジャンプ可能な命令(LONG JUMP命令と呼ぶ)と、プ
ログラムカウンタの前後128バイト程度しかジャンプ
できない命令(SHORT JUMP命令と呼ぶ)との2種類のジ
ャンプ命令が用意されているものがある。一般にSHORT
JUMP命令は、LONG JUMP 命令よりもバイト数が少なく、
実行も速い。またプログラムサイズが小さくなるという
利点がある。したがってこれら命令を区別するアセンブ
ラ言語では、そのプログラムサイズも小さくなり、実行
も改善される。
【0022】しかし、従来述べた木構造チャートでは、
アセンブラ言語に対応したこのようなジャンプ命令の区
別を表現する方法がなかったので、木構造チャートから
こうした命令を区別したアセンブラ言語のソースリスト
の自動生成を行なうことは極めて困難であった。そうし
た手段の一例としてはたとえば、LONG JUMP 命令および
SHORT JUMP命令を、ソースプログラムの命令のバイト数
から自動的に判断するような処理系を作成することが考
えられる。しかしながら、既に述べたように各CPUご
とにこのような区別をする処理系を作成することは非効
率的であり、実際上採用することはできないという問題
がある。
【0023】また、一般にソースプログラムを自動生成
する場合、自動生成のアルゴリズム上でソースリスト中
にラベルが重複して生成される場合が多々あった。この
ようにラベルが重複して生成されるとプログラムサイズ
が大きくなるだけではなく、プログラムの理解を困難と
するという問題点があった。
【0024】それゆえに請求項1に記載の発明の目的
は、CPUの種類にかかわらず、同一の木構造チャート
からさまざまなCPUのためのアセンブラ言語に対応し
たアセンブラ言語ソースプログラムを作成することがで
きる装置を提供することである。
【0025】請求項2に記載の発明の目的は、さらに、
アセンブラ言語の命令体系に、相補的な条件判断命令の
双方とも備えられているか、一方しか備えられていない
かにかかわらず、同一の木構造チャートから種々のアセ
ンブラ言語に対応したソースプログラムを生成すること
ができる装置を提供することである。
【0026】請求項3に記載の発明の目的は、LONG JUM
P 命令とSHORT JUMP命令とが準備されたアセンブラ言語
ではそれらを有効に活用し、かつ種々のアセンブラ言語
に対応して同一の木構造チャートからソースプログラム
を生成することができる装置を提供することである。
【0027】請求項4に記載の発明の目的は、生成され
るソースプログラム中に、重複したラベルが存在しない
ようにし、それによってソースリストの理解を容易にす
ることができるソースプログラム生成装置を提供するこ
とである。
【0028】
【課題を解決するための手段】請求項1に記載の発明に
係るアセンブラ言語ソースプログラム生成装置は、分岐
に関するボックス中にソース行記述を許し、かつ分岐に
関する各ボックスに、対応する判断条件の記述を許すよ
うに拡張された木構造チャートに基づいて、任意のアセ
ンブラ言語のソースプログラムを生成するためのもので
ある。この装置は、目的となるアセンブラ言語の命令の
記述形式を、異なるアセンブラ言語間で共通に定められ
た書式に従って記述したテーブルを記憶するための記憶
手段と、木構造チャートを読込んで、アセンブラ言語の
種類に依存しない所定の変換手順に従ってアセンブラ言
語のソースプログラムを生成するための手段とを含む。
生成するための手段は、あるボックスからのソースプロ
グラムの生成において、前記記憶手段に記憶された前記
テーブル内の命令の記述形式を参照し、かつ対応するボ
ックス内のソース行記述および判断条件の記述に基づい
て、目的となるアセンブラ言語に適合した命令を生成す
る。
【0029】この発明によれば、目的となるアセンブラ
言語の命令の記述形式を、異なるアセンブラ言語間で共
通に定められた書式でテーブル化する。そしてアセンブ
ラ言語の種類に依存しない所定の変換手順に従って木構
造チャートからアセンブラ言語のソースプログラムを生
成する際に、このテーブルを参照することによって、異
なるアセンブラ言語に適合した形式でソースプログラム
を生成する。テーブルをメンテナンスすることで、異な
るCPUに対応した各種のアセンブラ言語に適合したソ
ースプログラムを、同一の木構造チャートから、かつ共
通のソース生成規則を用いて生成することができる。
【0030】請求項2に記載のアセンブラ言語ソースプ
ログラム生成装置は、請求項1に記載の装置であって、
前記テーブルは、目的となるアセンブラ言語の、相補的
な条件判断命令の相互の関係をさらに記述している。そ
して、生成するための手段は、分岐を記述したボックス
からのソースプログラムの生成において、記憶手段に記
憶されたテーブル内の分岐命令の記述形式と、相補的な
条件判断命令の相互の関係の記述とを参照し、かつ対応
するボックス内のソース行記述および判断条件の記述に
基づいて、利用可能な分岐命令を定めることにより、目
的となるアセンブラ言語に適合した分岐命令を生成す
る。
【0031】異なるCPUに対応した異なるアセンブラ
言語体系で、相補的な条件判断命令のうちの一方がない
場合にも、テーブルを参照することにより代替の条件判
断命令を見出すことができる。そのため、アセンブラ言
語が、相補的な条件判断命令の一方しか持たないか双方
とも持つかにかかわらず、同一の木構造チャートから、
共通のソース生成規則を用いて、アセンブラ言語ソース
プログラムを生成することが可能である。
【0032】請求項3に記載の発明に係るアセンブラ言
語ソースプログラム生成装置は、ジャンプ命令に関する
ボックス内にLONG JUMP 命令とSHORT JUMP命令との区別
を記述することを許し、かつ分岐に関するボックス中に
ソース行記述を許すことにより、異なるアセンブラ言語
について共通の形式で記述できるように拡張された木構
造チャートに基づいて、任意のアセンブラ言語のソース
プログラムを生成するための装置である。この装置は、
目的となるアセンブラ言語の命令の記述形式を、異なる
アセンブラ言語間で共通に定められた書式に従って記述
したテーブルを記憶するための記憶手段を含む。このテ
ーブルは、LONG JUMP 命令とSHORT JUMP命令とを別個の
ものとして記憶している。アセンブラ言語ソースプログ
ラム生成装置は、木構造チャートを読込んで、アセンブ
ラ言語の種類に依存せず、かつ、LONG JUMP 命令とSHOR
T JUMP命令とを区別する所定の変換手順に従ってアセン
ブラ言語のソースプログラムを生成するための手段をさ
らに含む。生成するための手段は、あるボックスからの
ソースプログラムの生成において、記憶手段に記憶され
たテーブル内の命令の記述形式を参照し、かつ対応する
ボックス内のソース行記述とLONG JUMP 命令およびSHOR
T JUMP命令の区別に関する記述とに基づいて、目的とな
るアセンブラ言語に適合した命令を生成する。
【0033】異なるCPUに対応して、LONG JUMP 命令
およびSHORT JUMP命令の区別があるアセンブラ言語体系
や、そうした区別がないアセンブラ言語体系がある。本
発明によれば、LONG JUMP 命令およびSHORT JUMP命令の
区別を木構造チャートで記述可能なため、LONG JUMP 命
令およびSHORT JUMP命令の区別がある場合には、テーブ
ルを参照することによりそれらを区別して使用して適切
なソースプログラムを作成できる。また、LONG JUMP 命
令およびSHORT JUMP命令の区別がないアセンブラ言語の
場合にも、テーブルを参照して代替の命令を見出すこと
ができる。そのため、アセンブラ言語が、LONG JUMP 命
令およびSHORT JUMP命令の区別を持つか否かにかかわら
ず、同一の木構造チャートから、共通のソース生成規則
を用いて、ソースプログラムを生成することが可能であ
る。
【0034】請求項4に記載の発明に係るアセンブラ言
語ソースプログラム生成装置は、条件判断に関するボッ
クス中にソース行記述を許し、かつ条件判断に関するボ
ックスに対する判断条件の記述を各ボックスに許すよう
に拡張された木構造チャートに基づいて、任意のアセン
ブラ言語のソースプログラムを生成するための装置であ
る。この装置は、目的となるアセンブラ言語の命令の記
述形式を、異なるアセンブラ言語間で共通に定められた
書式に従って記述したテーブルを記憶するための記憶手
段と、木構造チャートを読込んで、アセンブラ言語の種
類に依存しない所定の変換手順に従ってアセンブラ言語
のソースプログラムを生成するための手段とを含む。生
成するための手段は、あるボックスからのソースプログ
ラムの生成において、ソースプログラム中にラベルを生
成することがある。アセンブラ言語ソースプログラム生
成装置は、さらに、生成するための手段によってソース
プログラム中に重複して生成される複数個のラベルを検
出するための重複ラベル検出手段と、重複ラベル検出手
段により検出された重複して生成される複数個のラベル
のうち、あるものを残して他を削除するためのラベル削
除手段とを含む。
【0035】本発明によれば、木構造チャートからのア
センブラ言語ソースプログラムの生成において、自動生
成に起因して複数のラベルが重複して生成される場合、
それらが検出されて、重複するラベルが削除される。し
たがって、最終的に生成されるソースリストは簡略とな
り、その理解は容易になる。
【0036】
【発明の実施の形態】
第1の実施形態 本発明に係る装置について説明する前に、本装置におい
て使用される木構造チャートの表記方法について図10
〜図14を参照して説明する。この表記方法の特徴とし
て、条件判断ボックス中にプログラムリストを記述する
ことを許すとともに、ボックス外の適切な位置に、分岐
のための判断条件を記述するようにしている。以下図1
0〜図14を参照して各構造について説明する。なお、
分岐条件としては、C(キャリ、桁溢れ)、NC(ノン
キャリ)、Z(ゼロ)、NZ(非ゼロ)等の判断条件が
考えられる。
【0037】図10にif then else構造の記述例を示
す。図10に示すように、条件判断ボックス中にはプロ
グラムリストAを記述でき、複数行にわたる条件判断プ
ログラムを記述することができる。また、図10に示さ
れるように、条件判断ボックスの上下に分岐条件「条件
1」、「条件2」を記述することを許している。なお、
これら図面では、各チャートに対応して、その右下に各
チャートの内部記憶形式を示している。
【0038】図10に示した例では、リストAを実行し
た結果、条件1が真であればチャートBを実行し、条件
2が真であればチャートCを実行する。このif then el
se構造の実行を終了したら、プログラムの実行はさらに
下に移る。このように条件判断ボックス内にリストAの
記述を許すようにしたことにより、従来は判断ボックス
では真偽の判断しか行なえなかったのに対し、この表記
方法ではボックス自体に判断機能を持たせることができ
るようになったと考えられる。
【0039】また、図10に示される条件1と条件2と
は、互いに相補的な条件であると考えられる。このよう
な条件を互いに逆条件の関係にあると呼ぶことにする。
2つの条件が逆条件の関係にあれば、一方の条件(たと
えば条件1)さえ記述してあれば、他方(たとえば条件
2)の条件記述を省略しても条件1=偽の場合として処
理することができる。
【0040】図11にif then 構造の記述例を示す。図
11(A)(B)に、if then 構造の異なる表記形態を
示すが、それらが表わすアルゴリズムは同じである。図
11(A)または(B)を参照して、まず条件判断ボッ
クス中のリストAを実行した後、条件1=真であればチ
ャートBを実行する。条件2=真(条件1=偽と同じ意
味)の場合には何も実行せずにif then 構造を終了し、
プログラムの実行をさらに下に移す。
【0041】図12にrepeat until構造の記述例を示
す。本構造では、条件判断ボックス内にリストAを記述
できるようにするとともに、ボックスの左下にループ終
了条件を、ボックスの右下にループ継続条件をそれぞれ
記述するようにしている。図12に示される構造では、
チャートBを実行した後、リストAを実行する。そして
その結果条件1=真であればrepeat until構造を終了
し、条件2=真なら再びチャートBから実行する。この
構造の実行が終了したらプログラムの実行はさらに下に
移る。
【0042】図13はdo while構造の記述例である。図
13に示されるdo while構造では、条件判断ボックス内
にリストAを記述することを許し、ボックスの左下にル
ープ終了条件を、右下にループ継続条件をそれぞれ記述
するようにしている。図13に示される構造では、まず
リストAを実行し、その結果条件1=真ならdo while構
造を終了し、条件2=真ならチャートBを実行した後再
びリストAから実行する。本構造の実行が終了したらプ
ログラムの実行はさらに下に移る。
【0043】図14はN+1/2 構造の記述例である。本構
造では条件判断ボックス内にリストAを記述することを
許し、ボックスの左下にループ終了条件を、右下にルー
プ継続条件をそれぞれ記述するようにしている。図14
に示される記述例では、チャートBを実行した後リスト
Aを実行し、その結果条件1=真ならN+1/2 構造を終了
し、条件2=真ならチャートCを実行してその後チャー
トBを再び実行する。本構造が終了したら、プログラム
の実行はさらに下に移る。
【0044】このように、この新たな表記方法では、チ
ャートボックス外に判断条件を記述することを許してい
る。その結果判断ボックス内にソースリストを記述する
ことが可能となり、アセンブラ言語による木構造チャー
トの記述がしやすくなるとともに、後に述べるように同
一のプログラム生成系を用いて、種々のアセンブラ言語
に対するソースプログラム生成を行なうことが可能にな
った。
【0045】図15に、本願発明に従ってアセンブラソ
ースを自動生成するときに参照されるテーブルの一般形
式を示す。実際に使用するときには、このテーブルはテ
ーブルファイルまたは、プログラム中に固定的に組込ま
れた参照用のデータテーブルとして取扱われる。本発明
に従ったアセンブラ言語ソースプログラム自動生成装置
において、各種CPUに対応したさまざまなアセンブラ
言語には、このテーブル400をメンテナンスすること
によって対応することができる。
【0046】以下、図15に示されるテーブル400中
の記述規則について示す。図15に示されるテーブル4
00の第1行目は「HEADER: 」という記述の後に、アセ
ンブラ命令行の命令の前に挿入する行先頭文字列を定義
している。本文字列としては一般に、スペースまたはタ
グ文字が使用される。
【0047】第2行目は「COMMENT:」という記述の後
に、コメント行の先頭に使用されるべきコメント文字を
定義している。具体例としては「;」がある。
【0048】第3行目は「LABEL:」という記述の後に、
ラベル定義行でラベルシンボルの後に使用されるべき文
字列を定義している。本文字列には一般に「:」が使用
される。
【0049】第4行目および第5行目はそれぞれ、「JU
MP: 」という記述の後に、条件判断ジャンプ時に参照さ
れる条件判断ジャンプ命令と、逆条件判断ジャンプ命令
とに関する定義を行なっている。なおこの場合の逆条件
判断ジャンプ命令とは、条件判断ジャンプ命令の判断す
る条件の逆条件について判断を行なう命令のことを言
う。これら行の記述規則は以下のようになっている。す
なわち、まず「JUMP: 」という記述をした後ろに木構造
チャート上の条件表記、木構造チャート上の逆条件表
記、および条件が真の場合のアセンブラジャンプ命令、
という3つの文字列をこの順番で記述する、というもの
である。
【0050】図15において、第4行目および第5行目
は互いに逆条件の関係になっている。そして、第4行目
で条件1に関する一連の定義を、第5行目で条件2に関
する一連の定義をそれぞれ行なっている。
【0051】この第4行目および第5行目を組合せるこ
とにより、条件1=真に対応するジャンプ命令と、条件
1=偽に対応するアセンブラ条件命令とが次のようにし
て簡単に求められる。
【0052】条件1=真に対応するアセンブラジャンプ
命令は、第4行目の記述より文字列1であることは明ら
かである。
【0053】条件1=偽に対応するアセンブラジャンプ
命令は、次のようにして求められる。まず、第4行目の
記述より条件1の逆条件が条件2であることを求める。
次に、条件2に関し記述してある行をテーブルより検索
する。この場合、テーブル400の第5行目に条件2に
関する記述が発見される。条件2=真に対応するアセン
ブラジャンプ命令が文字列2であることは容易にわか
る。条件2=真と条件1=偽とは同じことであるので、
文字列2が、条件1=偽である場合のアセンブラジャン
プ命令であることが求められる。
【0054】このような「JUMP: 」で始まる行におい
て、文字列1または文字列2をヌル文字とした場合に
は、対応する命令がないことを表わすものとする。こう
すれば、文字列1または文字列2がヌル文字がどうかを
知ることにより、対応する命令がないかあるかを簡単に
定義したり参照したりすることができる。
【0055】図15のテーブル400の6行目に、絶対
ジャンプ命令の定義方法を示す。絶対ジャンプ命令は条
件を持たない命令である。したがって6行目に示すよう
に、条件表記と逆条件表記との双方をヌル文字とする。
これにより、条件を持たない絶対ジャンプ命令が文字列
3であることが示されている。
【0056】図10〜図14に示した木構造チャート
は、条件判断ボックスの中にリストを記述できるように
するとともに、条件判断ボックスの判断条件をそのボッ
クスの近傍に記述できるようにした点に特徴がある。本
明細書では、このような木構造チャートを拡張木構造チ
ャートと呼ぶことにする。
【0057】上述のように拡張された木構造チャートに
対して、図15に示したテーブル400の内容を用いる
と、拡張木構造チャートからアセンブラプログラムを生
成することができ、しかも種々のCPUに対して同一の
プログラム生成規則を用い、かつ図15に示すテーブル
400をCPUの種類に応じて変えることで、CPUに
対するアセンブラプログラムを生成することができる。
【0058】本実施の形態では、木構造チャートボック
ス中に記述されるリストなどの内容は、アセンブラ言語
命令の形式で記入されていることを前提とする。この場
合、図9に示したような順次処理については、そのまま
アセンブラソースに変換する。このとき、図4〜図8に
示される木構造チャートと、図10〜図14に示される
木構造チャートとを共に使用できるようにし、これらの
木構造はアセンブラジャンプ命令の必要な構造として、
最適なアセンブラジャンプ命令およびジャンプ先ラベル
名の自動生成により、各木構造の実行順序に応じたアセ
ンブラソースリストを生成できる規則を実現した。この
場合ソース生成規則は、木構造中に使用されている文字
と、図15のテーブルによって定義された文字列と、適
時自動生成されるラベル名とを組合せるような規則とし
た。したがって木構造チャートと、図15に示されるテ
ーブルとを与えられれば、ソース生成規則を適用してソ
ースプログラムを生成できる。
【0059】ラベル名については自動生成するが、以下
の実施形態では各チャートごとに適切な文字列の後ろに
連番を付けて生成される。ラベル名として採用される文
字列は任意であるが、わかりやすくするためには、その
チャートに付けられている名称を使用することが考えら
れる。
【0060】既に述べたように、本発明で使用する拡張
木構造チャートは、従来からも用いられていた図4〜図
9の記述形式と、図10〜図14の記述形式とを許して
いる。
【0061】なお、一般にアセンブラ言語では、ある条
件に対応したジャンプ命令が必ず存在するとは限らな
い。したがってアセンブラ言語がどのようなものであろ
うとも適切なソースプログラムを生成するためには、ソ
ース自動生成規則として、各チャートの条件分岐部で
は、どちらか一方の条件のみに注目し、その条件に対応
したアセンブラジャンプ命令が存在する場合と存在しな
い場合との2通りの場合を考慮している。発明の実施の
形態を述べる前に、各木構造に対してどのようにしてソ
ースプログラムを生成するか、についての規則の具体的
な例を説明する。
【0062】なお、以下の図中で「条件1 JUMP命令あ
り」とは「条件1=真でジャンプするアセンブラジャン
プ命令が存在する」ことを示す。また「条件1 JUMP命
令なし」とは、「条件1=真でジャンプするアセンブラ
ジャンプ命令が存在しない」ことを示す。
【0063】図16はif then else構造に対するソース
自動生成規則である。図16(A)はif then else木構
造であり、図16(B)はそのフローチャート表現であ
る。図16(C)および(D)は、それぞれ条件1JUMP
命令ありの場合と条件1JUMP命令なしの場合のソース自
動生成規則である。なお、条件1JUMP命令が存在するか
否かは、既に述べたように図15に示すテーブル400
の内容を参照することによって判別できる。
【0064】図16(C)についてまず説明する。この
ソース生成規則は、条件1=真に対応したアセンブラジ
ャンプ命令がある場合の生成規則である。図16(C)
の第1行目は、条件判断ボックス中のリストAをアセン
ブラ言語に置き換えたものを示している。リストAは一
般に、複数のアセンブラ命令行を含む。リストAをソー
スコード化するためには、各命令の先頭に、図15に示
したテーブル400中の「行先頭文字列」として定義さ
れた文字列を付加することにより達成できる。
【0065】図16(C)の第2行目は、条件1=真の
場合に、自動生成したラベル1までジャンプすることを
示すアセンブラジャンプ命令である。このアセンブラジ
ャンプ命令は、図15に示したテーブル400に示され
るように、適切なジャンプ命令の行に定義された文字列
1に、さらに自動生成されたラベル1を続けて記述する
ことにより得られる。
【0066】図16(C)の第3行目はコメント行であ
る。コメント行はコメント文字列のみからなり、プログ
ラムの適切な区切り行として使用される。
【0067】図16(C)の第4行目は条件2=真のと
きに実行されるチャートCのアセンブラソース自動生成
結果である。
【0068】第5行目は、チャートC実行後、if then
else構造の最後にジャンプするために生成される行であ
る。このジャンプ命令としては、図15のテーブル40
0の第6行目に示した絶対ジャンプ命令が用いられる。
飛び先としてはラベル2が自動生成され、この絶対ジャ
ンプ命令の後に付加される。
【0069】第6行目はコメント行である。第7行目は
条件1=真のときに実行するチャートBの先頭を示すラ
ベル行である。この行は、自動生成されたラベル1と、
この行がラベルであることを示すラベル文字列とからな
る。このラベル文字列は図15のテーブル400の第3
行目に示された形式により定義される。
【0070】図16(C)の第8行目は条件1=真のと
きに実行されるチャートBのアセンブラソース自動生成
結果である。第9行目は、if then else構造の実行の最
後の位置に生成されるラベル行である。このラベル名と
してはラベル2が自動生成され、さらにこの行がラベル
行であることを示すラベル文字列を含む。このラベル文
字列もまた、図15のテーブル400の第3行目に記載
された形式で定義される。
【0071】図16(D)は条件1=真に対応したアセ
ンブラジャンプ命令がない場合のソース生成規則を示
す。図16(D)が図16(C)と異なるのは、条件1
=真のアセンブラジャンプ命令を使用せずに、条件1=
偽と等価な条件2=真に対応したアセンブラジャンプ命
令を使用してソースリストを自動生成していることであ
る。これは、このように相補的な命令、すなわち逆条件
に対応したアセンブラジャンプ命令については、アセン
ブラ言語にかかわらず必ずそのいずれか一方が存在して
いることを利用している。
【0072】if then else構造は、図16(C)または
(D)のいずれか一方を使用すれば、対応のアセンブラ
ソースリストを自動生成することができる。図16
(C)(D)のいずれを使用するかは、条件1=真のと
きのJUMP命令が存在するか否かに基づいて判別すればよ
い。
【0073】図17は、if then 構造に対するソース自
動生成規則を示す。図17(A)および(B)はいずれ
もif then 木構造であり、図17(C)はそのフローチ
ャート表現である。すなわち図17(A)(B)はいず
れも、リストAを実行し、その結果条件1=真であれば
チャートBを実行し、条件2=真(条件1=偽)であれ
ば何もしないことを示す。
【0074】図17(D)および(E)はこのif then
木構造に対応したソース自動生成規則を示す。なお図1
7(A)および(B)は、if then 木構造の表現上のバ
リエーションをすべて記述するために、条件判断後に実
行される処理(チャートB)の木構造での位置を変えた
だけであり、アルゴリズム的には全く同一の処理を意味
する。
【0075】図17(D)および(E)に示されたソー
ス自動生成規則はそれぞれ、条件2=真に対応したアセ
ンブラジャンプ命令がある場合のソース生成規則と、条
件2=真に対応したアセンブラジャンプ命令がない場合
のソース生成規則とである。ソース生成規則中の各行の
記載の内容については、図16(C)(D)の各行と同
様であるため、これ以後の説明では、特別の場合を除き
繰返さないことにする。
【0076】図18および19は、repeat until構造に
対するソース自動生成規則である。図18は図12に示
した拡張木構造チャートに対応するものであり、図19
は図4に示した構造に対応する。
【0077】図18(A)のrepeat until構造は図18
(B)のフローチャートと等価である。条件2=真に対
応したアセンブラジャンプ命令がある場合には図18
(C)のソース自動生成規則を、条件2=真に対応した
アセンブラジャンプ命令がない場合には図18(D)に
示したソース自動生成規則を、それぞれ用いてアセンブ
ラソースを自動生成する。
【0078】図19(A)に示したrepeat until構造は
図19(B)のフローチャートと等価である。条件2=
真に対応したアセンブラジャンプ命令がある場合には図
19(C)に示したソース自動生成規則を用い、条件2
=真に対応したアセンブラジャンプ命令がない場合には
図19(D)に示したソース自動生成規則を用いてアセ
ンブラソースを自動生成する。図20および図21は、
do while構造に対応するソース自動生成規則である。図
20は図13に示した拡張された木構造チャートのdo w
hile構造に対応するものであり、図21は図5に示した
木構造チャートに対応したものである。
【0079】図20(A)に示したdo while構造は図2
0(B)のフローチャートと等価である。条件1=真に
対応したアセンブラジャンプ命令の有無に応じて、図2
0(C)または(D)に示すソース自動生成規則を用い
てアセンブラソースを自動生成する。
【0080】図21(A)および(B)はそれぞれ、図
5(A)および(B)に示した構造に対応しているが、
条件判断ボックスの形状が異なるのみで、そのアルゴリ
ズムはいずれも図21(C)に示したフローチャートと
等価である。条件1=真に対応したアセンブラジャンプ
命令の有無に応じて図21(D)または(E)に示した
ソース自動生成規則を用いてアセンブラソースを自動生
成する。
【0081】図22および図23は、N+1/2 構造に対応
したソース自動生成規則を示す。図22は図14に示し
た拡張木構造チャートでのN+1/2 構造に関するものであ
り、図23は図6に示した木構造チャートに対応したも
のである。
【0082】図22(A)に示したN+1/2 構造は図22
(B)のフローチャートと等価である。条件1=真に対
応したアセンブラジャンプ命令の有無に応じて図22
(C)または(D)に示した自動生成規則を用いてアセ
ンブラソースを自動生成する。
【0083】図23(A)に示したN+1/2 構造は図23
(B)のフローチャートと等価である。条件1=真に対
応したアセンブラジャンプ命令の有無に応じて図23
(C)または(D)に示したソース自動生成規則を用い
てアセンブラソースを自動生成する。
【0084】図24は図7に示したジャンプ構造に関す
るソース自動生成規則を示す。本構造は無条件にジャン
プする。そのため図15のテーブル400の第6行目に
記載された形式で定義される絶対ジャンプ命令を使用す
る。すなわち、絶対ジャンプ命令の行に提示された文字
列3を用いて図24(B)に示されるようにジャンプ命
令行およびコメント行を生成する。
【0085】図25はラベル構造に関するソース自動生
成規則を示す。このラベル構造は図8に示したラベル構
造に対応したものである。なお図25(A)ではラベル
Aの上下にチャートBおよびチャートCが存在する場合
を示した。ソース自動生成においては、図25(B)に
示すようにチャートBの解析結果とチャートCの解析結
果との間にラベル行が挿入される。このラベル行は、図
24に示したジャンプ構造のジャンプ先を記述するため
に用いられる。
【0086】図26は既に述べたような順次処理構造に
関するソース自動生成規則を示す。この順次処理構造は
図9に示した構造に対応する。この場合のソース自動生
成規則は図26(B)に示すように、リストAに対して
その先頭に図15のテーブル400の第1行目の形式に
よって定義される行先頭文字列を付加した行とコメント
文字からなるコメント行とを含む。
【0087】以上の拡張された木構造チャートから、テ
ーブルを用いて、既に述べたようなソース自動生成規則
を使用してアセンブラソースプログラムを自動生成する
装置の実施の形態について以下説明する。なお、以下に
述べる処理は計算機上でのソフトウェアとして実現さ
れ、その処理についてフローチャートとして示すが、こ
れら処理の一部は再帰呼出を許す構造となっているもの
とする。
【0088】図27に、この装置が実現される典型的な
計算機システムの構成を示す。図27を参照して、この
システムはCPU(中央処理装置)、主記憶、入出力制
御装置などを含むホスト計算機410と、このホスト計
算機410に接続されたプリンタ412、ファイル装置
414およびCRT(Cathode Ray Tube)端末416と
を含む。ホスト計算機410としては、典型的な構成の
コンピュータを用いることができる。ファイル装置41
4は、木構造チャートを図式ファイルとして記憶した
り、生成されるソースファイルを記憶したりするための
ものである。なお、アセンブラ言語に対応した変換のた
めのテーブルは、たとえばファイル装置414に保存さ
れてホスト計算機410のメモリ上に読出されて利用さ
れてもよいし、ソフトウェア中に固定されたテーブルと
して準備されてもよい。
【0089】図28に、典型的なマイクロコンピュータ
としてZ−80と呼ばれるマイクロコンピュータに対応
したアセンブラ言語のソースプログラム生成用のテーブ
ル420を示す。Z−80は典型的な8ビット汎用CP
Uであって、その命令体系についてはよく知られてい
る。
【0090】図28に示すテーブル420の第1行目は
コメント行であって、ソース自動生成には特に関係しな
い。第2行目はアセンブラコマンド行の先頭に挿入され
る行先頭文字列である。本実施例では文字列として8個
の空白が使用される。
【0091】第3行目はコメント行の先頭に付加するコ
メント文字を定義している。本実施例では4個の空白を
使用している。第4行目はラベル行においてラベルの後
に付加する文字列を定義する。本実施例では「:」を使
用している。
【0092】第5行目から第15行目は、一連の条件分
岐に関するジャンプ命令を定義している。第5行目はジ
ャンプ命令「 JR 」を定義している。条件お
よび逆条件の双方ともヌル文字が定義されている。した
がってこのジャンプ命令「JR 」は絶対ジャンプ命令
である。
【0093】第6行目と第7行目は条件フラグ「C」
(キャリー)に関する条件分岐命令を定義している。条
件「C」と「NC」とは逆条件の関係にある。ここで
は、C=真ならジャンプ命令「 JR C,」を採
用し、NC=真ならジャンプ命令「 JR NC,」
を採用するものとする。
【0094】第8行目と第9行目とは条件フラグ「Z」
(ゼロ)に関する条件分岐命令を定義している。条件
「Z」と条件「NZ」(非ゼロ)とは逆条件の関係にあ
る。ここでは、Z=真ならジャンプ命令「 JR
Z,」を採用し、NZ=真ならジャンプ命令「
JR NZ,」を採用するものとする。
【0095】第10行目と第11行目とは、条件フラグ
「PO」、「PE」に関する条件分岐命令を定義してい
る。条件「PO」と条件「PE」とは逆条件の関係にあ
る。ここでは、PO=真ならジャンプ命令「 JP
PO,」を採用し、PE=真ならジャンプ命令「
JP PE,」を採用する。
【0096】第12行目と第13行目とは条件フラグ
「P」、「M」に関する条件分岐命令を定義している。
条件「P」と条件「M」とは逆条件の関係にある。ここ
では、P=真ならジャンプ命令「 JP P,」を
採用し、M=真ならジャンプ命令「 JP M,」
を採用する。
【0097】第14行目と第15行目とは条件「B--=0
」、「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」=真」を示す条件記述である。
【0098】図29〜図39に、図27のホスト計算機
410上で実行される、アセンブラソースプログラム自
動生成のためのソフトウェアのフローチャートを示す。
なお本実施の形態では、上に述べたようにZ−80につ
いてのアセンブラソースプログラムを生成するが、図2
9〜図39のフローチャートは、対象となるアセンブラ
言語の種類に依存しない。単に図28に示すテーブル4
20を、他のアセンブラ言語に対応したテーブルと置換
するだけでよい。以下、図29〜図39に示したフロー
チャートについて説明する。なおこのフローチャート
は、図16〜図26に示したソースプログラム自動生成
規則を実現するものである。
【0099】図29を参照して、自動生成アルゴリズム
のメインプログラムでは、まずステップB1で初期化処
理を行なう。初期化処理では、木構造チャートの各ボッ
クス要素を指し示すポインタや、出力されるソースプロ
グラム部のポインタなど、さまざまな変数の初期設定が
行なわれる。
【0100】続いてステップB2で、自動生成したソー
スプログラムを一時的に記憶するためのソースバッファ
を確保する処理が行なわれる。
【0101】続いてステップB3で、図式ファイルの形
式でファイル装置に蓄えられている木構造チャートのチ
ャート名情報を読出す。この場合、どの木構造チャート
を変換するかは、たとえば画面上に表示された木構造チ
ャート名のリストのうち、所望の1つをマウスポインタ
などで選択することにより指定できる。読出されたチャ
ート名は、生成されるアセンブラソースで使用されるラ
ベル名文字列として記憶される。
【0102】続いてB4で、記憶したラベル名文字列
を、生成されるプログラム文字列の先頭ラベル名として
ソースバッファに出力する。さらにB5で、木構造チャ
ートの要素を指し示すポインタを、木構造チャートの最
初のボックスに進める。この場合の最初のボックスと
は、チャート名情報の直後に記憶されているボックスで
ある。
【0103】続いてB6で、実際に木構造チャートから
アセンブラプログラムを自動生成する手続を実行する。
この手続については図30以下を参照してさらに詳細に
説明する。
【0104】B6のアセンブラプログラム2の自動生成
が終了したら、B7において、生成されたプログラムが
格納されているソースバッファの内容をファイル装置に
出力する。この場合、出力はプログラムソースファイル
の形式で行なわれる。その後ステップB8で自動生成処
理を終了する。
【0105】図30および図31は、図29のB6で読
出される、実際に木構造チャートからアセンブラソース
を生成するチャートボックス解析処理のフローチャート
である。既に述べたように、本アルゴリズムでは再帰呼
出が許されている。そのためまずチャートボックス解析
処理のステップC1では、生成するアセンブラソースを
一時的に記憶するためのワークバッファをファイル装置
内に確保する。すなわち、このチャートボックス解析処
理が行なわれる度に、そのためのワークバッファが確保
される。
【0106】続いて木構造ボックス要素を指すポインタ
が示すボックスが、図16〜図26の木構造チャートの
どれと一致するかを、ステップC2、C4、C6、C
8、C10、C12、C14、およびC16の条件判断
部でそれぞれ判断し、一致した木構造チャートに対応し
た木構造チャート解析処理ルーチンをステップC3、C
5、C7、C9、C11、C13、C15およびC17
でそれぞれコールする。
【0107】コールされる木構造解析処理ルーチンは、
順次処理構造を解析する順次処理ルーチン(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)とを含む。
【0108】これらの解析ルーチンが終了するとワーク
バッファに解析結果がアセンブラソースとして格納され
る。
【0109】したがって図31を参照して、ステップC
18でこのワークバッファの内容をソースバッファに追
加する。
【0110】さらにC19で、不要になったワークバッ
ファを解析し、C20で木構造チャートを指すポインタ
を次のボックスに移す。
【0111】そしてC21で、ポインタの指す位置に木
構造ボックスが存在するか否かについて判断する。木構
造ボックスが存在すれば、解析を継続するために図30
のC1にジャンプする。木構造ボックスが存在しなけれ
ば制御はC22に進み、サブルーチンをリターンする。
【0112】なお既に述べたようにこの図30および図
31に示したチャートボックス解析処理は、図29のメ
インプログラムのみから呼出されるのではなく、図30
でコールしたサブルーチンからも呼出すことができる再
帰的サブルーチンとなっている。これらサブルーチンか
らこのチャートボックス解析処理が呼出される場合に
は、この処理は解析結果を各サブルーチンに返すように
構成されている。
【0113】図32は、図30に示すC3でコールされ
る順次処理構造をアセンブラソースに変換するためのサ
ブルーチン処理である。この処理のステップD1では、
図26(B)の自動生成規則を採用してアセンブラソー
スリストを生成し、ワークバッファに書込む。このとき
行なわれる処理は、図26(B)に示されるように、ま
ず図26(A)に示される木構造チャートのボックス内
のリストAの先頭に行先頭文字列(テーブルから得られ
る)を書込む。次に、アルゴリズムの区切りの意味でコ
メント文字列からなるコメント行をワークバッファに書
込んだ後D2に進んでリターンする。
【0114】図33は、図30のステップC5でコール
されるif then else構造をアセンブラソースに変換する
ためのサブルーチン処理のフローチャートを示す。まず
ステップE1で、条件1=真に対応するジャンプ命令が
あるかどうかを図28のテーブル420を参照して求め
る。より具体的には、図28のテーブル420の各行の
中に「条件1」、「条件2」、「文字列」が定義された
「JUMP: 」で始まる行があるか否かを調べる。こうして
対応するジャンプ命令が存在すると判断された場合には
ステップE3に制御を進め、ジャンプ命令が存在しない
場合にはステップE2に制御を進める。
【0115】ステップE3では、条件1=真に対応する
ジャンプ命令が存在する場合に対応して、後に使用する
ラベル名を新たに2個生成する。そしてステップE5に
処理を進め、図16(C)に示される自動生成規則を採
用して、アセンブラソースを生成する。そして生成され
たアセンブラソースをワークバッファに書込む。なお、
図16(C)の第4行目および第8行目に「チャートC
解析結果」「チャートB解析結果」とあるのは、図30
に示したチャートボックス解析サブルーチンを再帰的に
コールして、図16(A)のif then else構造中に含ま
れるチャートB構造およびチャートC構造から自動生成
されたアセンブラソースのことを指す。
【0116】この再帰呼出時には、現在のワークバッフ
ァを出力先のソースバッファに指定してチャートボック
ス解析サブルーチンをコールする。チャートボックス解
析サブルーチンは、図31のステップC18で書込むソ
ースバッファとして、指定された現在のワークバッファ
を使用する。すなわち、自動生成されたチャートB、チ
ャートCのアセンブラソースはそれぞれ、現在のワーク
バッファに出力された上チャートボックス解析サブルー
チンから図33のサブルーチンに戻される。なお以降の
図において、同様の「チャートB解析結果」「チャート
C解析結果」などの記載がある場合、その内容は上述と
同じである。したがってその各々に対する詳しい説明を
繰返すことは行なわない。
【0117】再び図33を参照して、ステップE5の処
理が終了すると制御はE6に進みサブルーチンを終了す
る。
【0118】条件1=真に対応するジャンプ命令が存在
しない場合には、ステップE1からステップE2に制御
が進み、後に使用するラベルを2個生成する。次にステ
ップE4で図16(D)の生成規則を採用してアセンブ
ラソースを生成する。生成されたアセンブラソースはワ
ークバッファに格納される。E4の後制御はE6に進み
サブルーチンが終了する。
【0119】図34は図30のC7でコールされるif t
hen 構造をアセンブラソースに変換するサブルーチン処
理である。まずF1で、条件2=真に対応するジャンプ
命令が存在するかどうかについて判断する。条件2=真
に対応するジャンプ命令が存在した場合には制御はステ
ップF3に、存在しない場合には制御はステップF2に
進む。
【0120】条件2=真に対応するジャンプ命令が存在
した場合には、ステップF3で後に使用されるラベル名
を新たに1個生成する。続いてステップF5で、図17
(D)に示される自動生成規則を採用してアセンブラソ
ースを生成する。生成されたアセンブラソースはワーク
バッファに書出される。その後制御はF6に進んでこの
サブルーチンを終了する。
【0121】一方条件2=真に対応するジャンプ命令が
ない場合、ステップF2で後に使用されるラベル名を2
個新たに生成する。続いてF4で図17(E)に示され
る自動生成規則を採用してアセンブラソースを生成す
る。生成されたアセンブラソースはワークバッファに書
込まれ、制御はステップF6に進んでこのサブルーチン
を終了する。
【0122】図35は、図30のC9でコールされるre
peat until構造をアセンブラソースに変換するサブルー
チン処理を示す。まずステップG1で、対象となるボッ
クスが図18(A)に示されるボックスかどうかについ
て判断する。もし対象となるボックスが図18(A)の
ボックスであれば制御はG3に、さもなければ対象とな
るボックスは図19(A)に示されるボックスであると
判断し制御はG2にそれぞれ進む。
【0123】G3では、条件2=真に対応するジャンプ
命令が存在するか否かについて判断する。対応するジャ
ンプ命令が存在すれば制御はステップG7に、存在しな
い場合には制御はステップG6に、それぞれ進む。
【0124】ステップG7では、後に使用するラベル名
を新たに1個生成する。次いでG11で、図18(C)
の自動生成規則を採用して生成されたアセンブラソース
をワークバッファに書込み、G12に制御を進めてサブ
ルーチンを終了する。
【0125】G3で条件2=真に対応するジャンプ命令
が存在しないと判定された場合、G6でラベル名を2個
新たに生成する。その後G10で図18(D)に示され
る自動生成規則を採用してアセンブラソースを生成す
る。生成されたアセンブラソースはワークバッファに書
込まれる。その後制御はステップG12に進み、このサ
ブルーチンを終了する。
【0126】一方、G1で対象となるボックスが図18
(A)のボックスではないと判定された場合、対象とな
るボックスは図19(A)のボックスであると判断し、
ステップG2で条件2=真に対応するジャンプ命令があ
るかどうかについて判断する。対応するジャンプ命令が
あれば制御はステップG5に、なければG4にそれぞれ
進む。
【0127】対応するジャンプ命令がある場合、ステッ
プG5でまず後に使用するラベル名を1個生成する。続
いてステップG9で図19(C)を採用してアセンブラ
ソースを生成し、ワークバッファに書込む。この後制御
はステップG12に進んでこのサブルーチンを終了す
る。
【0128】一方ステップG2で条件2=真に対応する
ジャンプ命令がないと判定された場合、まずステップG
4で後に使用するラベル名を2個新たに生成する。次い
でG8で図19(D)の自動生成規則を採用してアセン
ブラソースを生成し、ワークバッファに書込む。この後
ステップG12でこのサブルーチンを終了する。
【0129】図36は、図30のステップC11でコー
ルされるdo while構造をアセンブラソースに変換するサ
ブルーチン処理のフローチャートである。また図37
は、図30のステップC13でコールされるN+1/2 構造
をアセンブラソースに変換するためのサブルーチン処理
のフローチャートである。図36および図37の処理手
順はいずれも、図35の処理手順とほぼ同一で、対象と
なるボックスの形状と、対応する自動生成規則とが異な
るだけである。したがって図36および図37について
は、その詳細な説明はここでは繰返さない。
【0130】図38は図30のC15でコールされる、
JUMP構造をアセンブラソースに変換するためのサブルー
チン処理のフローチャートである。図38を参照して、
まずステップJ1で図24(B)に示された自動生成規
則を採用してアセンブラソースを生成する。生成された
アセンブラソースはワークバッファに書込まれ、ステッ
プJ2でこのサブルーチン処理を終了する。
【0131】図39は図30のC17でコールされる、
ラベル構造をアセンブラソースに変換するためのサブル
ーチン処理のフローチャートである。ステップK1で、
図25(B)の自動生成規則を採用してアセンブラソー
スを生成し、ワークバッファに書込む。この後制御はK
2に進みこのサブルーチンを終了する。
【0132】上述のアセンブラ言語プログラム生成装置
を用いて、実際に木構造チャートをアセンブラソースに
変換する例を示す。図40に、拡張された木構造チャー
トの一例を示す。このチャートのモジュール名は「test
prog」である。
【0133】図41に、図40の木構造チャートの前半
の位置を示し、この木構造チャートがどのような図式フ
ァイルの形式で格納されているかを図42に示す。図4
2において「↓」は改行を示す。
【0134】さらに図43に、図41に示すボックスの
うち「CP」のボックスについて示し、図44にこのボ
ックスの図式ファイルの格納形式をわかりやすく示す。
【0135】本発明の装置ではこのような図式ファイル
を読込んで、これをアセンブラソースプログラムに変換
していく。
【0136】図45〜図48のそれぞれ左側に木構造チ
ャートの変換対象部分を、右側に自動生成されたアセン
ブラソースプログラムを示す。
【0137】まず、アセンブラソース自動生成メインプ
ログラムを起動する。このプログラムは図29に示した
ものである。そして変数初期化およびソースバッファ確
保を行なった後、図45に示すように図40の木構造チ
ャートのチャート名「testprog」を読込み、ソースバッ
ファに出力する。図45の右側がこのときのソースバッ
ファの内容を示す。
【0138】続いて図30に示すチャートボックス解析
処理が実行される。この木構造チャートの最初の木構造
は図46の左側に示す順次処理ボックスL1である。し
たがって図32の処理に従ってアセンブラソースが生成
される。そして図31のC18でソースバッファに出力
された結果を図46の右側に示す。
【0139】次に解析される木構造は図47の左側に示
されるrepeat until構造L2である。このボックスは図
53(B)のボックスであるので、図35のG2に制御
が進む。図28のテーブル420を参照すると、条件
「B--=0 」の逆条件「B--<>0」=真に対応する条件ジャ
ンプ命令があることがわかる(テーブル420の最終
行)。そのためG2の判断結果はYESとなり制御はG
5およびG9に進む。G9で図19(C)に従ったソー
ス生成を行なうことにより、図47の右側に示されるワ
ークバッファ内容を得る。
【0140】ただしこのrepeat until構造中には、図4
0に示すL3〜L10までの木構造(これは図47右側
の「ソースA」の部分に対応する)が含まれているた
め、新たにワークバッファ2が確保され、図30のチャ
ートボックス解析処理ルーチンが再帰的にコールされ
る。再帰的にコールされたチャートボックス解析ルーチ
ンは、これらボックスL3〜L10までの木構造をさら
に解析してソース自動生成を行なってワークバッファに
出力する。図48の上側は再帰的に解析されるチャート
の一部を示し、図48の下側は第2のワークバッファに
出力されたチャートの一部のソース解析結果である。
【0141】このようにして木構造チャートのボックス
L3〜L10からアセンブラソースを自動生成し、第2
のワークバッファに出力した結果が図49(A)であ
る。さらにこの結果を用いて、ワークバッファに生成さ
れるrepeat until構造L2全体のアセンブラソースを図
49(B)に示す。図49(B)のアセンブラソース
は、さらに図31のC18においてソースバッファに出
力される。
【0142】このようにして、図40に示した木構造チ
ャートから自動生成され、ソースファイルに出力された
アセンブラソースプログラムリストを図50に示す。こ
のアセンブラソースが図40に示される木構造チャート
の変換結果である。
【0143】第2の実施形態 ところで、LONG JUMP 命令およびSHORT JUMP命令の区別
は、従来の木構造チャートでは表現できなかった。そこ
で、これら命令を区別するための記述を木構造チャート
の一部に明記するように拡張し、処理のどこでLONG JUM
P 命令が必要かを一目でかわるようにした拡張木構造チ
ャート表記法を以下に示す。第2の実施の形態はこのよ
うにさらに拡張された木構造チャートからアセンブラソ
ースを生成するためのものである。
【0144】以下の実施形態では、LONG JUMP 命令でな
いと飛び越せない大きさのソースリストはソースリスト
ボックスの左端を太線で強調することにし、さらにその
ボックスの近傍に「long」という表記を行なうこととし
た。以下、図51〜63を参照して、この拡張木構造チ
ャートの記述方法について説明する。
【0145】図51に示すチャートは、if then else構
造中のチャートB構造がLONG JUMP命令でないと飛び越
せないことを示している。同時に、チャートB構造がLO
NG JUMP 命令でないと飛び越せないためにこのif then
else構造全体もLONG JUMP 命令でないと飛び越せないこ
とを示している。このチャートの図式ファイルとしての
保存形式を図51の下部に示している。図52以下で
も、各チャートに対応の図式ファイルの格納形式を各図
の右下に示す。
【0146】図52(A)(B)はいずれも、if then
構造中のチャートB構造およびif then 構造全体がLONG
JUMP 命令でないと飛び越せないことを示している。図
53(A)(B)の木構造チャートは、repeat until構
造中のチャートB構造がLONGJUMP 命令でないと飛び越
せないことを示している。図54(A)(B)(C)の
木構造チャートは、do while構造中のチャートB構造お
よびdo while構造全体がLONG JUMP 命令でないと飛び越
せないことを示している。
【0147】図55〜図60はいずれも、N+1/2 構造に
ついて示している。特に図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 命令でないと飛び越せな
いことを示す。
【0148】図61はジャンプ構造そのものを表わすチ
ャートであって、使用されるジャンプ命令がLONG JUMP
命令であることを示す。図62にはラベル構造の記述を
示すが、ラベル構造ではLONG JUMP 指定はない。図63
に順次処理のチャートを示す。順次処理のチャートで
は、ボックスの左端を太線にしてその左側に「long」の
文字を記載することにより、リストAがLONG JUMP 命令
でないと飛び越せないことを示している。
【0149】上に述べたようにLONG JUMP 命令およびSH
ORT JUMP命令を区別して表記するように拡張された木構
造チャートからアセンブラソースリストを生成する際に
参照されるテーブルの形式を図64に示す。図64に示
すテーブル430は、第1の実施形態で使用したテーブ
ル400(図15)に、LONG JUMP 命令およびSHORTJUM
P命令に関する情報を付加したものである。
【0150】第1の実施形態のテーブル400では、そ
の第4行目に示すように、条件1=真に対応するアセン
ブラジャンプ命令を文字列1で示している。しかしこの
第2の実施形態では、アセンブラジャンプ命令の項目を
2つに増やした。そして、図64の第4行目に示される
ように、条件1=真に対応するアセンブラジャンプ命令
として文字列1と文字列4との2つを定義するように定
めた。ここで文字列1は条件1=真に対応するアセンブ
ラSHORT JUMP命令であり、文字列4は条件1=真に対応
するアセンブラLONG JUMP 命令を示すものとする。
【0151】図64では、第5行目に、条件1=偽と等
価な条件2=真に対応するアセンブラSHORT JUMP命令を
文字列2で、アセンブラLONG JUMP 命令を文字列5で定
義している。6行目には、無条件にジャンプするアセン
ブラSHORT JUMP命令を文字列3で、アセンブラLONG JUM
P 命令を文字列6で定義している。
【0152】このようにある条件=真に対応するアセン
ブラジャンプ命令としてSHORT JUMP命令とLONG JUMP 命
令とをテーブルで定義することにより、各種条件判断の
結果に従って、対応するアセンブラLONG JUMP 命令およ
びSHORT JUMP命令を簡単に求めることができる。
【0153】図51〜図63に示したようなLONG JUMP
命令およびSHORT JUMP命令の区別を許す拡張木構造チャ
ートから、図64に示すテーブル430を参照して、種
々のCPUに対してLONG JUMP 命令およびSHORT JUMP命
令を適宜用いたアセンブラソースプログラムを生成する
ために必要な、汎用のソースプログラム生成規則を得る
ことができる。以下、そうした普遍的なアセンブラソー
スプログラム生成規則(アルゴリズム)について説明す
る。なお以下に説明するアセンブラソースプログラム生
成規則は、第1の実施形態で使用された一連のソースプ
ログラムの自動生成規則に基づき、さらにアセンブラ言
語特有のLONG JUMP 命令およびSHORT JUMP命令の区別を
加味するようにしたものである。
【0154】図65〜図79に、この第2の実施形態の
装置で使用される自動生成規則を、対応する木構造チャ
ートと、各木構造チャートと等価なフローチャートとと
もに示している。なおこれらの図面のうち「条件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 するジャンプ命令がある」ことを示
す。
【0155】1つのチャートに複数の生成規則が定義さ
れている場合、その適用優先順序は図に付加されている
アルファベットの先の方が高い。これは、生成されるア
センブラソースプログラムの行数や、バイト数がより少
なくなるような規則を優先して適用するためである。す
なわち、たとえば図65の生成規則(C)〜(F)のう
ちでは、まず(C)を最初に適用し、条件が成立しなけ
れば(D)を適用し、(C)も(D)も駄目であれば
(E)を適用し、(E)も駄目であれば(F)を適用
し、というようにアルファベットの始めの方から順に生
成規則を適用していくものとする。
【0156】図65はif then else構造に対応するソー
ス自動生成規則である。図65(A)は図51の木構造
チャートに対応したものであり、図65(B)のフロー
チャートと等価である。条件1=真に対応したSHORT JU
MP命令およびLONG JUMP 命令、ならびに条件2=真に対
応したSHORT JUMP命令およびLONG JUMP 命令の有無に応
じて、図65(C)〜(F)に示されたソース自動生成
規則を用いてアセンブラソースを自動生成する。
【0157】図66はif then 構造に対応するソース自
動生成規則である。図66(A)は図52(A)に、図
66(B)は図52(B)に示されたものである。これ
らはif then 木構造のバリエーションをすべて記述する
ために、条件判断後に実行される処理(チャートB)の
木構造での位置を変えただけで、アルゴリズム的には同
一であって図66(C)のフローチャートと等価であ
る。図66(D)〜(G)に示されたソース自動生成規
則はそれぞれ、条件1=真および条件2=真に対応した
SHORT JUMP命令およびLONG JUMP 命令に有無に応じて適
用される規則である。
【0158】図67および図68はrepeat until構造に
対応するソース自動生成規則を示す。図67(A)は図
53(A)に、図68(A)は図53(B)にそれぞれ
対応する。
【0159】図67(A)の木構造チャートは図67
(B)のフローチャートと等価である。図67(C)〜
(F)のソース自動生成規則は、条件1=真、条件2=
真に対応したSHORT JUMP命令およびLONG JUMP 命令の有
無に応じて適用される規則である。
【0160】図68(A)の木構造は図68(B)のフ
ローチャートと等価である。条件1=真、条件2=真に
対応したSHORT JUMP命令およびLONG JUMP 命令の有無に
応じて図68(C)〜(F)に示したソース自動生成規
則を適用することによりアセンブラソースを自動生成す
る。
【0161】図69および図70はそれぞれ、do while
構造に対応するソース自動生成規則を示す。図69
(A)は図54(A)の木構造チャートに対応する。図
70(A)および(B)はそれぞれ、図54(B)およ
び(C)の木構造チャートに対応する。
【0162】図69(A)の木構造チャートは図69
(B)のフローチャートと等価である。図69(A)の
do while構造は、飛び越すのにLONG JUMP 命令が必要な
チャートBを構造内に持っている。そして、条件1=
真、条件2=真に対応したSHORTJUMP命令およびLONG JU
MP 命令の有無に応じて、図69(C)〜(F)に示さ
れたソース自動生成規則を適用してアセンブラソースを
自動生成する。
【0163】図70(A)および(B)はいずれも図7
0(C)に示すフローチャートと等価である。条件1=
真、条件2=真に対応したSHORT JUMP命令およびLONG J
UMP命令の有無に応じて、図70(D)〜(G)に示さ
れたソース自動生成規則を適用してアセンブラソースを
自動生成する。
【0164】図71〜図76は、N+1/2 構造に対応する
ソース自動生成規則を示す。図71(A)に示すN+1/2
構造は図55に示す構造であり、図71(B)に示すフ
ローチャートと等価である。このN+1/2 構造は、飛び越
すのにLONG JUMP 命令が必要なチャートBを構造内に持
っている。条件1=真、条件2=真に対応したSHORT JU
MP命令およびLONG JUMP 命令の有無に応じて、図71
(C)〜(F)を適用してアセンブラソースを自動生成
する。
【0165】図72(A)は図56に対応したものであ
る。このN+1/2 構造は、飛び越すのにLONG JUMP 命令が
必要なチャートBを構造内に持っており、図72(B)
のフローチャートと等価である。この構造は条件1=
真、条件2=真に対応したSHORT JUMP命令およびLONG J
UMP 命令の有無に応じて図72(C)〜(F)に示され
たソース自動生成規則を適用してアセンブラソースを自
動生成する。
【0166】図73(A)は図57に示したN+1/2 構造
に対応している。このN+1/2 構造は飛び越すのにLONG J
UMP 命令が必要なチャートCを構造内に持っており、図
73(B)のフローチャートと等価である。条件1=
真、条件2=真に対応したSHORT JUMP命令およびLONG J
UMP 命令の有無に応じて、図73(C)〜(F)に示さ
れたソース自動生成規則を適用してアセンブラソースを
自動生成する。
【0167】図74(A)に示したN+1/2 構造は図58
に示したN+1/2 構造に対応したものである。このN+1/2
構造は、飛び越すのにLONG JUMP 命令が必要なチャート
Cを構造内に持っており、図74(B)のフローチャー
トと等価である。条件1=真、条件2=真に対応したSH
ORT JUMP命令およびLONG JUMP 命令の有無に応じて、図
74(C)〜(F)に示したソース自動生成規則を適用
してアセンブラソースを自動生成する。
【0168】図75(A)のN+1/2 構造は図59に示し
たものである。この構造は、飛び越すのにLONG JUMP 命
令が必要なチャートBおよびチャートCをその構造内に
持っており、図75(B)のフローチャートと等価であ
る。条件1=真、条件2=真に対応したSHORT JUMP命令
およびLONG JUMP 命令の有無に応じて、図75(C)〜
(F)のソース自動生成規則を適用してアセンブラソー
スを自動生成する。
【0169】図76(A)は図60に対応したN+1/2 構
造である。このN+1/2 構造は、飛び越すのにLONG JUMP
命令が必要なチャートBおよびチャートCをその構造内
に有しており、図76(B)のフローチャートと等価で
ある。条件1=真、条件2=真に対応したSHORT JUMP命
令およびLONG JUMP 命令の有無に応じて、図76(C)
〜(F)のソース自動生成規則を適用してアセンブラソ
ースを自動生成する。
【0170】図77には、ジャンプ構造に対するソース
自動生成規則を示す。図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の実施の形態におけるソース自動
生成規則と異なるところがない。
【0171】図79に、順次処理構造に対するソース生
成規則を示す。図79(B)に示されるソース自動生成
規則は、図26(B)に示される第1の実施の形態の生
成規則と同じである。しかしこの図79の場合には、こ
の順次処理構造(リストA)を飛び越すのにLONG JUMP
命令が必要である。したがってこの順次処理構造を飛び
越すジャンプ命令があった場合には、そのジャンプ命令
をLONG JUMP 命令とする必要がある。
【0172】以上のような拡張された木構造チャートの
表記形式を用いて記述された木構造チャートをアセンブ
ラソースプログラムに変換するための第2の実施の形態
について説明する。ハードウエアとしては、この第2の
実施の形態は図27に示される第1の実施の形態と同じ
ものを用いるが、しかし、図28に示される第1の実施
の形態のテーブル420に代えて図80に示すテーブル
440を用いる。なお図80に示すテーブル440は、
Z−80のアセンブラソースプログラムを自動生成する
ために用いられるものであり、他のCPUのアセンブラ
言語ソースプログラムを作成する場合には、そのアセン
ブラ言語に対応したテーブルを利用する必要がある。
【0173】後にこの第2の実施の形態を用いてアセン
ブラソースプログラムに変換される木構造チャートの例
を図81に示す。この図81の木構造チャートのチャー
ト名は「longprog」である。この木構造チャートを用い
た具体的な例については後述する。
【0174】図80のテーブル440について以下説明
する。このテーブル440は、図64のテーブル430
として基本的な考え方が示されたテーブルについてZ−
80を対象としたアセンブラ言語表現を適用したもので
ある。テーブル440の1行目はコメント行であって、
ソース自動生成には関係しない。
【0175】第2行目はアセンブラコマンド行の先頭に
挿入される行先頭文字列である。本実施の形態では文字
列「 」(スペース8個)を使用する。第3行目
はコメント行の先頭に付加するコメント文字である。本
実施の形態では「;」を使用する。第4行目はラベル行
においてラベルの後に付加する文字列を定義する。本実
施の形態では「:」を使用する。
【0176】第5行目〜第15行目は、一連の条件分岐
に関するSHORT JUMP命令およびLONGJUMP 命令の定義で
ある。第5行目はSHORT JUMP命令「 JR 」、
およびLONG JUMP 命令「 JP 」を定義してい
る。条件および逆条件の両方がヌル文字で定義されてい
るため、このジャンプ命令「 JR 」および
「 JP 」は絶対ジャンプ命令であることがわ
かる。
【0177】第6行目と第7行目とは条件フラグ「C」
に関する条件分岐命令を定義している。条件「C」と条
件「NC」とは逆条件の関係にある。ここでは、C=真
ならSHORT JUMP命令「 JR C,」またはLONG J
UMP 命令「 JP C,」を採用し、NC=真ならS
HORT JUMP命令「 JR NC,」またはLONG JUMP
命令「 JP NC,」を採用する。
【0178】第8行目と第9行目とは条件フラグ「Z」
に関する条件分岐命令を定義している。条件「Z」と条
件「NZ」とは逆条件の関係にある。ここでは、Z=真
ならSHORT JUMP命令「 JR Z,」またはLONG J
UMP 命令「 JP Z,」を採用し、NZ=真なら
SHORT JUMP命令「 JR NZ,」またはLONG JUMP
命令「 JP NZ,」を採用する。
【0179】第10行目と第11行目とは条件フラグ
「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,」を採用するものとする。
【0180】第12行目と第13行目とは条件フラグ
「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,」を採用する。
【0181】第14行目と第15行目とは条件「B--=0
」、「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」=真を示す条件記述
である。
【0182】この第2の実施の形態の装置において、SH
ORT JUMPおよびLONG JUMP 記述がされた拡張木構造チャ
ートからアセンブラソースプログラムを自動生成するた
めの具体的な処理を図82以下のフローチャートに示
す。なお本実施の形態ではZ−80のアセンブラソース
プログラムの生成について示しているが、図80のテー
ブル440に代えて他のアセンブラ言語用のテーブルを
用いれば、同じフローチャートに従った処理で、別種の
アセンブラ言語用のソースプログラムを生成することが
できる。また図83〜図102の処理は、第1の実施の
形態のチャートボックス解析処理と同じく、再帰呼出し
が可能な構造となっている。
【0183】図82は自動生成アルゴリズムのメインプ
ログラムのフローチャートである。このフローのステッ
プM1〜M8はそれぞれ、図29に示した第1の実施の
形態のメインプログラムのステップB1〜B8に対応
し、その内容も同一である。したがってここではこれら
についての詳しい説明は繰返さない。
【0184】図83および図84に、実際に木構造チャ
ートを解析してアセンブラソースプログラムを生成し、
ソースバッファに格納するサブルーチンであるチャート
ボックス解析処理のフローチャートを示す。図83およ
び図84に示したステップN1〜N22はそれぞれ、図
30および図31に示した第1の実施の形態のチャート
ボックス解析処理の各ステップC1〜C22と同じであ
る。したがって図83および図84についての詳細な説
明はここでは繰返さない。
【0185】なお本実施の形態では、木構造チャートが
LONG JUMP 構造を持つ場合にもソースプログラムを生成
できるものであるが、実際のプログラミングに当たって
は大部分の木構造がSHORT JUMP命令のみを含む場合が多
い。SHORT JUMP命令のみを用いる場合のアセンブラプロ
グラムの自動生成規則は、第1の実施の形態で使用した
フローチャートで示される処理をそのまま使用すること
ができる。したがって以下の説明では、木構造中にLONG
JUMP がない場合には第1の実施の形態で説明した対応
の構造に対する自動生成規則を流用するものとする。こ
の場合の各生成規則解釈は第1の実施の形態のものを使
用する。
【0186】図85は図83のチャートボックス解析処
理のステップN3でコールされる順次処理構造をアセン
ブラソースプログラムに変換するためのサブルーチン処
理のフローチャートを示す。ステップP1において、対
象とする順次処理ボックスにLONG JUMP 記述があるかど
うかについて判断する。LONG JUMP 記述がなければ制御
はP2に進み、図32に示したSHORT JUMPのみのときの
アセンブラソースプログラム生成処理を実行する。一方
LONG JUMP 記述がある場合には制御はP3に進む。P3
では図79(B)の生成規則を採用してアセンブラソー
スプログラムを生成し、ワークバッファに書込む。ステ
ップP2またはP3の後制御はP4に進みサブルーチン
を終了する。
【0187】図86は、図83のステップN5において
コールされるif then else構造をアセンブラソースプロ
グラムに変換するためのサブルーチン処理を示すフロー
チャートである。まずステップQ1で、対象とするif t
hen else構造にLONG JUMP 記述があるかどうかについて
判断する。LONG JUMP 記述がなければ制御はステップQ
2に進み、図33に示したSHORT JUMPのみのときのアセ
ンブラソースプログラム生成処理を実行してステップQ
14に進み処理を終了する。
【0188】一方Q1でLONG JUMP 記述があると判断さ
れた場合には、制御はQ3に進む。Q3では、条件1=
真に対応するSHORT JUMP命令があるかどうかを判断す
る。条件1=真に対応するSHORT JUMP命令が存在した場
合には制御はQ4に進む。Q4では後のステップQ5で
使用するラベル名を2個新たに生成する。続いてQ5で
は、図65(C)に示された自動生成規則を採用してア
センブラソースプログラムを生成し、ワークバッファに
書込んだ後図87のステップQ14に進んでサブルーチ
ンを終了する。
【0189】ステップQ3で条件1=真に対応するSHOR
T JUMP命令が存在しないと判定された場合には制御はス
テップQ6に進む。Q6では、条件2=真に対応するLO
NG JUMP 命令があるかどうかについての判定が行なわれ
る。条件2=真に対応するLONG JUMP 命令が存在する場
合には制御はQ7に進む。Q7では、後のQ8で使用さ
れるラベル名を2個新たに生成する。次いでQ8では、
図65(D)に示された自動生成規則を採用してアセン
ブラソースプログラムを生成し、ワークバッファに書込
んだ後図87のQ14に進んで処理を終了する。
【0190】Q6で条件2=真に対応するLONG JUMP 命
令が存在しないと判定された場合には図87のQ9に進
む。Q9では、条件1=真に対応するLONG JUMP 命令が
あるかどうかについての判定が行なわれる。条件1=真
に対応するLONG JUMP 命令が存在する場合には制御はQ
10に進む。Q10では、後のQ11で使用されるラベ
ル名を2個新たに生成する。次いでステップQ11で、
図65(E)の自動生成規則を採用してアセンブラソー
スプログラムを生成し、ワークバッファに書込んだ後Q
14に進んで処理を終了する。
【0191】一方Q9で条件1=真に対応するLONG JUM
P 命令が存在しないと判定された場合には制御はQ12
に進む。Q12では、後のQ13で使用されるラベル名
を3個新たに生成する。次いでQ13では、図65
(F)に示された自動生成規則を採用してアセンブラソ
ースプログラムを生成し、ワークバッファに書込んだ後
Q14へ進んで処理を終了する。
【0192】図88は、図83のN7でコールされるif
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と同様であるので、その詳細についてはここでは繰返
さない。
【0193】図90〜図92は、図83のN9において
コールされる、repeat until構造をアセンブラソースプ
ログラムに変換するためのサブルーチン処理のフローチ
ャートである。ステップS1で、対象となるrepeat unt
il構造にLONG JUMP 記述が存在するかどうかを判断す
る。LONG JUMP 記述が存在しなければ制御はS2に進
み、図35に示したSHORT JUMP命令のみのrepeat until
構造からアセンブラソースプログラムを生成するための
処理を実行してステップS3でこのサブルーチンを終了
する。
【0194】S1でLONG JUMP 記述があると判断された
場合には制御はS4に進む。S4では、対象となるrepe
at until構造が図67(A)に示されるボックスか否か
について判断する。ボックスが図67(A)のボックス
であれば制御はS6に、さもなければ制御はS5に進
む。
【0195】S6以下では、条件1=真、条件2=真に
対応するSHORT JUMP命令およびLONGJUMP 命令の有無に
より、それぞれ図67(C)〜(F)の自動生成規則を
採用してアセンブラソースプログラムを生成し、ワーク
バッファに書込む(S8、S10、S14、S16、S
20、S22、S24、S26)。その後制御はS27
に進みこのサブルーチンは終了する。
【0196】一方S4でボックスが図67(A)のボッ
クスではないと判定された場合にはS5以下で、条件1
=真、条件2=真に対応するSHORT JUMP命令およびLONG
JUMP 命令の有無に従って、図68(C)〜(F)の自
動生成規則を採用してアセンブラソースプログラムを生
成し、ワークバッファに書込む(S7、S9、S13、
S15、S19、S21、S23、S25)。その後制
御はS27に進みこのサブルーチンは終了する。
【0197】図93〜図95は、図83のN11でコー
ルされる、do while構造をアセンブラソースプログラム
に変換するためのサブルーチン処理のフローチャートで
ある。まずT1で、対象とするdo while構造にLONG JUM
P 記述があるかどうかについて判定する。LONG JUMP 記
述がなければ制御はT2に進む。T2では図36に示
す、SHORT JUMPのみのときのdo while処理からのアセン
ブラソース生成のための処理を実行する。その後制御は
T3に進みこのサブルーチンは終了する。
【0198】T1でLONG JUMP 記述があると判定された
場合には制御はT4に進む。T4では、対象とするdo w
hile構造のボックスが図69(A)のボックスかどうか
についての判定を行なう。図69(A)のボックスであ
れば制御はT6に、さもなけれが制御はT5にそれぞれ
進む。
【0199】処理対象とするdo while構造のボックスが
図69(A)のボックスの場合には、T6以下のステッ
プで、条件1=真、条件2=真に対応するSHORT JUMP命
令およびLONG JUMP 命令の有無により、それぞれ図69
(C)〜(F)の自動生成規則を採用してアセンブラソ
ースプログラムを生成しワークバッファに書込む(T
8、T10、T14、T16、T20、T22、T2
4、T26)。この後制御はT27に進みこのサブルー
チンを終了する。
【0200】制御がT4からT5に進んだ場合には、T
5以下の処理で条件1=真、条件2=真に対応するSHOR
T JUMP命令およびLONG JUMP 命令の有無により、それぞ
れ図70(D)〜(G)の自動生成規則を採用してアセ
ンブラソースプログラムを生成し、ワークバッファに書
込む(T7、T9、T13、T15、T19、T21、
T23、T25)。この後制御はT27に進みこのサブ
ルーチンを終了する。
【0201】図96〜図102は、図83のN13にお
いてコールされる、N+1/2 構造をアセンブラソースプロ
グラムに変換するためのサブルーチン処理のフローチャ
ートである。図96を参照して、まずU1で、対象とす
るN+1/2 構造にLONG JUMP 記述があるかどうかについて
の判定を行なう。LONG JUMP 記述がなければ制御はU2
に進む。U2では、図37のN+1/2 のループ処理に従っ
たアセンブラソース生成処理を実行する。この後制御は
図101のU74に進みこのサブルーチンを終了する。
【0202】一方U1でLONG JUMP 記述があると判定さ
れた場合には制御は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に進
みこのサブルーチンを終了する。
【0203】一方図96のU3で、対象となるボックス
が図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に進みこのサブルーチンを
終了する。
【0204】再び図96に戻り、U15で対象となる構
造が図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)。この後このサブルーチンを終了する。
【0205】さらに図96に戻り、U27で対象となる
構造が図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)。この後このサブルーチンを終了する。
【0206】再び図96を参照して、U39で対象とな
る構造が図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)。この後このサブルーチンを終了する。
【0207】U51において、対象となる構造が図75
(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に進みこのサブルー
チンを終了する。
【0208】図103に、図84のN15でコールされ
るジャンプ処理のサブルーチンのフローチャートを示
す。図103を参照して、V1において、対象とするJU
MP処理構造にLONG JUMP 記述が存在するか否かについて
の判定を行なう。LONG JUMP 記述がなければ制御はV2
に進み、図38に示されるSHORT JUMPのみのときのジャ
ンプ処理を実行して処理を終了する(V4)。
【0209】一方LONG JUMP 記述がると判定された場合
には制御はV3に進む。V3では、図77(B)に示さ
れた自動生成規則を採用してアセンブラソースプログラ
ムを生成しワークバッファに書込む。この後制御はV4
に進みこのサブルーチンを終了する。
【0210】図104は、図84のN17でコールされ
る、ラベル処理構造をアセンブラソースプログラムに変
換するためのサブルーチン処理のフローチャートであ
る。既に述べたようにラベル処理構造はLONG JUMP 、SH
ORT JUMPとは無関係な構造である。このためラベル処理
構造の変換では、まずステップW1で図78(B)に示
された自動生成規則を採用してアセンブラソースプログ
ラムを生成しワークバッファに書込む。この後制御はW
2に進んでこの処理を終了する。
【0211】図105〜図110に、この第2の実施の
形態の装置を使用して、図81に示す木構造チャート
「longprog」をアセンブラソースプログラムに自動変換
する経過を示す。このとき使用されるテーブルは図80
のテーブル440である。
【0212】まず図82に示されるメインプログラムを
起動する。そして変数初期化およびソースバッファ確保
を行なった後、図81に示す木構造チャートのチャート
名「longprog」を読込みソースバッファに出力する。木
構造チャートのうち読込まれる部分を図105(A)
に、ソースバッファへの出力結果を図105(B)に、
それぞれ示す。
【0213】次に図83以下のチャートボックス解析に
移る。この図81に示される木構造チャートの最初の木
構造は順次処理ボックスX1である。したがって図85
の処理に従ってアセンブラソースプログラムを自動生成
し、ソースバッファに出力する。変換される木構造を図
106(A)に、ソースバッファへの出力結果を図10
6(B)にそれぞれ示す。
【0214】再び図81を参照して、次に解析されるべ
き木構造は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)に示す。
【0215】再帰呼出しされたチャートボックス解析ル
ーチンの終了時に、図109(A)の結果を用いてワー
クバッファに生成されたrepeat until構造X2(図8
1)全体のアセンブラソースプログラムを図109
(B)に示す。このアセンブラソースプログラムは、図
84のN18に示されるように、さらにソースバッファ
に出力される。このようにして、図81のX1〜X12
までの木構造チャートから自動生成されソースファイル
に出力されたアセンブラソースプログラムが図110に
示したものである。これが、図81に示す木構造チャー
トを自動変換によってZ−80のアセンブラソースプロ
グラムに変換したものである。
【0216】第3の実施形態 上の2つの実施の形態により自動生成されたソースリス
トについては、以下のような問題点が考えられる。たと
えば図111に示す木構造チャートをアセンブラソース
プログラムに変換する場合を考える。この場合、この木
構造チャートmultifは、構造的に同じ戻り位置を持つ2
つのif then 構造Y2およびY3を持っている。そのた
め上述の実施の形態に従ってアセンブラソースプログラ
ムを自動生成した結果、図112に示すように、ソース
リストの同一位置に連続して2つのラベルmultif2およ
びmultif1が生成されることになる。
【0217】これら2つのラベルが重複していることに
は特別な意味はなく、むしろこれら2つのラベルはソー
スプログラムの複雑さを増し、プログラムの容量を無駄
に増加させるだけである。
【0218】したがってこのように同一位置にラベルが
生成された場合には、そのラベル名をどちらかに統一し
不要なラベルを削除することによって、冗長なラベルの
発生を防ぐようにする。そうすることにより、生成され
たアセンブラソースプログラムが簡略化されてより理解
しやすくなるとともに、ソースプログラムの容量が無駄
に増加することがなくなる。冗長なラベルを取除いた後
のソースリストは図113のようになる。
【0219】このように冗長なラベルを検出しラベルの
簡略化を行なう方法として、チャートボックス解析ルー
チンを図114および図115に示されるように変更す
ることが考えられる。図114および図115のチャー
トボックス解析サブルーチンが図30および図31に示
された第1の実施の形態のチャートボックス解析ルーチ
ンと異なるのは、ステップC18の前に、ステップC2
3〜C25を設けて、これにより重複したラベルを削除
するようにした点である。他の部分においては図114
および図115は図30および図31と同じであり、こ
こではその詳細については繰返さない。
【0220】特に図115を参照して、まずステップC
23で、ワークバッファの最終行がラベル名か否かにつ
いての判定を行なう。ラベル名でなければラベルの重複
は起こり得ないから制御はC18に進んでワークバッフ
ァの内容をソースバッファに書込む。一方C23におい
てワークバッファの最終行がラベル名であると判定され
た場合には制御はC24に進む。
【0221】C24では、ソースバッファの次の行がラ
ベル名か否かについての判定を行なう。ソースバッファ
の次の行がラベル名でなければこの場合もラベルの重複
は起こらないので制御はC18に進む。
【0222】ソースバッファの次の行がラベル名である
場合には制御はC25に進む。C25では、ワークバッ
ファ内のアセンブラソースプログラム中で言及されてい
るこのラベル名を、すべてC24で検出されたラベル名
と一致するように変更するとともに、ワークバッファの
最終行を削除する処理を行なう。この処理の後制御をC
18に進める。
【0223】このC23〜C25の処理をここに加える
ことにより、最終的に生成されるアセンブラソースプロ
グラムにおいて、ラベル名が無駄に重複することが避け
られる。
【0224】以上のように上述の実施の形態では、アセ
ンブラ言語に対応した木構造チャートの記述方法をPA
Dチャートに対して拡張したが、他の木構造チャートに
対しても適用することができる。たとえば構造化フロー
チャート、SPDチャート、YACCチャート、HCP
チャートなどが考えられる。さらに上述の実施の形態で
はアセンブラ言語についてソースプログラムを生成する
場合について説明したが、アセンブラ言語以外の非構造
化言語にも適用することができる。
【0225】上述の実施の形態では、木構造チャートか
らアセンブラソースプログラム自動生成を行なうとき
に、CVUやアセンブラ言語に依存せずに同じ処理手順
を用いて自動生成を行なうために、基本となる命令参照
テーブルを定めたこのテーブルは、テーブルファイルと
して自動生成プログラムとは分離した形式にして、CP
Uやアセンブラ言語が変わるたびにメンテナンスができ
るようにしてもよいし、ソースプログラム中にデータテ
ーブルとして固定して持たせることにより、単一のCP
Uまたは言語の専用にしてもよい。
【図面の簡単な説明】
【図1】従来の書式によるPADチャートの一例を示す
図である。
【図2】従来の書式によるif then else構造のチャート
を示す図である。
【図3】従来の書式によるif then 構造のチャートを示
す図である。
【図4】従来の書式によるrepeat until構造のチャート
を示す図である。
【図5】従来の書式によるdo while構造のチャートを示
す図である。
【図6】従来にの書式による N+1/2 構造のチャートを
示す図である。
【図7】従来の書式によるジャンプ構造のチャートを示
す図である。
【図8】従来の書式によるラベル構造のチャートを示す
図である。
【図9】従来の書式による順次処理のチャートを示す図
である。
【図10】拡張された書式によるif then else構造のチ
ャートを示す図である。
【図11】if then 構造の拡張木構造チャートを示す図
である。
【図12】repeat until構造の拡張木構造チャートを示
す図である。
【図13】do while構造の拡張木構造チャートを示す図
である。
【図14】N+1/2 構造の拡張木構造チャートを示す図
である。
【図15】第1の実施形態で用いられるテーブルの一般
形式を示す図である。
【図16】第1の実施形態におけるif then else構造の
アセンブラプログラム自動生成規則を示す図である。
【図17】if then 構造のアセンブラソースプログラム
の自動生成規則を示す図である。
【図18】repeat until構造のアセンブラソースプログ
ラムの自動生成規則を示す図である。
【図19】repeat until構造のアセンブラソースプログ
ラムの自動生成規則を示す図である。
【図20】do while構造のアセンブラソースプログラム
の自動生成規則を示す図である。
【図21】do while構造のアセンブラソースプログラム
の自動生成規則を示す図である。
【図22】N+1/2 構造のアセンブラソースプログラム
の自動生成規則を示す図である。
【図23】N+1/2 構造のアセンブラソースプログラム
の自動生成規則を示す図である。
【図24】第1の実施形態におけるジャンプ構造のアセ
ンブラソースプログラムの自動生成規則を示す図であ
る。
【図25】第1の実施形態におけるラベル構造のアセン
ブラソースプログラムの自動生成規則を示す図である。
【図26】第1の実施形態における順次処理構造のアセ
ンブラソースソースプログラムの自動生成規則を示す図
である。
【図27】本発明の実施形態の装置を実現する計算機シ
ステムのブロック図である。
【図28】第1の実施形態において用いられる具体的な
テーブルを示す図である。
【図29】第1の実施形態のアセンブラソースプログラ
ム自動生成処理のメインプログラムフローチャートであ
る。
【図30】チャートボックス解析サブルーチン処理のフ
ローチャートである。
【図31】チャートボックス解析サブルーチン処理のフ
ローチャートである。
【図32】順次処理のサブルーチンのフローチャートで
ある。
【図33】if then else構造からのアセンブラソースプ
ログラムの自動生成サブルーチンのフローチャートであ
る。
【図34】第1の実施形態におけるif then 構造からの
アセンブラソースプログラム生成処理のサブルーチンの
フローチャートである。
【図35】第1の実施形態におけるrepeat until構造の
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図36】第1の実施形態におけるdo while構造のアセ
ンブラソースプログラムの自動生成処理のサブルーチン
のフローチャートである。
【図37】第1の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図38】第1の実施形態におけるジャンプ構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図39】第1の実施形態におけるラベル構造からのア
センブラソースプログラムの自動生成処理のサブルーチ
ンのフローチャートである。
【図40】第1の実施形態の装置を用いてアセンブラソ
ースプログラムに変換される木構造チャートの例を示す
図である。
【図41】図40の木構造チャートの一部を示す木構造
チャート図である。
【図42】図41の木構造チャートの図式ファイルの格
納形式を示す図である。
【図43】さらに一部の木構造チャートを示す図であ
る。
【図44】図43の木構造チャートの図式ファイルの格
納形式を簡略に示した図である。
【図45】木構造チャートからのアセンブラソースプロ
グラムの自動生成の経過を示す図である。
【図46】木構造チャートからのアセンブラソースプロ
グラムの自動生成の経過を示す図である。
【図47】木構造チャートからのアセンブラソースプロ
グラムの自動生成の経過を示す図である。
【図48】木構造チャートからのアセンブラソースプロ
グラムの自動生成の経過を示す図である。
【図49】木構造チャートからのアセンブラソースプロ
グラムの自動生成の経過を示す図である。
【図50】最終的に生成されるアセンブラソースプログ
ラムを示す図である。
【図51】第2の実施形態におけるif then else構造の
拡張木構造チャートを示す図である。
【図52】第2の実施形態におけるif then 構造の拡張
木構造チャートを示す図である。
【図53】第2の実施形態におけるrepeat until構造の
拡張木構造チャートを示す図である。
【図54】第2の実施形態におけるdo while構造の拡張
木構造チャートを示す図である。
【図55】第2の実施形態における N+1/2 構造の拡張
木構造チャートを示す図である。
【図56】第2の実施形態における N+1/2 構造の拡張
木構造チャートを示す図である。
【図57】第2の実施形態における N+1/2 構造の拡張
木構造チャートを示す図である。
【図58】第2の実施形態における N+1/2 構造の拡張
木構造チャートを示す図である。
【図59】第2の実施形態における N+1/2 構造の拡張
木構造チャートを示す図である。
【図60】第2の実施形態における N+1/2 構造の拡張
木構造チャートを示す図である。
【図61】第2の実施形態におけるジャンプ構造の拡張
木構造チャートを示す図である。
【図62】第2の実施形態におけるラベル構造の拡張木
構造チャートを示す図である。
【図63】第2の実施形態における順次処理構造の拡張
木構造チャートを示す図である。
【図64】第2の実施形態において用いられるテーブル
の一般形式を示す図である。
【図65】第2の実施形態におけるif then else構造か
らのアセンブラソースプログラムの自動生成規則を示す
図である。
【図66】第2の実施形態におけるif then 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図67】第2の実施形態におけるrepeat until構造か
らのアセンブラソースプログラムの自動生成規則を示す
図である。
【図68】第2の実施形態におけるrepeat until構造か
らのアセンブラソースプログラムの自動生成規則を示す
図である。
【図69】第2の実施形態におけるdo while構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図70】第2の実施形態におけるdo while構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図71】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図72】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図73】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図74】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図75】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図76】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図77】第2の実施形態におけるジャンプ構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図78】第2の実施形態におけるラベル構造からのア
センブラソースプログラムの自動生成規則を示す図であ
る。
【図79】第2の実施形態における順次処理構造からの
アセンブラソースプログラムの自動生成規則を示す図で
ある。
【図80】第2の実施形態の装置において実際に用いら
れるテーブルを示す図である。
【図81】第2の実施形態の装置を用いてアセンブラソ
ースプログラムに自動変換される木構造チャートの一例
を示す図である。
【図82】第2の実施形態の装置におけるアセンブラソ
ースプログラムの自動生成処理のメインプログラムのフ
ローチャートである。
【図83】第2の実施形態におけるチャートボックス解
析処理のサブルーチンのフローチャートである。
【図84】第2の実施形態におけるチャートボックス解
析処理のサブルーチンのフローチャートである。
【図85】第2の実施形態における順次処理構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図86】第2の実施形態におけるif then else構造か
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
【図87】第2の実施形態におけるif then else構造か
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
【図88】第2の実施形態におけるif then 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図89】第2の実施形態におけるif then 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図90】第2の実施形態の装置におけるrepeat until
構造からのアセンブラソースプログラムの自動生成処理
のサブルーチンのフローチャートである。
【図91】第2の実施形態におけるrepeat until構造か
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
【図92】第2の実施形態におけるrepeat until構造か
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
【図93】第2の実施形態におけるdo while構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図94】第2の実施形態におけるdo while構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図95】第2の実施形態におけるdo while構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図96】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図97】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図98】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図99】第2の実施形態における N+1/2 構造からの
アセンブラソースプログラムの自動生成処理のサブルー
チンのフローチャートである。
【図100】第2の実施形態における N+1/2 構造から
のアセンブラソースプログラムの自動生成処理のサブル
ーチンのフローチャートである。
【図101】第2の実施形態における N+1/2 構造から
のアセンブラソースプログラムの自動生成処理のサブル
ーチンのフローチャートである。
【図102】第2の実施形態における N+1/2 構造から
のアセンブラソースプログラムの自動生成処理のサブル
ーチンのフローチャートである。
【図103】第2の実施形態におけるジャンプ処理構造
からのアセンブラソースプログラムの自動生成処理のサ
ブルーチンのフローチャートである。
【図104】第2の実施形態におけるラベル処理構造か
らのアセンブラソースプログラムの自動生成処理のサブ
ルーチンのフローチャートである。
【図105】第2の実施形態の装置を用いて木構造チャ
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
【図106】第2の実施形態の装置を用いて木構造チャ
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
【図107】第2の実施形態の装置を用いて木構造チャ
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
【図108】第2の実施形態の装置を用いて木構造チャ
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
【図109】第2の実施形態の装置を用いて木構造チャ
ートからアセンブラソースプログラムを自動生成する処
理の経過を示す図である。
【図110】第2の実施形態の装置を用いて最終的に得
られるアセンブラソースプログラムを示す図である。
【図111】アセンブラソースプログラムの自動生成処
理に伴なう問題を指摘するための、木構造チャートの一
例を示す図である。
【図112】図111に示す木構造チャートから自動生
成されたアセンブラソースプログラムを示す図である。
【図113】図112のアセンブラソースプログラムか
ら、重複したラベルを削除したプログラムを示す図であ
る。
【図114】第3の実施形態の装置において実行される
プログラムのうち、チャートボックス解析のサブルーチ
ンのフローチャートである。
【図115】第3の実施形態の装置において実行される
プログラムのうち、チャートボックス解析のサブルーチ
ンのフローチャートである。
【符号の説明】
410 ホスト計算機 412 プリンタ 414 ファイル装置 416 CRT端末 400、430 テーブル 420、440 Z−80用テーブル

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 分岐に関するボックス中にソース行記述
    を許し、かつ分岐に関する各ボックスに、対応する判断
    条件の記述を許すように拡張された木構造チャートに基
    づいて、任意のアセンブラ言語のソースプログラムを生
    成するためのアセンブラ言語ソースプログラム生成装置
    であって、 目的となるアセンブラ言語の命令の記述形式を、異なる
    アセンブラ言語間で共通に定められた書式に従って記述
    したテーブルを記憶するための記憶手段と、 木構造チャートを読込んで、アセンブラ言語の種類に依
    存しない所定の変換手順に従ってアセンブラ言語のソー
    スプログラムを生成するための手段とを含み、 前記生成するための手段は、あるボックスからのソース
    プログラムの生成において、前記記憶手段に記憶された
    前記テーブル内の命令の記述形式を参照し、かつ対応す
    る前記ボックス内のソース行記述および判断条件の記述
    に基づいて、前記目的となるアセンブラ言語に適合した
    命令を生成する、アセンブラ言語ソースプログラム生成
    装置。
  2. 【請求項2】 前記テーブルは、目的となるアセンブラ
    言語の、相補的な条件判断命令の相互の関係をさらに記
    述しており、 前記生成するための手段は、分岐を記述したボックスか
    らのソースプログラムの生成において、前記記憶手段に
    記憶された前記テーブル内の分岐命令の記述形式と、前
    記相補的な条件判断命令の相互の関係の記述とを参照
    し、かつ対応する前記ボックス内のソース行記述および
    判断条件の記述に基づいて、利用可能な分岐命令を定め
    ることにより、前記目的となるアセンブラ言語に適合し
    た分岐命令を生成する、請求項1に記載のアセンブラ言
    語ソースプログラム生成装置。
  3. 【請求項3】 ジャンプ命令に関するボックス内にLONG
    JUMP 命令とSHORTJUMP命令との区別を記述することを
    許し、かつ分岐に関するボックス中にソース行記述を許
    すことにより、異なるアセンブラ言語について共通の形
    式で記述できるように拡張された木構造チャートに基づ
    いて、任意のアセンブラ言語のソースプログラムを生成
    するためのアセンブラ言語ソースプログラム生成装置で
    あって、 目的となるアセンブラ言語の命令の記述形式を、異なる
    アセンブラ言語間で共通に定められた書式に従って記述
    したテーブルを記憶するための記憶手段を含み、 前記テーブルは、LONG JUMP 命令とSHORT JUMP命令とを
    別個のものとして記憶しており、 前記アセンブラ言語ソースプログラム生成装置は、 木構造チャートを読込んで、アセンブラ言語の種類に依
    存せず、かつ、LONG JUMP 命令とSHORT JUMP命令とを区
    別する所定の変換手順に従ってアセンブラ言語のソース
    プログラムを生成するための手段をさらに含み、 前記生成するための手段は、あるボックスからのソース
    プログラムの生成において、前記記憶手段に記憶された
    前記テーブル内の命令の記述形式を参照し、かつ対応す
    る前記ボックス内のソース行記述とLONG JUMP 命令およ
    びSHORT JUMP命令の区別に関する記述に基づいて、前記
    目的となるアセンブラ言語に適合した命令を生成する、
    アセンブラ言語ソースプログラム生成装置。
  4. 【請求項4】 条件判断に関するボックス中にソース行
    記述を許し、かつ条件判断に関するボックスに対する判
    断条件の記述を各ボックスに許すように拡張された木構
    造チャートに基づいて、任意のアセンブラ言語のソース
    プログラムを生成するためのアセンブラ言語ソースプロ
    グラム生成装置であって、 目的となるアセンブラ言語の命令の記述形式を、異なる
    アセンブラ言語間で共通に定められた書式に従って記述
    したテーブルを記憶するための記憶手段と、 木構造チャートを読込んで、アセンブラ言語の種類に依
    存しない所定の変換手順に従ってアセンブラ言語のソー
    スプログラムを生成するための手段とを含み、 前記生成するための手段は、あるボックスからのソース
    プログラムの生成において、ソースプログラム中にラベ
    ルを生成することがあり、 前記アセンブラ言語ソースプログラム生成装置はさら
    に、 前記生成するための手段によってソースプログラム中に
    重複して生成される複数個のラベルを検出するための重
    複ラベル検出手段と、 前記重複ラベル検出手段により検出された重複して生成
    される複数個のラベルのうち、あるものを残して他を削
    除するためのラベル削除手段とを含む、アセンブラ言語
    ソースプログラム生成装置。
JP08834696A 1996-04-10 1996-04-10 アセンブラ言語ソースプログラム生成装置 Expired - Fee Related JP3368141B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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