JP2000010764A - 言語処理システム及びその言語処理方法 - Google Patents

言語処理システム及びその言語処理方法

Info

Publication number
JP2000010764A
JP2000010764A JP10170028A JP17002898A JP2000010764A JP 2000010764 A JP2000010764 A JP 2000010764A JP 10170028 A JP10170028 A JP 10170028A JP 17002898 A JP17002898 A JP 17002898A JP 2000010764 A JP2000010764 A JP 2000010764A
Authority
JP
Japan
Prior art keywords
address
segment type
unit
segment
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.)
Granted
Application number
JP10170028A
Other languages
English (en)
Other versions
JP3278613B2 (ja
Inventor
Mitsuru Iwasaki
満 岩崎
Eiichi Sato
栄一 佐藤
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 IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems Co 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 NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP17002898A priority Critical patent/JP3278613B2/ja
Publication of JP2000010764A publication Critical patent/JP2000010764A/ja
Application granted granted Critical
Publication of JP3278613B2 publication Critical patent/JP3278613B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 配置時アドレスと動作時アドレスが異なるセ
グメントが複数ある場合においても、動作アドレス解決
の自動化を可能にする言語処理システム及びその言語処
理方法を提供する。 【解決手段】 配置部115は結合部114により1つ
にまとめられた各タイプのセグメントの配置を行なう。
セグメントタイプフラグ判定機能付シンボル値補正部1
16は配置部により配置時アドレスが決定したセグメン
ト中のシンボル値の補正を行なう。このときセグメント
タイプフラグ判定機能付シンボル値補正部はセグメント
タイプ付LKシンボルテーブル中のセグメントタイプフ
ラグを読み取り、配置時アドレスと動作時アドレスが異
なるセグメントか否かを調べる。配置時アドレスと動作
時アドレスが異なるセグメントの場合は、情報ファイル
より動作時アドレスを読み取り、動作時アドレスにより
シンボル値の補正を行なう。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は言語処理システム及
びその言語処理方法に関する。
【0002】
【従来の技術】フラッシュ機能を有するデバイスにおい
て、一般的には2種類のセルフ書き込み方法がある。
【0003】1つは、図13に示すように、ROM部が
オブジェクトコード書き換え部分とフラシュメモリ部分
に別れ、オブジェクトコード書き換え部分がフラッシュ
メモリ部分を書き換える方法と、もう1つは、図14に
示すように、フラッシュメモリ部全体を書き換える方法
の2種類がある。
【0004】後者の場合、フラッシュメモリ部分を広く
使えるという利点があるが、フラッシュメモリの外から
フラッシュメモリ部の書き換えをコントロールする手段
が必要となる。手段としては、フラッシュメモリ以外の
オブジェクトコードが置ける領域に書き換えオブジェク
トコードをロードし、動作制御をそのオブジェクトコー
ドに渡し、そのオブジェクトコードがフラッシュメモリ
領域を書き換えることになる。
【0005】このように、絶対番地に配置されたセグメ
ントのアドレス(以下配置時アドレスと呼ぶ)と、プロ
グラムがマイコン上で動作するときのアドレス(以下動
作時アドレスと呼ぶ)とが異なるオブジェクトコードを
作成する場合、従来の方法では各セグメントごとに動作
時アドレスを記述していた。
【0006】図15に従来の技術の言語処理方法を、図
16に構文解析部の処理を、図17にソースプログラム
を、図18にRAシンボルテーブル(RAは、リロケー
タブルアセンブラを意味する)を、図19にLKシンボ
ルテーブル(LKは、リンカを意味する)を示す。
【0007】
【発明が解決しようとする課題】しかし、上述の従来技
術には次のような問題点があった。
【0008】第1の問題点は配置時アドレスと動作時ア
ドレスが異なるセグメントが複数ある場合、セグメント
サイズを求める作業が必要である。
【0009】その理由は、2つ目以降のセグメントの配
置アドレスは、最初に配置するセグメントのサイズを求
めアドレスが重ならないように使用者側で注意しなけれ
ばならないためである。
【0010】第2の問題点は、使用するデバイスが変更
になるたびにROM以外のオブジェクトコードが置ける
領域を調べなければならない点である。
【0011】その理由は従来の情報ファイルには動作時
アドレスがないためである。
【0012】以上の問題点を解決するため、本発明の目
的は、配置時アドレスと動作時アドレスが異なるセグメ
ントが複数ある場合においても、動作アドレス解決の自
動化を可能にする言語処理システム及びその言語処理方
法を提供することにある。
【0013】
【課題を解決するための手段】本発明の言語処理システ
ムは、絶対番地に配置されたセグメントのアドレスであ
る配置時アドレスと、プログラムがマイコン上で動作す
るときのアドレスである動作時アドレスとが、異なるセ
グメントを少なくとも1つ有する場合のセグメントの動
作アドレスを決定する言語処理システムであって、言語
処理システムは、アセンブラ部とリンカ部とから構成さ
れ、アセンブラ部は、字句解析部とセグメントタイプフ
ラグ設定機能付構文解析部とリロケータブルアセンブラ
コード生成部とセグメントタイプ付リロケータブルアセ
ンブラシンボルテーブルとを備え、字句解析部は、ソー
スプログラムに記述された言語をソースプログラム中の
区切り子単位で順次解析を行ない、アセンブラで使用で
きる文字であるか否かを各々解析する手段を有し、セグ
メントタイプフラグ設定機能付構文解析部は、字句解析
部により解析されたソースプログラムを行単位にアセン
ブラの書式にあっているか否かを解析する手段と、動作
時アドレスと配置時アドレスとが異なるセグメントがソ
ースプログラム中に記述されている場合、セグメントタ
イプ付リロケータブルアセンブラシンボルテーブルにセ
グメントタイプフラグを出力する手段とを有し、リロケ
ータブルアセンブラコード生成部は、セグメントタイプ
付リロケータブルアセンブラシンボルテーブルを参照し
てソースプログラムからオブジェクトプログラムを生成
する手段を有し、リンカ部は、結合部と配置部とセグメ
ントタイプフラグ判定機能付シンボル値補正部とリンカ
コード生成部とセグメントタイプ付リンカシンボルテー
ブルとを備え、結合部は、アセンブラ部により出力され
たオブジェクトプログラム中の同じセグメントタイプの
セグメントを1つに結合する手段と、セグメントタイプ
付リンカシンボルテーブルを作成する手段とを有し、配
置部は、結合部により1つに結合された個々のセグメン
トをメモリに配置する手段を有し、セグメントタイプフ
ラグ判定機能付シンボル値補正部は、配置部によりメモ
リに配置されたセグメントのアドレスからセグメントタ
イプ付リンカシンボルテーブル中のシンボル値の補正を
行ない、オブジェクトプログラムの補正を行なう手段
と、セグメントタイプ付リンカシンボルテーブルからセ
グメントタイプフラグを読み取り、動作時アドレスと配
置時アドレスとが異なるセグメントのときは、情報ファ
イルから動作時アドレスを読み取りシンボル値の補正を
行ないオブジェクトプログラムの補正を行なう手段とを
有し、リンカコード生成部は、シンボル値の補正された
オブジェクトプログラムからロードモジュールプログラ
ムを生成する手段を有する。
【0014】また、セグメントタイプフラグ設定機能付
構文解析部は、ソースプログラムを行単位でアセンブラ
の書式にあっているか否かの解析を順次行なう手段と、
配置擬似命令が現れた場合は、配置擬似命令処理を行な
う手段と、配置擬似命令が配置時アドレスと動作時アド
レスとが異なるセグメントか否かを判断し、配置時アド
レスと動作時アドレスとが異なるセグメントの場合に
は、セグメントタイプフラグ設定処理によりセグメント
タイプ付リロケータブルアセンブラシンボルテーブルに
セグメントタイプフラグを出力する手段とを有してもよ
い。
【0015】本発明の言語処理システムは、絶対番地に
配置されたセグメントのアドレスである配置時アドレス
と、プログラムがマイコン上で動作するときのアドレス
である動作時アドレスとが、異なるセグメントを少なく
とも1つ有する場合のセグメントの動作アドレスを決定
する言語処理システムであって、言語処理システムは、
アセンブラ部とリンカ部とから構成され、アセンブラ部
は、字句解析部と構文解析部とリロケータブルアセンブ
ラコード生成部とリロケータブルアセンブラシンボルテ
ーブルとを備え、字句解析部は、ソースプログラムに記
述された言語をソースプログラム中の区切り子単位で順
次解析を行ない、アセンブラで使用できる文字であるか
否かを各々解析する手段を有し、構文解析部は、字句解
析部により解析されたソースプログラムを行単位にアセ
ンブラの書式にあっているか否かを解析する手段と、リ
ロケータブルアセンブラシンボルテーブルを生成する手
段とを有し、リロケータブルアセンブラコード生成部
は、リロケータブルアセンブラシンボルテーブルを参照
してソースプログラムからオブジェクトプログラムを生
成する手段を有し、リンカ部は、ディレクティブプログ
ラムとディレクティブ解析部とディレクティブ対応結合
部と配置部とセグメントタイプフラグ判定機能付シンボ
ル値補正部とリンカコード生成部とセグメントタイプ付
リンカシンボルテーブルとを備え、ディレクティブ解析
部は、セグメントタイプの指定を行なうファイルである
ディレクティブプログラムの内容を解析する手段を有
し、ディレクティブ対応結合部は、オブジェクトプログ
ラムとディレクティブ解析部の解析内容とを読み込み、
セグメントタイプ付リンカシンボルテーブルを作成する
手段を有し、配置部は、結合部により1つに結合された
個々のセグメントをメモリに配置する手段を有し、セグ
メントタイプフラグ判定機能付シンボル値補正部は、配
置部によりメモリに配置されたセグメントのアドレスか
らセグメントタイプ付リンカシンボルテーブル中のシン
ボル値の補正を行ない、オブジェクトプログラムの補正
を行なう手段と、セグメントタイプ付リンカシンボルテ
ーブルからセグメントタイプフラグを読み取り、動作時
アドレスと配置時アドレスとが異なるセグメントのとき
は、情報ファイルから動作時アドレスを読み取りシンボ
ル値の補正を行ないオブジェクトプログラムの補正を行
なう手段とを有し、リンカコード生成部は、シンボル値
の補正されたオブジェクトプログラムからロードモジュ
ールプログラムを生成する手段を有する。
【0016】本発明の言語処理システムの言語処理方法
は、字句解析部により、ソースプログラムに記述された
言語をソースプログラム中の区切り子単位で順次解析を
行ない、アセンブラで使用できる文字であるか否かを各
々解析する段階と、セグメントタイプフラグ設定機能付
構文解析部によって、字句解析部により解析されたソー
スプログラムを行単位にアセンブラの書式にあっている
か否かを解析し、動作時アドレスと配置時アドレスとが
異なるセグメントがソースプログラム中に記述されてい
る場合、セグメントタイプ付リロケータブルアセンブラ
シンボルテーブルにセグメントタイプフラグを出力する
段階と、リロケータブルアセンブラコード生成部によ
り、セグメントタイプ付リロケータブルアセンブラシン
ボルテーブルを参照してソースプログラムからオブジェ
クトプログラムを生成する段階と、結合部によって、ア
センブラ部により出力されたオブジェクトプログラム中
の同じセグメントタイプのセグメントを1つに結合し、
セグメントタイプ付リンカシンボルテーブルを作成する
段階と、配置部によって、結合部により1つに結合され
た個々のセグメントをメモリに配置する段階と、セグメ
ントタイプフラグ判定機能付シンボル値補正部によっ
て、配置部によりメモリに配置されたセグメントのアド
レスからセグメントタイプ付リンカシンボルテーブル中
のシンボル値の補正を行なって、オブジェクトプログラ
ムの補正を行ない、セグメントタイプ付リンカシンボル
テーブルからセグメントタイプフラグを読み取り、動作
時アドレスと配置時アドレスとが異なるセグメントのと
きは、情報ファイルから動作時アドレスを読み取りシン
ボル値の補正を行ないオブジェクトプログラムの補正を
行なう段階と、リンカコード生成部により、シンボル値
の補正されたオブジェクトプログラムからロードモジュ
ールプログラムを生成する段階とを有する。
【0017】また、セグメントタイプフラグ設定機能付
構文解析部により、ソースプログラムを行単位でアセン
ブラの書式にあっているか否かの解析を順次行なう段階
と、配置擬似命令が現れた場合は、配置擬似命令処理を
行なう段階と、配置擬似命令が配置時アドレスと動作時
アドレスとが異なるセグメントか否かを判断し、配置時
アドレスと動作時アドレスとが異なるセグメントの場合
には、セグメントタイプフラグ設定処理によりセグメン
トタイプ付リロケータブルアセンブラシンボルテーブル
にセグメントタイプフラグを出力する段階とを有しても
よい。
【0018】本発明の言語処理システムの言語処理方法
は、字句解析部により、ソースプログラムに記述された
言語をソースプログラム中の区切り子単位で順次解析を
行ない、アセンブラで使用できる文字であるか否かを各
々解析する段階と、構文解析部によって、字句解析部に
より解析されたソースプログラムを行単位にアセンブラ
の書式にあっているか否かを解析し、リロケータブルア
センブラシンボルテーブルを生成する段階と、リロケー
タブルアセンブラコード生成部により、リロケータブル
アセンブラシンボルテーブルを参照してソースプログラ
ムからオブジェクトプログラムを生成する段階と、ディ
レクティブ解析部により、セグメントタイプの指定を行
なうファイルであるディレクティブプログラムの内容を
解析する段階と、ディレクティブ対応結合部により、オ
ブジェクトプログラムとディレクティブ解析部の解析内
容とを読み込み、セグメントタイプ付リンカシンボルテ
ーブルを作成する段階と、配置部は、結合部により1つ
に結合された個々のセグメントをメモリに配置する段階
と、セグメントタイプフラグ判定機能付シンボル値補正
部によって、配置部によりメモリに配置されたセグメン
トのアドレスからセグメントタイプ付リンカシンボルテ
ーブル中のシンボル値の補正を行なって、オブジェクト
プログラムの補正を行ない、セグメントタイプ付リンカ
シンボルテーブルからセグメントタイプフラグを読み取
り、動作時アドレスと配置時アドレスとが異なるセグメ
ントのときは、情報ファイルから動作時アドレスを読み
取りシンボル値の補正を行ないオブジェクトプログラム
の補正を行なう段階と、リンカコード生成部により、シ
ンボル値の補正されたオブジェクトプログラムからロー
ドモジュールプログラムを生成する段階とを有する。
【0019】本発明による言語処理システム及びその言
語処理方法は、セグメントの動作アドレス決定におい
て、配置時アドレスと動作時アドレスとが異なるセグメ
ントを少なくともひとつ有する場合、セグメントの動作
アドレスを自動的に解決できる構成を提供するものであ
る。
【0020】アセンブラ部では、次の処理が行なわれ
る。セグメントタイプフラグ設定機能付き構文解析部
は、プログラム中に配置時アドレスと動作時アドレスが
異なることを示すセグメントタイプが記述されている
と、セグメントタイプ付RAシンボルテーブルにセグメ
ントタイプフラグを出力する。リンカ部では次の処理が
行なわれる。結合部は、同じセグメントタイプのセグメ
ント(以下、同類のセグメント)を1つに結合する。ま
たオブジェクトプログラム中からシンボル情報を読み出
しセグメントタイプ付LKシンボルテーブルを作成す
る。
【0021】配置部は結合部により1つにまとめられた
各タイプのセグメントの配置を行なう。セグメントタイ
プフラグ判定機能付シンボル値補正部は配置部により配
置時アドレスが決定したセグメント中のシンボル値の補
正を行なう。このときセグメントタイプフラグ判定機能
付シンボル値補正部はセグメントタイプ付LKシンボル
テーブル中のセグメントタイプフラグを読み取り、配置
時アドレスと動作時アドレスが異なるセグメントか否か
を調べる。配置時アドレスと動作時アドレスが異なるセ
グメントの場合は、情報ファイルより動作時アドレスを
読み取り、動作時アドレスによりシンボル値の補正を行
なう。
【0022】これにより配置時アドレスと動作時アドレ
スが異なるセグメントが複数ある場合においても、動作
アドレス解決の自動化を可能にする。
【0023】
【発明の実施の形態】(本発明の第1の実施の形態)図
1は、本発明の第1の実施の形態の言語処理方法を示す
図である。
【0024】図1を参照すると本実施の形態はアセンブ
ラ部103とリンカ部104とを含む。アセンブラ部1
03は字句解析部110とセグメントタイプフラグ設定
機能付構文解析部111とRAコード生成部112とセ
グメントタイプ付RAシンボルテーブル113とを備え
ている。
【0025】字句解析部110はソースプログラム10
0に記述された言語をソースプログラム100中の区切
り子単位で順次解析を行ない、アセンブラで使用できる
文字であるか否かを各々解析する。セグメントタイプフ
ラグ設定機能付構文解析部111は、字句解析部110
により解析されたソースプログラム100を行単位にア
センブラの書式にあっているか否かの解析と、動作時ア
ドレスと配置時アドレスが異なるセグメントがソースプ
ログラム100中に記述されている場合、セグメントタ
イプ付RAシンボルテーブル113にセグメントタイプ
フラグ1000(図2)を出力する。
【0026】セグメントタイプ付RAシンボルテーブル
113はソースプログラム100中に記述されたシンボ
ルの情報を登録するテーブルである。セグメントタイプ
付RAシンボルテーブル113はメモリ上に作成されR
Aコード生成部112から参照される。
【0027】RAコード生成部112は、ソースプログ
ラム100からセグメントタイプ付RAシンボルテーブ
ル113の内容を参照してオブジェクトプログラム10
1を生成する。
【0028】リンカ部104は結合部114と配置部1
15とセグメントタイプフラグ判定機能付シンボル値補
正部116とLKコード生成部117とセグメントタイ
プ付LKシンボルテーブル118とを備えている。
【0029】結合部114はアセンブラ部103により
出力されたオブジェクトプログラム101中の同類のセ
グメントを1つに結合し、セグメントタイプ付LKシン
ボルテーブル118をメモリ上に作成する。配置部11
5は結合部114により1つに結合された個々のセグメ
ントをメモリに配置する。
【0030】セグメントタイプフラグ判定機能付シンボ
ル値補正部116は配置部115によりメモリに配置さ
れたセグメントのアドレスからセグメントタイプ付LK
シンボルテーブル118中のシンボル値の補正を行な
い、オブジェクトプログラムの補正も行なう。またセグ
メントタイプ付LKシンボルテーブル118からセグメ
ントタイプフラグ(図11−1100)を読み取り、動
作時アドレスと配置時アドレスが異なるセグメントのと
きは、情報ファイル105から動作時アドレスを読み取
りシンボル値の補正を行ないオブジェクトプログラムの
補正も行なう。
【0031】LKコード生成部117はシンボル値の補
正されたオブジェクトプログラムをロードモジュールプ
ログラム102を生成する。
【0032】次に図1から図11を参照して本発明の第
1の実施の形態の動作について詳細に説明する。
【0033】字句解析部110はソースプログラム10
0を入力し、アセンブラで使用できる文字であるか否か
の解析を行なう。解析を終えたソースプログラム100
はセグメントタイプフラグ設定機能付構文解析部111
に供給される。セグメントタイプフラグ設定機能付構文
解析部111はソースプログラムを行単位でアセンブラ
の書式にあっているか否かの解析を順次行なう(図4の
ステップS200、S201、S204)。
【0034】配置擬似命令が現れた場合は、ステップS
204の処理により配置擬似命令処理S205を行な
う。次に配置擬似命令が配置時アドレスと動作時アドレ
スが異なるセグメントか否かをステップS206により
判断し、もし配置時アドレスと動作時アドレスが異なる
セグメントだった場合には、セグメントタイプフラグ設
定処理(S207)によりセグメントタイプ付RAシン
ボルテーブル113にセグメントタイプフラグ1000
を出力する。RAコード生成部112はセグメントタイ
プ付RAシンボルテーブル113を入力し、オブジェク
トプログラム101を生成する。
【0035】結合部114はオブジェクトプログラム1
01を入力し、オブジェクトプログラム101中のセグ
メントごとに解析を行ない同類のセグメントを1つのセ
グメントに結合する。またオブジェクトプログラム10
1中からシンボル情報を読みだし、メモリ上にセグメン
トタイプ付LKシンボルテーブル118を作成する。配
置部115は結合された個々のセグメントの配置を行な
う。
【0036】セグメントタイプフラグ判定機能付シンボ
ル値補正部116は、配置したアドレスによりセグメン
トタイプ付LKシンボルテーブル118中のシンボル値
を補正する。またセグメントタイプフラグ判定機能付シ
ンボル値補正部116はセグメントタイプ付LKシンボ
ルテーブル118中からセグメントタイプフラグ110
0を読み取る。
【0037】次に、図5を用いてその動作を詳しく説明
する。図5のステップS300によりセグメントタイプ
フラグ1100が配置時アドレスと動作時アドレスが異
なることを示しているか否かを判断する。もし配置時ア
ドレスと動作時アドレスが異なる場合は、動作時アドレ
スを情報ファイル105から読込み(ステップS30
2)、ステップS303により動作時アドレスでシンボ
ル値の補正を行なう。一方、配置時アドレスと動作時ア
ドレスが同じ場合はステップS301により配置時アド
レスでシンボル値を補正する。最後にLKコード生成部
117によりロードモジュールプログラム102を生成
する。
【0038】次に具体例を用いて本発明の第1の実施の
形態の動作を説明する。
【0039】図6に示すようにセグメント700、70
1、702の3つがソースプログラム100に記述され
ているとする。
【0040】図1の字句解析部110はソースプログラ
ム100を入力し、アセンブラで使用できる文字か否か
を解析する。アセンブラで使用できない文字は含まれて
いないので、セグメントタイプフラグ設定機能付構文解
析部111に処理が渡される。セグメントタイプフラグ
設定機能付構文解析部111は3つのセグメント70
0、701、702について書式の解析を行なう。今、
セグメント700が解析されるとする(図4のステップ
S200、S201、S204)。セグメント700に
は配置擬似命令“cseg”があるため配置擬似命令処
理S205を行なう。さらに“transfer”は配
置時アドレスと動作時アドレスが異なることを示すセグ
メントタイプなのでセグメントタイプフラグ1000を
セグメントタイプ付RAシンボルテーブル113に出力
する(図4のステップS206、S207、図2(b)
1000−1)。
【0041】次にセグメント701が解析されるとす
る。セグメント701も“cseg”があるため配置擬
似命令処理S205を行なう。セグメント701には
“transfer”がないためセグメントタイプフラ
グ1000は出力されず終了する(図2のステップS2
06、図2(b)1000−2)。
【0042】セグメント702はセグメント700と同
じ処理を行なう(図4のステップS206、S207、
図2(b)1000−3)。以上の処理によりセグメン
トタイプ付RAシンボルテーブル113は図2(b)の
ようになる。
【0043】次にRAコード生成部112によりセグメ
ントタイプ付RAシンボルテーブル113の情報を含む
オブジェクトプログラム101が作成される。
【0044】結合部114はオブジェクトプログラム1
01を読込む。オブジェクトプログラム101中にはセ
グメントタイプ付RAシンボルテーブル113の情報
(図2(b))が入っているため、この情報を元にセグ
メントタイプ付LKシンボルテーブル118を作成す
る。また同類のセグメントの結合も行なうため、この場
合セグメント700とセグメント702は結合される。
結合後のセグメントタイプ付LKシンボルテーブル11
8は図3(b)のようになっている。
【0045】次に配置部115により各セグメントはメ
モリに配置される。メモリマップを図7に示す。配置が
終わったならばセグメントタイプフラグ判定機能付構文
解析部116によりシンボル値の補正を行なう。今、セ
グメント700、702の補正を行なうとする。このと
きセグメントタイプ付LKシンボルテーブル118を参
照し、セグメントタイプフラグ1100(図3(b)1
100−1)がアクティブであるため、動作時アドレス
を情報ファイル105より読込みセグメントの動作時ア
ドレスでシンボル値を補正する(ステップS300、S
302、S303)。動作時アドレスを持つ情報ファイ
ル105の内容は、情報ファイルの例(図8)のように
なっている。
【0046】次にセグメント701の補正を行なう場合
は、セグメントタイプフラグ1100がセグメントタイ
プ付LKシンボルテーブル118においてノンアクティ
ブであるので、セグメントの配置時アドレスでシンボル
値の補正を行なう(ステップS300、S301)。
【0047】シンボルの補正が終わったならば、LKコ
ード生成部117によりロードモジュールプログラム1
02を生成する。
【0048】(本発明の第2の実施の形態)本発明の第
1の実施の形態では1つのソースプログラムと3つのセ
グメントを用いる場合について説明したがソースプログ
ラム、セグメントの数に制限はない。
【0049】第1の実施の形態の問題点として、ソース
プログラム100を新規に作成、または、既存のものを
修正しなければならない。
【0050】また、既存のライブラリを流用できない、
という問題があげられる。この対策案として、第2の実
施の形態をしめす。
【0051】図9を参照すると本実施の形態は、リンカ
部404にディレクティブプログラム403とディレク
ティブ解析部412を有している。
【0052】アセンブラ部402は、従来のアセンブラ
部103と同等である。リンカ部404のディレクティ
ブ対応結合部405は、ディレクティブ解析部412に
より解析された内容を読み込む点で図1の結合部114
と異なる。
【0053】以上が図1の実施の形態と異なる点であ
る。
【0054】ディレクティブプログラム403はセグメ
ントタイプの指定を行なうファイルである。ディレクテ
ィブ解析部412はディレクティブプログラム403の
内容を解析する。
【0055】本実施の形態の動作を図面を参照して詳細
に説明する。
【0056】図9のアセンブラ部402は、従来のアセ
ンブラ部103と同等のため、字句解析部110、RA
コード生成部112、配置部115、セグメントタイプ
フラグ判定機能付構文解析部116、LKコード生成部
117、セグメントタイプ付LKシンボルテーブル11
8の動作については、図1に示された実施の形態の各手
段である字句解析部110、RAコード生成部112、
配置部115、セグメントタイプフラグ判定機能付構文
解析部116、LKコード生成部117、セグメントタ
イプ付LKシンボルテーブル118の動作と同等のため
説明は省略する。
【0057】図1に示された実施の形態ではセグメント
タイプフラグ設定機能付構文解析部111により配置時
アドレスと動作時アドレスが異なるセグメントの有無を
解析し、セグメントタイプ付RAシンボルテーブル11
3にセグメントタイプフラグを出力していた。本実施の
形態ではこの処理をアセンブラ部103では行なわな
い。このため図6のソースプログラム100の記述は簡
略化され図9に示すソースプログラム400の形式とな
る。図6のソースプログラム100との違いは、配置時
アドレスと動作時アドレスが異なることを示すセグメン
トタイプ“transfer”が図10のソースプログ
ラム400には必要ないことである。
【0058】図9の構文解析部410は字句解析部11
0により解析されたソースプログラムがアセンブラの書
式にあっているか否かの解析とRAシンボルテーブル4
11の生成を行なうものであり、従来技術と同等の処理
である。
【0059】ディレクティブ対応結合部405は、オブ
ジェクトプログラム401、および、ディレクティブ解
析部412の解析内容を読み込み、セグメントタイプ付
LKシンボルテーブル118を生成する。
【0060】次に具体例について説明する。
【0061】図9においてソースプログラム400を入
力する場合を説明する。ソースプログラム400には図
10に示すように3つのセグメント800、801(7
01)、802が記述されている。構文解析部410は
前述の具体例でいえば配置時アドレスと動作時アドレス
が異なることを示すセグメントタイプ“tranfe
r”の解析を行なわないため、セグメント800、80
1(701)、802はすべて同じ処理が行なわれ、R
Aコード生成部により従来と同等のオブジェクトプログ
ラム401が生成される。
【0062】次にディレクティブ対応結合部405は旧
形式オブジェクトプログラム401の読込みを行なった
後、ディレクティブ解析部412の呼び出しを行なう。
ディレクティブ解析部412はディレクティブプログラ
ム403を読込み解析を行なう。今、ディレクティブプ
ログラム403に図11に示す命令が記述されていたと
する。ディレクティブ解析部412はこの命令を解析
し、セグメント“cseg1”、“cseg3”に対
し、配置タイプを“transfer”にする。そして
セグメントタイプ付LKシンボルテーブル118の該当
欄にセグメントタイプフラグ1100を出力するように
ディレクティブ対応結合部405に指示する(図12の
ステップS500、S502)。 “cseg1”はセ
グメント800、“cseg3”はセグメント802の
ことである。
【0063】指示を受けたディレクティブ対応結合部4
05は、生成したセグメントタイプ付LKシンボルテー
ブル118のセグメント“cseg1”、“cseg
3”に対応するセグメントタイプ付LKシンボルテーブ
ル118の該当欄にセグメントタイプフラグを出力す
る。
【0064】配置部115以降の処理は前述の第1の実
施の形態と同じである。
【0065】本発明の第2の実施の形態はリンカ部40
4だけで図1で示した実施の形態と同じ効果を得ること
ができるという新たな効果を有する。
【0066】
【発明の効果】以上説明したように本発明は以下の効果
を有する。
【0067】第1の効果は、動作時アドレスと配置時ア
ドレスが異なるセグメントが複数存在する場合、各々の
セグメントに対し動作時アドレスを記述しなくてよいこ
とにある。この結果、使用者がプログラムを作成する際
の煩わしさを取り除くことができ、さらにセグメントサ
イズの計算を行なわなくてよいため、プログラムの補正
などで動作時アドレスが変更になるとき、動作時アドレ
スの計算間違いを無くすことができるということであ
る。
【0068】その理由は、動作時アドレスと配置時アド
レスが異なるセグメントに対しシンボルテーブルにフラ
グを出力する手段により、シンボルテーブルにフラグを
出力し、シンブルテーブルに出力されたフラグを読み取
る手段によりフラグを読み取った後、動作時アドレスと
配置時アドレスが異なるセグメントを連続して配置する
手段により自動的にセグメントの配置を行なうためであ
る。
【0069】第2の効果は、開発するデバイスが変更に
なったときに動作時アドレスを調査しなくてよいことに
ある。この結果、使用者がデバイスの調査をする際の煩
わしさを取り除くことができるということである。
【0070】その理由は、情報ファイルに動作時アドレ
スを持たせたことと、情報ファイルから動作時アドレス
を読み取る手段により自動的にアドレスを取得するため
である。
【0071】さらに、第2の実施の形態による効果によ
り、既存のソースプログラムを修正するという煩わしさ
を取り除くことができるということである。
【0072】その理由は、ディレクティブファイルによ
り、動作時アドレスと配置時アドレスが異なるセグメン
トを指定することができるからである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態の言語処理方法を示
す図である。
【図2】(a)処理前のセグメントタイプ付RAシンボ
ルテーブルを示す図表である。 (b)処理後のセグメントタイプ付RAシンボルテーブ
ルを示す図表である。
【図3】(a)結合前のセグメントタイプ付LKシンボ
ルテーブルを示す図表である。 (b)結合後のセグメントタイプ付LKシンボルテーブ
ルを示す図表である。
【図4】本発明の第1の実施の形態のセグメントタイプ
フラグ設定機能付構文解析部の処理を示す図である。
【図5】本発明の実施の形態のセグメントタイプフラグ
判定機能付シンボル値補正部の処理を示す図である。
【図6】本発明の第1の実施の形態のソースプログラム
を示す図である。
【図7】本発明の実施の形態のメモリマップを示す図で
ある。
【図8】情報ファイルの例を示す図である。
【図9】本発明の第2の実施の形態の言語処理方法を示
す図である。
【図10】本発明の第2の実施の形態のソースプログラ
ムを示す図である。
【図11】ディレクティブプログラムに記述されていた
命令を示す図である。
【図12】本発明の第2の実施の形態のディレクティブ
解析部の処理を示す図である。
【図13】従来の技術のメモリマップを示す図である。
【図14】従来の技術のメモリマップを示す図である。
【図15】従来の技術の言語処理方法を示す図である。
【図16】従来の技術の構文解析部の処理を示す図であ
る。
【図17】従来の技術のソースプログラムを示す図であ
る。
【図18】従来の技術のRAシンボルテーブルを示す図
表である。
【図19】従来の技術のLKシンボルテーブルを示す図
表である。
【符号の説明】
100、400、1200 ソースプログラム 101 オブジェクトプログラム 102 ロードモジュールプログラム 103、402 アセンブラ部 104、404 リンカ部 105 情報ファイル 110 字句解析部 111 セグメントタイプフラグ設定機能付構文解析
部 112 RAコード生成部 113 セグメントタイプ付RAシンボルテーブル 114 結合部 115 配置部 116 セグメントタイプフラグ判定機能付シンボル
値補正部 117 LKコード生成部 118 セグメントタイプ付LKシンボルテーブル 401 旧形式オブジェクトプログラム 403 ディレクティブプログラム 405 ディレクティブ対応結合部 410 構文解析部 411 RAシンボルテーブル 412 ディレクティブ解析部 600 メモリマップ 601、602、603、604、605、700、7
01、702、800、801、802、1401、1
402 セグメント 900 ディレクティブファイル 1000、1100 セグメントタイプフラグ 1203 シンボル値補正部 1204 LKシンボルテーブル 1500 RAM 1501 フラッシュメモリ 1502 ROM
───────────────────────────────────────────────────── フロントページの続き (72)発明者 佐藤 栄一 神奈川県川崎市中原区小杉町一丁目403番 53 日本電気アイシーマイコンシステム株 式会社内 Fターム(参考) 5B076 AB02 5B081 CC51

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 絶対番地に配置されたセグメントのアド
    レスである配置時アドレスと、プログラムがマイコン上
    で動作するときのアドレスである動作時アドレスとが、
    異なるセグメントを少なくとも1つ有する場合のセグメ
    ントの動作アドレスを決定する言語処理システムであっ
    て、 該言語処理システムは、アセンブラ部とリンカ部とから
    構成され、 該アセンブラ部は、字句解析部とセグメントタイプフラ
    グ設定機能付構文解析部とリロケータブルアセンブラコ
    ード生成部とセグメントタイプ付リロケータブルアセン
    ブラシンボルテーブルとを備え、 前記字句解析部は、ソースプログラムに記述された言語
    を前記ソースプログラム中の区切り子単位で順次解析を
    行ない、アセンブラで使用できる文字であるか否かを各
    々解析する手段を有し、 前記セグメントタイプフラグ設定機能付構文解析部は、
    前記字句解析部により解析された前記ソースプログラム
    を行単位にアセンブラの書式にあっているか否かを解析
    する手段と、前記動作時アドレスと前記配置時アドレス
    とが異なるセグメントが前記ソースプログラム中に記述
    されている場合、前記セグメントタイプ付リロケータブ
    ルアセンブラシンボルテーブルにセグメントタイプフラ
    グを出力する手段とを有し、 前記リロケータブルアセンブラコード生成部は、前記セ
    グメントタイプ付リロケータブルアセンブラシンボルテ
    ーブルを参照して前記ソースプログラムからオブジェク
    トプログラムを生成する手段を有し、 前記リンカ部は、結合部と配置部とセグメントタイプフ
    ラグ判定機能付シンボル値補正部とリンカコード生成部
    とセグメントタイプ付リンカシンボルテーブルとを備
    え、 前記結合部は、前記アセンブラ部により出力された前記
    オブジェクトプログラム中の同じセグメントタイプのセ
    グメントを1つに結合する手段と、前記セグメントタイ
    プ付リンカシンボルテーブルを作成する手段とを有し、 前記配置部は、前記結合部により1つに結合された個々
    のセグメントをメモリに配置する手段を有し、 前記セグメントタイプフラグ判定機能付シンボル値補正
    部は、前記配置部により前記メモリに配置されたセグメ
    ントのアドレスから前記セグメントタイプ付リンカシン
    ボルテーブル中のシンボル値の補正を行ない、前記オブ
    ジェクトプログラムの補正を行なう手段と、前記セグメ
    ントタイプ付リンカシンボルテーブルから前記セグメン
    トタイプフラグを読み取り、前記動作時アドレスと前記
    配置時アドレスとが異なるセグメントのときは、情報フ
    ァイルから前記動作時アドレスを読み取り前記シンボル
    値の補正を行ない前記オブジェクトプログラムの補正を
    行なう手段とを有し、 前記リンカコード生成部は、前記シンボル値の補正され
    た前記オブジェクトプログラムからロードモジュールプ
    ログラムを生成する手段を有する言語処理システム。
  2. 【請求項2】 前記セグメントタイプフラグ設定機能付
    構文解析部は、 前記ソースプログラムを行単位でアセンブラの書式にあ
    っているか否かの解析を順次行なう手段と、 配置擬似命令が現れた場合は、配置擬似命令処理を行な
    う手段と、 前記配置擬似命令が前記配置時アドレスと前記動作時ア
    ドレスとが異なるセグメントか否かを判断し、前記配置
    時アドレスと前記動作時アドレスとが異なるセグメント
    の場合には、セグメントタイプフラグ設定処理により前
    記セグメントタイプ付リロケータブルアセンブラシンボ
    ルテーブルに前記セグメントタイプフラグを出力する手
    段とを有する請求項1に記載の言語処理システム。
  3. 【請求項3】 絶対番地に配置されたセグメントのアド
    レスである配置時アドレスと、プログラムがマイコン上
    で動作するときのアドレスである動作時アドレスとが、
    異なるセグメントを少なくとも1つ有する場合のセグメ
    ントの動作アドレスを決定する言語処理システムであっ
    て、 該言語処理システムは、アセンブラ部とリンカ部とから
    構成され、 該アセンブラ部は、字句解析部と構文解析部とリロケー
    タブルアセンブラコード生成部とリロケータブルアセン
    ブラシンボルテーブルとを備え、 前記字句解析部は、ソースプログラムに記述された言語
    を前記ソースプログラム中の区切り子単位で順次解析を
    行ない、アセンブラで使用できる文字であるか否かを各
    々解析する手段を有し、 前記構文解析部は、前記字句解析部により解析された前
    記ソースプログラムを行単位にアセンブラの書式にあっ
    ているか否かを解析する手段と、前記リロケータブルア
    センブラシンボルテーブルを生成する手段とを有し、 前記リロケータブルアセンブラコード生成部は、前記リ
    ロケータブルアセンブラシンボルテーブルを参照して前
    記ソースプログラムからオブジェクトプログラムを生成
    する手段を有し、 前記リンカ部は、ディレクティブプログラムとディレク
    ティブ解析部とディレクティブ対応結合部と配置部とセ
    グメントタイプフラグ判定機能付シンボル値補正部とリ
    ンカコード生成部とセグメントタイプ付リンカシンボル
    テーブルとを備え、 前記ディレクティブ解析部は、セグメントタイプの指定
    を行なうファイルである前記ディレクティブプログラム
    の内容を解析する手段を有し、 前記ディレクティブ対応結合部は、前記オブジェクトプ
    ログラムと前記ディレクティブ解析部の解析内容とを読
    み込み、前記セグメントタイプ付リンカシンボルテーブ
    ルを作成する手段を有し、 前記配置部は、前記結合部により1つに結合された個々
    のセグメントをメモリに配置する手段を有し、 前記セグメントタイプフラグ判定機能付シンボル値補正
    部は、前記配置部により前記メモリに配置されたセグメ
    ントのアドレスから前記セグメントタイプ付リンカシン
    ボルテーブル中のシンボル値の補正を行ない、前記オブ
    ジェクトプログラムの補正を行なう手段と、前記セグメ
    ントタイプ付リンカシンボルテーブルから前記セグメン
    トタイプフラグを読み取り、前記動作時アドレスと前記
    配置時アドレスとが異なるセグメントのときは、情報フ
    ァイルから前記動作時アドレスを読み取り前記シンボル
    値の補正を行ない前記オブジェクトプログラムの補正を
    行なう手段とを有し、 前記リンカコード生成部は、前記シンボル値の補正され
    た前記オブジェクトプログラムからロードモジュールプ
    ログラムを生成する手段を有する言語処理システム。
  4. 【請求項4】 前記字句解析部により、ソースプログラ
    ムに記述された言語を前記ソースプログラム中の区切り
    子単位で順次解析を行ない、アセンブラで使用できる文
    字であるか否かを各々解析する段階と、 前記セグメントタイプフラグ設定機能付構文解析部によ
    って、前記字句解析部により解析された前記ソースプロ
    グラムを行単位にアセンブラの書式にあっているか否か
    を解析し、前記動作時アドレスと前記配置時アドレスと
    が異なるセグメントが前記ソースプログラム中に記述さ
    れている場合、前記セグメントタイプ付リロケータブル
    アセンブラシンボルテーブルにセグメントタイプフラグ
    を出力する段階と、 前記リロケータブルアセンブラコード生成部により、前
    記セグメントタイプ付リロケータブルアセンブラシンボ
    ルテーブルを参照して前記ソースプログラムからオブジ
    ェクトプログラムを生成する段階と、 前記結合部によって、前記アセンブラ部により出力され
    た前記オブジェクトプログラム中の同じセグメントタイ
    プのセグメントを1つに結合し、前記セグメントタイプ
    付リンカシンボルテーブルを作成する段階と、 前記配置部によって、前記結合部により1つに結合され
    た個々のセグメントをメモリに配置する段階と、 前記セグメントタイプフラグ判定機能付シンボル値補正
    部によって、前記配置部により前記メモリに配置された
    セグメントのアドレスから前記セグメントタイプ付リン
    カシンボルテーブル中のシンボル値の補正を行なって、
    前記オブジェクトプログラムの補正を行ない、前記セグ
    メントタイプ付リンカシンボルテーブルから前記セグメ
    ントタイプフラグを読み取り、前記動作時アドレスと前
    記配置時アドレスとが異なるセグメントのときは、情報
    ファイルから前記動作時アドレスを読み取り前記シンボ
    ル値の補正を行ない前記オブジェクトプログラムの補正
    を行なう段階と、 前記リンカコード生成部により、前記シンボル値の補正
    された前記オブジェクトプログラムからロードモジュー
    ルプログラムを生成する段階とを有する請求項1に記載
    の言語処理システムの言語処理方法。
  5. 【請求項5】 前記セグメントタイプフラグ設定機能付
    構文解析部により、前記ソースプログラムを行単位でア
    センブラの書式にあっているか否かの解析を順次行なう
    段階と、 配置擬似命令が現れた場合は、配置擬似命令処理を行な
    う段階と、 前記配置擬似命令が前記配置時アドレスと前記動作時ア
    ドレスとが異なるセグメントか否かを判断し、前記配置
    時アドレスと前記動作時アドレスとが異なるセグメント
    の場合には、セグメントタイプフラグ設定処理により前
    記セグメントタイプ付リロケータブルアセンブラシンボ
    ルテーブルに前記セグメントタイプフラグを出力する段
    階とを有する請求項4に記載の言語処理システムの言語
    処理方法。
  6. 【請求項6】 前記字句解析部により、ソースプログラ
    ムに記述された言語を前記ソースプログラム中の区切り
    子単位で順次解析を行ない、アセンブラで使用できる文
    字であるか否かを各々解析する段階と、 前記構文解析部によって、前記字句解析部により解析さ
    れた前記ソースプログラムを行単位にアセンブラの書式
    にあっているか否かを解析し、前記リロケータブルアセ
    ンブラシンボルテーブルを生成する段階と、 前記リロケータブルアセンブラコード生成部により、前
    記リロケータブルアセンブラシンボルテーブルを参照し
    て前記ソースプログラムからオブジェクトプログラムを
    生成する段階と、 前記ディレクティブ解析部により、セグメントタイプの
    指定を行なうファイルである前記ディレクティブプログ
    ラムの内容を解析する段階と、 前記ディレクティブ対応結合部により、前記オブジェク
    トプログラムと前記ディレクティブ解析部の解析内容と
    を読み込み、前記セグメントタイプ付リンカシンボルテ
    ーブルを作成する段階と、 前記配置部は、前記結合部により1つに結合された個々
    のセグメントをメモリに配置する段階と、 前記セグメントタイプフラグ判定機能付シンボル値補正
    部によって、前記配置部により前記メモリに配置された
    セグメントのアドレスから前記セグメントタイプ付リン
    カシンボルテーブル中のシンボル値の補正を行なって、
    前記オブジェクトプログラムの補正を行ない、前記セグ
    メントタイプ付リンカシンボルテーブルから前記セグメ
    ントタイプフラグを読み取り、前記動作時アドレスと前
    記配置時アドレスとが異なるセグメントのときは、情報
    ファイルから前記動作時アドレスを読み取り前記シンボ
    ル値の補正を行ない前記オブジェクトプログラムの補正
    を行なう段階と、 前記リンカコード生成部により、前記シンボル値の補正
    された前記オブジェクトプログラムからロードモジュー
    ルプログラムを生成する段階とを有する請求項3に記載
    の言語処理システムの言語処理方法。
JP17002898A 1998-06-17 1998-06-17 言語処理システム及びその言語処理方法 Expired - Fee Related JP3278613B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17002898A JP3278613B2 (ja) 1998-06-17 1998-06-17 言語処理システム及びその言語処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17002898A JP3278613B2 (ja) 1998-06-17 1998-06-17 言語処理システム及びその言語処理方法

Publications (2)

Publication Number Publication Date
JP2000010764A true JP2000010764A (ja) 2000-01-14
JP3278613B2 JP3278613B2 (ja) 2002-04-30

Family

ID=15897273

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17002898A Expired - Fee Related JP3278613B2 (ja) 1998-06-17 1998-06-17 言語処理システム及びその言語処理方法

Country Status (1)

Country Link
JP (1) JP3278613B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123719A (ja) * 2009-12-11 2011-06-23 Renesas Electronics Corp 言語処理システム、言語処理方法、及び言語処理用プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123719A (ja) * 2009-12-11 2011-06-23 Renesas Electronics Corp 言語処理システム、言語処理方法、及び言語処理用プログラム

Also Published As

Publication number Publication date
JP3278613B2 (ja) 2002-04-30

Similar Documents

Publication Publication Date Title
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US20090144711A1 (en) System and method for common compiler services based on an open services gateway initiative architecture
US6175935B1 (en) Software debugging method and recording medium to which debugging program has been recorded
JP2000216855A (ja) 通信システム用のコンフィグレ―ションデ―タを編集するための、方法、エディタ、コンピュ―タ、制御モジュ―ル、および記憶手段
JP3278613B2 (ja) 言語処理システム及びその言語処理方法
US20100070951A1 (en) Generic assembler
JP3327674B2 (ja) プログラム翻訳装置及び方法
JPS5922140A (ja) 対話型コンパイル方式
JP3596570B2 (ja) クラスの主記憶装置への配置方法
JP2907129B2 (ja) パッチ作成システム
JP2000155673A (ja) リンク装置及びリンク方法
JP2812302B2 (ja) プログラム開発装置
JP2004192604A (ja) 組込みソフトウェア開発装置及び組込みソフトウェア開発方法
JP3063297B2 (ja) 言語処理プログラム作成装置
CN113836496A (zh) 代码虚拟化保护方法、系统、设备及可读存储介质
CN115373689A (zh) 基于llvm的编译优化方法、装置、设备及介质
JP2001014172A (ja) プログラム変換装置
JPH02245934A (ja) データ処理装置
KR100277479B1 (ko) 칠 분리 컴파일 방법
JPS58169637A (ja) コンパイル処理方式
JPH02162426A (ja) プログラムコンパイルエラーメッセージの日本語変換システム
JP2000066888A (ja) ロードモジュールのパッチ処理装置
JPH11272500A (ja) デバッグ方法ならびにそのためのデバッグ装置およびプログラム記憶媒体
JPH05119982A (ja) コンパイラ
JPH08194624A (ja) 実行形式プログラム作成方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees