JPH0823823B2 - 言語処理プログラムの処理方式 - Google Patents
言語処理プログラムの処理方式Info
- Publication number
- JPH0823823B2 JPH0823823B2 JP63298516A JP29851688A JPH0823823B2 JP H0823823 B2 JPH0823823 B2 JP H0823823B2 JP 63298516 A JP63298516 A JP 63298516A JP 29851688 A JP29851688 A JP 29851688A JP H0823823 B2 JPH0823823 B2 JP H0823823B2
- Authority
- JP
- Japan
- Prior art keywords
- internal ram
- program
- speed internal
- external
- file
- 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
Links
- 238000000034 method Methods 0.000 claims description 9
- 238000003672 processing method Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明はマイクロコンピュータ内部に命令によって高
速にデータの読み出し/書き込み可能な特定のメモリ領
域(高速内部RAMと呼ぶ)を持つマイクロコンピュータ
用の言語処理プログラムの処理方式に関する。
速にデータの読み出し/書き込み可能な特定のメモリ領
域(高速内部RAMと呼ぶ)を持つマイクロコンピュータ
用の言語処理プログラムの処理方式に関する。
プログラムを開発するユーザは言語処理結果のオブジ
ェクトプログラムの実行速度、およびオブジェクトプロ
グラムのサイズの両方において性能の良いことを期待す
る。
ェクトプログラムの実行速度、およびオブジェクトプロ
グラムのサイズの両方において性能の良いことを期待す
る。
従来の言語処理プログラムの処理方式では、マイクロ
コンピュータが高速内部RAMを持っていた場合でも、前
記高速内部RAM領域は外部メモリに比べるとメモリサイ
ズが小さいため、すべての変数を高速内部RAM領域に割
り当てることは不可能であり、すべて外部メモリに割り
当てていた。
コンピュータが高速内部RAMを持っていた場合でも、前
記高速内部RAM領域は外部メモリに比べるとメモリサイ
ズが小さいため、すべての変数を高速内部RAM領域に割
り当てることは不可能であり、すべて外部メモリに割り
当てていた。
上述した従来の言語処理プログラムの処理方式では、
変数に対して外部メモリ等の通常のRAMに領域を割り当
てる。一般に通常のRAMのデータの読み出し/書き込み
スピードは高速内部RAMのデータの読み出し/書き込み
スピードに比べかなり遅くなるため、通常のRAMに割り
当てられた変数のデータの読み出し/書き込みスピード
が落ち、言語処理プログラムはユーザの期待する高速な
変数の操作を含むオブジェクトプログラムを生成できな
い。さらに一般に通常のRAMデータの読み出し/書き込
みのオブジェクトコードは高速内部RAMデータの読み出
し/書き込みのオブジェクトコードよりバイト数が長い
ため、限られた高速内部RAM領域に格納できるコンパク
トなオブジェクトプログラムが期待できない。
変数に対して外部メモリ等の通常のRAMに領域を割り当
てる。一般に通常のRAMのデータの読み出し/書き込み
スピードは高速内部RAMのデータの読み出し/書き込み
スピードに比べかなり遅くなるため、通常のRAMに割り
当てられた変数のデータの読み出し/書き込みスピード
が落ち、言語処理プログラムはユーザの期待する高速な
変数の操作を含むオブジェクトプログラムを生成できな
い。さらに一般に通常のRAMデータの読み出し/書き込
みのオブジェクトコードは高速内部RAMデータの読み出
し/書き込みのオブジェクトコードよりバイト数が長い
ため、限られた高速内部RAM領域に格納できるコンパク
トなオブジェクトプログラムが期待できない。
またアセンブリ言語による開発が開発効率、保守性の
点でC言語に劣っている。
点でC言語に劣っている。
本発明は、マイクロコンピュータ内部に命令によって
高速にデータの読み出し/書き込み可能な特定のメモリ
領域を持つマイクロコンピュータ用の言語処理プログラ
ムの処理方式において、変数として宣言されたもののう
ち一部を選別し、前記高速内部RAMを記憶領域として割
り当て、高速内部RAMへのデータの読み出し/書き込み
を可能にするという特徴を持つ。
高速にデータの読み出し/書き込み可能な特定のメモリ
領域を持つマイクロコンピュータ用の言語処理プログラ
ムの処理方式において、変数として宣言されたもののう
ち一部を選別し、前記高速内部RAMを記憶領域として割
り当て、高速内部RAMへのデータの読み出し/書き込み
を可能にするという特徴を持つ。
このように、本発明では、変数に対して外部メモリ等
の通常のRAMの記憶領域を割り当てる代わりに、一部の
変数を選別し、高速内部RAMの記憶領域を割り当てる。
この高速内部RAMへの割り当てにより本発明の言語処理
プログラムは一部の変数に高速内部RAMを割り当てたオ
ブジェクトプログラムを生成する。高速内部RAMへのデ
ータの読み出し/書き込みスピードは通常のRAMへのデ
ータの読み出し/書き込みスピードより速く、ユーザの
期待する高速な変数の操作を含むオブジェクトプログラ
ムを生成できる。さらに高速内部RAMデータの読み出し
/書き込みのオブジェクトプログラムは通常のRAMデー
タの読み出し/書き込みのオブジェクトコードよりバイ
ト数が短いため、コンパクトなオブジェクトプログラム
を生成できる。
の通常のRAMの記憶領域を割り当てる代わりに、一部の
変数を選別し、高速内部RAMの記憶領域を割り当てる。
この高速内部RAMへの割り当てにより本発明の言語処理
プログラムは一部の変数に高速内部RAMを割り当てたオ
ブジェクトプログラムを生成する。高速内部RAMへのデ
ータの読み出し/書き込みスピードは通常のRAMへのデ
ータの読み出し/書き込みスピードより速く、ユーザの
期待する高速な変数の操作を含むオブジェクトプログラ
ムを生成できる。さらに高速内部RAMデータの読み出し
/書き込みのオブジェクトプログラムは通常のRAMデー
タの読み出し/書き込みのオブジェクトコードよりバイ
ト数が短いため、コンパクトなオブジェクトプログラム
を生成できる。
本発明の実施例について図面を参照してより詳しく説
明する。
明する。
第1図は、本発明のシステム構成図である。オブジェ
クトを生成するC言語処理プログラム102は、キーボー
ド104から入力された起動行を解析する起動行解析部10
5、前記起動行解析部105の解析結果を保存する保存部10
6、入力ファイル101からソースプログラム情報を入力す
る入力部107、入力したソースプログラム情報を解析す
る構文解析部108、構文解析されたソースプログラムに
対しオブジェクトプログラムを生成し出力するオブジェ
クト出力部110とを含む。前記構文解析部108はシンボル
テーブルファイル112を作成するシンボル情報生成出力
部109を含む。前記オブジェクト出力部110は前記シンボ
ルテーブルファイル112からシンボル情報を入力するシ
ンボル情報入力部111を含む。
クトを生成するC言語処理プログラム102は、キーボー
ド104から入力された起動行を解析する起動行解析部10
5、前記起動行解析部105の解析結果を保存する保存部10
6、入力ファイル101からソースプログラム情報を入力す
る入力部107、入力したソースプログラム情報を解析す
る構文解析部108、構文解析されたソースプログラムに
対しオブジェクトプログラムを生成し出力するオブジェ
クト出力部110とを含む。前記構文解析部108はシンボル
テーブルファイル112を作成するシンボル情報生成出力
部109を含む。前記オブジェクト出力部110は前記シンボ
ルテーブルファイル112からシンボル情報を入力するシ
ンボル情報入力部111を含む。
第10図に示すマイクロコンピュータ1001は高速にアク
セスできるRAM(高速内部RAM1002、以下単に高速内部RA
Mと呼ぶ)と、通常の外部メモリ1003を持つ。さらに命
令セットの一部として第12図に示す命令を備えている。
第1表には各命令の機械語のバイト数、実行ステート数
も示す。
セスできるRAM(高速内部RAM1002、以下単に高速内部RA
Mと呼ぶ)と、通常の外部メモリ1003を持つ。さらに命
令セットの一部として第12図に示す命令を備えている。
第1表には各命令の機械語のバイト数、実行ステート数
も示す。
第4図は前記入力ファイル101の内容である。左側の
数字は説明のために付けたソースプログラム中の行番号
である。ユーザは高速内部RAMへ割り当てたい外部変数
名の先頭にhrを付加して、プログラムのコーディングを
行う。
数字は説明のために付けたソースプログラム中の行番号
である。ユーザは高速内部RAMへ割り当てたい外部変数
名の先頭にhrを付加して、プログラムのコーディングを
行う。
第5図は、本実施例におけるC言語処理プログラムの
オブジェクト出力部のフローチャートである。第5図の
各処理の機能を説明する。外部変数名判定部501は外部
変数の先頭にhrがあるか否かを判定する。判定の結果外
部変数の先頭にhrがあれば高速内部RAMへ割り当てる高
速内部RAM割り当て処理部502を行い、外部変数の先頭に
hrがなければ通常の外部メモリへ割り当てる外部メモリ
割り当て処理部503を行う。高速内部RAM割り当て処理部
502は、宣言された外部変数を高速内部RAMに割り当て
る。外部メモリ割り当て処理部503は、宣言された外部
変数を外部メモリに割り当てる。シンボル情報出力部50
4は、高速内部RAM割り当て処理部502あるいは外部メモ
リ割り当て処理部503の結果生成されたシンボル情報を
シンボルテーブルファイル112へ出力する。
オブジェクト出力部のフローチャートである。第5図の
各処理の機能を説明する。外部変数名判定部501は外部
変数の先頭にhrがあるか否かを判定する。判定の結果外
部変数の先頭にhrがあれば高速内部RAMへ割り当てる高
速内部RAM割り当て処理部502を行い、外部変数の先頭に
hrがなければ通常の外部メモリへ割り当てる外部メモリ
割り当て処理部503を行う。高速内部RAM割り当て処理部
502は、宣言された外部変数を高速内部RAMに割り当て
る。外部メモリ割り当て処理部503は、宣言された外部
変数を外部メモリに割り当てる。シンボル情報出力部50
4は、高速内部RAM割り当て処理部502あるいは外部メモ
リ割り当て処理部503の結果生成されたシンボル情報を
シンボルテーブルファイル112へ出力する。
第6図は、本実施例のオブジェクトファイルの内容
(オブジェクトプログラム)である。
(オブジェクトプログラム)である。
まず、第1図により全体の処理の流れを説明する。C
言語処理プログラム102は、キーボード104から入力され
た起動行情報を起動行解析部105で解析し、解析結果を
保存部106に格納する。処理は入力部107に移り入力ファ
イル101からプログラム情報を入力する。次に構文解析
部108でソースプログラムを解析する。構文解析中に外
部変数の宣言があると高速内部RAMへ割り当てる変数を
選別しシンボルテーブルファイル112を生成する。次
に、オブジェクト出力部110でオブジェクトプログラム
を生成し出力ファイル103に出力する。オブジェクト出
力部110でのオブジェクトコード生成時には、シンボル
テーブルファイル112からシンボル情報を入力し、外部
変数に割り当てられている領域が外部メモリの場合は外
部変数のアクセスに対して外部メモリアクセスのオブジ
ェクトコードを出力し、外部変数に割り当てられている
領域が高速内部RAMの場合は外部変数のアクセスに対し
て高速内部RAMアクセスのオブジェクトコードを出力す
る。
言語処理プログラム102は、キーボード104から入力され
た起動行情報を起動行解析部105で解析し、解析結果を
保存部106に格納する。処理は入力部107に移り入力ファ
イル101からプログラム情報を入力する。次に構文解析
部108でソースプログラムを解析する。構文解析中に外
部変数の宣言があると高速内部RAMへ割り当てる変数を
選別しシンボルテーブルファイル112を生成する。次
に、オブジェクト出力部110でオブジェクトプログラム
を生成し出力ファイル103に出力する。オブジェクト出
力部110でのオブジェクトコード生成時には、シンボル
テーブルファイル112からシンボル情報を入力し、外部
変数に割り当てられている領域が外部メモリの場合は外
部変数のアクセスに対して外部メモリアクセスのオブジ
ェクトコードを出力し、外部変数に割り当てられている
領域が高速内部RAMの場合は外部変数のアクセスに対し
て高速内部RAMアクセスのオブジェクトコードを出力す
る。
次に、C言語処理プログラムが第4図に示すソースプ
ログラムを入力し、第6図に示すオブジェクトプログラ
ムを出力する処理を説明する。第6図のオブジェクトプ
ログラムには簡略のため機械語のみを記述してあり、疑
似命令などの制御文は省略してある。また、ソースプロ
グラム情報の入力からオブジェクトプログラム出力の全
体の処理は前記全体の処理の流れの説明どうりであるの
で省略して説明を行う。
ログラムを入力し、第6図に示すオブジェクトプログラ
ムを出力する処理を説明する。第6図のオブジェクトプ
ログラムには簡略のため機械語のみを記述してあり、疑
似命令などの制御文は省略してある。また、ソースプロ
グラム情報の入力からオブジェクトプログラム出力の全
体の処理は前記全体の処理の流れの説明どうりであるの
で省略して説明を行う。
まず、第4図のソースプログラムの1行目で宣言され
ている外部変数に対して第5図に示すシンボル情報出力
処理が行われる過程を説明する。第5図の外部変数名判
定部501で外部変数名hrtotalの判定が行われる。外部変
数名判定部501は外部変数名の先頭がhrであるか否かを
判定する。外部変数名判定部501の判定結果は外部変数
名の先頭がhrであるので高速内部RAM割り当て処理部502
に処理が移る。高速内部RAM割り当て処理部502では外部
変数hrtotalの領域に高速内部RAMを割り当てる。同様の
処理により外部変数hrdata1、hrdata2の領域に高速内部
RAM割り当て処理部502が高速内部RAMを割り当てる。次
にシンボル情報出力部504が高速内部RAM割り当て処理部
502によって生成されたシンボル情報を、第1図のシン
ボルテーブルファイル112へ出力する。
ている外部変数に対して第5図に示すシンボル情報出力
処理が行われる過程を説明する。第5図の外部変数名判
定部501で外部変数名hrtotalの判定が行われる。外部変
数名判定部501は外部変数名の先頭がhrであるか否かを
判定する。外部変数名判定部501の判定結果は外部変数
名の先頭がhrであるので高速内部RAM割り当て処理部502
に処理が移る。高速内部RAM割り当て処理部502では外部
変数hrtotalの領域に高速内部RAMを割り当てる。同様の
処理により外部変数hrdata1、hrdata2の領域に高速内部
RAM割り当て処理部502が高速内部RAMを割り当てる。次
にシンボル情報出力部504が高速内部RAM割り当て処理部
502によって生成されたシンボル情報を、第1図のシン
ボルテーブルファイル112へ出力する。
第4図のソースプログラムの1行目は変数定義命令で
あり、C言語処理プログラム102は機械語を生成しな
い。従って、該当するオブジェクトは第6図に示すオブ
ジェクトプログラムには出力されない。
あり、C言語処理プログラム102は機械語を生成しな
い。従って、該当するオブジェクトは第6図に示すオブ
ジェクトプログラムには出力されない。
第4図のソースプログラムの2、3行目は関数定義文
でありこれに対しC言語処理プログラム102は機械語を
生成しない。従って該当するオブジェクトは第6図に示
すオブジェクトプログラムには出力されない。
でありこれに対しC言語処理プログラム102は機械語を
生成しない。従って該当するオブジェクトは第6図に示
すオブジェクトプログラムには出力されない。
第4図のソースプログラムの4行目はすでに宣言され
ている外部変数の参照を行っている文である。これに対
しC言語処理プログラム102は第6図に示すオブジェク
トプログラムを生成し出力する。
ている外部変数の参照を行っている文である。これに対
しC言語処理プログラム102は第6図に示すオブジェク
トプログラムを生成し出力する。
(a) 第4図の4行目の“hrdata1"に対し、第6図の
1行目を生成し、出力する。
1行目を生成し、出力する。
(b) 第4図の4行目の“+hrdata2"に対し、第6図
の2行目を生成し、出力しする。
の2行目を生成し、出力しする。
(c) 第4図の4行目の“hrtotal=”に対し、第6
図の3行目を生成し、出力する。
図の3行目を生成し、出力する。
次に第4図のソースプログラムの5行目は関数定義の
終了の記述であり、C言語処理プログラム102は機械語
を生成しない。従って該当するオプジェクトは第6図に
示すオブジェクトプログラムには出力されない。
終了の記述であり、C言語処理プログラム102は機械語
を生成しない。従って該当するオプジェクトは第6図に
示すオブジェクトプログラムには出力されない。
第6図に示したオブジェクトプログラムの各行の命令
のバイト数は第12図から求められ、それらの合計は6バ
イトとなる。
のバイト数は第12図から求められ、それらの合計は6バ
イトとなる。
第6図に示したオブジェクトプログラムの各行の命令
の実行ステート数も第1表から求められ、それらの合計
は11ステートとなる。
の実行ステート数も第1表から求められ、それらの合計
は11ステートとなる。
ここで従来のC言語処理プログラムの例と比較する。
第2図は入力ファイル101の内容である。左側の数字
は説明のために付けたソースプログラム中の行番号であ
る。
は説明のために付けたソースプログラム中の行番号であ
る。
従来のC言語処理プログラムのオブジェクト出力部の
フローチャートは、第5図に示す実施例1のフローチャ
ートの外部変数名判定部501、高速内部RAM割り当て処理
部502がない点を除いて処理は同じである。また従来の
システム構成図も第1図と同じである。
フローチャートは、第5図に示す実施例1のフローチャ
ートの外部変数名判定部501、高速内部RAM割り当て処理
部502がない点を除いて処理は同じである。また従来の
システム構成図も第1図と同じである。
第2図の入力ファイルに対して第3図のオブジェクト
プログラムが得られる過程を説明する。
プログラムが得られる過程を説明する。
第3図の1行目のtotal、data1、data2に対して外部
メモリ割り当て処理部503が領域として外部メモリを割
り当てる。第3図のソースプログラムの2、3行目は関
数定義文でありこれに対しC言語処理プログラム102は
機械語を生成しない。従って該当するオブジェクトは第
3図に示すオブジェクトプログラムには出力されない。
メモリ割り当て処理部503が領域として外部メモリを割
り当てる。第3図のソースプログラムの2、3行目は関
数定義文でありこれに対しC言語処理プログラム102は
機械語を生成しない。従って該当するオブジェクトは第
3図に示すオブジェクトプログラムには出力されない。
次に第1図のオブジェクト出力部110が第3図に示す
オブジェクトコードを出力する。第3図のソースプログ
ラムの5行目は関数定義の終了の記述であり、C言語処
理プログラム102は機械語を生成しない。従って該当す
るオブジェクトは第3図に示すオブジェクトプログラム
には出力されない。
オブジェクトコードを出力する。第3図のソースプログ
ラムの5行目は関数定義の終了の記述であり、C言語処
理プログラム102は機械語を生成しない。従って該当す
るオブジェクトは第3図に示すオブジェクトプログラム
には出力されない。
第3図に示したオブジェクトプログラムの各行の命令
のバイト数は第1表から求められ、それらの合計は14バ
イトとなる。
のバイト数は第1表から求められ、それらの合計は14バ
イトとなる。
第3図に示したオブジェクトプログラムの各行の命令
の実行ステート数も第1表から求められ、それらの合計
は116ステートとなる。
の実行ステート数も第1表から求められ、それらの合計
は116ステートとなる。
以上の説明により、変数名の先頭にhrを付けた外部変
数は高速内部RAMに空きがあれば自動的に高速内部RAMに
割り当てられ、高速内部RAM領域に割り当てられた外部
変数のアクセスに対しては高速内部RAMアクセスのオブ
ジェクトコードを出力することが可能となる。
数は高速内部RAMに空きがあれば自動的に高速内部RAMに
割り当てられ、高速内部RAM領域に割り当てられた外部
変数のアクセスに対しては高速内部RAMアクセスのオブ
ジェクトコードを出力することが可能となる。
上記実施例では、高速内部RAMに割り当てる外部変数
の数をユーザが管理していなければならない。また、変
数名の先頭にhrを付加しなければならないという制限が
ある。これに対し、本発明の他の実施例では高速内部RA
Mに割り当てられている外部変数の数と名前の情報を格
納した情報ファイルを使うことで、C言語処理プログラ
ムが外部変数の数を管理するという点で異なる。この実
施例では外部変数として宣言されたものはすべて高速内
部RAMへの割り当てを試みる。第11図により説明する
と、まず情報ファイル1113があるか否かをチェックす
る。この情報ファイル1113は高速内部RAMの割り当て情
報を持つファイルである。チェックの結果、情報ファイ
ル1113がなければ高速内部RAMへの割り付けがまだ行わ
れていないことを示しているので、外部変数を高速内部
RAMに割り当て、情報ファイル1113を出力する。次に宣
言された外部変数の割り当て時には情報ファイル1113を
入力し、高速内部RAMに空きがあるか否かを判定し、空
きがあれば高速内部RAMの割り当て情報ファイル1113を
更新する。この繰り返しの結果、高速内部RAMに空きが
なくなると宣言された外部変数は、それ以降外部メモリ
に割り当てられる。
の数をユーザが管理していなければならない。また、変
数名の先頭にhrを付加しなければならないという制限が
ある。これに対し、本発明の他の実施例では高速内部RA
Mに割り当てられている外部変数の数と名前の情報を格
納した情報ファイルを使うことで、C言語処理プログラ
ムが外部変数の数を管理するという点で異なる。この実
施例では外部変数として宣言されたものはすべて高速内
部RAMへの割り当てを試みる。第11図により説明する
と、まず情報ファイル1113があるか否かをチェックす
る。この情報ファイル1113は高速内部RAMの割り当て情
報を持つファイルである。チェックの結果、情報ファイ
ル1113がなければ高速内部RAMへの割り付けがまだ行わ
れていないことを示しているので、外部変数を高速内部
RAMに割り当て、情報ファイル1113を出力する。次に宣
言された外部変数の割り当て時には情報ファイル1113を
入力し、高速内部RAMに空きがあるか否かを判定し、空
きがあれば高速内部RAMの割り当て情報ファイル1113を
更新する。この繰り返しの結果、高速内部RAMに空きが
なくなると宣言された外部変数は、それ以降外部メモリ
に割り当てられる。
本発明の他の実施例について図面を参照してより詳し
く説明する。
く説明する。
第11図は、本発明のシステム構成図である。第10図に
示すマイクロコンピュータ1001用のオブジェクトを生成
するC言語処理プログラム1102はキーボード1104から入
力された起動行を解析する起動行解析部1105、前記起動
行解析部1105の解析結果を保存する保存部1106、入力フ
ァイル1101からソースプログラムを入力する入力部110
7、入力したソースプログラムを解析する構文解析部110
8、構文解析されたソースプログラムに対しオブジェク
トプログラムを生成し出力するオブジェクト出力部1110
とを含む。前記構文解析部1108はシンボルテーブルファ
イル1112と情報ファイル1113を作成するシンボル情報生
成出力部1109を含む。前記オブジェクト出力部1110は前
記ジンボルテーブルファイル1112からシンボル情報を入
力するシンボル情報入力部1111を含む。
示すマイクロコンピュータ1001用のオブジェクトを生成
するC言語処理プログラム1102はキーボード1104から入
力された起動行を解析する起動行解析部1105、前記起動
行解析部1105の解析結果を保存する保存部1106、入力フ
ァイル1101からソースプログラムを入力する入力部110
7、入力したソースプログラムを解析する構文解析部110
8、構文解析されたソースプログラムに対しオブジェク
トプログラムを生成し出力するオブジェクト出力部1110
とを含む。前記構文解析部1108はシンボルテーブルファ
イル1112と情報ファイル1113を作成するシンボル情報生
成出力部1109を含む。前記オブジェクト出力部1110は前
記ジンボルテーブルファイル1112からシンボル情報を入
力するシンボル情報入力部1111を含む。
第10図に示すマイクロコンピュータ1001は高速にアク
セスできるRAM(高速内部RAM1002と呼ぶ)と、通常の外
部メモリ1003を持つ。さらに命令セットの一部として第
1表に示す命令を備えている。第12図には各命令の機械
語のバイト数、実行ステート数も示す。
セスできるRAM(高速内部RAM1002と呼ぶ)と、通常の外
部メモリ1003を持つ。さらに命令セットの一部として第
1表に示す命令を備えている。第12図には各命令の機械
語のバイト数、実行ステート数も示す。
第7図は前記入力ファイル1101の内容である。左側の
数字は説明のために付けたソースプログラム中の行番号
である。
数字は説明のために付けたソースプログラム中の行番号
である。
第8図は、本実施例におけるC言語処理プログラムの
オブジェクト出力部のフローチャートである。ここで第
8図の各処理の機能を説明する。情報ファイル入力部80
1は第11図に示す情報ファイル1113から高速内部RAM領域
の使用状態を示す情報を入力する。情報ファイル1113が
ない場合には高速内部RAMの使用状態は、外部変数がま
だ高速内部RAM領域に割り当てられていないことを示
す。
オブジェクト出力部のフローチャートである。ここで第
8図の各処理の機能を説明する。情報ファイル入力部80
1は第11図に示す情報ファイル1113から高速内部RAM領域
の使用状態を示す情報を入力する。情報ファイル1113が
ない場合には高速内部RAMの使用状態は、外部変数がま
だ高速内部RAM領域に割り当てられていないことを示
す。
高速内部RAM空き判定部802は、情報ファイル1113から
入力した高速内部RAM領域の使用状態を示す情報から高
速内部RAM領域に空きがあるか否かを判定する。高速内
部RAM割り当て処理部803は、宣言された外部変数を高速
内部RAMに割り当てる。情報ファイル出力部804は、高速
内部RAM領域の使用状態を示す情報を第11図に示す情報
ファイル1113へ出力する。外部メモリ割り当て処理部80
5は、宣言された外部変数を外部メモリに割り当てる。
シンボル情報出力部806は、高速内部RAM割り当て処理部
803あるいは外部メモリ割り当て処理部805の結果生成さ
れたシンボル情報をシンボルテーブルファイル1112へ出
力する。
入力した高速内部RAM領域の使用状態を示す情報から高
速内部RAM領域に空きがあるか否かを判定する。高速内
部RAM割り当て処理部803は、宣言された外部変数を高速
内部RAMに割り当てる。情報ファイル出力部804は、高速
内部RAM領域の使用状態を示す情報を第11図に示す情報
ファイル1113へ出力する。外部メモリ割り当て処理部80
5は、宣言された外部変数を外部メモリに割り当てる。
シンボル情報出力部806は、高速内部RAM割り当て処理部
803あるいは外部メモリ割り当て処理部805の結果生成さ
れたシンボル情報をシンボルテーブルファイル1112へ出
力する。
第9図は、本実施例のオブジェクトファイルの内容
(オブジェクトプログラム)である。
(オブジェクトプログラム)である。
まず、第11図により全体の処理の流れを説明する。
C言語処理プログラム1102はキーボード1104から入力
された起動行情報を起動行解析部1105で解析し、解析結
果を保存部1106に格納する。処理は入力部1107に移り、
入力ファイル1101からソースプログラムを入力する。次
に構文解析部1108でソースプログラムを解析する。構文
解析中に外部変数の宣言があると、シンボル情報生成出
力部1109が情報ファイル1113があるか否かを判定して、
あれば前記情報ファイル1113の内容を入力する。高速内
部RAM領域に空きがあれば外部変数を高速内部RAMへ割り
当て、シンボルテーブルファイル1112および情報ファイ
ル1113を出力する。次に、オブジェクト出力部1110でオ
ブジェクトプログラムを生成し出力ファイル1103に出力
する。オブジェクト出力部1110でのオブジェクトコード
生成時には、シンボルテーブルファイル1112からシンボ
ル情報を入力し、外部変数に割り当てられている領域が
外部メモリの場合は外部変数のアクセスに対して外部メ
モリアクセスのオブジェクトコードを出力し、外部変数
に割り当てられている領域が高速内部RAMの場合は外部
変数のアクセスに対して高速内部RAMアクセスのオブジ
ェクトコードを出力する。
された起動行情報を起動行解析部1105で解析し、解析結
果を保存部1106に格納する。処理は入力部1107に移り、
入力ファイル1101からソースプログラムを入力する。次
に構文解析部1108でソースプログラムを解析する。構文
解析中に外部変数の宣言があると、シンボル情報生成出
力部1109が情報ファイル1113があるか否かを判定して、
あれば前記情報ファイル1113の内容を入力する。高速内
部RAM領域に空きがあれば外部変数を高速内部RAMへ割り
当て、シンボルテーブルファイル1112および情報ファイ
ル1113を出力する。次に、オブジェクト出力部1110でオ
ブジェクトプログラムを生成し出力ファイル1103に出力
する。オブジェクト出力部1110でのオブジェクトコード
生成時には、シンボルテーブルファイル1112からシンボ
ル情報を入力し、外部変数に割り当てられている領域が
外部メモリの場合は外部変数のアクセスに対して外部メ
モリアクセスのオブジェクトコードを出力し、外部変数
に割り当てられている領域が高速内部RAMの場合は外部
変数のアクセスに対して高速内部RAMアクセスのオブジ
ェクトコードを出力する。
次に、C言語処理プログラムが第7図に示すソースプ
ログラムを入力し、第9図に示すオブジェクトプログラ
ムを出力する処理を、第8図のシンボル情報出力処理の
フローチャートをもちいて説明する。
ログラムを入力し、第9図に示すオブジェクトプログラ
ムを出力する処理を、第8図のシンボル情報出力処理の
フローチャートをもちいて説明する。
第9図のオブジェクトプログラムには簡略のため機械
語のみを記述してあり、疑似命令などの制御文は省略し
てある。また、ソースプログラム情報の入力からオブジ
ェクトプログラム出力の全体の処理は前記全体の処理の
流れの説明どうりであるので省略して説明を行う。
語のみを記述してあり、疑似命令などの制御文は省略し
てある。また、ソースプログラム情報の入力からオブジ
ェクトプログラム出力の全体の処理は前記全体の処理の
流れの説明どうりであるので省略して説明を行う。
まず、第7図のソースプログラムの1行目で外部変数
totalが宣言されているので、情報ファイル入力部801が
情報ファイル1113があるか否かを判定する。C言語処理
開始時点では情報ファイル1113はないので、次の高速内
部RAM空き判定部802は高速内部RAM領域に空きがあると
判定する。すると処理は高速内部RAM割り当て処理部803
に移り、宣言された外部変数の領域に高速内部RAMを割
り当て、情報ファイル出力部804が第11図の情報ファイ
ル1113を出力する。次にシンボル情報出力部806が第11
図のシンボルテーブルファイル1112を出力する。
totalが宣言されているので、情報ファイル入力部801が
情報ファイル1113があるか否かを判定する。C言語処理
開始時点では情報ファイル1113はないので、次の高速内
部RAM空き判定部802は高速内部RAM領域に空きがあると
判定する。すると処理は高速内部RAM割り当て処理部803
に移り、宣言された外部変数の領域に高速内部RAMを割
り当て、情報ファイル出力部804が第11図の情報ファイ
ル1113を出力する。次にシンボル情報出力部806が第11
図のシンボルテーブルファイル1112を出力する。
次に、外部変数data1が宣言されているので、情報フ
ァイル入力部801が情報ファイル1113があるか否かを判
定する。判定の結果情報ファイル1113が存在したので前
記情報ファイル1113から、高速内部RAM領域の使用状態
を示す情報を入力する。次の高速内部RAM空き判定部802
は高速内部RAM領域に空きがあると判定する。すると処
理は高速内部RAM割り当て処理部803に移り、宣言された
外部変数の領域に高速内部RAMを割り当て、情報ファイ
ル出力部804が情報ファイル1113を出力する。次に、シ
ンボル情報出力部806がシンボルテーブルファイル1112
を出力する。
ァイル入力部801が情報ファイル1113があるか否かを判
定する。判定の結果情報ファイル1113が存在したので前
記情報ファイル1113から、高速内部RAM領域の使用状態
を示す情報を入力する。次の高速内部RAM空き判定部802
は高速内部RAM領域に空きがあると判定する。すると処
理は高速内部RAM割り当て処理部803に移り、宣言された
外部変数の領域に高速内部RAMを割り当て、情報ファイ
ル出力部804が情報ファイル1113を出力する。次に、シ
ンボル情報出力部806がシンボルテーブルファイル1112
を出力する。
同様の処理により外部変数data2の領域に高速内部RAM
を割り当て、情報ファイル出力部804が情報ファイル111
3を出力し、次にシンボル情報出力部806がシンボルテー
ブルファイル1112を出力する。
を割り当て、情報ファイル出力部804が情報ファイル111
3を出力し、次にシンボル情報出力部806がシンボルテー
ブルファイル1112を出力する。
この行は変数定義命令であり、C言語処理プログラム
1102は機械語を生成しない。従って該当するオブジェク
トは第9図に示すオブジェクトプログラムには出力され
ない また、第7図のソースプログラムの2、3行目は関数
定義文でありこれに対しC言語処理プログラム1102は機
械語を生成しない。従って該当するオブジェクトは第9
図に示すオブジェクトプログラムには出力されない。
1102は機械語を生成しない。従って該当するオブジェク
トは第9図に示すオブジェクトプログラムには出力され
ない また、第7図のソースプログラムの2、3行目は関数
定義文でありこれに対しC言語処理プログラム1102は機
械語を生成しない。従って該当するオブジェクトは第9
図に示すオブジェクトプログラムには出力されない。
第7図のソースプログラムの4行目はすでに宣言され
ている外部変数の参照を行っている文である。これに対
し、C言語処理プログラム1102は第9図に示すオブジェ
クトプログラムを生成し出力する。この時、シンボル情
報入力部1111がシンボルテーブルファイル1112からシン
ボル情報を入力し、前記外部変数に割り当てられている
領域が外部メモリの場合は外部変数のアクセスに対して
外部メモリアクセスのオブジェクトコードを出力し、外
部変数に割り当てられている領域が高速内部RAMの場合
は外部変数のアクセスに対して高速内部RAMアクセスの
オブジェクトコードを出力する。
ている外部変数の参照を行っている文である。これに対
し、C言語処理プログラム1102は第9図に示すオブジェ
クトプログラムを生成し出力する。この時、シンボル情
報入力部1111がシンボルテーブルファイル1112からシン
ボル情報を入力し、前記外部変数に割り当てられている
領域が外部メモリの場合は外部変数のアクセスに対して
外部メモリアクセスのオブジェクトコードを出力し、外
部変数に割り当てられている領域が高速内部RAMの場合
は外部変数のアクセスに対して高速内部RAMアクセスの
オブジェクトコードを出力する。
(a) 第7図の4行目の“data1"に対し、第9図の1
行目を生成し、出力する。
行目を生成し、出力する。
(b) 第7図の4行目の“+data2"に対し、第9図の
2行目を生成し、出力する。
2行目を生成し、出力する。
(c) 第7図の4行目の“total=”に対し、第9図
の3行目を生成し、出力する。
の3行目を生成し、出力する。
次に第7図のソースプログラムの5行目は関数定義の
終了の記述であり、C言語処理プログラム1102は機械語
を生成しない。従って該当するオブジェクトは第9図に
示すオブジェクトプログラムには出力されない。
終了の記述であり、C言語処理プログラム1102は機械語
を生成しない。従って該当するオブジェクトは第9図に
示すオブジェクトプログラムには出力されない。
第9図に示したオブジェクトプログラムの各行の命令
のバイト数は第1表から求められ、それらの合計は6バ
イトとなる。
のバイト数は第1表から求められ、それらの合計は6バ
イトとなる。
第9図に示したオブジェクトプログラムの各行の命令
の実行ステート数も第12図から求められ、それらの合計
は11ステートとなる。
の実行ステート数も第12図から求められ、それらの合計
は11ステートとなる。
以上の説明により、外部変数として宣言されたものは
すべて高速内部RAMへの割り当てが試みられて、高速内
部RAMに空きがあれば自動的に高速内部RAMに割り当てら
れ、高速内部RAM領域に割り当てられた外部変数のアク
セスに対しては高速内部RAMアクセスのオブジェクトコ
ードを出力することが可能となる。
すべて高速内部RAMへの割り当てが試みられて、高速内
部RAMに空きがあれば自動的に高速内部RAMに割り当てら
れ、高速内部RAM領域に割り当てられた外部変数のアク
セスに対しては高速内部RAMアクセスのオブジェクトコ
ードを出力することが可能となる。
以上説明したように、本発明では従来のC言語処理プ
ログラムでは使われていなかったマイクロコンピュータ
の高速内部RAMを外部変数の領域に使用している。これ
により、以下の優れた効果が得られる。
ログラムでは使われていなかったマイクロコンピュータ
の高速内部RAMを外部変数の領域に使用している。これ
により、以下の優れた効果が得られる。
(1) 外部変数を外部メモリに割り当てる代わりに高
速内部RAMへ割り当てるので、高速なオブジェクトプロ
グラムを生成できる。
速内部RAMへ割り当てるので、高速なオブジェクトプロ
グラムを生成できる。
実施例1中で説明した従来例のオブジェクトプログラ
ムの実行時間の116ステートに対して本発明の実施例で
は11ステートとなっており、105ステートの実行時間の
短縮を実現している。また従来例のオブジェクトプログ
ラムのバイト数の14バイトに対して本発明の実施例では
6バイトとなっており、8バイトのバイト数の短縮を実
現している。これらの短縮の効果は、高速内部RAMに割
り当てられる外部変数が多いほど大きく現れる。
ムの実行時間の116ステートに対して本発明の実施例で
は11ステートとなっており、105ステートの実行時間の
短縮を実現している。また従来例のオブジェクトプログ
ラムのバイト数の14バイトに対して本発明の実施例では
6バイトとなっており、8バイトのバイト数の短縮を実
現している。これらの短縮の効果は、高速内部RAMに割
り当てられる外部変数が多いほど大きく現れる。
(2) 従来のC言語処理プログラムでは使われていな
かった高速内部RAMを、本発明では積極的に活用してい
ることにより、ユーザに高速内部RAMを有するマイクロ
コンピュータのアセンブリ言語以外での記述方法を提供
できる。
かった高速内部RAMを、本発明では積極的に活用してい
ることにより、ユーザに高速内部RAMを有するマイクロ
コンピュータのアセンブリ言語以外での記述方法を提供
できる。
(3) 高速内部RAMに割り当てる外部変数の管理を変
数名あるいはC言語処理プログラムが情報ファイルで管
理するので、アセンブラソースでユーザが管理する必要
がなくなる。
数名あるいはC言語処理プログラムが情報ファイルで管
理するので、アセンブラソースでユーザが管理する必要
がなくなる。
第1図は本発明の一実施例のシステム構成図、第2図は
従来の入力ファイルの内容(ソースプログラム)、第3
図は従来のオブジェクトファイルの内容(オブジェクト
プログラム)、第4図は本発明の一実施例の入力ファイ
ルの内容(ソースプログラム)、第5図は本発明の一実
施例1におけるC言語処理プログラムのシンボル情報出
力処理のフローチャート、第6図は本発明の一実施例の
オブジェクトファイルの内容(オブジェクトプログラ
ム)、第7図は本発明の他の実施例の入力ファイルの内
容(ソースプログラム)、第8図は本発明の他の実施例
におけるC言語処理プログラムのシンボル情報出力処理
のフローチャート、第9図は本発明の他の実施例のオブ
ジェクトファイルの内容(オブジェクトプログラム)、
第10図はマイクロコンピュータの内部構成図、第11図は
本発明の他の実施例のシステム構成図、第12図は、マイ
クロコンピュータの命令セットである。 101……入力ファイル、102……C言語処理プログラム、
103……オブジェクトファイル、104……キーボード、10
5……起動行解析部、106……保存部、107……入力部、1
08……構文解析部、109……シンボル情報生成出力部、1
10……オブジェクト出力部、111……シンボル情報入力
部、112……シンボルテーブルファイル、501……外部変
数名判定部、502……高速内部RAM割り当て処理部、503
……外部メモリ割り当て処理部、504……シンボル情報
出力部、801……情報ファイル入力部、802……高速内部
RAM空き判定部、803……高速内部RAM割り当て処理部、8
04……情報ファイル出力部、805……外部メモリ割り当
て処理部、806……シンボル情報出力部、1001……マイ
クロコンピュータ、1002……高速内部RAM、1003……外
部メモリ、1101……入力ファイル、1102……C言語処理
プログラム、1103……オブジェクトファイル、1104……
キーボード、1105……起動行解析部、1106……保存部、
1107……入力部、1108……構文解析部、1109……シンボ
ル情報生成出力部、1110……オブジェクト出力部、1111
……シンボル情報入力部、1112……シンボルテーブルフ
ァイル、1113……情報ファイル。
従来の入力ファイルの内容(ソースプログラム)、第3
図は従来のオブジェクトファイルの内容(オブジェクト
プログラム)、第4図は本発明の一実施例の入力ファイ
ルの内容(ソースプログラム)、第5図は本発明の一実
施例1におけるC言語処理プログラムのシンボル情報出
力処理のフローチャート、第6図は本発明の一実施例の
オブジェクトファイルの内容(オブジェクトプログラ
ム)、第7図は本発明の他の実施例の入力ファイルの内
容(ソースプログラム)、第8図は本発明の他の実施例
におけるC言語処理プログラムのシンボル情報出力処理
のフローチャート、第9図は本発明の他の実施例のオブ
ジェクトファイルの内容(オブジェクトプログラム)、
第10図はマイクロコンピュータの内部構成図、第11図は
本発明の他の実施例のシステム構成図、第12図は、マイ
クロコンピュータの命令セットである。 101……入力ファイル、102……C言語処理プログラム、
103……オブジェクトファイル、104……キーボード、10
5……起動行解析部、106……保存部、107……入力部、1
08……構文解析部、109……シンボル情報生成出力部、1
10……オブジェクト出力部、111……シンボル情報入力
部、112……シンボルテーブルファイル、501……外部変
数名判定部、502……高速内部RAM割り当て処理部、503
……外部メモリ割り当て処理部、504……シンボル情報
出力部、801……情報ファイル入力部、802……高速内部
RAM空き判定部、803……高速内部RAM割り当て処理部、8
04……情報ファイル出力部、805……外部メモリ割り当
て処理部、806……シンボル情報出力部、1001……マイ
クロコンピュータ、1002……高速内部RAM、1003……外
部メモリ、1101……入力ファイル、1102……C言語処理
プログラム、1103……オブジェクトファイル、1104……
キーボード、1105……起動行解析部、1106……保存部、
1107……入力部、1108……構文解析部、1109……シンボ
ル情報生成出力部、1110……オブジェクト出力部、1111
……シンボル情報入力部、1112……シンボルテーブルフ
ァイル、1113……情報ファイル。
Claims (1)
- 【請求項1】マイクロコンピュータ内部に命令によって
データの読出し/書込みが行える内部メモリと、前記マ
イクロコンピュータの外部に命令によってデータの読出
し/書込みが行える外部メモリとを有するマイクロコン
ピュータ用の言語処理プログラム処理方式において、前
記内部メモリに割当てる外部変数と前記外部メモリに割
当てる外部変数をソースプログラムで宣言し、前記内部
メモリに割当てられた外部変数のアクセスに対しては前
記内部メモリをアクセスするオブジェクトコードを出力
し、前記外部メモリに割当てられた外部変数のアクセス
に対しては外部メモリをアクセスするオブジェクトコー
ドを出力することを特徴とする言語処理プログラムの処
理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63298516A JPH0823823B2 (ja) | 1988-11-25 | 1988-11-25 | 言語処理プログラムの処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63298516A JPH0823823B2 (ja) | 1988-11-25 | 1988-11-25 | 言語処理プログラムの処理方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02144629A JPH02144629A (ja) | 1990-06-04 |
| JPH0823823B2 true JPH0823823B2 (ja) | 1996-03-06 |
Family
ID=17860732
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63298516A Expired - Lifetime JPH0823823B2 (ja) | 1988-11-25 | 1988-11-25 | 言語処理プログラムの処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0823823B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3018666B2 (ja) * | 1991-10-28 | 2000-03-13 | 日本電気株式会社 | 言語処理装置 |
| JP3060907B2 (ja) * | 1995-07-28 | 2000-07-10 | 日本電気株式会社 | 言語処理プログラムの処理方式 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS58151654A (ja) * | 1982-03-03 | 1983-09-08 | Fujitsu Ltd | レジスタ割付け方式 |
| JPS60145553A (ja) * | 1984-01-09 | 1985-08-01 | Pioneer Electronic Corp | カセット装填機構 |
| JPS63145553A (ja) * | 1986-12-09 | 1988-06-17 | Nec Corp | 管理モ−ド付きメモリ管理方式 |
-
1988
- 1988-11-25 JP JP63298516A patent/JPH0823823B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH02144629A (ja) | 1990-06-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4812981A (en) | Memory management system improving the efficiency of fork operations | |
| US5247681A (en) | Dynamic link libraries system and method | |
| Krall | Efficient JavaVM just-in-time compilation | |
| JP4571710B2 (ja) | ディスパッチテーブル構造のための方法と装置 | |
| US6023583A (en) | Optimized variable allocation method, optimized variable allocation system and computer-readable memory containing an optimized variable allocation program | |
| US7949848B2 (en) | Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program | |
| US5787287A (en) | Representation of control flow and data dependence for machine | |
| JP2000347876A (ja) | スタック・スロット割当て方法および装置 | |
| JP2006513493A (ja) | フリーバッファプールを使用することによるメモリの管理 | |
| JP2927180B2 (ja) | 情報処理プログラムのデバッグ方法およびそのためのデバッガ | |
| JPH09212369A (ja) | 記憶域割り付け装置 | |
| JP3090452B2 (ja) | 論理プロセッサ設備を供なったデータプロセッシングシステム内で論理システムの起動を制御する装置 | |
| EP2080115B1 (en) | Automatic native generation | |
| US7039908B2 (en) | Unification-based points-to-analysis using multilevel typing | |
| US6499094B1 (en) | Management of memory heap space for data files accessible to programs operating in different addressing modes | |
| JPH0823823B2 (ja) | 言語処理プログラムの処理方式 | |
| US5450587A (en) | Expanded memory addressing scheme | |
| JP4846226B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
| US20070300210A1 (en) | Compiling device, list vector area assignment optimization method, and computer-readable recording medium having compiler program recorded thereon | |
| JP3060907B2 (ja) | 言語処理プログラムの処理方式 | |
| US5319784A (en) | System for automatic and selective compile-time installation of fastpath into program for calculation of function/procedure without executing the function/procedure | |
| JPH07105013A (ja) | レジスタ割り付け方式 | |
| US9092326B2 (en) | Method of creating a virtual address for a daughter software entity related to the context of a mother software entity | |
| JPS6325747A (ja) | 仮想記憶管理システム | |
| US20070055644A1 (en) | Global dynamic variable storage for SQL procedures |