JP3063297B2 - 言語処理プログラム作成装置 - Google Patents

言語処理プログラム作成装置

Info

Publication number
JP3063297B2
JP3063297B2 JP3260830A JP26083091A JP3063297B2 JP 3063297 B2 JP3063297 B2 JP 3063297B2 JP 3260830 A JP3260830 A JP 3260830A JP 26083091 A JP26083091 A JP 26083091A JP 3063297 B2 JP3063297 B2 JP 3063297B2
Authority
JP
Japan
Prior art keywords
line number
unit
error
address
assembler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP3260830A
Other languages
English (en)
Other versions
JPH05100839A (ja
Inventor
満 岩▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP3260830A priority Critical patent/JP3063297B2/ja
Publication of JPH05100839A publication Critical patent/JPH05100839A/ja
Application granted granted Critical
Publication of JP3063297B2 publication Critical patent/JP3063297B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、言語処理プログラム生
成装置に利用され、特に、リンカのエラー処理方式に関
する。
【0002】
【従来の技術】従来のリンカにおいて、リンク時にエラ
ーが有った場合、リンカは入力されたオブジェクト名情
報とセグメント名情報と配置後のアドレス情報とを出力
していた。デバッグする場合は、バグごとに以下のステ
ップに従ってデバッグを行っていた。
【0003】ステップ1:ソースをアセンブルまたはコ
ンパイルする。
【0004】ステップ2:オブジェクト名情報でおおよ
そのエラー箇所を見当つける。
【0005】ステップ3:セグメント名情報と配置後の
アドレス情報より配置初めのアドレスを得る。
【0006】ステップ4:セグメントの配置初めのアド
レスとリンク時にエラーとなった配置後のアドレスから
セグメントの先頭からオフセットアドレスを得る。
【0007】ステップ5:セグメントからのオフセット
アドレスによってアセンブラソースやコンパイラソース
上のエラー箇所を見つける。
【0008】ステップ6:エラーを修正する。
【0009】
【発明が解決しようとする課題】前述した従来の言語処
理プログラム作成装置におけるリンカのエラー処理方式
では、バグごとに6ステップを踏んでデバッグを行って
いたため、作業時間が多くかかる欠点があった。
【0010】本発明の目的は、デバッグでのバグごとに
かかるステップを減らすことにより、デバックにかかる
作業時間を削減することを可能とするリンカのエラー処
理方式を有する言語処理プログラム作成装置を提供する
ことにある。
【0011】
【課題を解決するための手段】本発明は、アセンブルや
コンパイラが出力するリロケータブルオブジェクトファ
イルを入力し、モジュールの結合、配置、修正および補
正を行いオブジェクトファイルを出力するオブジェクト
ファイル生成手段を含むリンカ部を備えた言語処理プロ
グラム作成装置において、前記リロケータブルオブジェ
クトファイルは、アセンブラやコンパイラの入力ソース
行番号とリンカ部での配置前のアドレスとを含むライン
ナンバ情報を含み、前記リンカ部は、前記オブジェクト
ファイル生成手段においてエラーが発生した場合に現在
処理中のセグメントやオブジェクトコードに対応する前
記ラインナンバ情報を検索し、その入力ソース行番号と
配置前のアドレスでエラーメッセージを作成出力するエ
ラーメッセージ作成手段とを含むことを特徴とする。
【0012】
【作用】リロケータブルオブジェクトファイルは、アセ
ンブラやコンパイラの入力ソース行番号と配置前のアド
レスを含むラインナンバ情報を有しおり、リンカ処理
中にエラーが発生した場合にそのラインナンバ情報を検
索し、その検索された入力ソース行番号と配置前のアド
レスでエラーメッセージを作成出力する。
【0013】従って、リンカのエラー処理は、このエラ
ーメッセージに付加された入力ソース行番号とリンカ入
力時配置前アドレスを用い行うことができ、戻り工程
をなくし、ソースをアセンブルまたはコンパイルするス
テップ、リンカが出力するエラーメッセージからアドレ
ス情報によりエラー箇所を見つけるステップ、およびエ
ラーを修正するステップの3ステップでよくなり、従来
必要とした6ステップに比べてデバッグ時間を大幅に短
縮することが可能となる。
【0014】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0015】図1は本発明の一実施例を示すブロック構
成図である。
【0016】本実施例は、アセンブラに入力するソース
プログラムファイル101と、アセンブラの各処理を行
うアセンブラ部102と、アセンブラが出力し、リンカ
が入力する複数のリロケータブルオブジェクトファイル
103と、リンカの各処理を行うリンカ部104と、リ
ンカが出力するオブジェクトファイル105と、エラー
表示部106と、エラーファイル106aを備えてい
る。
【0017】そして、アセンブラ部102は、入力部1
07、字句解析部108、該当ソースライン先頭アドレ
ス検索部109、機械語命令オブジェクト生成部11
0、ラインナンバ情報登録・参照処理部111、および
出力部112を含んでいる。また、リンカ部104は、
入力部113、結合部114、配置部115、シンボル
解決部116、コード補正部117、出力部118、ラ
インナンバ情報参照処理部119、エラー処理部12
0、およびエラー出力部121を含んでいる。
【0018】次に、処理手順をアセンブラ部102とリ
ンカ処理部104との二つに分けて説明する。
【0019】アセンブラ部102では、ソースプログラ
ムファイル101を、入力部107で入力し、入力した
字句を字句解析部108で解析する。ここで、どの機械
語命令が記述され、そのオペランドは何かを判断した
後、機械語命令オブジェクト生成部110でその機械語
命令に対応するオブジェクトのサイズを現在のアドレス
に加算する。同時に、その機械語命令が記述されたソー
スライン番号と先頭アドレスの情報をラインナンバ情報
登録・参照処理部111に登録する。字句解析部108
でプログラムのまとまりの開始を示すセグメント定義を
認識したときは、アドレスのクリアなどのセグメント処
理を行うと同時に、ソースライン番号を「0」としたラ
インナンバ情報をラインナンバ情報登録・参照処理部1
11に登録する。以上を入力する字句がなくなるまで繰
り返す。このとき、作成されたラインナンバ情報は出力
ファイルであるリロケータブルオブジェクトファイル1
03に付加して出力する。
【0020】リンカ部104では、リロケータブルオブ
ジェクトファイル103から、複数ファイルの結合に必
要な情報を入力部113が入力し、結合部114で結合
処理を行う。結合部114ではセグメント単位で結合処
理を行う。このとき、現在処理中のラインナンバ情報も
入力する。次に、配置部115で、結合したまとまりを
アドレス空間中に配置しアドレスを決定する。このと
き、ラインナンバ情報内のアドレス情報も配置後のアド
レスに書き換える。シンボル解決部116では、シンボ
ルの定義参照関係を解決するとともに、配置部115で
決定されたアドレスをもとに、値が不定であったシンボ
ルの値を補正し決定する。コード補正部117では、入
力部113からコード補正情報を入力して、オブジェク
ト中でシンボルの値が不定だったために、決定されなか
った部分のコードの修正を行った後、出力部118へオ
ブジェクトを出力する。これらのリンカ部104内の処
理中において、結合部114および配置部115中にエ
ラーが生じた場合、現在処理中のセグメント情報を元に
ラインナンバ情報から現在のセグメント名と配置前のア
ドレスと行番号をエラーメッセージと一緒にエラー表示
部106およびエラーファイル106aに出力する。
【0021】ラインナンバ情報登録・参照処理部111
とラインナンバ情報参照処理部119で、登録・参照・
補正するラインナンバ情報201は図2に示す通り、ア
センブラ・コンパイラの入力ソース行番号202および
先頭アドレス203(リンカ入力時は、配置前のアドレ
ス)を含み構成されている。ラインナンバ情報201の
最終データ204は、アセンブラ部102とリンカ部1
04間で取決めてあれば何でもよい。本実施例では、
「−1」を使用している。
【0022】次に、現在位置205を使用して、アセン
ブラ部102でのラインナンバ情報登録・参照処理部1
11と、リンカ部104でのラインナンバ情報参照処理
部119との説明を行う。
【0023】アセンブラ部102のラインナンバ情報登
録・参照処理部111において、現在位置205がセグ
メント行のときは、アセンブラ・コンパイラの入力ソー
ス行番号202にセグメントタイプを示す「0」を設定
し、参照アドレス203にセグメントのスタートアドレ
ス(配置前アドレス)を設定する。現在位置205が機
械語命令行のときは、アセンブラ・コンパイラの入力ソ
ース行番号202に現在の行番号を設定し、参照アドレ
ス203に現在のロケーションカウンタ値を設定し、機
械語命令オブジェクト生成部110で決定したオブジェ
クトサイズを現在のロケーションカウンタに加算をす
る。ソースの最終がきたら、アセンブラ・コンパイラの
入力ソース行番号202と先頭アドレス203に最終デ
ータ204として、「−1」を設定する。
【0024】リンカ部104のラインナンバ情報参照処
理部119において、現在位置205がセグメント行の
ときは、アセンブラ・コンパイラの入力ソース行番号2
02にセグメントタイプを示す「0」を設定し、参照ア
ドレス203に入っている配置前アドレスにセグメント
の配置アドレスを加算し補正する。現在位置205が機
械語命令行のときは、参照アドレス203に入っている
配置前アドレスにセグメントの配置アドレスを加算し補
正する。次に、アセンブラ・コンパイラの入力ソース行
番号202と先頭アドレス203に最終データ204と
して、「−1」が設定されていれば、ラインナンバ情報
の参照処理を終了する。
【0025】本発明の特徴は、図1および図2におい
て、リロケータブルオブジェクトファイル103は、ア
センブラ部102のラインナンバ情報登録・参照処理部
111により登録された図2に示すラインナンバ情報2
01を含み、リンカ部104は、オブジェクトファイル
生成手段としての、結合部114、配置部115、シン
ボル解決部116、およびコード補正部117でエラー
が発生した場合に、現在処理中のセグメントやオブジェ
クトに対応するラインナンバ情報201を検索し、その
入力ソース行番号と先頭アドレスでエラーメッセージを
作成出力するエラーメッセージ作成手段としての、ライ
ンナンバ情報参照処理部119およびエラー処理部12
0を含むことにある。
【0026】次に、リンカ部104の、結合部114
と、配置部115と、シンボル解決部116と、コード
補正部117と、ラインナンバ情報参照処理部119
と、エラー処理部120と、エラー出力部121の関係
を図3に示す流れ図を参照して説明する。
【0027】まず、結合部114と配置部115の処理
ならば、セグメント単位で処理を行い、セグメントの配
置アドレスが決定されるごとに(ステップS1)、エラ
ーチェックを行い(ステップS2)、エラーでなけれ
ば、セグメントの結合情報や配置情報をオブジェクトフ
ァイル105に出力する(ステップS3)。エラーがあ
れば、該当セグメントに対応するラインナンバ情報を検
索(アセンブラ・コンパイラの入力ソース行番号が
「0」で、先頭アドレスが「0」)する(ステップS
4)。エラー処理部120でラインナンバ情報のアセン
ブラ・コンパイラの入力ソース行番号と先頭アドレスを
使用して、エラーメッセージを作成し(ステップS
5)、エラーメッセージをエラー出力部121で出力す
る(ステップS6)。
【0028】次に、シンボル解決部116とコード補正
部117の処理ならば、1オブジェクトコード単位で処
理を行う(ステップS1)。エラーチェックを行い(ス
テップS2)、エラーでなければ、オブジェクトコード
をオブジェクトファイルに出力する(ステップS3)。
エラーがあれば、該当オブジェクトコードに対応するラ
インナンバ情報を検索(1オブジェクトコード1ライン
ナンバ情報であるためセグメントのラインナンバ情報が
決まれば、1オブジェクトコードごとにラインナンバ情
報を「1」進める)する(ステップS4)。エラー処理
部120でラインナンバ情報のアセンブラ・コンパイラ
の入力ソース行番号と先頭アドレスを使用して、エラー
メッセージを作成し(ステップS5)、エラーメッセー
ジをエラー出力部121で出力する(ステップS6)。
【0029】以上説明したように、本実施例によれば、
リンカ部104におけるエラー処理は次の3ステップで
行うことができる。
【0030】ステップ1:ソースをアセンブルまたはコ
ンパイルする。
【0031】ステップ2:リンカが出力するエラーメッ
セージから、オブジェクト名情報とセグメント名情報と
アセンブラ・コンパイラの入力ソース行番号と配置前ア
ドレスからエラー箇所を見つける。
【0032】ステップ3:エラーを修正する。
【0033】従来は、6ステップで行っていたデバッグ
を半分の3ステップで行えるため、従来のデバッグ時間
を大幅に短縮できる。
【0034】また、本実施例で使用したソースライン番
号と先頭アドレスからなるラインナンバ情報は、プログ
ラムのデバッグ情報としても有効なデータであることか
ら、データ共有を行うことにより、アセンブラ本体に不
要な負荷をかけることなく実現が可能となる。
【0035】
【発明の効果】以上説明したように、本発明によれば、
アセンブラ部やコンパイラ部が出力するオブジェクトフ
ァイルにラインナンバ情報を付加することにより、リン
ク時にエラーが有った場合、入力されたオブジェクト名
情報とセグメント名情報とアセンブラ・コンパイラの入
力ソース行番号と配置前アドレス情報を出力することが
できるため、デバッグする場合は、バグごとに3ステッ
プに従ってデバッグを行うことができ、デバッグ時間を
大幅に短縮でき、その効果は大である。
【図面の簡単な説明】
【図1】本発明の一実施例の要部を示すブロック構成
図。
【図2】そのラインナンバ情報の構成を示す説明図。
【図3】そのエラー処理の手順を示す流れ図。
【符号の説明】
101 ソースプログラムファイル 102 アセンブラ部 103 リロケータブルオブジェクトファイル 104 リンカ部 105 オブジェクトファイル 106 エラー表示部 106a エラーファイル 107 (アセンブラ部の)入力部 108 字句解析部 109 該当ソースライン先頭アドレス検索部 110 機械語命令オブジェクト生成部 111 ラインナンバ情報登録・参照処理部 112 (アセンブラ部の)出力部 113 (リンカ部の)入力部 114 結合部 115 配置部 116 シンボル解決部 117 コード補正部 118 (リンカ部の)出力部 119 ラインナンバ情報参照処理部 120 エラー処理部 121 エラー出力部 201 ラインナンバ情報 202 ソースライン番号 203 先頭アドレス 204 最終データ 205 現在位置 S1〜S6 ステップ

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 アセンブルやコンパイラが出力するリロ
    ケータブルオブジェクトファイルを入力し、モジュール
    の結合、配置、修正および補正を行いオブジェクトファ
    イルを出力するオブジェクトファイル生成手段を含むリ
    ンカ部を備えた言語処理プログラム作成装置において、 前記リロケータブルオブジェクトファイルは、アセンブ
    ラやコンパイラの入力ソース行番号とリンカ部での配置
    前のアドレスとを含むラインナンバ情報を含み、 前記リンカ部は、前記オブジェクトファイル生成手段に
    おいてエラーが発生した場合に現在処理中のセグメント
    やオブジェクトコードに対応する前記ラインナンバ情報
    を検索し、その入力ソース行番号と配置前のアドレスで
    エラーメッセージを作成出力するエラーメッセージ作成
    手段とを含むことを特徴とする言語処理プログラム作成
    装置。
JP3260830A 1991-10-08 1991-10-08 言語処理プログラム作成装置 Expired - Lifetime JP3063297B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3260830A JP3063297B2 (ja) 1991-10-08 1991-10-08 言語処理プログラム作成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3260830A JP3063297B2 (ja) 1991-10-08 1991-10-08 言語処理プログラム作成装置

Publications (2)

Publication Number Publication Date
JPH05100839A JPH05100839A (ja) 1993-04-23
JP3063297B2 true JP3063297B2 (ja) 2000-07-12

Family

ID=17353355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3260830A Expired - Lifetime JP3063297B2 (ja) 1991-10-08 1991-10-08 言語処理プログラム作成装置

Country Status (1)

Country Link
JP (1) JP3063297B2 (ja)

Also Published As

Publication number Publication date
JPH05100839A (ja) 1993-04-23

Similar Documents

Publication Publication Date Title
TW200417925A (en) Method and apparatus for performing validation of program code conversion
JPH1173326A (ja) プログラム変換装置とデバッグ装置
JP3063297B2 (ja) 言語処理プログラム作成装置
JP2010287101A (ja) ソフトウエアデバッグ装置及び方法
JPS5922140A (ja) 対話型コンパイル方式
WO2012133606A1 (ja) プログラムの影響範囲設定装置、並びにこれを用いた影響範囲特定方法及び影響波及のあるプログラムの抽出方法
JPH01307832A (ja) コンパイラの原始プログラムの文法誤り自動修正方式
JP2812302B2 (ja) プログラム開発装置
JP2797777B2 (ja) 言語処理装置
JP6011988B2 (ja) 影響範囲調査方法及び影響範囲調査装置
JPH0922346A (ja) コンパイラシステム
JP2004133827A (ja) core解析装置
JP3608446B2 (ja) コンパイラ装置とプロセッサ
JPH0266631A (ja) 日本語名標による番地対応表出力方式
JP3149422B2 (ja) リンク処理方式
JP2006099349A (ja) Jsp試験システムおよびjsp試験プログラム
JP2002073347A (ja) 例外処理方法及びコンパイラ
JPH0981411A (ja) コンパイラ
JPH05197561A (ja) コンパイル方式
JPH0695889A (ja) プログラム修正方式
KR100231692B1 (ko) Chill 디버깅 정보 생성방법
JPH0580999A (ja) 言語処理プログラムの処理方式
JP2000010764A (ja) 言語処理システム及びその言語処理方法
JP2005285055A (ja) オブジェクト指向言語におけるプログラム生成方法
JPH05204700A (ja) 言語処理装置