JPH06110703A - コンパイル方法 - Google Patents

コンパイル方法

Info

Publication number
JPH06110703A
JPH06110703A JP5150384A JP15038493A JPH06110703A JP H06110703 A JPH06110703 A JP H06110703A JP 5150384 A JP5150384 A JP 5150384A JP 15038493 A JP15038493 A JP 15038493A JP H06110703 A JPH06110703 A JP H06110703A
Authority
JP
Japan
Prior art keywords
code
macro
assembler
deposit
computer code
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.)
Granted
Application number
JP5150384A
Other languages
English (en)
Other versions
JP2750313B2 (ja
Inventor
William West
ウイリアム、ウエスト
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06110703A publication Critical patent/JPH06110703A/ja
Application granted granted Critical
Publication of JP2750313B2 publication Critical patent/JP2750313B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation

Landscapes

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

Abstract

(57)【要約】 【目的】 コンピュータコードのコンパイルの改良。 【構成】 コンパイルの前に一時的に配置される一組の
コードステートメントが配置される記憶アレイ(24
5)が作られる。コードステートメントのこのような組
は、それらがコンパイルされる前にコンパイルされるべ
きコードの他の部分を必要とするステートメントを含む
か、またはコンピュータのプログラムのランニングに直
接関連しないコードの部分、例えばトレースポイントデ
ィスクリプタである。このコードステートメントは後に
言語コンパイラ(210)(340)でコンパイルされ
た記憶アレイ(245)から検索され、言語コンパイラ
(210)(340)でコンパイルされ、オブジェクト
モジュール(220)内に正しく配置される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータコードの
コンパイル方法に関する。
【0002】
【従来の技術】コンピュータは、書くことが非常に困難
な2進形態の機械語のみを理解し、解釈する。アセンブ
ラ言語は、機械語で直接にコード化する代わりにプログ
ラマが命令をコード化することができる記号プログラム
言語である。アセンブラ言語は、プログラマが、機械語
で使用される単なる2進ディジット0及び1の代わりに
アルファベット及び数値で形成された意味のある記号を
使用することができるから、読み、理解し、変更作業を
行うためのコード化を容易にすることができる。図1
は、コンピュータシステムの概略図である。プログラマ
は、メモリのソースファイル30内に記憶されたターミ
ナル20にアセンブラ言語でコードを入力する。それ
は、ソースファイル30が終了したとき、機械言語でオ
ブジェクトモジュール50をつくるアセンブラ40によ
って処理される。オブジェクトモジュール50のオブジ
ェクトコードは、他の処理プログラムへの入力として使
用され、リンケージ・エディタ60は、ロードモジュー
ル70をつくる。ロードモジュール70は、コンピュー
タの主記憶装置にロードされ、そのプログラムを実行す
る。アセンブラ言語は、形及び内容において機械語にも
っとも近い記号プログラム言語である。それは命令及び
またはコメントを表すステートメントからつくられる。
命令ステートメントは、言語の作業部分であり、次の3
つの部分に分割される。 1)機械命令。プロセッサ命
令の組の機械語命令の記号的な表現がある。 2)アセンブラ命令。これらはソースモジュールのアセ
ンブリ中、あるオペレーションを実行するためにアセン
ブラプログラムへの要求である。このようなオペレーシ
ョンの例は、データの内容を定義し、ソースモジュール
の最後を定義しまたは主記憶装置の領域を保存する。内
容を定義する命令を除いて、アセンブラは、オブジェク
トコードへのアセンブラ命令を翻訳しない。 3)マクロ命令。これらは、「プレコンパイル(pre
−compile)」ステップ内でのマクロ定義と呼ば
れるコードの所定のシーケンスを処理するアセンブラプ
ログラムへの要求である。マクロ定義は変数を含み、ソ
ースコードの始めに生じる。マクロは定義に続いてマク
ロ変数の値を設定する「マクロコール」によって呼び出
さなければならない。アセンブラは、マクロ定義から、
機械命令及びアセンブラ命令を発生し、それは、それら
があたかもソースモジュールでのオリジナル入力の部分
であるかのように処理する。マクロ定義は使用者によっ
てプログラムされ、アセンブラに予めプログラムされ
る。
【0003】IBM/370アセンブラ言語の説明は、
「OS/VS−DOS/VSE−V/370アセンブラ
言語と題されたIBMマニュアルGC33−4010に
おいて、及び1985年ニューヨークスポッツウッド
D.ストダード、マグロウヒルによる「IBM370用
のアセンブラ言語プログラミングの原理」に見られる。
これらの刊行物からのアセンブラ言語は、言及によっ
て、ここに組み入れられている。
【0004】コンピュータコードを翻訳するとき、アセ
ンブラはベースレジスタ、通常1つまたはそれ以上の
「ワーク」レジスタを使用する。IBM/370または
IBM/390アーキテクチァのベースレジスタは、4
096バイトの範囲のアドレスを指定することができ
る。通常、これは目的を達成するためには十分である
が、時々オーバロードになる。このようなオーバロード
の例は、(トレースポイントと呼ばれる)ソフトウエア
のエラーの診断が主プログラムコードに組み込まれるこ
とが必要であるときに生じる。トレースポイントディス
クリプタは、コードで可変コンピュータプログラム主記
憶装置を占め、ある場合には、ベースレジスタが必要な
特別の記憶装置のための余地を有さないから、ディスク
リプタを導入することはできない。
【0005】この問題を解決する1つの方法は、コード
発生の実際のシーケンスに比較して言語コンパイラによ
って作成された言語ステートメントのシーケンスを変更
することである。
【0006】言語ステートメントのシーケンスを変更す
ることは、例えば、コンパイルされた言語のコードをプ
ログラム内に早く現れるようにすることによって行われ
る。このような技術は、新しいデータを有する既に存在
するコードデータをオーバレイするために使用され、O
RGアセンブラ言語コントロールステートメントを使用
する。また、このステートメントは、例えば、主記憶装
置の場所、記憶される実際のデータがプログラム内で発
生したときに使用され、ある時間の後、コンパイルプロ
グラム発生がある新しい場所に進んだとき、今知られて
いる最後の値を有する過ぎた場所をコンパイラにオーバ
レイすることができる。このようなプログラムの例は: LABEL1 DC F ′O ′ PLACE HOLDER,TO BE OVERLAYED LATER LABEL2 EQU★ LABEL2 LOCATION ORG LABEL1 CHANGE PRESENT ORIGIN TO LABEL1 DC F ′5 ′ LABEL1 NOW CONTAINS VALUE ′5 ′ ORG, RETURN TO LABEL2 LOCATION
【0007】この例において、第1のステートメント変
数LABEL1用の空間を保持する。プログラムの後方
においてのみ、この変数の値が知られる。ORG及びD
Cステートメントを使用することによって値5で予約さ
れたスペースにオーバレイすることができる。この値
は、変数LABEL1の値を使用するステートメントを
実行する間に使用される。
【0008】また、ORGステートメントは、言語のコ
ンパイル時に所定のラベル(ラベル″a″)を基準とす
ることができ、後者の他のラベル(ラベル″b″)は、
与えられたラベル″a″と同じ場所をオーバレイされ、
それによって2つの異なるラベル″a″及び″b″によ
って同じ主記憶装置の場所を基準とすることができる。
【0009】言語ステートメントのシーケンスを変化さ
せる他の例は、言語コードをプログラムの後方に現れる
ようにしようとするときである。この技術は、プログラ
マがまだ存在しないプログラム内の必要なデータ定数を
作り、それを基準とすることができるようにLTORG
ステートメントを使用する。このステートメントは(リ
テラルと呼ばれる)データ定数(ストッタード(Sto
ttard)p30参照)を発生し、データ定数は、い
くつかの接近可能な場所でプログラムに対して発生し、
1つごとにいくつかのラベルを作り、主記憶装置のいく
つかの場所で(リテラルプールと呼ばれるデータ定数を
収集する(ストッタード(Stottard)p43参
照)。例えば、LTORGステートメントの無い1つの
プログラムは: L REG1, DATAX LOAD REGISTER1 WITH ADRESS OF LABELZ S REG1, DATAY SUBTRACT 8 FROM REGISTER 1 CONTENTS --- DATAX DC A(LABELZ) ADDRESS OF LABEL LABELZ DATAX DC F′ 08 ′ DATA VALUE OF 8
【0010】しかしながら、LTORGステートメント
を使用することによって、次のようにプログラムを作成
することができる。 L REG1,=A(LABELZ) LOAD REGISTER1 WITH ADDRESS OF LABELZ S REG1,=F ′08′ SUBTRACT 8 FROM REGISTER 1 CONTENTS --- LTORG コンパイル時のLTORG ステートメントは、プログ
ラマによって労力なしに次のステートメントを有効につ
くる。 DC A(LABELZ) DC F′08′
【0011】LTORG ステートメントを使用するこ
とに関していくつかの欠点がある。第1に、コンパイラ
は、コンピュータの必要な記憶装置を最適化しようとす
る(例えば、コンパイラは、それらがスペースを浪費す
ることなく4または8バイトのブロックにきちんと整列
するようにデータを代える)から、プログラム内のデー
タの最終的な順序はプログラマによって意図された順序
と異なる。例えば、 MVC LAB1,=CL3 ′ABC ′ L REG1,=REG1,=A(LABELZ) MV LAV2,=CL1 ′X ′ … LTORG とコード化される。
【0012】しかしながら、LTORGステートメント
は、コンパイルされたときに次のステートメントを有効
に作る。 DC A(LABELZ) DC CL3′ ABC′ DC CL1′X ′ この例から、データの順序がプログラム内に現れるデー
タの順から変わっていることが分かる。これはLTOR
Gの一般的な使用に対する重要な制限である。
【0013】LTORGステートメントに対する第2の
欠点は、データ定数をプログラムによって扱うことがで
きない、すなわち、それらはリードオンリであることで
ある(Stottard p114参照)。最後に、L
TORGステートメントに対する第3の欠点は、言語の
特定の部分しか「リテラル」として使用することができ
ないことであり、これらの部分はデータの定義を発生す
るために使用され、例えば、ORGステートメントを含
むステートメントを前方に移動することができない。
【0014】原則として、ORGステートメントは言語
コードがプログラム内の前方に現れるように使用され
る。しかしながら、実際には、これは、いくつかの理由
によって生じない。まず、実行することが困難であるか
ら、その使用に対して消極的になり、第2に、次の例に
示すようなインプリメンテーションに対する理論的な制
限である。 LABELA DS OH LABEL A ORG LABELB RESET LOCATION COUNTER TO LABEL B LABELC DS ZXL(LABELB-LABELA) DATA AREA,LENGTH DEPENDING ON THE IFFERENCE BETWEEN LOCATIONS OF LABELS B AND A. LABELB DS OH LABEL B ここで言語は何を実行すべきかを計算することができな
い。なぜならば、長さがLABELBの場所に依存する
LABELCの長さを知ることなしにはLABELBの
場所を計算することができないからである。
【0015】
【発明が解決しようとする課題】本発明の目的は、上記
欠点を克服するコンピュータコードをコンパイルする方
法を提供することである。
【0016】
【課題を解決するための手段及び作用】この目的はアセ
ンブラ、記憶部を定義し、前記記憶装置内のコードデポ
ジット内にコンピュータコードの第1の部分を予めコン
パイルして保存し、言語コンパイラ内でコンピュータコ
ードの第2の部分をコンパイルしてベースレジスタの範
囲内にコンパイルれたコンピュータコード(220)を
形成し、コンピュータコードの予めコンパイルされた第
1の部分を前記コードデポジットから検索し、コンパイ
ルされたコンピュータコード(200)に必要な場所で
予めコンパイルされた第1の部分を挿入するマクロ定義
を定義を提供することによって解決される。
【0017】デポジットは、予めコンパイルされたコー
ドを保持する十分な大きさのアセンブラ記憶アレイを形
成することによって作られる。本発明の1つの実施例に
おいて、前記予めコンパイルされたコードの一部を前記
デポジットに配置する前記段階は、マクロを呼ぶことに
よって実行される。
【0018】本発明の他の実施例において、デポジット
は、前記予めコンパイルされたコードのステートメント
をコンピュータコードの非独特のステートメントを有す
るスカフォルディングに挿入し、前記コンピュータの独
特のスカフォルディング及び前記スカフォルディングを
コードデポジットに配置することによって作られる。
【0019】本発明の好ましい実施例において、コード
デポジットに配置されたコンピュータコードはトレース
ポイントディスクリプタを有する。これらのトレースポ
イントディスクリプタは、好ましい実施例において長さ
において62と4096との間にある。デポジット内に
配置され、予めコンパイルされたコードに加えて、46
バイトからなるコンピュータコードの固定長は、ベース
レジスタの範囲内に維持される。これは、ベースレジス
タの範囲内でコンパイルされたコンピュータコードは、
4096/46=89に等しいトレースポイントの最大
限の数を有する。本発明によらない場合には、ベースレ
ジスタは4096/(46+62)=37と4096/
(46+4096)=0のトレースポイントの間でコー
ドをコンパイルすることができるのみである。
【0020】
【実施例】本発明によるアセンブラの外観を図2に示
す。アセンブラ言語内のコードをソースモジュール20
0として示す。このコードは、本発明を利用する2つの
タイプのマクロ命令と合体し、ソースモジュール200
内に示される。マクロ命令は、マクロ定義MACRO
DEFA及びMACRO DEFBによって定義され
る。それらは、マクロ命令MACRO INST1また
はMACRO INST2及びMACRO LASTに
よって呼ばれる。これらの命令は、単に説明のためにの
み使用されるもので他の命令も等しく使用される。ブロ
ック210はソースモジュール200からソースをコン
パイルする言語コンパイラを表し、それをオブジェクト
コードとしてオブジェクトモジュール220に出力す
る。
【0021】ブロック230は、アセンブラ言語コンパ
イラによって供給されるマクロファシリティを表す。マ
クロファシリティの完全な詳細は、上述した引用例のI
BM刊行物GC33−4010−5の第4章第237頁
から376頁に記載されている。マクロファシリティ2
30は、特定のマクロ定義を所有するためにアセンブラ
40に告げるソースモジュール200内のマクロ命令を
プログラマが書くことができるようにする。命令MAC
RO INST1またはMACRO INST2及びM
ACRO LASTは、マクロ定義を使用するマクロ命
令の3つの例である。マクロ命令MACRO INST
1またはMACRO INST2はマクロ定義MACR
O DEFAを使用する。マクロ命令MACRO LA
STは定義MACRO DEFBを使用する。アセンブ
ラ40は、マクロ命令がマクロ定義によって定義された
マクロを呼び出す毎にこれらのマクロ定義からのアセン
ブラ言語ステートメントをつくる。マクロファシリティ
を表すブロック230内において、マクロ定義MACR
O DEFA及びMACRO DEFBを表す2つのサ
ブブロック235及び237が示される。
【0022】ブロック240は言語コンパイラ210に
よってコード及び変数の部分を一時的に記憶するために
使用することができるワーキング記憶装置(アーカイブ
記憶装置)を表す。ワーキング記憶装置240を表すブ
ロック内にアセンブラ記憶アレイ245を表すサブブロ
ックが示されている。マクロファシリティ230は、ソ
ースモジュール200のコンパイル中にテキストステー
トメント用の「記憶アレイ」をプログラマが定義するこ
とができるようにする。テーブルは、言語コンパイラの
能力による大きさで変化する。本発明の実施において、
このテーブルは4096と32468との間のエントリ
を含む。各エントリは1と256との間の文字のテキス
トステートメントを保持することができる。
【0023】本発明を実施する方法を図3に示す。ブロ
ック310において、プログラマは最初にワーキング記
憶装置240のプログラムの始めでコード「デポジッ
ト」を保持するために適当な大きさのアセンブラ記憶ア
レイ245を定義する。デポシットの最大の大きさは、
前に述べたようなコンパイラによって決定される。例え
ば、それは1000エントリである。ソースモジュール
200において、次のステートメントが現れる。 GLBC &DEPOS(1000) GBLCはマクロファシリティ230内の双方のマクロ
定義MACRO DEFA及びMACRO DEFB内
に含まれる/370アセンブラ言語におけるマクロ命令
である。それは、MACRO DEFAによって定義さ
れる第1のマクロ命令MACRO INT1によって呼
ばれ、MACRO DEFA(すなわち、我々の例にお
いてMACRO INT2)によって定義されるマクロ
命令の次の呼び出しによって基準とされる。また、それ
はマクロ命令MACRO LASTと呼ばれる。GLB
Cは、ワーキング記憶装置240内に文字アレイとして
のアセンブラ記憶アレイ245をつくる。この例におい
て、&DEPOSと名称のついた文字アレイとしてのア
センブラ記憶アレイ245は、最大1000のエントリ
でつくられる。
【0024】コード「デポジット」がつくられるソース
モジュール200内の点で、プログラマは、マクロ命令
を挿入する。このマクロ命令は、次の連続したステート
メントを書くことによってアセンブラ記憶アレイ245
内のエントリ(ブロック320)に各コードステートメ
ントを予めコンパイルし、記録する: &DEPOS(1) SETC′CODE STATEMENT1 ′ 1STDEPOSITE STATEMENT &DEPOS(2) SETC′CODE STATEMENT2 ′ 2NDDEPOSITE STATEMENT --- &DEPOS(X) SETC′CODE STATEMENTX ′ X DEPOSITE STATEMENT --- &DEPOS(nnn) SETC′CODE STATEMENTnnn ′ X nnn DEPOSITE STATEMENT (nnn<1000) 命令SETCの各々は、変数の内容が′コードステート
メントx′であるマクロ命令である。一連のSETC命
令は図2のソースモジュール200内のMACRO I
NST1によって表される。マクロ命令MACRO I
NST1は、エントリ&DEPOS(1)として′コー
ドステートメント1′によって表される種々のコードス
テートメントを予めコンパイルして作られたアセンブラ
記憶アレイ245に保存するためにマクロ定義MAC
DFEAによって定義されたマクロを呼ぶ。
【0025】図示した例において第2のコードデポジッ
トは、マクロ命令MACRO INST2によって作ら
れる。また、これは一連のステートメントからなる。 &&DEPOS(nnn+1) SETC ′CODE STATEMENTnnn+1 ′ nnn+1 DEPOSITE STATEMEN &&DEPOS(nnn+2) SETC ′CODE STATEMENTnnn+2 ′ nnn+2 DEPOSITE STATEMENT --- &&DEPOS(nnn+mmm ) SETC ′CODE STATEMENTnnn+mmm ′ nnn+mmm DEPOSITE STATEMENT(nnn+mmm<1000) この第2のコードデポジットは、第1のコードデポジッ
トによって占められた場所の直ぐ近傍の場所の作られた
アセンブラ記憶アレイ内に記憶される。 その後に、プ
ログラムにおいてプログラムが言語コンパイラにコード
デポジットを送ることを決定したときに他のマクロは、
ソースモジュール200内のマクロ命令MACRO L
ASTによって呼ばれる。呼ばれたマクロは、マクロフ
ァシリティ230における第2のマクロ定義237マク
ロMACRO DEFBによって定義される。このマク
ロ命令MACRO LASTは、アセンブラ記憶アレイ
245のエントリの内容を言語コンパイラ210に送る
ようにする。
【0026】&DEPOS(1) &DEPOS(2) --- &DEPOS(nnn) &DEPOS(nnn+1) &DEPOS(nnn+2) --- &DEPOS(nnn+mmm) これらのエントリ内のコードステートメントは、コンパ
イルされ、オブジェクトコード内の必要な場所でオブジ
ェクトモジュール220(ブロック340)内に配置さ
れる。コードデポジット内に配置されたコードステート
メントは、勿論、コードがデポジット、つまりアセンブ
ラ記憶アレイ245内に配置される前、その間またはそ
の後にまず第1に定義された変数及びラベルを参照す
る。また、他の方法でコードを発生するためにマクロフ
ァシリティ230を使用することが可能である。例え
ば、オブジェクトモジュール220が同じ基本的な構造
を有するがステートメントの部分のみが独特であるソー
スコードから発生するコードの部分を含むことを仮定す
る。このような構造の例は、次の一連のコードステート
メントである: DC A(LABELY) ADDRESS OF LABELY DC F ′100 ′ CONSTANT DECIMAL 100 LABERY DC CL4 ′XXXX′ CHRACTERES″XXXX この一連のコードステートメントは、異なるラベル及び
異なる変数を有するプログラムを通して繰り返して現れ
る。アセンブラ命令DCは、繰り返される一連のコード
ステートメント(すなわち、「非独特」)を通して同じ
場所に残る。マクロ定義MACRO DEFA235
は、コードステートメントの非独特な部分を有する「ス
カフォールディング」を含むように定義される。 DC &DEPOS(X) DC &DEPOS(X+1) DC &DEPOS(X+2) DC &DEPOS(X+3)
【0027】また、マクロ定義MACRO DEFA2
35は、呼ばれたマクロ命令がアセンブラ記憶アレイ2
45内の対応する場所に配置されたとき、変数&VAR
O,&VAR1等所定の変数を表すために一連のSET
C命令を有する。 &DEPOS(X) SETC ′&VARO ′ &DEPOS(X+1) SETC′&VAR1 ′ &DEPOS(X+2) SETC′&VAR2 ′ &DEPOS(X+3) SETC′&VAR3 ′ 例えば、マクロがマクロ命令MACRO INST1に
よって呼ばれたとき、変数VAR0等の値が与えられ
る。 &VARO=′A(LABELY′′ &VAR1=′F ″100 ″′ &VAR2=′LABERY′ &VAR3=′CL4 ′XXXX″
【0028】従って、MACRO DEFAによって定
義されたマクロを呼ぶ効果は、アセンブラ記憶アレイ内
に記憶することである。 &DEPOS(1) SETC′A(LABELY) ′ 1ST DEPOSITE PART &DEPOS(2) SETC′F ″100 ′″ 2ND DEPOSITE PART ′ &DEPOS(3) SETC′LABERY′ 3ND DEPOSITE PART &DEPOS(4) SETC′CL4 ′XXXX′ 4ND DEPOSITE PART 第2のマクロ定義237によって定義されたマクロMA
CRO DEFBは、マクロ命令MACRO LAST
を使用してソースモジュール200によって後に呼ばれ
る。呼ばれたマクロは、言語コンパイラ210に送られ
る次のコードをつくるためにMACRO DEFAによ
って与えられたスカフォールディングとともにアセンブ
ラ記憶アレイ245内のステートメントを使用する。 DC A(LABELY) DC F ′ 100′ LABERY DC CL4 ′XXXX′″
【0029】本発明の1つの特定の実施例において、ア
センブラ記憶アレイ(デポジット245に配置されたコ
ードはトレースポイントデスクリプションとして知られ
るルーチンをトレースするために使用される。これらの
トレースポイントデスクリプションは、実行される実際
の操作には寄与しないが、それが操作するときにコンピ
ュータプログラムのエラーを追跡するためにいくつかの
診断プログラムによって使用される。トレーシングコー
ドをアセンブラ記憶アレイ(デポジット245内に配置
することによって、コンパイルされるコンピュータプロ
グラムコードのための大きなスペースがベースレジスタ
内に見いだされる。
【0030】一例は、これを行う利点を図示するために
機能する。本発明のインプリメンテーションによれば、
トレースポイントデスクリプションを2つの部分に分
け、その一方は、ベースレジスタの範囲内に配置され、
その他方は、ベースレジスタの範囲を越えて記憶され、
ワークレジスタの使用によって基準とされるコードデポ
ジット内に配置される。マクロ定義MACRO DEF
Aによって定義されたマクロを呼ぶことによって、トレ
ースポイントデスクリプションの2つの点を作る。トレ
ースポイントデスクリプションの第1の部分はベースレ
ジスタ範囲内に記憶され、大きさが46バイトに固定さ
れる。トレースポイントデスクリプションの第2の部分
は現在のインプリメンテーションにおいて62から46
2バイトに、他のインプリメンテーションにおいて40
96バイトまで大きさにおいて変化する。
【0031】したがって、1つのベースレジスタ内で、
4096/(46+462)=8トレースポイントに対
向して最大のトレースポイント4096/46=89が
ある。トレースルーチンの他のインプリメンテーション
において、1つのベースレジスタ内で1つのトレースポ
イントデスクリプションに関して全てのコードを組み合
わせることができない。
【図面の簡単な説明】
【図1】アセンブラを有するコンピュータシステムの構
成を示すブロック図。
【図2】本発明によるアセンブラの構成を示すブロック
図。
【図3】本発明のステップの概略を示すブロック図。
【符号の説明】
200 ソースモジュール 210 言語コンパイラ 220 オブジェクトモジュール 230 マクロファシリティ 235,237 マクロ定義 240 ワーキング記憶装置 245 アセンブラ記憶アレイ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】アーカイブ記憶装置内にアセンブラ記憶部
    を定義するステップ(MACRODEFA)と、 前記アセンブラ記憶部内のコードデポジット内にコンピ
    ュータコードの第1の部分を予めコンパイルして記憶す
    るステップ(MACRO DEFA)と、 言語コンパイラ内で前記コンピュータコードの第2の部
    分をコンパイルしてベースレジスタの範囲内にコンパイ
    ルされたオブジェクトコートンを形成するステップと、 前記コンピュータコードの予めコンパイルされた第1の
    部分を前記コードデポジットから検索するステップ(M
    ACRO LAST;MACRO DEFB)と、 前記コンピュータコードの予めコンパイルされた第1の
    部分を言語コンパイラに送るステップと、 該言語コンパイラで前記コンピュータコードの予めコン
    パイルされた第1の部分をコンパイルするステップと、 前記コンパイルされたコンピュータコードに必要な場所
    で前記コンパイルされた第1の部分を挿入するステップ
    とを有するコンピュータコードのコンパイル方法。
  2. 【請求項2】コードデポジットをつくるステップは、十
    分な大きさのアセンブラ記憶アレイを定義し、前記コン
    ピュータコードの第1の部分を保持するステップを有す
    る請求項1に記載のコンパイル方法。
  3. 【請求項3】前記コンピュータコードの前記第1の部分
    を予めコンパイルし、前記デポジットに記憶するステッ
    プは、マクロを呼ぶステップ(MACRO INST
    1)を有する請求項1または2に記載のコンパイル方
    法。
  4. 【請求項4】前記コンパイラコードの1つ以上の第1の
    部分が予めコンパイルされ、前記記憶装置内の1つ以上
    の前記コードデポジットに記憶される(MACRO I
    NST2)請求項1から3のいずれか1項に記載のコン
    パイル方法。
  5. 【請求項5】前記コンパイラコードの前記第1の部分を
    前記コードデポジット内に配置するステップは、 非独特のスカフォールディングを定義するステップと、 前記コンピュータコードの独特のステートメントを前記
    スカフォールディングに挿入するステップと、 前記翻訳されたコード及び前記スカフォールディングの
    独特のスカフォールディングを前記コードデポジット内
    に記憶させる請求項1から4のいずれか一項に記載のコ
    ンパイル方法。
  6. 【請求項6】前記コードデポジット内に配置された前記
    コンピュータコードの第1の部分は、トレースポイント
    デスクリプタである請求項1から5のいずれか一項に記
    載のコンパイル方法。
JP5150384A 1992-08-12 1993-06-22 コンピュータコードをコンパイルする方法 Expired - Lifetime JP2750313B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE92113739.4 1992-08-12
EP92113739A EP0582738A1 (en) 1992-08-12 1992-08-12 Language compiler

Publications (2)

Publication Number Publication Date
JPH06110703A true JPH06110703A (ja) 1994-04-22
JP2750313B2 JP2750313B2 (ja) 1998-05-13

Family

ID=8209908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5150384A Expired - Lifetime JP2750313B2 (ja) 1992-08-12 1993-06-22 コンピュータコードをコンパイルする方法

Country Status (3)

Country Link
US (1) US5414855A (ja)
EP (1) EP0582738A1 (ja)
JP (1) JP2750313B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
JP3130828B2 (ja) * 1997-04-28 2001-01-31 日本電気アイシーマイコンシステム株式会社 アセンブル処理方式
US5911073A (en) * 1997-12-23 1999-06-08 Hewlett-Packard Company Method and apparatus for dynamic process monitoring through an ancillary control code system
US6148437A (en) * 1998-05-04 2000-11-14 Hewlett-Packard Company System and method for jump-evaluated trace designation
US6189141B1 (en) 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6754891B1 (en) 1998-08-31 2004-06-22 Red Hat, Inc. Debugger system using tracepoints for computer software
US6317873B1 (en) * 1998-10-14 2001-11-13 Alcatel Usa Sourcing, L.P. Assembly language translator
US6637025B1 (en) * 1998-12-03 2003-10-21 International Business Machines Corporation Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US7337438B1 (en) * 2003-03-31 2008-02-26 Applied Micro Circuits Corporation Macros to support structures for an assembler that does not support structures
US7305660B2 (en) * 2003-08-29 2007-12-04 International Business Machines Corporation Method to generate a formatted trace for an embedded device
US7818730B1 (en) * 2006-06-30 2010-10-19 The Math Works, Inc. Automatic minimal build dependency determination and building an executable with source code
JP5109764B2 (ja) * 2008-03-31 2012-12-26 日本電気株式会社 記述処理装置、記述処理方法およびプログラム
CN105138387A (zh) * 2015-08-31 2015-12-09 惠州Tcl移动通信有限公司 一种软件的编译方法、装置及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330822A (en) * 1971-09-02 1982-05-18 Burroughs Corporation Recursive system and method for binding compiled routines
JPS5822453A (ja) * 1981-07-31 1983-02-09 Fujitsu Ltd 言語翻訳時のマクロ展開方式
DE68926956T2 (de) * 1988-09-20 1997-03-27 Digital Equipment Corp Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem
US5230049A (en) * 1988-11-29 1993-07-20 International Business Machines Corporation Program source code translator
JP2834171B2 (ja) * 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法

Also Published As

Publication number Publication date
EP0582738A1 (en) 1994-02-16
US5414855A (en) 1995-05-09
JP2750313B2 (ja) 1998-05-13

Similar Documents

Publication Publication Date Title
US5577253A (en) Analyzing inductive expressions in a multilanguage optimizing compiler
US4763255A (en) Method for generating short form instructions in an optimizing compiler
JP3602857B2 (ja) 多機種対応型情報処理システム、および、方法
JP4640685B2 (ja) プログラムコード変換方法
US6018628A (en) Method of implementing parameterized types to be compatible with existing unparameterized libraries
US5586328A (en) Module dependency based incremental compiler and method
US5457799A (en) Optimizer for program loops
NZ241693A (en) Compiling computer code: elements of intermediate language flow graph include indications of effects and dependencies on other elements
JPH06110703A (ja) コンパイル方法
JPH06230976A (ja) 参照をリゾルブする方法および装置
EP0428560A4 (en) Machine process for translating programs in binary machine language into another binary machine language
Bailey et al. A formal model and specification language for procedure calling conventions
US6829760B1 (en) Runtime symbol table for computer programs
Anderson et al. Experience report: Developing the Servo web browser engine using Rust
WO2024222455A1 (zh) 一种硬件加速指令确定方法、系统、电子设备及存储介质
JP7391983B2 (ja) プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品
Debray A simple code improvement scheme for Prolog
US5561801A (en) System and method for multilevel promotion
CN117806645A (zh) 一种程序语言的程序自适应执行系统和方法
EP0180077B1 (en) A data processing machine for compiling computer programs
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
Boyland et al. Attributed transformational code generation for dynamic compilers
Hallenberg A Region Pro ler for a Standard ML compiler based on Region Inference
JPH02176938A (ja) 機械語命令最適化方式
Wendt Fast code generation using automatically-generated decision trees