JP2001134447A - コンパイル方法、および、コンパイル用プログラムを記録した記録媒体 - Google Patents

コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Info

Publication number
JP2001134447A
JP2001134447A JP31437599A JP31437599A JP2001134447A JP 2001134447 A JP2001134447 A JP 2001134447A JP 31437599 A JP31437599 A JP 31437599A JP 31437599 A JP31437599 A JP 31437599A JP 2001134447 A JP2001134447 A JP 2001134447A
Authority
JP
Japan
Prior art keywords
function
register
register bank
syntax
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
JP31437599A
Other languages
English (en)
Other versions
JP3566602B2 (ja
Inventor
Toshiyuki Noguchi
俊幸 野口
Shinji Hirai
真二 平井
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 JP31437599A priority Critical patent/JP3566602B2/ja
Publication of JP2001134447A publication Critical patent/JP2001134447A/ja
Application granted granted Critical
Publication of JP3566602B2 publication Critical patent/JP3566602B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】レジスタバンク機能を持つマイクロコントロー
ラに対して作成されたプログラムのROMサイズを削減
し実行タイムを改善する。 【解決手段】ステップ810で、各割込要求に対応した
割込関数以外の関数の開始を示す構文か判定し、関数の
開始を示す構文に対して、ステップ101で、関数の呼
び出し関係および呼び出し深さを示す関数ネストレベル
を読み込み、ステップ102,103で、この関数ネス
トレベルが前記レジスタバンク番号の範囲内であるか且
つ関数が再帰関数でないかを判定し、この判定結果に対
応して、ステップ104で、前記関数ネストレベルを前
記レジスタバンク番号として割り当てて、ステップ10
5で、システムレジスタの退避および前記レジスタバン
ク切替を行うコードを生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンパイル方法に関
し、特に、レジスタバンク機能を有するマイクロコント
ローラに対応したソースプログラムをコンパイルするコ
ンパイル方法に関する。
【0002】
【従来の技術】従来、この種のコンパイル方法は、記録
媒体に記録されたコンパイル用プログラム(またはコン
パイラ)を読み取り実行するコンピュータ,ワークステ
ーションなど、一般的なハードウェア構成のデータ処理
装置により処理され、コンパイル対象とするマイクロコ
ントローラに対応して処理される。
【0003】コンパイル対象とするマイクロコントロー
ラの1つとして、レジスタバンク機能を有するものがあ
る。このレジスタバンク機能とは、例えば、マイクロコ
ントローラが12個の8ビットレジスタX,A,C,
B,R4,R5,R6,R7,V,U,T,Wと4個の
16ビットレジスタVP,UP,DE,HLとを1つの
レジスタバンクとして4つのレジスタバンクを備え、こ
れらレジスタバンクの1つのレジスタバンク番号がCP
Uの制御命令selにより指定されレジスタバンク切替
が行われる機能である。レジスタバンク1を使用すると
きは、制御命令として「sel rb1」のように記述
し、レジスタバンク1に切替えて使用することができ、
このレジスタバンク切替により、使用しているレジスタ
を個々に退避する必要がなくなる。また、割込みが発生
すると、マイクロコントローラが、レジスタバンクなど
のプログラムステータスワードを含むシステムレジスタ
pswを割込み発生時点で自動的に退避し、割込関数か
ら戻るときには、復帰命令retiにより、システムレ
ジスタpswの復帰も自動的に行う。
【0004】図9は、このレジスタバンク機能を有する
マイクロコントローラに対応したコンパイル方法を説明
するための説明図であり、レジスタバンク機能を有する
マイクロコントローラに対応して作成されたソースプロ
グラムのソースファイル例を示す。
【0005】また、図10〜11は、この従来のコンパ
イル方法の処理手順例を示す流れ図である。この従来の
コンパイル方法は、レジスタバンク機能を有するマイク
ロコントローラに対応したソースプログラムを構文解析
し、一構文ずつ読み込み、関数の開始,終了または呼出
を示す構文か判定して、レジスタバンク切替、使用レジ
スタの退避および復帰、または返り値の設定および読込
を行うコードを生成し、ソースプログラムをコンパイル
する。
【0006】図10〜11を参照すると、この従来のコ
ンパイル方法の処理手順例は、先ず、ステップ801
で、ソースプログラムを構文解析する構文解析処理が行
われ、入力ソースファイルより文字を読込み、意味のあ
る文字単位の構文に分割し、コンパイラの言語仕様で定
められた予約語int,voidと区切り子以外のシン
ボルをシンボルテーブルに登録する。
【0007】ステップ802で、一構文読込処理が行わ
れ、構文解析処理により解析した構文を一構文読込み、
ステップ803で、読み込んだ構文が入力ソースファイ
ルの終了を示す構文か判定する。この判定は、コンピュ
ータ内のファイルの最後に通常入っているEOF(En
d Of File)を示す記号(−1)により行わ
れ、この判定結果でソースファイルの終了を示す構文で
ない場合は、ステップ804,810,812,814
または818に進み、割込関数または割込関数以外の関
数の開始,終了または呼出を示す構文か判定する。
【0008】ステップ804では、割込関数開始判定が
行われ、関数名を示すシンボルの直後に‘{’があるこ
とにより、関数の開始であることを判定し、シンボルテ
ーブルの参照より、割込関数であることを判定し、読み
込んだ構文が割込関数開始を示す構文か判定する。同様
に、ステップ810で、割込関数以外の関数開始判定が
行われる。また、ステップ812では、割込関数終了判
定が行われ、関数開始の‘{’に対応した‘}’がある
ことにより、関数の終了であることを判定し、シンボル
テーブルの参照より、割込関数であることを判定する。
同様に、ステップ814で関数終了判定が行われる。さ
らに、ステップ818で、関数呼出判定が行われ、関数
内の処理中にシンボルの直後に‘(’と‘)’とがある
ことにより判定する。ただし、この括弧内には引数があ
る場合と何もない場合とがある。
【0009】ステップ804の割込関数開始の判定結果
に対応して、ステップ805に進み、レジスタバンク番
号設定判定が行われ、ステップ802の一構文読込処理
で読込んだ構文の示す割込関数にレジスタバンク番号が
設定されているか判定し、設定または未設定の判定結果
に対応して、ステップ806または811に進む。ステ
ップ806では、レジスタバンク番号読込処理が行わ
れ、読込んだ構文の示す割込関数に設定しているレジス
タバンク番号を読込み、ステップ807で、レジスタバ
ンク番号判定が行われ、読み込んだレジスタバンク番号
がマイクロコントローラで許容されている範囲内か判定
し、範囲内または範囲外の判定結果に対応して、ステッ
プ808または811に進む。ステップ808では、レ
ジスタバンク切替処理が行われ、レジスタバンク切替を
行うコードを生成する。
【0010】また、ステップ810の関数開始の判定結
果に対応して、ステップ811に進み、使用レジスタの
退避処理が行われ、使用レジスタの内容を退避するコー
ドを生成する。
【0011】また、ステップ812の割込関数終了の判
定結果に対応して、割込関数には返り値を設定できなく
返り値判定を行う必要はないので、ステップ813に進
み、レジスタバンク切替判定が行われ、シンボルテーブ
ルの参照により、ステップ808のレジスタバンク切替
が行われたか判定し、レジスタバンク切替の判定結果に
対応して、ステップ817に進み、使用レジスタの復帰
処理が行われ、使用レジスタの内容を復帰するコードを
生成する。
【0012】また、ステップ814の関数終了の判定結
果に対応して、ステップ815に進み、返り値判定が行
われ、読み込んだ構文の示す関数が返り値を返すか判定
する。この判定は、関数呼出のシンボルの直前に‘=’
があることで判定され、返り値を返す場合は、ステップ
816で、返り値設定処理が行われ、返り値をレジスタ
に設定するコードを生成し、ステップ817に進む。
【0013】さらに、ステップ818の関数呼出の判定
結果に対応して、ステップ819に進み、返り値判定が
行われ、読み込んだ構文の示す関数が返り値を返すか判
定し、返り値を返す場合は、ステップ820に進み、返
り値読込処理が行われ、返り値をレジスタから読込むコ
ードを生成する。
【0014】これらステップ804〜808,810〜
820の処理の後に、ステップ809に進み、その他の
処理が行なわれ、ステップ802の一構文読込処理に戻
る。
【0015】上記の一連の動作により、図9に示すソー
スファイル例に対して、図12に示すアセンブラプリン
トファイル出力例を得ることができる。
【0016】
【発明が解決しようとする課題】この従来のコンパイル
方法では、次のような問題点があった。
【0017】第1の問題点は、割込関数がマイクロコン
トローラで許容しているレジスタバンクの数より少ない
プログラムにおいては、使用しないレジスタバンクがあ
るにも拘わらず、関数を呼出す度に呼出された関数で、
使用するレジスタの退避、復帰が必要となり、ROMサ
イズと実行タイムが共に良くないということである。
【0018】その理由は、レジスタを使用している状態
で関数を呼出した場合、呼出された関数で同じレジスタ
を他の用途で使用してしまうと、呼出した関数に戻った
ときにレジスタの内容が変わってしまう。そのため呼出
された関数で使用しているレジスタを退避および復帰す
る必要があるが、複数のレジスタを使用している場合
は、使用している全てのレジスタを退避、復帰しなけれ
ばならず、頻繁に関数を呼出すような場合、その退避お
よび復帰に要する命令だけで大きな割合を占め、ROM
サイズと実行タイムとが共に悪くなってしまうためであ
る。
【0019】したがって、本発明の目的は、レジスタバ
ンク機能を持つマイクロコントローラに対して作成され
たプログラムのROMサイズを削減し実行タイムを改善
することにある。
【0020】
【課題を解決するための手段】そのため、本発明は、複
数レジスタバンクの1つのレジスタバンク番号が制御命
令により指定されレジスタバンク切替が行われるレジス
タバンク機能を有するマイクロコントローラに対応した
ソースプログラムを構文解析し、一構文ずつ読み込み、
関数の開始,終了または呼出を示す構文か判定して、前
記レジスタバンク切替、使用レジスタの退避および復
帰、または返り値の設定および読込を行うコードを生成
し、前記ソースプログラムをコンパイルするコンパイル
方法において、各割込要求に対応した割込関数以外の関
数の開始を示す構文に対して、関数の呼び出し関係およ
び呼び出し深さを示す関数ネストレベルを読み込み、こ
の関数ネストレベルが前記レジスタバンク番号の範囲内
であるか且つ関数が再帰関数でないかを判定し、この判
定結果に対応して、前記関数ネストレベルを前記レジス
タバンク番号として割り当てて、システムレジスタの退
避および前記レジスタバンク切替を行うコードを生成し
ている。
【0021】または、本発明は、複数レジスタバンクの
1つのレジスタバンク番号が制御命令により指定されレ
ジスタバンク切替が行われるレジスタバンク機能を有す
るマイクロコントローラに対応したソースプログラムを
構文解析し、一構文ずつ読み込み、関数の開始,終了ま
たは呼出を示す構文か判定して、前記レジスタバンク切
替、使用レジスタの退避および復帰、または返り値の設
定および読込を行うコードを生成し、前記ソースプログ
ラムをコンパイルするコンパイル方法において、各割込
要求に対応した割込関数に使用するレジスタバンクの数
として起動時にユーザ指定された値を解析しユーザ指定
レジスタバンク数として記憶し、前記割込関数の開始を
示す構文に対して、前記割込関数に設定されているレジ
スタバンク番号が前記ユーザ指定レジスタバンク数の範
囲内であるかを判定し、この判定に対応して、前記レジ
スタバンク切替を行うコードを生成し、前記割込関数以
外の関数の開始を示す構文に対して、関数の呼び出し関
係および呼び出し深さを示す関数ネストレベルを読み込
み、この関数ネストレベルと前記ユーザ指定レジスタバ
ンク数との加算値が前記レジスタバンク番号の範囲内で
あるか且つ関数が再帰関数でないかを判定し、この判定
結果に対応して、前記加算値を前記レジスタバンク番号
として割り当てて、システムレジスタの退避および前記
レジスタバンク切替を行うコードを生成している。
【0022】また、前記割込関数以外の関数の終了を示
す構文に対して、前記返り値をレジスタ領域以外のデー
タ領域に設定し、関数開始時に前記レジスタバンク切り
替えを行ったかを判定し、この判定結果に対応して、前
記システムレジスタの復帰を行うコードを生成してい
る。
【0023】さらに、前記割込関数以外の関数の呼出を
示す構文に対して、前記返り値を前記レジスタ領域以外
のデータ領域から読み込むコードを生成している。
【0024】
【発明の実施の形態】次に、本発明について図面を参照
して説明する。本発明のコンパイル方法は、従来のコン
パイル方法と同じく、記録媒体に記録されたコンパイル
用プログラムまたはコンパイラを読み取り実行するコン
ピュータ,ワークステーションなど、一般的なハードウ
ェア構成のデータ処理装置により処理され、コンパイル
対象とするマイクロコントローラに対応して処理され
る。
【0025】図1〜2は、本発明のコンパイル方法の実
施形態1における処理手順例を示す流れ図である。この
実施形態のコンパイル方法は、図10〜11に示された
従来のコンパイル方法における処理手順例と同じく、レ
ジスタバンク機能を有するマイクロコントローラに対応
したソースプログラムを構文解析し、一構文ずつ読み込
み、関数の開始,終了または呼出を示す構文か判定し
て、レジスタバンク切替、使用レジスタの退避および復
帰、または返り値の設定および読込を行うコードを生成
し、ソースプログラムをコンパイルする。
【0026】図1〜2を参照すると、本実施形態のコン
パイル方法における処理手順は、ステップ101〜10
8と各ステップ8xxとを含み、これらの中で、各ステ
ップ8xxについては、図10〜11に示された従来の
コンパイル方法における各ステップと同処理であり重複
説明を省略し、本実施形態のコンパイル方法における特
徴を示すステップ101〜108の処理手順について、
次に説明する。
【0027】ステップ810の関数開始判定の結果に対
応して、割込関数以外の関数の開始を示す構文に対して
ステップ101に進み、関数ネストレベル読込処理が行
われ、関数の呼び出し関係および呼び出し深さを示す関
数ネストレベルを読み込む。この関数ネストレベルは、
ワークステーションの標準OSとして用いられているU
NIXのcflowコマンドで代表される公知技術によ
り作成され、ここでは、権利化対象外とし、例えば、図
3に説明図として示す関数ネストレベル対応情報例が図
9のソースファイル例に対して別ツールで作成され読込
まれることとする。
【0028】ステップ102で、関数ネストレベル判定
が行われ、ステップ101で読み込んだ関数ネストレベ
ルがマイクロコントローラで許容されているレジスタバ
ンク番号の範囲内であるか判定し、レジスタバンク番号
の範囲内または範囲外の判定結果に対応してステップ1
03または811に進む。ここで、コンパイラはコンパ
イル対象とするマイクロコントローラごとに作成され、
レジスタバンクの数を固定情報として保持し、レジスタ
バンク番号の範囲も固定である。このレジスタバンク番
号の許容範囲はプログラム開始関数で使用する「0」を
除く最大値までであり、プログラム開始関数mainの
関数ネストレベルは「0」であり、デフォールトのレジ
スタバンク番号も通常「0」である。
【0029】ステップ103で、再帰関数判定が行わ
れ、シンボルテーブルの参照より、読み込んだ構文の示
す関数が再帰関数か判定する。再帰関数の場合、再帰関
数はプログラム実行時(動的)でないと関数の呼出し関
係と呼出しの深さを示す関数ネストレベルが判らないた
め、レジスタバンク機能を使用せず、ステップ811に
進み、再帰関数でない場合ステップ104に進む。
【0030】ステップ104で、レジスタバンク割当処
理が行われ、ステップ102で読み込んだ関数ネストレ
ベルをレジスタバンク番号として割当て、シンボルテー
ブルにレジスタバンクの情報を登録する。
【0031】ステップ105で、システムレジスタの退
避処理が行われ、システムレジスタを退避するコードを
生成し、ステップ808に進む。これは、システムレジ
スタには現在使用中のレジスタバンク番号の情報が含ま
れており、従来技術では、割込関数が呼出される場合
に、マイクロコントローラが自動的に行う処理である。
【0032】また、ステップ814の関数終了判定の結
果に対応して、関数の終了を示す構文の関数が返り値を
返す場合ステップ106に進み、返り値設定処理が行わ
れ、返り値をレジスタ領域以外のデータ領域に設定する
コードを生成し、ステップ813のレジスタバンク切替
判定の判定結果に対応して、システムレジスタの復帰を
行うコードを生成する。
【0033】さらに、ステップ818の関数呼出判定の
結果に対応して、関数の呼出を示す構文の関数が返り値
を返す場合ステップ108に進み、返り値読込処理が行
われ、返り値をレジスタ領域以外のデータ領域から読み
込むコードを生成する。
【0034】このように、本実施形態のコンパイル方法
は、レジスタバンク機能を持つマイクロコントローラに
おいて、従来、ROMサイズが小さく実行タイムが早く
なるレジスタバンク機能を割込関数にのみ適用していた
が、これを割込関数以外の関数に適用する構成を提供す
るものである。
【0035】次に、本実施形態のコンパイル方法により
図9のソースファイル例をコンパイルする具体例につい
て図面を参照して説明する。ここで、図4は、図9のソ
ースファイル例に対して作成されたシンボルテーブル例
を示す説明図であり、図5は、本実施形態のコンパイル
方法を具体的に説明するための説明図であり、アセンブ
ラプリントファイル出力例を示す。また、コンパイル対
象とするマイクロコントローラごとにコンパイラを作成
するため、コンパイラはコンパイル対象のマイクロコン
トローラのレジスタバンク数を固定情報として保持し、
ここでは、効果が判り易いように、コンパイル対象のマ
イクロコントローラのレジスタバンク数を4つとする。
【0036】まず、ステップ801では、構文解析処理
が行われ、入力ソースファイルの終了EOFまで全ての
解析を行い、図4のシンボルテーブルの作成を行う。
【0037】例えば、図9に示すソースファイル例の3
行目の意味は、関数の前方参照を可能とするためのプロ
トタイプ宣言として関数の型を事前に宣言するものであ
り、voidは何もないことを示す型である。このソー
スファイル例の3行目に対して、入力ソースファイルよ
り「int func11(void);」を読込み、
予約語int、voidと区切り子以外のシンボルfu
nc11を、図4のシンボルテーブルのシンボル情報2
02に、シンボル名(func11),型(int),
種別(関数),クラス(外部),値(なし),返り値
(あり),引数(なし),再帰(なし)として登録す
る。ただし、レジスタバンクとレジスタバンク番号は、
ステップ104におけるレジスタバンク割当処理で登録
される。
【0038】続いて、図9のソースファイル例における
各行の構文に対応した処理が行われる。例えば図9の2
8行目に対しては、関数にレジスタバンクを割当てる場
合に相当する以下の処理が行われる。
【0039】まず、ステップ802で、一構文読込処理
が行われ、構文(int func11(void)
{ )を読込み、ステップ803で、終了構文判定が行
われ、読込んだ構文が終了EOFの構文でないと判定
し、ステップ804に進み、割込関数開始判定が行われ
て、最後の‘{’で関数の開始であるか判定し且つ図4
のシンボルテーブルの関数func11を参照しシンボ
ル情報202のクラス情報から割込関数でないか判定し
て、読込んだ構文が割込関数開始の構文でないと判定す
る。ステップ810に進み、関数開始判定が行われ、読
込んだ構文が関数開始の構文と判定し、ステップ101
に進む。
【0040】ステップ101で、関数ネストレベル読込
処理が行われ、図3の関数ネストレベル対応情報例を参
照し、読込んだ構文の示す関数func11の関数ネス
トレベル「1」を読込み、ステップ102で、関数ネス
トレベル判定が行われ、読込んだ関数ネストレベルが
「1」でありレジスタバンク番号「4」の範囲内である
と判定し、ステップ103に進む。
【0041】ステップ103で、再帰関数判定が行わ
れ、読込んだ構文の示す関数func11が図4のシン
ボルテーブルの関数func11を参照し図5のシンボ
ル情報202の再帰情報から再帰関数でないと判定し、
または、図3の関数ネストレベル対応情報で示される関
数名の直後に「*」記号が付加されていることにより再
帰関数であると判定し、ステップ104に進む。
【0042】ステップ104で、レジスタバンク割当処
理が行われ、読込んだ構文の示す関数func11で使
用するレジスタバンク番号を関数ネストレベル対応情報
と同じ「1」に設定し、図4のシンボルテーブルのシン
ボル情報202におけるレジスタバンク情報,レジスタ
バンク番号情報に「切替」,「1」をそれぞれ登録し、
ステップ105で、システムレジスタの退避処理が行わ
れて、システムレジスタの内容を退避するコードが生成
され、ステップ808で、レジスタバンク切替処理が行
われ、レジスタバンクを「1」に切替えるコードを成す
る。図5のアセンブラプリントファイル出力例における
000014番地のコードpush pswと0000
15番地のコードsel rb1とが、上述のステップ
105,804で生成されたコードにそれぞれ相当す
る。
【0043】これら処理の後、ステップ809でその他
の処理が行われ、本発明に影響のないコンパイラの内部
処理を行い、ステップ802の一構文読込処理に戻る。
【0044】また、例えば図9の33行目に対しては、
レジスタバンクを割当てる関数を呼出す場合に相当する
以下の処理が行われる。
【0045】まず、ステップ802で、一構文読込処理
が行われ、構文(var1 = func21();
)を読込み、ステップ803で、終了構文判定が行わ
れて、読込んだ構文が終了EOFの構文でないと判定
し、ステップ804,810,812,814で、割込
関数開始判定,関数開始判定,割込関数終了判定,関数
終了判定が行われ、読込んだ構文が割込関数開始,関数
開始,割込関数終了,関数終了の構文でないと判定し、
ステップ818に進み、関数呼出判定が行われ、シンボ
ルの直後に‘(’と、‘)’があるか判定することによ
り、読込んだ構文が関数呼出の構文であると判定し、ス
テップ819に進む。
【0046】ステップ819で、返り値判定が行われ、
図4のシンボルテーブルにおけるシンボル情報204の
返り値情報を判定することにより、読込んだ構文の示す
関数func21に返り値があると判定する。返り値あ
りと判定された場合、ステップ108に進み、返り値読
込処理が行われ、返り値をレジスタ領域以外のデータ領
域から読み込むコードを生成する。例えば、図5のアセ
ンブラプリントファイル出力例における00001E番
地のコードmovw rp3,_retvalが、上述
のステップ108で生成されたコードに相当する。この
コードの構成部分rp3はシンボルvar1が使用して
いるレジスタ名であり、このコードの構成部分_ret
valは、コンパイラが確保したレジスタ領域以外のデ
ータ領域を示す。
【0047】これら処理の後、ステップ809でその他
の処理が行われ、本発明に影響のないコンパイラの内部
処理を行い、ステップ802の一構文読込処理に戻る。
【0048】また、例えば図9の37行目,38行目に
対しては、レジスタバンクを割当てた関数を終了する場
合に相当する以下の処理が行われる。
【0049】まず、同様に、ステップ802で、構文
(return var4; })を読込み、ステップ
803で、読込んだ構文が終了EOFの構文でないと判
定し、ステップ804,810,812で、読込んだ構
文が割込関数開始,関数開始,割込関数終了の構文でな
いと判定し、ステップ814で関数終了判定が行われ、
構文の最後の‘}’で関数の終了であるか判定し且つ図
5のシンボル情報202のクラスにより割込関数でない
か判定することにより、関数終了の構文と判定し、ステ
ップ815に進む。
【0050】ステップ815で、返り値判定が行われ、
図4のシンボルテーブルにおけるシンボル情報202の
返り値情報を判定することにより、関数func11に
返り値があると判定する。返り値があると判定された場
合、ステップ106に進み、返り値設定処理が行われ、
返り値をレジスタ領域以外のデータ領域に設定するコー
ドを生成する。例えば、図5のアセンブラプリントファ
イル出力例における000036番地のmovw _r
etval,axが、上述のステップ106で生成され
たコードに相当する。このコードの構成部分axはシン
ボルvar4が使用しているレジスタ名である。
【0051】ステップ813で、レジスタバンク切替判
定が行われ、関数開始時にレジスタバンク割当またはレ
ジスタバンク切替を行ったかを判定する。この判定は、
図4のシンボルテーブルにおけるシンボル情報202の
レジスタバンク情報を判定することにより行われ、切替
の判定結果に対応して、ステップ107に進み、システ
ムレジスタの復帰処理が行われ、退避したシステムレジ
スタの内容の復帰を行うコードを生成する。例えば、図
5のアセンブラプリントファイル出力例における000
03C番地のpop pswが、上述のステップ107
で生成されたコードに相当する。
【0052】これら処理の後、ステップ809でその他
の処理が行われ、本発明に影響のないコンパイラの内部
処理を行い、ステップ802の一構文読込処理に戻る。
【0053】また、図9の52行目に対して、割込関数
にレジスタバンクを割り当てない場合に相当する以下の
処理が行われる。
【0054】まず、ステップ802で、構文(void
func13(void){ )を読込み、ステップ
803で、読込んだ構文が終了EOFの構文でないと判
定され、ステップ804で、割込関数開始判定が行わ
れ、読込んだ構文が割込関数開始の構文であると判定
し、ステップ811で、使用レジスタの退避処理が行わ
れ、使用レジスタの内容の退避を行うコードをが生成す
る。
【0055】ここで、割込関数はレジスタバンクを切替
えないため、図4のシンボルテーブルにおけるシンボル
情報202のレジスタバンク情報は「変更なし」であ
り、レジスタバンク番号は割込みが発生した時点のレジ
スタバンク番号をそのまま使用するため、図4のシンボ
ルテーブルにおけるシンボル情報202の登録は何も行
わない。
【0056】これら処理の後、ステップ809でその他
の処理が行われ、本発明に影響のないコンパイラの内部
処理を行い、ステップ802の一構文読込処理に戻る。
【0057】上記の一連の処理を図9のソースファイル
例に対し行うことにより、図5に示すアセンブラプリン
トファイル出力例を得ることができる。
【0058】次に、本実施形態のコンパイル方法により
生成される関数開始,終了または呼出処理部のコードに
よる効果について、従来のコンパイル方法と比較して具
体的に説明する。
【0059】本実施形態または従来のコンパイル方法に
より生成される関数開始,終了または呼出処理部のコー
ドの命令は、レジスタの退避命令/復帰命令(push
reg/pop reg),レジスタの返り値読込命
令/書込命令(movw rp3,bc/movw b
c,ax),レジスタ領域以外のデータ領域の返り値読
込命令/書込命令(movw rp3,_retval
/movw _retval,ax),システムレジス
タの退避命令/復帰命令(push psw/pop
psw),レジスタバンクの切替命令(sel rb
1)である。
【0060】ここで、これら各命令が、コンパイル対象
のマイクロコントローラにおいて、次に示すROMサイ
ズ,実行タイムを要するとする。 また、上記のコンパイル対象のマイクロコントローラが
制御できるレジスタバンクの数を4つとし、図9に示す
ソースファイルが入力され、図3に示す関数ネストレベ
ルを持つとすると、本実施形態1では、図3に示すネス
トレベル1〜3の9個の関数がレジスタバンク切替を使
用できる。さらに、1関数当たり3つのレジスタを使用
し、3回ずつ関数呼出を行っている場合について、本実
施形態および従来のコンパイル方法により生成される関
数開始,終了または呼出処理部のコードにおけるROM
サイズ差,実行タイム差を求めてみる。
【0061】先ず、従来のコンパイル方法により生成さ
れる関数開始,終了または呼出処理部のコードは、1関
数あたり、レジスタの退避命令,復帰命令3個ずつと、
レジスタの返り値読込命令3個とからなるので、9関数
で162バイトのROMサイズ,602クロックの実行
タイムとなる。また、割込関数に対しては、レジスタバ
ンク機能が用いられる。
【0062】本実施形態のコンパイル方法により生成さ
れる関数開始,終了または呼出処理部のコードは、1関
数あたり、システムレジスタの退避命令,復帰命令1個
ずつと、レジスタバンクの切替命令1個と、レジスタ領
域以外のデータ領域の読込命令3個とからなり、また、
割込関数に対してレジスタバンク機能が用いられず、1
割込関数あたり、レジスタの退避命令,復帰命令3個ず
つからなり、本実施形態のコンパイル方法により生成さ
れる関数開始,終了または呼出処理部のコードのROM
サイズ,実行タイムは、9関数分と割込関数分とを合計
したものになり、割込関数の数により、次のようにな
る。 したがって、従来のコンパイル方法に対する、本実施形
態のコンパイル方法により生成される関数開始,終了ま
たは呼出処理部のコードのROMサイズ差,実行タイム
差は、割込関数の数により、次のようになる。 上述のように、従来のコンパイル方法に対する、本実施
形態のコンパイル方法のROMサイズ差,実行タイム差
は、レジスタバンク数が4つの場合、割込関数が多い4
個のときROMサイズが逆転するが、割込関数が少なく
なるに従って、ROMサイズが最大28%削減され、実
行タイムが最大63%改善される。次に、本発明のコン
パイル方法の実施形態2について図面を参照して説明す
る。図6〜7は、本発明のコンパイル方法の実施形態2
における処理手順例を示す流れ図である。
【0063】図6〜7参照すると、本実施形態のコンパ
イル方法における処理手順は、図1〜2,図10〜11
の実施形態1,従来の処理ステップ101〜108,ス
テップ8xxを組み合わせ、さらに、ステップ501〜
504を追加した構成であり、従来技術と同様に、割込
関数にレジスタバンクを使用可能とし、さらに、割込関
数が使用するレジスタバンクの数をユーザ指定するもの
である。これら処理ステップの中で、ステップ101〜
108,ステップ8xxについては、図1〜2,図10
〜11に示された実施形態1,従来のコンパイル方法に
おける各ステップと同処理であり重複説明を省略し、本
実施形態のコンパイル方法における特徴を示すステップ
501〜504の処理手順について、次に説明する。
【0064】まず、ステップ501で、指定レジスタバ
ンク値解析処理が行われ、割込関数にレジスタバンクを
割当てる場合、コンパイラ起動時のオプションにより、
コンパイラに対して割込関数に使用するレジスタバンク
の数として起動時にユーザ指定された値を解析し、この
数値をユーザ指定レジスタバンク数として記憶する。
【0065】ステップ804の割込関数開始判定の結果
に対応して、ステップ807のレジスタバンク番号判定
で範囲内である場合、ステップ502で、レジスタバン
ク番号ユーザ指定判定が行われ、ステップ806のレジ
スタバンク番号読込処理で読込んだレジスタバンク番号
がユーザ指定のレジスタバンク数の範囲内であるか判定
し、範囲内,範囲外に対応してステップ808,ステッ
プ811に進む。
【0066】ステップ810の関数開始判定の結果に対
応して、ステップ101の関数ネストレベル読込処理の
後、ステップ503で、関数ネストレベル判定が行わ
れ、ユーザ指定のレジスタバンク数と関数ネストレベル
とを加算した値がレジスタバンク番号の範囲内であるか
判定し、範囲内,範囲外に対応してステップ103,ス
テップ811に進み、ステップ103の再帰関数判定で
再帰関数でなければ、ステップ504で、レジスタバン
ク割当処理が行われ、構文の示す関数で使用するレジス
タバンク番号を、ユーザ指定レジスタバンク数と関数ネ
ストレベルとを加算した値に設定し、ステップ105に
進む。
【0067】次に、本実施形態のコンパイル方法により
図9のソースファイル例をコンパイルする具体例につい
て図面を参照して説明する。ここで、図8は、図9のソ
ースファイル例に対して作成されたシンボルテーブル例
を示す説明図である。
【0068】まず、ステップ501で、指定レジスタバ
ンク値解析処理が行われ、コンパイラ起動時のオプショ
ンにより、コンパイラに対して割込関数に使用するレジ
スタバンクの数として起動時にユーザ指定された値を解
析し、この数値をユーザ指定レジスタバンク数として記
憶し、ここでは、ユーザ指定のレジスタバンク数「1」
を得たとする。例えば、ユーザがコンパイラ起動時のオ
プションとして「−rb1」を指定すると、「−rb」
で、割込関数に使用するレジスタバンクを示しているオ
プションであることが判り、直後の「1」で、ユーザ指
定レジスタバンク数が判る。
【0069】次に、ステップ801で、構文解析処理が
行われ、図9のソースファイル例の1行目よりプラグマ
文「#pragma interrupt INTP0
func13 rb1」を読込み、従来技術と同様に
シンボルfunc13が割込関数でレジスタバンク
(1)を使用することを解析し、図8のシンボルテーブ
ルにおけるシンボル情報603のレジスタバンク情報に
(1)を設定する。ここで、プラグマ文とは、Cコンパ
イラへの制御命令で、ソースファイル中に「#prag
ma」で書き始めるC言語の言語仕様であり、コンパイ
ラ独自の拡張仕様を設定できる。図9の例では、INT
P0割込み(interrupt)が発生した時に割込
関数func13が呼出され、その時のレジスタバンク
に1を使用することを示す。
【0070】続いて、図9のソースファイル例における
各行の構文に対応した処理が行われる。例えば図9の2
5行目に対しては、割込関数にレジスタバンクを割当て
る場合に相当する以下の処理が行われる。
【0071】ステップ802で、一構文読込処理が行わ
れ、構文(void func13(void){ )
を読込み、終了構文判定803で該構文が終了の構文で
ないと判定する。ステップ804で、割込関数開始判定
が行われ、構文が割込関数開始を示す構文と判定し、ジ
スタバンク番号設定判定が行われ、図8のシンボルテー
ブルのシンボル情報603のレジスタバンク情報によ
り、構文の割込関数にレジスタバンク番号が設定されて
いると判定し、ステップ806で、レジスタバンク番号
の読込処理が行われ、構文の割込関数に設定しているレ
ジスタバンク番号「1」を読込み、ステップ804で、
レジスタバンク番号判定807が行われ、レジスタバン
ク番号「1」がマイクロコントローラで許容されている
番号であると判定し、ステップ502に進む。
【0072】ステップ502で、レジスタバンク番号ユ
ーザ指定判定が行われ、レジスタバンク番号「1」がユ
ーザ指定のレジスタバンク数「1」の範囲内であると判
定し、ステップ808で、レジスタバンク切替処理が行
われ、構文の割込関数にレジスタバンク番号「1」を割
当て、ステップ809で、その他の処理が行われ、ステ
ップ802の一構文読込処理に戻る。
【0073】また、例えば図9の28行目に対しては、
割込関数以外にレジスタバンクを割当てる場合に相当す
る以下の処理を行う。
【0074】まず、ステップ802で、一構文読込処理
が行われ、構文(int func11(void)
{ )を読込み、ステップ803で、終了構文判定が行
われ、構文が終了の構文でないと判定する。ステップ8
04で、割込関数開始判定が行われ、構文が割込関数開
始の構文でないと判定し、ステップ810で、関数開始
判定が行われ、構文が関数開始の構文と判定し、ステッ
プ101で、関数ネストレベル読込処理が行われ、構文
の関数の関数ネストレベル「1」を読込み、ステップ5
03に進む。
【0075】ステップ503で、関数ネストレベル判定
が行われ、ユーザ指定のレジスタバンクの数「1」と関
数ネストレベル「1」とを加算した値「2」が、レジス
タバンク番号の範囲内であると判定し、ステップ103
で、再帰関数判定103が行われ、図8のシンボルテー
ブルにおけるシンボル情報602の再帰情報により、構
文の関数が再帰関数でないと判定し、ステップ504
で、レジスタバンク割当処理が行われ、構文の関数で使
用するレジスタバンク番号が加算した値「2」に設定さ
れ、図8のシンボルテーブルにおけるシンボル情報60
2のレジスタバンク情報に(2)を設定する。
【0076】この後、ステップ105,808,809
で、システムレジスタの退避処理,レジスタバンク切替
処理,その他の処理809が行われ、ステップ802の
一構文読込処理802に戻る。
【0077】次に、本実施形態のコンパイル方法により
生成される関数開始,終了または呼出処理部のコードに
よる効果について、具体的に説明する。
【0078】本実施形態により生成される関数開始,終
了または呼出処理部のコードの命令は、実施形態1で説
明したコンパイル対象のマイクロコントローラの各命令
と同じROMサイズ,実行タイムを要するとする。
【0079】また、上記のコンパイル対象のマイクロコ
ントローラが制御できるレジスタバンクの数を4つと
し、図9に示すソースファイル例が入力され、図3に示
す関数ネストレベルを持ち、割込関数が1つあるとする
と、本実施形態では、図3に示すネストレベル1〜2の
5個の関数がレジスタバンク切替を使用できる。さら
に、1関数当たり3つのレジスタを使用し、3回ずつ関
数呼出を行っている場合について、本実施形態および従
来のコンパイル方法により生成される関数開始,終了ま
たは呼出処理部のコードにおけるROMサイズ差,実行
タイム差を求めてみる。
【0080】先ず、従来のコンパイル方法により生成さ
れる関数開始,終了または呼出処理部のコードは、1関
数あたり、レジスタの退避命令,復帰命令3個ずつと、
レジスタの返り値読込命令3個とからなるので、5関数
で90バイトのROMサイズ,390クロックの実行タ
イムとなる。また、割込関数に対しては、レジスタバン
ク機能が用いられる。
【0081】本実施形態のコンパイル方法により生成さ
れる関数開始,終了または呼出処理部のコードは、1関
数あたり、システムレジスタの退避命令,復帰命令1個
ずつと、レジスタバンクの切替命令1個と、レジスタ領
域以外のデータ領域の読込命令3個とからなるので、5
関数で65バイトのROMサイズ,145クロックの実
行タイムとなる。また、割込関数に対しては、従来と同
様に、レジスタバンク機能が用いられる。
【0082】したがって、従来のコンパイル方法に対す
る、本実施形態のコンパイル方法により生成される関数
開始,終了または呼出処理部のコードのROMサイズ
差,実行タイム差は、−25バイト,−245クロック
となり、レジスタバンク数が4つの場合、ROMサイズ
が31%削減され,実行タイムが63%改善される。ま
た、実施形態1で割込関数が同数の場合と比較しても、
ROMサイズまたは実行タイムの値が削減または改善さ
れることが判る。
【0083】さらに、本実施形態では、マイクロコント
ローラによってレジスタバンクの数が増えた場合、割込
関数に使用するレジスタバンクの数を増やすことがで
き、割込関数が例えば4個以上になっても同じ効果が得
られるものである。
【0084】
【発明の効果】以上説明したように、本発明は、レジス
タバンク機能を持つマイクロコントローラに対して作成
されたソースプログラムをコンパイル対象とするコンパ
イル方法において、レジスタバンク機能を割込関数以外
の関数にも適用することにより、プログラムのROMサ
イズを著しく削減し、プログラムの実行タイムを著しく
改善する効果がある。
【図面の簡単な説明】
【図1】本発明によるコンパイル方法の実施形態1の1
部を示す流れ図である。
【図2】本発明によるコンパイル方法の実施形態1の他
部分を示す流れ図である。
【図3】図1〜2の実施形態1のコンパイル方法で参照
される関数ネストレベル対応情報例を示す説明図であ
る。
【図4】図1〜2の実施形態1のコンパイル方法で参照
されるシンボルテーブル例を示す説明図であある。
【図5】図1〜2の実施形態1のコンパイル方法による
アセンブラプリントファイル出力例を示す説明図であ
る。
【図6】本発明によるコンパイル方法の実施形態2の1
部を示す流れ図である。
【図7】本発明によるコンパイル方法の実施形態2の他
部分を示す流れ図である。
【図8】図6〜7の実施形態2のコンパイル方法で参照
されるシンボルテーブル例を示す説明図である。
【図9】コンパイル対象のソースファイル例を示す説明
図である。
【図10】従来コンパイル方法の処理手順例の1部を示
す流れ図である。
【図11】従来コンパイル方法の処理手順例の他部分を
示す流れ図である。
【図12】従来のコンパイル方法によるアセンブラプリ
ントファイル出力例を示す説明図である。
【符号の説明】
101〜108,501〜504,801〜820
ステップ 201〜211,601〜611 シンボル情報
フロントページの続き (72)発明者 平井 真二 神奈川県川崎市中原区小杉町一丁目403番 53 日本電気アイシーマイコンシステム株 式会社内 Fターム(参考) 5B033 DD03 EA15 5B081 CC25 5B098 DD03

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 複数レジスタバンクの1つのレジスタバ
    ンク番号が制御命令により指定されレジスタバンク切替
    が行われるレジスタバンク機能を有するマイクロコント
    ローラに対応したソースプログラムを構文解析し、一構
    文ずつ読み込み、関数の開始,終了または呼出を示す構
    文か判定して、前記レジスタバンク切替、使用レジスタ
    の退避および復帰、または返り値の設定および読込を行
    うコードを生成し、前記ソースプログラムをコンパイル
    するコンパイル方法において、各割込要求に対応した割
    込関数以外の関数の開始を示す構文に対して、関数の呼
    び出し関係および呼び出し深さを示す関数ネストレベル
    を読み込み、この関数ネストレベルが前記レジスタバン
    ク番号の範囲内であるか且つ関数が再帰関数でないかを
    判定し、この判定結果に対応して、前記関数ネストレベ
    ルを前記レジスタバンク番号として割り当てて、システ
    ムレジスタの退避および前記レジスタバンク切替を行う
    コードを生成することを特徴とするコンパイル方法。
  2. 【請求項2】 複数レジスタバンクの1つのレジスタバ
    ンク番号が制御命令により指定されレジスタバンク切替
    が行われるレジスタバンク機能を有するマイクロコント
    ローラに対応したソースプログラムを構文解析し、一構
    文ずつ読み込み、関数の開始,終了または呼出を示す構
    文か判定して、前記レジスタバンク切替、使用レジスタ
    の退避および復帰、または返り値の設定および読込を行
    うコードを生成し、前記ソースプログラムをコンパイル
    するコンパイル方法において、各割込要求に対応した割
    込関数に使用するレジスタバンクの数として起動時にユ
    ーザ指定された値を解析しユーザ指定レジスタバンク数
    として記憶し、前記割込関数の開始を示す構文に対し
    て、前記割込関数に設定されているレジスタバンク番号
    が前記ユーザ指定レジスタバンク数の範囲内であるかを
    判定し、この判定に対応して、前記レジスタバンク切替
    を行うコードを生成し、前記割込関数以外の関数の開始
    を示す構文に対して、関数の呼び出し関係および呼び出
    し深さを示す関数ネストレベルを読み込み、この関数ネ
    ストレベルと前記ユーザ指定レジスタバンク数との加算
    値が前記レジスタバンク番号の範囲内であるか且つ関数
    が再帰関数でないかを判定し、この判定結果に対応し
    て、前記加算値を前記レジスタバンク番号として割り当
    てて、システムレジスタの退避および前記レジスタバン
    ク切替を行うコードを生成することを特徴とするコンパ
    イル方法。
  3. 【請求項3】 前記割込関数以外の関数の終了を示す構
    文に対して、前記返り値をレジスタ領域以外のデータ領
    域に設定し、関数開始時に前記レジスタバンク切り替え
    を行ったかを判定し、この判定結果に対応して、前記シ
    ステムレジスタの復帰を行うコードを生成する、請求項
    1または2記載のコンパイル方法。
  4. 【請求項4】 前記割込関数以外の関数の呼出を示す構
    文に対して、前記返り値を前記レジスタ領域以外のデー
    タ領域から読み込むコードを生成する、請求項1,2ま
    たは3記載のコンパイル方法。
  5. 【請求項5】 複数レジスタバンクの1つのレジスタバ
    ンク番号が制御命令により指定されレジスタバンク切替
    が行われるレジスタバンク機能を有するマイクロコント
    ローラに対応したソースプログラムを構文解析し、一構
    文ずつ読み込み、関数の開始,終了または呼出を示す構
    文か判定して、前記レジスタバンク切替、使用レジスタ
    の退避および復帰、または返り値の設定および読込を行
    うコードを生成し、前記ソースプログラムをコンパイル
    する処理をコンピュータに実行させる、コンパイル用プ
    ログラムを記録した記録媒体において、各割込要求に対
    応した割込関数以外の関数の開始を示す構文に対して、
    関数の呼び出し関係および呼び出し深さを示す関数ネス
    トレベルを読み込み、この関数ネストレベルが前記レジ
    スタバンク番号の範囲内であるか且つ関数が再帰関数で
    ないかを判定し、この判定結果に対応して、前記関数ネ
    ストレベルを前記レジスタバンク番号として割り当てて
    システムレジスタの退避およびコードを生成する処理を
    実行させることを特徴とする、コンパイル用プログラム
    を記録した記録媒体。
  6. 【請求項6】 複数レジスタバンクの1つのレジスタバ
    ンク番号が制御命令により指定されレジスタバンク切替
    が行われるレジスタバンク機能を有するマイクロコント
    ローラに対応したソースプログラムを構文解析し、一構
    文ずつ読み込み、関数の開始,終了または呼出を示す構
    文か判定して、前記レジスタバンク切替、使用レジスタ
    の退避および復帰、または返り値の設定および読込を行
    うコードを生成し、前記ソースプログラムをコンパイル
    する処理をコンピュータに実行させる、コンパイル用プ
    ログラムを記録した記録媒体において、各割込要求に対
    応した割込関数に使用するレジスタバンク数として起動
    時にユーザ指定されたユーザ指定レジスタバンク数を解
    析する処理と、前記割込関数の開始を示す構文に対し
    て、前記割込関数に設定されているレジスタバンク番号
    が前記ユーザ指定レジスタバンク数の範囲内であるかを
    判定し、この判定に対応して、前記レジスタバンク切替
    を行うコードを生成する処理と、前記割込関数以外の関
    数の開始を示す構文に対して、関数の呼び出し関係およ
    び呼び出し深さを示す関数ネストレベルを読み込み、こ
    の関数ネストレベルと前記ユーザ指定レジスタバンク数
    との加算値が前記レジスタバンク番号の範囲内であるか
    且つ関数が再帰関数でないかを判定し、この判定結果に
    対応して、前記加算値を前記レジスタバンク番号として
    割り当ててシステムレジスタの退避および前記レジスタ
    バンク切替を行うコードを生成する処理とを実行させる
    ことを特徴とする、コンパイル用プログラムを記録した
    記録媒体。
  7. 【請求項7】 前記割込関数以外の関数の終了を示す構
    文に対して、前記返り値をレジスタ領域以外のデータ領
    域に設定し、関数開始時に前記レジスタバンク切り替え
    を行ったかを判定し、この判定結果に対応して、前記シ
    ステムレジスタの復帰を行うコードを生成する処理を実
    行させる、請求項5または6記載の、コンパイル用プロ
    グラムを記録した記録媒体。
  8. 【請求項8】 前記割込関数以外の関数の呼出を示す構
    文に対して、前記返り値を前記レジスタ領域以外のデー
    タ領域から読み込むコードを生成する処理を実行させ
    る、請求項5,6または7記載の、コンパイル用プログ
    ラムを記録した記録媒体。
JP31437599A 1999-11-04 1999-11-04 コンパイル方法、および、コンパイル用プログラムを記録した記録媒体 Expired - Fee Related JP3566602B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31437599A JP3566602B2 (ja) 1999-11-04 1999-11-04 コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31437599A JP3566602B2 (ja) 1999-11-04 1999-11-04 コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2001134447A true JP2001134447A (ja) 2001-05-18
JP3566602B2 JP3566602B2 (ja) 2004-09-15

Family

ID=18052595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31437599A Expired - Fee Related JP3566602B2 (ja) 1999-11-04 1999-11-04 コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP3566602B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230305821A1 (en) * 2022-03-22 2023-09-28 Realtek Semiconductor Corp. Code checking method and non-transitory computer-readable recording medium device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230305821A1 (en) * 2022-03-22 2023-09-28 Realtek Semiconductor Corp. Code checking method and non-transitory computer-readable recording medium device
US11977867B2 (en) * 2022-03-22 2024-05-07 Realtek Semiconductor Corp. Code checking method and non-transitory computer-readable recording medium device

Also Published As

Publication number Publication date
JP3566602B2 (ja) 2004-09-15

Similar Documents

Publication Publication Date Title
US20040210880A1 (en) Program code conversion
JP2000066902A (ja) 動的トランスレ―タにおけるマルチブランチ修正処理システム
US20070226720A1 (en) System and Method for Efficiently Passing Information Between Compiler and Post-Compile-Time Software
US20030196196A1 (en) Program interpreter
JP2001147819A (ja) 最適化装置および記録媒体
JPH07105012A (ja) 言語処理プログラムのコンパイル処理方式
JP2005332387A (ja) メモリ命令をグループ化及び管理する方法及びシステム
JP2002366366A (ja) コンパイル方法、コード生成方法、スタックレジスタ使用方法、コンパイラ、これらを実現するプログラム及び記憶媒体
US20020010913A1 (en) Program profiling
JP3840149B2 (ja) コンパイラ、演算処理システム及び演算処理方法
KR20060035077A (ko) 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
JP2000353097A (ja) 低密回の干渉グラフを生成する方法および装置
JP2001134447A (ja) コンパイル方法、および、コンパイル用プログラムを記録した記録媒体
JPH0869381A (ja) コンパイル方式
US6029003A (en) Method of assigning external variables to memories when compiling source program
JP3024131B2 (ja) コンパイラシステム
JP2932812B2 (ja) 言語処理プログラム実行装置
JP2003131888A (ja) 手続き間命令スケジューリング方法
JP3018783B2 (ja) コンパイル方式
JP2000339171A (ja) コンパイル装置、方法及び記録媒体
JPH0689187A (ja) インライン展開最適化方法
JP2000231494A (ja) ソフトウェア実行システム及びソフトウェア実行方法
JPH0991151A (ja) コンパイル装置及びプロセッサ装置
JP2809073B2 (ja) 配列のメモリ割り付け方式
JPH06266562A (ja) オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20040119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040610

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees