JPS60254327A - オブジエクト生成方式 - Google Patents

オブジエクト生成方式

Info

Publication number
JPS60254327A
JPS60254327A JP11155884A JP11155884A JPS60254327A JP S60254327 A JPS60254327 A JP S60254327A JP 11155884 A JP11155884 A JP 11155884A JP 11155884 A JP11155884 A JP 11155884A JP S60254327 A JPS60254327 A JP S60254327A
Authority
JP
Japan
Prior art keywords
operand
operator
stack
data
character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11155884A
Other languages
English (en)
Inventor
Kunio Ieda
家田 邦夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP11155884A priority Critical patent/JPS60254327A/ja
Publication of JPS60254327A publication Critical patent/JPS60254327A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、算術式を計算機で実行するためのオブジェク
ト・モジュールを短時間で生成できるようにしたオブジ
ェクト生成方式に関するものである。
〔従来技術と問題点〕
第3図は会話型コンパイラを説明する図である。
第3図において、1はセンタの計算機、2は端末、3は
オブジェクト・モジコールを格納するファイルをそれぞ
れ示している。計算機1においては、オペレーティング
・システムの配下でTSSやコンパイラなどが動作する
。端末2の操作者が、ソース・プログラムを計算機に入
力し、種々の指示を与えると、計算機1はソース・プロ
グラムをオブジクト・モジュールに変換するものである
。コンパイラには、一括型とインタプリタ型とがある。
一括型のコンパイラとは、ソース・プログラムを機械語
レベルのプログラムに変換するものである。
インタプリタ型のコンパイラとは、ソース・プログラム
を中間言語レベルのプログラムに変換するものである。
一括型のコンパイラはコンパイル時開は長いが、出来上
ったオブジェクト・プログラムの実行時間が短かいとい
う特徴を持つ。インタプリタ型のコンパイラはコンパイ
ル時間が短かいが、出来上ったオブジェクト・プログラ
ムの実行時間が大であるという特徴を持つ。ソース・プ
ログラム中の算術式は、単項および2項演算に分解され
、オブジェクト・プログラムに変換されるが、従来は単
項、2項演算をプログラム論理でオブジェクトに変換し
ているので、算術式をオブジェクトドに変換する論理が
複雑となり、コンパイル時間が長くなると共に、コンパ
イル時間が算術式の項数に比例しないという欠点を有し
ている。
〔発明の目的〕
本発明は、上記の欠点を除去するものであって、単項又
は2項演算のオブジェクト生成論理を簡略化できると共
に、単項又は2項演算のコンパイル時間の短縮と均等化
を実現できるようになったオブジェクト生成方式を提供
することを目的としている。
〔問題点を解決するための手段〕
そしてそのため、本発明のオブジェクト生成方式は、算
術式を表す文字列を格納する入カバソファと、オペレー
タを表す文字が格納されるオペレータ・スタックと、属
性情報が付加されたオペランド・データを表す文字が格
納されるオペランド・スタックと、単項演算及び2項演
算に対する命令列が予め格納されているスケルトン表と
、オペレータとなる文字とその優先順位とが予め格納さ
れているオペレータ・コード表と、オペランド・データ
となる文字が予め格納されているオペランド・h−ド表
と、解釈部と、処理部とを具備し、上記解釈部は、上記
人カバソファを左から右へ走査して文字を取り出し、上
記オペレータ・コード表及びオペランド・コード表を参
照して、取り出された文字がオペレータの場合には上記
オペレータ・スタックに入れ、取り出された文字がオペ
ランド・データである場合には属性情報をイ」加して当
該文字を上記オペランド・スタックに入れ、優先順位に
従って上記オペレータ・スタックからオペレータを取り
出すと共に上記オペランド・スタックから対応するオペ
ランド・データを取り出し、取り出されたオペレータ、
オペランド・データ及びオペランド・データの属性情報
を上記処理部に渡すように構成され、上記処理部は、上
記解釈部から渡されたデータをキーとして上記スケルト
ン表をサーチし、上記スケルトン表から取り出された命
令列を出力するように構成されていることを特徴とする
ものである。
〔発明の実施例〕
以下、図面を参照して本発明の詳細な説明する。
要約すると、本発明は下記のようにして算術式のオブジ
ェクト・プログラムを生成するのである。
(i)式の評価の過程でオペレータ(+、−、X。
÷、6tc)、オペランド(変数、定数、関数。
・etc)を分解してスタックすると共に、オペランド
の属性割付けを行う。
(ii )単項及び2項演算の全ての形式を予めスケル
トン化して登録しておく。
(iii )単項又は2個演算が必要な時点で、オペ■
ノータとオペランドをキーとしてスケルトン表をサーチ
して必要なスケルトンを引出し、オブジェクトを完成さ
せる。
第1図は本発明の詳細な説明する図である。第1図にお
いて、4はスケルトン表、5はオペレータ・スタック、
6はオペランド・スタック、7は属性記憶部をそれぞれ
示している。スケルトン表4には、演算項とスケルトン
より成るグループが複数個登録されている。スケルトン
表4において、Mはメモリ・データ、R8はレジスタ・
データをそれぞれ示している。十Mという演算項に対す
るスケルトンは、 LR,、M というものである。これば、メモリのデータをレジスタ
R1にロードせよという命令である。−R1という演算
項に対するスケルトンは、LCRR,、R直 というものである。これは第2オペランドの補数を第1
オペランドの場所に入れよという命令である。−Mとい
う演算項に対応するスケルトンは、LR,M LCRR,、R。
という命令である。R,+R,という演算項に対するス
ケルトンは、 ARRi、Rj というものである。これはレジスタR,とRJの和をレ
ジスタR1にセットせよという命令である。
R,+M又はM+Ri という演算項に対応するスケル
トンは、 AR,、M というものである。これはメモリのデータとレジスタR
8のデータの和をレジスタR1にセ・ノドせよという命
令である。MI+M2という演算項に対するスケルトン
は L R,・M+ A R4、M2 というものである。なお、スケルトン表の命令はアセン
ブラ語で表現されているが、実際には機械語命令が書き
込まれていると考えてよい。
いま、−A+Bという算術式をコンパイルする場合を考
える。なお、第1図においてENDという文字を枠で囲
んだものは算術式の終りを示すEND記号である。コン
パイラは、上記の算術式を左から走査する。最初に−と
いうオペレータが現れるので、これをオペレータ・スタ
・ツク5に入れ、次にAという文字が現れるが、これが
オペランド・データであり且つメモリ・データであるこ
とが判ると、Aをオペランド・スタック6に入れ、Aと
いう文字が格納されるオペランド・スタック記憶域内の
属性記憶部7にメモリ・データである旨の情報を書き込
む。属性記憶部7はオペランド・スタック6の一部であ
ると考えてよい。Aという文字の次に十というオペレー
タが現れるので、これをオペレータ・スタック6に書き
込む。−というオペレータの優先順位と十というオペレ
ータの優先順位は同じであるので、−Aという単項演算
を実行するための命令列を生成する。このため、スケル
トン表4を−Mというキーでサーチして、LR,、M LCRR,、R。
という命令列を得る。そして、オペレータ・スタック5
から−というオペレータを消去すると共に、メモリ・デ
ータという属性を持つ文字Aをオペランド・スタック6
から追い出し、レジスタ・データという属性を持つ番号
(レジスタ番号)をオペランド・スタック6に入れる。
−Aという演算項に対するオブジェクトを生成した後、
入力文雫列の走査を再開する。→−という文字の次にB
という文字が現れるが、これがオペランド・データであ
り且つメモリ・データであることが判ると、Bという文
字をオペランド・スタック°6、に入れ、Bが格納され
るオペランド・スタック記憶域の属性記。
憶部7゛にメモリ・データである旨の情報を書き込む。
Bという文字の後にEND記号が現れるので、このEN
D記号もオペレータ・スタック5に入れられる。この場
合、オペレータ・スタック5の一番上から2番目のオペ
レータは十であり、そのオペランド・データはレジスタ
R1に格納されている一A及びメモリに格納されている
Bであるので、スケルトン表4はR,、+、Mというキ
ーでサーチされ、 A R,、M という命令列が得られる。完成したオブジェクトは、 L R4、M (Aの変数域を指す) LCRR量、Ri A R,、M (Bの変数域を指す) となる。
第2図は本発明のコンパイラの1実施例のブロック図で
ある。第2図において、8は入カバソファ、9は解釈部
、1oはオペレータ・コード表、11はオペランド・コ
ード表、12は処理部をそれぞれ示している。なお、第
1図及び第2図と同一符号は同一物を示している。入力
バッファ8には、端末2から送られて来た算術式が格納
される。オペレータ・コード表10には、オペレータと
なる文字及びその優先順位が書き込まれている。オペラ
ンド・コード表11には、オペランド・データとなる文
字が格納されている。解釈部9は、入カバソファ8から
の文字の取り出し、オペレータ・スタック5に対するア
クセス、オペランド・スタック6に対するアクセス、及
び処理部12の起動などを行うものである。処理部12
は、解釈部9がら渡されたオペレータ、オペランド及び
属性情報に基づいてスケルトン表4をサーチし、取り出
した命令列をファイル3に吐き出すものである。
いま、入カバソファ8に −A+B (END符号) という文字列が格納されているものとする。解釈部9は
、入カバソファ8を左側から走査する。解釈部9は、オ
ペレータ・コード表10及びオペランド・コード表11
を参照して−という文字がオペレータであるか、或いは
オペランドであるかを判断する。−はオペレータである
ので、解釈部9はこれをオペレータ・スタック5に入れ
る。入力バッファ8の次の文字はAであり、Aはオペラ
ンド・データであるので、解釈部9はこれをオペランド
・スタック6に入れ、その属性記憶部7にメモリ・デー
タであることを示す属性情報を書き込む。
入カバソファ8の次の文字は十であり、+はオペレータ
であるので、解釈部9はこれをオペレータ・スタック5
に入れる。オペレータ・スタック5に格納されているオ
ペレータは−と+であり、−と十の優先順位は同じであ
るので、解釈部9は−というオペレータ、文字A及びメ
モリ・データであるという属性情報を処理部12に渡し
、これを起動する。処理部12は、解釈部9から渡され
たデータをキーとしてスケルトン表4をサーチし、スケ
ルトン表4から取り出された L R,、M LCRR,、R□ という命令列をファイル3に書き込む。演算項に対応す
る命令列をファイル3に出力した後、処理部12は処理
終了とレジスタ番号とを解釈部9に返す。解釈部9は、
この通知を受け取ると、オペレータ・スタック4から−
というオペレータを追い出し、オペランド・スタック6
からメモリ・7データという属性を持つ文字Aを追い出
す。そして、オペランド・スタック6にレジスタ番号を
入れ、これにレジス゛り・データという属性を与える。
この処理が終了した後、解釈部9は入力バッファ8の走
査を再開し、B・という文字を取り出す。このBという
文字はオペランド・データであるので、解釈部9ば文字
Bにメモリ・データという属性情報を付加してオペラン
ド・スタック6に入れる。
解釈部9は、入カバソファ8から次の文字を取り出す。
この文字はEND記号であるので、解釈部9はこれをオ
ペランド・スタック5に入れ、オペレータ・スタック5
を調べる。オペレータ・スタック5には十というオペレ
ータが残っているので、解釈部9は、オペランド・スタ
ック6の中から対応するオペランド・データを取り出し
、レジスタ・データであることを示す属性情報が付加さ
れたレジスタ番号、メモリ・データであることが付加さ
れた文字B及び十というオペレータを処理部12に渡し
、これを起動する。処理部12は、解釈部9から渡され
たデータをキーとしてスケルトン表4をサーチして、ス
ケルトン表4から取り出されたA R,、M という命令列をファイル3に書き込む。
入カバソファ8に格納されている算術式が−A+l3X
c (END記号)というものである場合には、下記の
ような処理が行われる。文字Bを入力バッファ8から取
り出し、メモリ・データという属性情報が付加された文
字Bをオペランド・スタック6に書き込む迄の処理は、
−A+B (END記号)の場合と同じである。その後
で入カバソファ8から次の文字を取り出すと、この文字
は×というオペレータであるので、解釈部9はこれをオ
ペレータ・スタック5に入れる。十というオペレータの
優先順位より×というオペレータの優先順位が高いので
、解釈部9は入力バッファ8から次の文字を取り出す。
この文字はCであるので、解釈部9はメモリ・データと
いう属性情報が付加された文字Cをオペランド・スタッ
ク6に書込み、入力バッファ8の次の文字を取り出す。
次の文字はEND記号であるので、解釈部9はこれをオ
ペレータ・スタック5に入れ、×というオペレータ、レ
ジスタ・データという属性情報が付加されたレジスタ番
号及びメモリ・データという属性情報が付加された文字
Cを解釈部9に与える。処理部12は、解釈部9から渡
されたデータをキーとしてスケルトン表4をサーチし、
乗算を実行するための命令を取り出す。この命令は例え
ば MRR,、M(Cの変数域を指す) 。
というものである。処理部12は、この命令をファイル
3に書込みそして処理終了とレジスタ番号とを解釈部9
に返す。解釈部9は、この通知を受け取ると、解釈部9
は×というオペレータをオペレータ・スタックから追い
出し、この乗算に使用されたオペランド・データをオペ
ランド・スタック6から追い出し、処理部12から渡さ
れたレジスタ番号にレジスタ・データという属性情報を
付加してこれをオペランド・スタック6に書き込む。オ
ペレータ・スタック5には十というオペレータが残って
いるので、解釈部9は十というオペレータ、レジスタ・
データという属性情報が付加された第1オペランド・デ
ータ及びレジスタ・データという属性情報が付加された
第2オペランド・データを処理部12に渡し、これを起
動する。処理部12は解釈部9から渡されたデータをキ
ーとしてスケルトン表4をサーチし、この加算を実行す
るための命令を取り出す。この命令は ARR轟、R4 というものである。処理部12はこの命令をファイル3
に書込み、そして処理終了と結果を格納したレジスタの
番号とを解釈部9に返す。
〔発明の効果〕
以上の説明から明らかなように、本発明によれば、オブ
ジェクト生成論理を簡略化することが出来、延いてはコ
ンパイル時間の短縮及び単項及び2項演算についての処
理時間の均等化という顕著な効果が得られる。
【図面の簡単な説明】
第1図は本発明の詳細な説明するための図、第2図は本
発明の1実施例のブロック図、第3図は会話型コンパイ
ラの概要を示す図である。 1−センタの計算機、2一端末、3−ファイル、4−ス
ケルトン表、5−オペレータ・スタック、6−オペラン
ド・スタソへ7−属性記憶部、8S−人力バッファ、9
−解釈部、10〜オペレータ・コード表、11−オペラ
ンド・コード表、】2−処理 6部。 1( V2図 Y3図

Claims (1)

    【特許請求の範囲】
  1. 算術式を表す文字列を格納する入カバソファと、オペレ
    ータを表す文字が格納されるオペレータ・スタックと、
    属性情報が付加されたオペランド・データを表す文字が
    格納されるオペランド・スタックと、単項演算及び2項
    演算に対する命令列が予め格納されているスケルトン表
    と、オペレータとなる文゛字とその優先順位とが予め格
    納されているオペレータ・コード表と、オペランド・デ
    ータとなる文字が予め格納されているオペランド・コー
    ド表と、解釈部と、処理部とを具備し、上記解釈部は、
    上記入カバソファを左から右へ走査して文字を取り出し
    、上記オペレータ・コード表及びオペランド・コード表
    を参照して、取り出された文字がオペレータの場合には
    上記オペレータ・スタックに入れ、取り出された文字が
    オペランド・データである場合には属性情報を付加して
    当該文字を上記オペランド・スタックに入れ、優先順位
    に従って上記オペレータ・スタックからオペレータを取
    り出すと共に上記オペランド・スタックから対応するオ
    ペランド・データを取り出し、取り出されたオペレータ
    、オペランド・データ及びオペランド・データの属性情
    報を上記処理部に渡すように構成され、上記処理部は、
    上記解釈部から渡されたデータをキーとして上記スケル
    トン表をサーチし、上記スケルトン表から取り出された
    命令列を出力するように構成されていることを特徴とす
    るオブジェクト生成方式。
JP11155884A 1984-05-31 1984-05-31 オブジエクト生成方式 Pending JPS60254327A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11155884A JPS60254327A (ja) 1984-05-31 1984-05-31 オブジエクト生成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11155884A JPS60254327A (ja) 1984-05-31 1984-05-31 オブジエクト生成方式

Publications (1)

Publication Number Publication Date
JPS60254327A true JPS60254327A (ja) 1985-12-16

Family

ID=14564429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11155884A Pending JPS60254327A (ja) 1984-05-31 1984-05-31 オブジエクト生成方式

Country Status (1)

Country Link
JP (1) JPS60254327A (ja)

Similar Documents

Publication Publication Date Title
US5860008A (en) Method and apparatus for decompiling a compiled interpretive code
Johnson et al. UNIX time-sharing system: Language development tools
Metcalf et al. Modern fortran explained
Hansen Edison—a multiprocessor language
JPH05508494A (ja) ソフトウェア開発のためのコンピュータプログラムの統合階層表示
JPH0630066B2 (ja) テーブル型言語翻訳方法
Costagliola et al. DR PARSERS: a generalization of LR Parsers
Glass An elementary discussion of compiler/interpreter writing
JPS60254327A (ja) オブジエクト生成方式
JPH07141192A (ja) 翻訳処理方法
Mossin Partial evaluation of general parsers
Anagnostopoulos et al. Computer architecture and instruction set design
Tanenbaum A general-purpose macro processor as a poor man's compiler-compiler
Coleman et al. A method for the syntax directed design of multiprograms
Krohn A parallel approach to code generation for Fortran like compilers
Pearce Interactive simulation on minicomputers: Part 2-Implementation of the ISIS language
Watanabe et al. The macro assembler generator for microcomputers
EP0244928A1 (en) Improvements relating to control flow in computers
Kent et al. Encyclopedia of Computer Science and Technology: Volume 32-Supplement 17: Compiler Construction to Visualization and Quantification of Vortex-Dominated Flows
Sloman et al. PoPLoo: A MULTILANGUAGE PROGRAM
Leverett Topics in code generation and register allocation
Morris et al. The Software Tools
Lun System design of a hardware Fortran compiler
Patnaik et al. Implementation of CSP-S for description of distributed algorithms
Clark Programming in Ada: a first course