JPH06103109A - データプロセッサ、及びこれを用いるデバッグ装置 - Google Patents

データプロセッサ、及びこれを用いるデバッグ装置

Info

Publication number
JPH06103109A
JPH06103109A JP4277803A JP27780392A JPH06103109A JP H06103109 A JPH06103109 A JP H06103109A JP 4277803 A JP4277803 A JP 4277803A JP 27780392 A JP27780392 A JP 27780392A JP H06103109 A JPH06103109 A JP H06103109A
Authority
JP
Japan
Prior art keywords
module
break
instruction
return address
data processor
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.)
Withdrawn
Application number
JP4277803A
Other languages
English (en)
Inventor
Shinichi Yoshioka
真一 吉岡
Yoshiyuki Kondo
芳行 近藤
Katsuaki Takagi
克明 高木
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP4277803A priority Critical patent/JPH06103109A/ja
Priority to KR1019930018924A priority patent/KR940007675A/ko
Priority to EP93115196A priority patent/EP0591753A2/en
Publication of JPH06103109A publication Critical patent/JPH06103109A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】 【目的】 高級言語を用いてプログラム開発されるデー
タプロセッサのシンボリックデバッグ機能としてモジュ
ール単位のブレイクをデータプロセッサの内蔵ハードウ
ェアにより実現する。 【構成】 データプロセッサ1は、サブルーチンのよう
な高級言語のモジュール単位で命令を実行して当該モジ
ュールの最後の復帰命令実行直後にブレイクをかけるモ
ードを有し、同モードはエミュレータによってコントロ
ールレジスタ(MSCNT)に設定される。同モードで
は、サブルーチンからの戻り先番地を、ブランチ命令実
行時にスタックされるべき戻り先番地を利用してリター
ンアドレスレジスタ(RAH)に取得し、これを、サブ
ルーチンからのリターン命令でスタックから命令ポイン
タ(IP)にポップされる戻り先番地と比較回路52で
比較し、比較結果が一致の場合にブレークを発生する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、C言語などの高級言語
を用いてプログラム開発が行われるデータ処理装置のた
めのシンボリックデバッガ機能のうち、モジュール単位
でブレイクをかける機能をデータ処理装置の内蔵ハード
ウェアで実現する技術に関するものである。
【0002】
【従来の技術】高級言語で記述されたソースプログラム
は、例えば、アッセンブリ言語で記述されたコード(ア
ッセンブリコード)にコンパイルされ、更にこれが、ア
ッセンブラによってオブジェクトプログラムに変換され
る。このオブジェクトプログラムが機械語としてデータ
プロセッサで実行される。このような高級言語を用いて
開発されるソフトウェアのデバッグにおいては、デバッ
グの容易化という観点から、アッセンブルコードに直接
着目しないでデバッグが行われる。このようなデバッグ
をシンボリックデバッグという。
【0003】前記シンボリックデバッグについて更に説
明する。中央処理装置が命令を実行するためには絶対番
地を必要とする。デバッグ段階では、この絶対番地が度
重なる翻訳作業(コンパイル,アッセンブル)の結果修
正され、一定しないのが通常であり、エミュレーション
の開始条件や停止条件などを絶対番地で指定することは
非常な負担になる。この反面、プログラミングの際、分
岐先、データ、或はモジュールなどに付加した参照名
(シンボル)は、デバッグ全段階を通して通常変更され
ることはなく、これに対応する絶対番地が変更されるだ
けである。このことから、参照名を使用してエミュレー
ションを実行できれば、絶対番地を記憶したりする負担
から開放され、デバッグが容易となる。この参照名を使
用するようなデバッグ手法がシンボリックデバッグであ
る。このシンボリックデバッグによってエミュレーショ
ンを実施するには、シンボルテーブルなどと呼ばれるア
ドレス対応表が利用される。このテーブルは、例えば、
そのプログラムで使用される参照名及び文(ステートメ
ント)番号と、それに対応する相対番地の相関表とされ
る。エミュレーション時には、そのシンボル名がエミュ
レーションの停止条件などとして指定されると、エミュ
レーションを制御するためのソフトウェアがそのテーブ
ルの相関表から対応する相対番地を探して絶対番地を計
算する。例えば、このシンボルテーブルは、翻訳作業時
にコンパイラ制御子として所定の命令を指定すると自動
的に作成される。そしてこのシンボルテーブルは、例え
ば、エミュレーションを制御するためのソフトウェアに
よって、エミュレータ内部のメモリに展開される。
【0004】斯るシンボリックデバッグを行なう場合、
高級言語の各ステートメントに対するブレークは、プロ
グラムを高級言語記述上の1ステップづつ実行すること
で実現される。通常プログラムはモジュール単位(高級
言語における関数単位)でデバッグを行ない、主プログ
ラムをデバッグする際にはその中で呼ばれるサブルーチ
ンのようなモジュールはデバッグ済の場合が多い。その
ため、主プログラムをデバッグする際はその中で呼ばれ
るサブルーチンのようなモジュールの中をステップ実行
する必要はなく、当該モジュールを一つの単位としてス
テップ実行する要求が生じる。
【0005】この場合、一つの単位としてステップ実行
されるようなモジュールの最後の復帰命令実行直後にブ
レイクをかける必要がある。これは復帰後の最初の命令
でモジュールの返した値を更新してしまう可能性がある
ためである。サブルーチンのようなモジュールを一つの
単位として実行して当該モジュールの最後の復帰命令実
行直後にブレイクをかけることを以下モジュールスルー
ブレークと呼ぶ。ところが通常はモジュールの最後の復
帰命令アドレスは、ブランチ命令若しくはコール命令な
どによるそのモジュールの呼び出しの際には不明という
問題がある。このため以下の従来技術で問題を解決し、
モジュールスルーブレークを実現していた。第1の技術
としてモジュール復帰後の最初の命令をデバッグ命令に
置換し、ソフトウェアブレイクをかける方法がある。ま
た第2の技術として、データプロセッサがモジュール呼
び出し時に形成するメモリ上のスタックをエミュレータ
のソフトウェアが解析し、モジュール最後の復帰アドレ
スを求め、これをブレークポイントとしてブレイクをか
ける方法が特開昭61−180344号公報に記載され
ている。
【0006】
【発明が解決しようとする課題】しかしながら、モジュ
ール復帰後の最初の命令をデバッグ命令に置換する手法
は、ユーザのプログラムがROM上にあるようなシステ
ムでは適用できず、既にデバッグ済みのモジュールの中
でもステップ実行せざるをえないという問題があった。
また、データ処理装置がモジュール呼び出し時に形成す
るメモリ上のスタックを、エミュレータ側のソフトウェ
アで解析する手法では、それ専用の解析ソフトウェアが
必要であり、処理が複雑でかつ処理に長時間を要し、そ
の上、主プログラムから呼ばれる第1のモジュールがさ
らに第2のモジュールを呼ぶような場合には対処できな
いという問題があった。
【0007】本発明の目的は、ユーザのプログラムにデ
バッグ命令を埋め込むことをせず、またエミュレーショ
ンソフトウェアに負担をかけることなく、シンボリック
デバッガにおけるモジュールスルーブレークを、データ
プロセッサの内蔵ハードウェアで実現することにある。
更に本発明の別の目的は、モジュールスルーブレークの
対象とされるモジュールの中で更に別のモジュールが呼
び出されるような場合も、それらを併せて一単位とし
て、上記同様にモジュールスルーブレークをデータプロ
セッサの内蔵ハードウェアで実現することにある。
【0008】本発明の前記並びにその他の目的と新規な
特徴は本明細書の記述及び添付図面から明らかになるで
あろう。
【0009】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0010】すなわち、本発明に係るデータプロセッサ
は、サブルーチンのような高級言語のモジュール単位で
命令を実行して当該モジュールの最後の復帰命令実行直
後にブレイクをかけるモジュールスルーブレークモード
を有し、同モードの有効並びに無効が選択的に外部から
指定されるモジュールスルーブレークイネーブルビット
(MSBE)のような手段を備えて成るものである。更
に詳しくは、モジュールスルーブレークモードにおい
て、モジュールコール命令でモジュールからの復帰アド
レスをデータプロセッサ内のリターンアドレスレジスタ
(RAH)のような記憶手段に登録し、そのモジュール
からのリターン命令実行でリターンアドレスホールドレ
ジスタ(RAH)と復帰アドレスとを比較し、一致して
いたらモジュールブレイク例外を発生させる。
【0011】更に、主プログラムから呼ばれるモジュー
ルがさらに別のモジュールを呼ぶような場合にも最初に
コールされるモジュール全体を1単位としてモジュール
スルーブレークを実現するには、リターンアドレスホー
ルドレジスタ(RAH)のような記憶手段に加えて、モ
ジュールスルーブレークモードの指定に呼応して第1の
状態に初期化され、この第1の状態において前記記憶手
段の書換えを許容し、該記憶手段に対する情報書き込み
に応じて第2の状態にされるモジュールスルーブレーク
バリッドビット(MSBV)のような制御ビットを設け
る。
【0012】前記制御ビットと、モジュールスルーブレ
ークモードの有効並びに無効が選択的に外部から指定さ
れる前記手段とは、外部から状態設定可能なモジュール
スルーブレークコントロールレジスタ(MSCNT)で
構成することができる。
【0013】このようなデータプロセッサに対して高級
言語に基づくシンボリックデバッグをサポートするエミ
ュレータのようなデバッグ装置は、モジュールスルーブ
レークの要求に応じて、前記コントロールレジスタ(M
SCNT)の初期設定を行うためのシンボリックデバッ
グファームウェアの記憶領域を有して構成される。
【0014】
【作用】上記した手段によれば、モジュールスルーブレ
ークをサポートするデータプロセッサは、所望のモジュ
ールへのコール命令でスタックされる当該モジュールか
らの復帰アドレスをスタックとは別の領域に登録し、そ
のモジュールからのリターン命令実行で前記登録された
復帰アドレスとスタックからポップされた復帰アドレス
とを比較し、一致していたらモジュールブレイク例外を
発生させ、このことは、データプロセッサが自らのハー
ドウェアを介して前記コールされたモジュールの最後の
復帰命令実行直後にブレイクをかけるように作用する。
このことは、高級言語のシンボリックデバッグ機能とし
てのモジュールスルーブレークを、ユーザのプログラム
にデバッグ命令を埋め込むことをせず、またエミュレー
ションソフトウェア(シンボリックデバッガファームウ
ェア)に負担をかけることなく実現する。
【0015】リターンアドレスホールドレジスタ(RA
H)への新たなデータの登録を許可するか禁止するかを
指示するためのモジュールスルーブレークバリッドビッ
ト(MSBV)を有することは、コールされたサブルー
チンからの復帰アドレスが一度リターンアドレスホール
ドレジスタ(RAH)に登録された後、当該サブルーチ
ンからのリターン命令が実行されるまで、そのリターン
アドレスホールドレジスタ(RAH)の復帰アドレスが
保持するように作用し、主プログラムから呼ばれるモジ
ュールがさらに別のモジュールを呼ぶような場合にも最
初にコールされたモジュール全体を1単位としてモジュ
ールスルーブレークを実現する。
【0016】
【実施例】図7には本発明の一実施例に係るマイクロプ
ロセッサを適用したエミュレータ並びにターゲットシス
テムの全体がブロック図で示される。
【0017】エミュレータ100はエミュレータ本体1
10及びエミュレータボックス120から構成され、前
記エミュレータボックス120に搭載されたマイクロプ
ロセッサ1がインタフェースケーブル130を介してタ
ーゲットシステム200のマイクロプロセッサ搭載コネ
クタ201に接続される。ターゲットシステム200は
ソフトウェアデバッグ若しくはシステムデバッグ対象と
されるマイクロプロセッサ応用システムである。エミュ
レータ100に搭載されるマイクロプロセッサ1は、前
記ターゲットシステム200のコネクタ201に搭載さ
れるべきマイクロプロセッサと同等若しくは同じマイク
ロプロセッサである。このマイクロプロセッサ1は、タ
ーゲットシステム200のコネクタ201に搭載される
べきマイクロプロセッサに対する評価専用プロセッサで
あってもよいが、本実施例では、双方のマイクロプロセ
ッサは同一チップを利用した同一のものである。即ち、
マイクロプロセッサ1は、後述するデバッグサポート機
能を有している。尚、図において202はメモリであ
り、このメモリ202などが接続されるバス203は、
前記コネクタ201を介してマイクロプロセッサ1に接
続されるようになっている。204はユーザプログラム
ROMである。このユーザプログラムROM204は、
マスクROMのほか電気的にプログラム可能なEPRO
M或はEEPROMであってもよい。ユーザプログラム
ROM204には、システムデバッグ或はソフトウェア
デバッグに利用されるターゲットプログラムが格納され
る。ソフトウェアデバッグに際して、ターゲットプログ
ラムをエミュレータメモリ112に格納し、その格納領
域でユーザプログラムROM204を代替することがで
きる。
【0018】図7のシステムにおいて、マイクロプロセ
ッサ1は、ターゲットシステム200のためのターゲッ
トプログラムを実行してターゲットシステム200を代
行制御する。斯る代行制御途上においてターゲットシス
テム200との間でやりとりされるアドレス並びにデー
タなどの各種バス情報や制御信号などはエミュレータイ
ンタフェース122を介してエミュレータ本体110に
与えられ、例えばマイクロプロセッサ1のバスサイクル
に従ってその情報がエミュレータメモリ112内の所定
記憶領域例えばトレースメモリにトレースされ、また、
その情報がエミュレータ本体110の制御部111に与
えられて各種エミュレーション制御などに供される。エ
ミュレーションを行うに当たり、前記マイクロプロセッ
サ1のデバッグサポート機能に対する初期設定若しくは
条件設定は、前記制御部111がエミュレータインタフ
ェース122を介して行う。エミュレータ本体110は
図示しないホスト装置のようなシステム開発装置などと
接続され、同開発装置から各種デバッグ用コマンドを受
け付け、これを解釈してエミュレーションのための制御
を行い、また、トレースされた情報を前記システム開発
装置に渡したりする。
【0019】シンボリックデバッグのための制御プログ
ラム(シンボリックデバッガファームウェア)はエミュ
レータメモリ112に格納されており、エミュレータ制
御部111はエミュレータインタフェース122を介し
てマイクロプロセッサ1にアクセスし、シンボリックデ
バッグのために必要な動作モードの設定やレジスタの設
定などの処理を行う。また、前記シンボルテーブルのよ
うなアドレス対応表も例えばエミュレータメモリ112
に格納される。
【0020】図1には本発明の一実施例に係るマイクロ
プロセッサ1が示される。
【0021】このマイクロプロセッサ1は、命令キャッ
シュメモリ(ICACHE)2、命令用アドレス変換バ
ッファ(ITLB)3、及び命令プリフェッチキュー
(IPFQ)4を有し、プリフェッチすべき命令のアド
レスは命令解釈部5に含まれる命令ポインタ(IP)5
0から出力される。命令ポインタ50から出力されるプ
リフェッチアドレスは、命令キャッシュメモリ2に供給
され、そのアドレスに対応するエントリが存在する場合
(キャッシュヒット)には対応命令が命令キャッシュメ
モリ2から命令プリフェッチキュー4に供給される。対
応エントリが命令キャッシュメモリ2に存在しない場合
には命令用アドレス変換バッファ部(ITLB)3で変
換された物理アドレスが内部アドレスバス11に供給さ
れる。このアドレスで外部メモリの番地を指定してリー
ドサイクルが起動され、内部データバス12を介して命
令がフェッチされる。このときフェッチされる命令は命
令キャッシュメモリ2を通り、当該キャッシュメモリ2
にはその命令が新たなエントリとして追加される。
【0022】コール命令(CALL)のようなサブルー
チンへブランチする命令では、他の命令に制御を移す際
に戻り番地をスタックに待避しなければならない。した
がって、待避されるべきアドレスは、ブランチ命令に続
く命令のアドレスでなくてはならない。特に制限されな
いが、本実施例に従えば、命令プリフェッチが行われる
ので、このとき命令プリフェッチのための命令アドレス
を保持している命令ポインタ50は、実行中の命令より
も数バイト分進んだアドレスを指している。これをその
まま戻り番地として待避することはできない。そこで本
実施例においては、命令ポインタ50の値を待避すべき
ときは、当該命令ポインタ50の値を、現在実行中の次
の命令のアドレスに補正し、補正された値をスタックに
待避するようになっている。ブランチされたプロシジャ
から元のプロシジャに戻るときはリターン命令などを介
して前記待避された戻り番地が命令ポインタ50に書き
込まれる。本実施例に従えば、ブランチ命令を実行する
ときは、命令プリフェッチキュー4の内容はクリアされ
る。尚、命令ポインタ50の値を補正するための構成に
ついては、本発明に直接関係ないので図示はしていない
が、例えば、命令プリフェッチキューにプッシュされて
いる命令数並びに命令のサイズに従って容易に補正する
ことができる。
【0023】前記命令プリフェッチキュー4にプリフェ
ッチされた命令の解釈は命令解釈部5に含まれる命令デ
コーダ54が行う。特に制限されないが、命令デコーダ
54に供給される命令は2種類に大別され、第1の命令
群に含まれる命令については命令デコーダ54による命
令の解読で命令実行に必要な所要の制御信号を生成す
る。これによって生成される制御信号はセレクタ55を
介して内部制御信号18として各部に供給される。第2
の命令群に含まれる命令に対しては、命令デコーダ54
がこれを判定し、所要の情報をマイクロプログラム部5
3に与え、マイクロプログラムを介して命令実行に必要
な所要の制御信号を生成する。このようにして生成され
る制御信号はセレクタ55を介して内部制御信号18と
して各部に供給される。
【0024】前記制御信号18に従って命令を実行する
ための実行ユニットは、汎用レジスタ(Rn)7及び算
術論理演算器(ALU)8などの演算回路を含み、それ
らは内部データバス12とインタフェースされる。内部
データバス12には演算に利用されるデータなどを保持
するためのデータキャッシュメモリ(DCACHE)1
0のデータ入出力端子が結合される。このデータキャッ
シュメモリ10のアドレス入力端子には内部アドレスバ
ス11から供給されるアドレス又は算術論理演算器8で
演算されたアドレスがセレクタ19を介して供給され
る。セレクタ19を介して供給されるアドレスに対応す
るエントリが存在する場合には外部メモリアクセスに代
えてデータキャッシュメモリ10の保持データが利用さ
れる。キャッシュミスの場合にはデータ用アドレス変換
バッファ部(DTLB)9を介して変換された物理アド
レスによって外部メモリがアクセスされ、これによって
内部データバス12に読み込まれたデータが演算に利用
される。
【0025】制御部6は、割り込み制御のための論理、
外部とハンドシェークでバスサイクルを制御する制御論
理、各種バスアクセス制御信号を生成するための論理、
さらには各種制御用レジスタなどを有し、外部バスの制
御、制御レジスタの管理など、マイクロプロセッサ1の
全体的な制御を行う。図にはプロセッサステータスワー
ドレジスタ(PSW)62、モジュールスルーコントロ
ールレジスタ(MSCNT)61、及びバス制御回路6
0が代表的に示される。この制御部6は、命令アクセス
やオペランドアクセスといったバスアクセスの種別を複
数ビットのコードで示すバスアクセスタイプ信号、リー
ド/ライト信号、バススタート信号、アドレスストロー
ブ信号などを外部に出力し、データコンプリート信号や
割り込み信号などを外部から受ける。
【0026】次に本実施例のマイクロプロセッサ1が自
らのハードウェアでサポートするモジュールスルーブレ
ークについて説明する。本実施例のマイクロプロセッサ
1は、エミュレータを利用したソフトウェアデバッグや
システムデバッグのためのデバッグサポート機能を有
し、その一つが前記モジュールスルーブレーク機能であ
る。このモジュールスルーブレークは、前述したよう
に、サブルーチンのようなモジュールを一つの単位とし
て実行して当該モジュールの最後の復帰命令実行直後に
ブレイクをかけるための機能であり、特に本実施例のマ
イクロプロセッサ1はモジュール単位のブレイクを内蔵
ハードウェアで実現する。マイクロプロセッサ1が有す
るデバッグサポート機能を利用する場合、当該マイクロ
プロセッサ1にはデバッグモードが設定される。デバッ
グモードは、例えばプロセッサステータスワードレジス
タ62の所定ビットに割当てられたデバッグモード指定
ビットが制御レジスタ操作命令によって活性化されるこ
とによって指定される。したがって、本実施例に従え
ば、モジュールスルーブレークはデバッグモードが有効
とされているときに利用可能にされる。
【0027】モジュールスルーブレークをマイクロプロ
セッサ1のハードウェアで実現するために、命令解釈部
5はリターンアドレスホールドレジスタ(RAH)51
という32ビットレジスタ及び比較回路52を有し、前
記制御部6はモジュールスルーブレークコントロールレ
ジスタ(MSCNT)61という32ビットの制御レジ
スタを有する。
【0028】前記リターンアドレスホールドレジスタ
(RAH)51及びモジュールスルーブレークコントロ
ールレジスタ(MSCNT)61の一例は図2に示され
る。リターンアドレスホールドレジスタ(RAH)51
は32ビットの復帰アドレス保持レジスタである。すな
わち、ブランチ命令などにしたがって前記命令ポインタ
50の値を待避すべきとき、当該命令ポインタ50のア
ドレスが、現在実行中の次の命令のアドレスに補正され
てスタックに待避されるが、当該待避されるべきアドレ
ス(戻り番地)がリターンアドレスホールドレジスタ
(RAH)51に格納される。モジュールスルーブレー
クコントロールレジスタ(MSCNT)61はモジュー
ルスルーブレークイネーブルビット(MSBE)を第0
ビットに、モジュールスルーブレークバリッドビット
(MSBV)を第1ビットに割り当ててある。モジュー
ルスルーブレークコントロールレジスタ(MSCNT)
61の設定は、前記シンボリックデバッガファームウェ
アに含まれる制御レジスタ操作命令によって内部データ
バス12を介して行われる。モジュールスルーブレーク
イネーブルビット(MSBE)=1は、モジュールスル
ーブレークモードを意味し、モジュールスルーブレーク
イネーブルビット(MSBE)=0は、モジュールスル
ーブレークモードの無効を意味する。モジュールスルー
ブレークバリッドビット(MSBV)=1は、リターン
アドレスホールドレジスタ(RAH)51に保持されて
いるデータが有効であることを示し、リターンアドレス
ホールドレジスタ(RAH)51への新たなデータの登
録若しくは書換えを抑止する。モジュールスルーブレー
クバリッドビット(MSBV)=0は、リターンアドレ
スホールドレジスタ(RAH)51が保持するデータが
無効であることを示し、リターンアドレスホールドレジ
スタ(RAH)51の書換えが可能であることを意味す
る。
【0029】図3にはモジュールスルーブレークを実行
するときのデータ処理手順の一例が示される。
【0030】先ず、制御レジスタ操作命令でモジュール
スルーブレークコントロールレジスタ(MSCNT)6
1のモジュールスルーブレークイネーブルビット(MS
BE)を1に、モジュールスルーブレークバリッドビッ
ト(MSBV)を0にセットする(S1)。斯る処理の
指示は、図示しない前記システム開発装置からエミュレ
ータ本体110にモジュールスルーブレークのためのコ
マンドが発行されることによって与えられる。このコマ
ンドはエミュレータ制御部111が解読し、この解読結
果に従って前記制御レジスタ操作命令をマイクロプロセ
ッサ1に実行させる。このとき既にデバッグモードが設
定されていることはいうまでもない。
【0031】モジュールスルーブレークイネーブルビッ
ト(MSBE)=1の場合、モジュールスルーブレーク
を行うモジュールへのコール命令が実行されるときに、
そのモジュールからの復帰アドレスすなわち命令ポイン
タ(IP)50の前記補正されたアドレス(以下単に復
帰アドレスとも記す)がスタックにプッシュされるが、
このとき、モジュールスルーブレークバリッドビット
(MSBV)=0であるのでリターンアドレスホールド
レジスタ(RAH)51にその復帰アドレスを登録す
る。その後、モジュールスルーブレークコントロールレ
ジスタ(MSCNT)61のモジュールスルーブレーク
バリッドビット(MSBV)を1にセットして、リター
ンアドレスホールドレジスタ(RAH)51の書換えを
抑止する。そしてモジュールへ分岐する(S2)。尚、
モジュールスルーブレークイネーブルビット(MSB
E)=0の場合、リターンアドレスホールドレジスタ
(RAH)51への登録、モジュールスルーブレークコ
ントロールレジスタ(MSCNT)61のモジュールス
ルーブレークバリッドビット(MSBV)のセットは行
わない。
【0032】モジュール内の命令を実行し、最後のリタ
ーン命令を実行すると、マイクロプロセッサ1は先ず、
前記復帰アドレスをスタックからポップして命令ポイン
タ50にセットする。そしてこのとき、モジュールスル
ーブレークバリッドビット(MSBV)=1ならばリタ
ーンアドレスホールドレジスタ(RAH)51の値と命
令ポインタ(IP)50の値とを比較する(S3)。比
較の結果一致したならば、制御線15を介し、制御部6
にモジュールスルーブレーク例外の発生を通知し、モジ
ュールスルーブレークコントロールレジスタ(MSCN
T)61のモジュールスルーブレークイネーブルビット
(MSBE),モジュールスルーブレークバリッドビッ
ト(MSBV)を共にクリアする。通知を受けた制御部
6はバス制御回路60が例外処理ハンドラのベクタフェ
ッチを起動し、例外処理ハンドラへ分岐される(S
4)。これによって、マイクロプロセッサ1による命令
の実行が停止され、例えばその状態すなわちブレーク状
態がエミュレータ制御部111に通知される。比較の結
果が一致していないならば、通常にリターン命令を実行
してもとのプロシジャーに復帰される(S5)。
【0033】ここで図4を参照しながらモジュールスル
ーブレークの実際の動作とモジュールスルーブレークコ
ントロールレジスタ(MSCNT)61のモジュールス
ルーブレークバリッドビット(MSBV)の必要性を更
に説明する。
【0034】main()がabc()を呼び、更にa
bc()がghi()を呼んでいる高級言語記述のプロ
グラムにおいて、abc()をモジュールスルーブレー
クする場合、これをアセンブラ命令上の動作と対応付け
て考える。サブルーチンへのブランチ命令である”BS
R abc”の直前に、制御レジスタ操作命令でモジュ
ールスルーブレークコントロールレジスタ(MSCN
T)61のモジュールスルーブレークイネーブルビット
(MSBE)を1に、モジュールスルーブレークバリッ
ドビット(MSBV)を0にセットする。”BSR a
bc”の実行で復帰アドレスB1がスタックにプッシュ
され、このときモジュールスルーブレークバリッドビッ
ト(MSBV)=0であるから、リターンアドレスホー
ルドレジスタ(RAH)51に、当該復帰アドレスB1
が登録される。そして、モジュールスルーブレークバリ
ッドビット(MSBV)が1にセットされ、abcへ分
岐する()。次に”BSR ghi”の実行時にはモ
ジュールスルーブレークイネーブルビット(MSBE)
=1であるが、モジュールスルーブレークバリッドビッ
ト(MSBV)=1であるので、復帰アドレスB2がス
タックにプッシュされるときには、リターンアドレスホ
ールドレジスタ(RAH)51への登録は行われずにg
hiへ分岐する()。ghiのリターン命令RTSで
はモジュールスルーブレークコントロールレジスタ(M
SCNT)61のモジュールスルーブレークバリッドビ
ット(MSBV)=1のためスタックからポップされた
復帰アドレスB2とリターンアドレスホールドレジスタ
(RAH)51の内容であるB1とが比較されるが、不
一致のためそのアドレスB2へ復帰する()。abc
のリターン命令RTSではモジュールスルーブレークコ
ントロールレジスタ(MSCNT)61のモジュールス
ルーブレークバリッドビット(MSBV)=1のためス
タックからポップされる復帰アドレスB1とリターンア
ドレスホールドレジスタ(RAH)51の内容であるア
ドレスB1とが比較され、一致するためにモジュールス
ルーブレーク例外が発生する()。この例のようにモ
ジュールスルーブレークをかけているモジュールが入れ
子の構造になっているとき、一度リターンアドレスホー
ルドレジスタ(RAH)51を登録した後はモジュール
コール命令でのリターンアドレスホールドレジスタ(R
AH)51の更新を抑止する必要があり、モジュールス
ルーブレークコントロールレジスタ(MSCNT)61
のモジュールスルーブレークバリッドビット(MSB
V)は、リターンアドレスホールドレジスタ(RAH)
51のそのような不所望な書換えを抑止する機能を果た
す。
【0035】尚、図1には前記モジュールスルーブレー
ク以外のデバッグサポート機能の一例として通常のブレ
ーク機能をサポートするためのブレークポイント制御回
路56が示されている。このブレークポイント制御回路
56は、デバッグモードにおいてブレークすべきアドレ
スが設定され、これをエミュレーション中のアクセスア
ドレスなどと比較し、その一致状態を制御部6に通知
し、これによって、バス制御回路60が例外処理ハンド
ラのベクタフェッチを起動し、例外処理ハンドラへ分岐
して、マイクロプロセッサ1による命令の実行を停止さ
せる。命令の実行アドレスをブレークポイントとする場
合には、実行中の次に実行すべき命令アドレスがブレー
クポイントとの比較対象にされる。
【0036】図5にはマイクロプロセッサ1が自らのハ
ードウェアによってモジュールスルーブレークをサポー
トする場合にエミュレータ側で行うべき処理ステップが
示される。同図並びに上記説明から明らかなように、モ
ジュールスルーブレークを行うに当たり、エミュレータ
側では、システム開発装置がエミュレータ100に対し
てモジュールスルーブレーク要求をコマンドにて発行
し、これを受け付けたエミュレータ100は制御レジス
タの設定を行って、目的とするサブルーチンコール命令
からエミュレーションを開始すればよく、エミュレータ
のファームウェアにとってその処理は何等負担にはなら
ない。例えば、そのための処理時間は約200nsec
のような短い時間とされる。
【0037】図6には、モジュール呼び出し時に形成す
るメモリ上のスタックをエミュレータのソフトウェアが
解析し、モジュール最後の復帰アドレスを求め、これを
ブレークポイントとしてブレイクをかける手法によっ
て、モジュールスルーブレークを実現する場合にエミュ
レータ側で行うべき処理ステップが示される。システム
開発装置がエミュレータ100に対してモジュールスル
ーブレーク要求を発行すると、エミュレータ100はそ
の指示にしたがって制御レジスタの設定を行って、目的
とするサブルーチンコール命令からエミュレーションを
開始する。そうすると、その制御レジスタの設定状態に
したがって、割り込みルーチンが起動され、エミュレー
タのファームウェアによって、メモリ上のプログラム情
報の解析が行われ、前記サブルーチンコールからのリタ
ーンアドレスの抽出が行われ、そのリターンアドレスが
ブレークポイント制御回路のブレークポイントに設定さ
れ、その後、当該割り込みルーチンから復帰して、エミ
ュレーションを再開する。このようにモジュールスルー
ブレークをマイクロプロセッサのハードウェアでサポー
トしていない場合には、サブルーチンコールからのリタ
ーンアドレスの抽出などの処理のために、例えば約10
msecのような比較的長い処理時間を要し、エミュレ
ータのファームウェアにも負担がかかる。換言すれば、
エミュレータの開発に際して、その様な複雑な処理を行
うためのソフトウェアも開発しなければならなくなる。
【0038】上記実施例によれば以下の作用効果があ
る。 (1)外部からアクセス可能なモジュールスルーブレー
クコントロールレジスタ(MSCNT)61と、モジュ
ールからの復帰アドレスを保持するリターンアドレスホ
ールドレジスタ(RAH)51と、そのモジュールから
のリターン命令の実行に際して当該リターンアドレスホ
ールドレジスタ(RAH)51の値とスタックからポッ
プされた復帰アドレスとを比較する比較回路52とを備
え、外部からモジュールスルーブレークコントロールレ
ジスタ(MSCNT)61を介してマイクロプロセッサ
1にモジュールスルーブレークモードが設定されると、
所望のモジュールへのコール命令でスタックされる当該
モジュールからの復帰アドレスをリターンアドレスホー
ルドレジスタ(RAH)51にも登録し、そのモジュー
ルからのリターン命令実行でリターンアドレスホールド
レジスタ(RAH)51の値と復帰アドレスとを比較
し、一致していたらモジュールブレイク例外を発生させ
るから、マイクロプロセッサ1は、自らのハードウェア
を介して、モジュールの最後の復帰命令実行直後にブレ
イクをかけることができる。 (2)これにより高級言語のシンボリックデバッグ機能
としてのモジュールスルーブレークを、ユーザのプログ
ラムにデバッグ命令を埋め込むことをせず、またエミュ
レーションソフトウェア(シンボリックデバッガファー
ムウェア)に負担をかけることなく実現できる。換言す
れば、モジュール復帰後の最初の命令をデバッグ命令に
置換する手法とは異なり、ユーザプログラムがROM上
にあるようなシステムに対しても、既にデバッグ済みの
モジュールの中で再度ステップ実行を行うことなく、モ
ジュールスルーブレークを実現でき、また、データプロ
セッサがモジュール呼び出し時に形成するメモリ上のス
タックを解析するための専用の解析ソフトウェアをエミ
ュレータのファームウェアとして開発する手間を省くこ
とができる。 (3)モジュールスルーブレークコントロールレジスタ
(MSCNT)61は、モジュールスルーブレークモー
ドの有効性を指示するモジュールスルーブレークバリッ
ドビット(MSBV)のほかに、リターンアドレスホー
ルドレジスタ(RAH)51への新たなデータの登録を
許可するか禁止するかを指示するためのモジュールスル
ーブレークバリッドビット(MSBV)を有し、リター
ンアドレスホールドレジスタ(RAH)51に新たなデ
ータを登録したときはモジュールスルーブレークバリッ
ドビット(MSBV)を反転してリターンアドレスホー
ルドレジスタ(RAH)51の書換えを禁止するから、
モジュールスルーブレークの対象とされるモジュールが
入れ子の構造になっているときでも、コールされたサブ
ルーチンからの復帰アドレスが一度リターンアドレスホ
ールドレジスタ(RAH)51に登録された後は、当該
サブルーチンからのリターン命令が実行されるまで、そ
のリターンアドレスホールドレジスタ(RAH)51の
復帰アドレスが保持される。したがって、主プログラム
から呼ばれる第1のモジュールがさらに別のモジュール
を呼ぶような場合にも第1のモジュール全体を1単位と
してモジュールスルーブレークを実現することができ
る。
【0039】以上本発明者によってなされた発明を実施
例に基づいて具体的に説明したが、本発明はそれに限定
されるものではなく、その要旨を逸脱しない範囲におい
て種々変更可能であることは言うまでもない。例えば、
現在実行中の次の命令アドレスを常に保持するポインタ
を特別に設けてもよい。また、マイクロプロセッサに対
するデバッグモードやモジュールスルーブレークモード
の設定はレジスタによる設定に限定されず、外部端子か
らモード信号で設定するようにしてもよい。また、デー
タプロセッサの一例であるマイクロプロセッサさらには
マイクロコンピュータは命令プリフェッチ若しくは命令
のパイプライン的実行を行うものに限定されない。ま
た、本発明はエミュレーションなどのための評価専用の
データプロセッサにも適用できる。
【0040】以上の説明では主として本発明者によって
なされた発明をその背景となった利用分野であるシンボ
ロックデバッガを含めたエミュレータに適用した場合に
ついて説明したが、本発明はそれに限定されるものでは
なく、その他のデバッグ装置にも適用することが可能で
ある。本発明は、少なくともサブルーチンのようなモジ
ュール内をステップ実行することなくモジュール単位で
ブレークをかける条件のものに広く適用することができ
る。
【0041】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
【0042】(1)すなわち、モジュールスルーブレー
クをサポートする本発明に係るデータプロセッサは、自
らのハードウェアを介して前記コールされたモジュール
の最後の復帰命令実行直後にブレイクをかけることがで
きる。 (2)上記により、高級言語のシンボリックデバッグ機
能としてのモジュールスルーブレークを、ユーザのプロ
グラムにデバッグ命令を埋め込むことをせず、またエミ
ュレーションソフトウェア(シンボリックデバッガファ
ームウェア)に負担をかけることなく実現することがで
きる。 (3)上記(1)により、モジュール復帰後の最初の命
令をデバッグ命令に置換する手法とは異なり、ユーザプ
ログラムがROM上にあるようなシステムに対しても、
既にデバッグ済みのモジュールの中で再度ステップ実行
を行うことなく、モジュールスルーブレークを実現で
き、また、データプロセッサがモジュール呼び出し時に
形成するメモリ上のスタックを解析するための専用の解
析ソフトウェアをエミュレータのファームウェアとして
開発する手間を省くことができる。 (4)リターンアドレスホールドレジスタ(RAH)へ
の新たなデータの登録を許可するか禁止するかを指示す
るためのモジュールスルーブレークバリッドビット(M
SBV)を有するから、コールされたサブルーチンから
の復帰アドレスが一度リターンアドレスホールドレジス
タ(RAH)に登録された後、当該サブルーチンからの
リターン命令が実行されるまで、そのリターンアドレス
ホールドレジスタ(RAH)の復帰アドレスが保持さ
れ、主プログラムから呼ばれるモジュールがさらに別の
モジュールを呼ぶような場合にも最初にコールされたモ
ジュール全体を1単位としてモジュールスルーブレーク
を実現できる。
【図面の簡単な説明】
【図1】本発明の一実施例に係るマイクロプロセッサの
ブロック図である。
【図2】リターンアドレスホールドレジスタ(RAH)
及びモジュールスルーコントロールレジスタ(MSCN
T)の一例説明図である。
【図3】モジュールスルーブレーク実行時におけるデー
タ処理手順の一例フローチャートである。
【図4】モジュールスルーブレーク対象モジュールが更
に別のモジュールを呼び出している場合における高級言
語記述とこれに対応するアッセンブリ言語記述との説明
図である。
【図5】本実施例のマイクロプロセッサが自らのハード
ウェアによってモジュールスルーブレークをサポートす
る場合にエミュレータ側で行うべき処理ステップを示す
一例フローチャートである。
【図6】モジュール呼び出し時にメモリ上のスタックを
解析してモジュール最後の復帰アドレスを求めてこれを
ブレークポイントとすることによってモジュールスルー
ブレークを実現する従来の場合にエミュレータ側で行う
べき処理ステップの一例を示すフローチャートである。
【図7】本発明の一実施例に係るエミュレータのブロッ
ク図である。
【符号の説明】
1 マイクロプロセッサ 5 命令解釈部 50 命令ポインタ(IP) 51 リターンアドレスホールドレジスタ(RAH) 52 比較回路 6 制御部 61 モジュールスルーブレークコントロールレジスタ
(MSCNT) MSBE モジュールスルーブレークイネーブルビット MSBV モジュールスルーブレークバリッドビット 60 バス制御回路 7 汎用レジスタ 8 算術論理演算器 11 内部アドレスバス 12 内部データバス 100 エミュレータ 110 エミュレータ本体 111 エミュレータ制御部 112 エミュレータメモリ 120 エミュレータボックス 200 ターゲットシステム

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 所定の手順に従って命令を実行するデー
    タプロセッサであって、サブルーチンのような高級言語
    のモジュール単位で命令を実行して当該モジュールの最
    後の復帰命令実行直後にブレイクをかけるモジュールス
    ルーブレークモードを有し、同モードの有効並びに無効
    が選択的に外部から指定される手段を備えて成るもので
    あることを特徴とするデータプロセッサ。
  2. 【請求項2】 前記モジュールスルーブレークモードに
    おいて、サブルーチンがコールされたとき同サブルーチ
    ンからの復帰アドレスの待避に呼応して、当該復帰アド
    レスを保持する記憶手段と、前記コールされたサブルー
    チンからのリターン命令によって特定される復帰アドレ
    スと前記記憶手段が保持する復帰アドレスとの一致を判
    別する比較手段と、この比較手段の一致検出に基づいて
    ブレークのための処理を行う手段とを備えて成るもので
    あることを特徴とする請求項1記載のデータプロセッ
    サ。
  3. 【請求項3】 前記モジュールスルーブレークモードに
    おいて、コールされたサブルーチンからの復帰アドレス
    が待避されるときに当該復帰アドレスを保持することが
    できる記憶手段と、モジュールスルーブレークモードの
    指定に呼応して第1の状態に初期化され、この第1の状
    態において前記記憶手段の書換えを許容し、該記憶手段
    に対する情報書き込みに応じて第2の状態にされる制御
    ビットと、前記コールされたサブルーチンからのリター
    ン命令によって特定される復帰アドレスと前記記憶手段
    が保持する復帰アドレスとの一致を判別する比較手段
    と、この比較手段の一致検出に基づいてブレークのため
    の処理を行う手段とを備えて成るものであることを特徴
    とする請求項1記載のデータプロセッサ。
  4. 【請求項4】 前記制御ビットと、モジュールスルーブ
    レークモードの有効並びに無効が選択的に外部から指定
    される前記手段とは、外部から状態設定可能なコントロ
    ールレジスタであることを特徴とする請求項1乃至3の
    何れか1項記載のデータプロセッサ。
  5. 【請求項5】 請求項4に記載のデータプロセッサに対
    して高級言語に基づくシンボリックデバッグをサポート
    するデバッグ装置において、モジュールスルーブレーク
    の要求に応じて、前記コントロールレジスタの初期設定
    を行うためのシンボリックデバッグファームウェアの記
    憶領域を有して成るものであることを特徴とするデバッ
    グ装置。
  6. 【請求項6】 前記デバッグ装置は、前記データプロセ
    ッサによってターゲットシステムを代行制御するための
    制御部と、その制御に利用される情報及び前記代行制御
    によって取得される情報の記憶領域を備えて成るエミュ
    レータであることを特徴とする請求項5記載のデバッグ
    装置。
JP4277803A 1992-09-22 1992-09-22 データプロセッサ、及びこれを用いるデバッグ装置 Withdrawn JPH06103109A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP4277803A JPH06103109A (ja) 1992-09-22 1992-09-22 データプロセッサ、及びこれを用いるデバッグ装置
KR1019930018924A KR940007675A (ko) 1992-09-22 1993-09-18 데이타프로세서 및 이것을 사용하는 디버그장치
EP93115196A EP0591753A2 (en) 1992-09-22 1993-09-21 A data processor and a debugging apparatus using it

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4277803A JPH06103109A (ja) 1992-09-22 1992-09-22 データプロセッサ、及びこれを用いるデバッグ装置

Publications (1)

Publication Number Publication Date
JPH06103109A true JPH06103109A (ja) 1994-04-15

Family

ID=17588490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4277803A Withdrawn JPH06103109A (ja) 1992-09-22 1992-09-22 データプロセッサ、及びこれを用いるデバッグ装置

Country Status (3)

Country Link
EP (1) EP0591753A2 (ja)
JP (1) JPH06103109A (ja)
KR (1) KR940007675A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0327342A2 (en) * 1988-02-03 1989-08-09 Ngk Insulators, Ltd. A process for producing erythritol
KR100385499B1 (ko) * 1994-11-10 2003-08-02 모토로라 인코포레이티드 배경모드에서투명한동작을갖는데이타프로세서및그방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2765701B1 (fr) * 1997-07-03 1999-08-20 Sgs Thomson Microelectronics Circuit de detection d'anomalie d'acces a la pile dans un microcontroleur
CN103365749B (zh) * 2013-06-06 2015-04-08 北京时代民芯科技有限公司 一种多核处理器调试系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2593621A1 (fr) * 1986-01-24 1987-07-31 Intel Corp Appareil de point de rupture pour microprocesseur

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0327342A2 (en) * 1988-02-03 1989-08-09 Ngk Insulators, Ltd. A process for producing erythritol
EP0327342B1 (en) * 1988-02-03 1995-07-19 Ngk Insulators, Ltd. A process for producing erythritol
KR100385499B1 (ko) * 1994-11-10 2003-08-02 모토로라 인코포레이티드 배경모드에서투명한동작을갖는데이타프로세서및그방법

Also Published As

Publication number Publication date
EP0591753A3 (ja) 1994-08-03
KR940007675A (ko) 1994-04-27
EP0591753A2 (en) 1994-04-13

Similar Documents

Publication Publication Date Title
JP3846939B2 (ja) データプロセッサ
KR100385426B1 (ko) 개선된 마이크로프로세서내의 메모리 데이터 얼라이징 장치 및 방법
US5430862A (en) Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution
US5740413A (en) Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US5640503A (en) Method and apparatus for verifying a target instruction before execution of the target instruction using a test operation instruction which identifies the target instruction
KR20010014095A (ko) 어드레스되는 구성요소의 스펙큘레이션의 실패를 검출하기위한 메모리 제어기
US7243372B2 (en) Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US7966480B2 (en) Register pointer trap to prevent errors due to an invalid pointer value in a register
JP2001051874A (ja) マイクロコンピュータ
US5867658A (en) Method and apparatus for implementing a stop state for a processor in a multiprocessor system
US7203819B2 (en) Program processing device
JPH07120338B2 (ja) 共同プロセッサによる命令の実行をデータプロセッサが調整する方法および該データプロセッサ
JP2583525B2 (ja) データ処理装置
JPH06103109A (ja) データプロセッサ、及びこれを用いるデバッグ装置
US8176301B2 (en) Millicode assist instructions for millicode store access exception checking
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
EP1177499B1 (en) Processor and method of executing instructions from several instruction sources
JPS62197831A (ja) デ−タ処理装置
JP2504191B2 (ja) マイクロプロセッサ
JP2646957B2 (ja) キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム
JP3716635B2 (ja) 情報処理装置、及びその割込み制御方法
EP0525672A2 (en) Microprocessor with program tracing
JPH11224209A (ja) デバッグ方法
JPH0795288B2 (ja) マイクロコンピュータ
JPS6152747A (ja) マイクロプロセツサ

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19991130