JP2002014809A - マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体 - Google Patents

マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体

Info

Publication number
JP2002014809A
JP2002014809A JP2000194033A JP2000194033A JP2002014809A JP 2002014809 A JP2002014809 A JP 2002014809A JP 2000194033 A JP2000194033 A JP 2000194033A JP 2000194033 A JP2000194033 A JP 2000194033A JP 2002014809 A JP2002014809 A JP 2002014809A
Authority
JP
Japan
Prior art keywords
code
register
instruction
registers
data
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
JP2000194033A
Other languages
English (en)
Inventor
Isao Minematsu
勲 峯松
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2000194033A priority Critical patent/JP2002014809A/ja
Priority to US09/819,990 priority patent/US20020138715A1/en
Publication of JP2002014809A publication Critical patent/JP2002014809A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 複数の制御レジスタの退避/復帰を短いステ
ップ数のプログラムで実現できるマイクロプロセッサを
提供すること。 【解決手段】 命令コードのフェッチを制御するPCU
部40と、フェッチされた命令コードをデコードする命
令デコード部39と、命令デコード部39によるデコー
ド結果に基づいて、メモリのアドレスを演算するAAU
部41と、1つの退避命令に対応して、制御レジスタと
ワークレジスタとの間のデータ転送と、ワークレジスタ
とXメモリ44との間のデータ転送とを行なうDAU部
42とを含む。したがって、直接メモリにデータを退避
できない制御レジスタに格納されたデータの退避を、1
つの退避命令で実行することが可能となる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サおよびプログラムをそのマイクロプロセッサが実行可
能な機械語に変換するアセンブラに関し、特に、スタッ
クに対してデータを効率的に退避/復帰するマイクロプ
ロセッサ並びにアセンブラ、その方法およびそのプログ
ラムを記録した記録媒体に関する。
【0002】
【従来の技術】近年、パーソナルコンピュータ等の情報
処理装置を始めとして、様々な電子機器にマイクロプロ
セッサが使用されている。一般に、マイクロプロセッサ
がプログラムを実行する場合、レジスタに格納された現
在の値を一時的に退避するために、メモリの一部をスタ
ック領域に割り当てる。このスタックに対するデータの
退避/復帰は、LIFO(Last In First Out)方式に
よって行なわれる。
【0003】このようなマイクロプロセッサにおいて
は、最後にスタックに保存されたデータの位置を管理す
るためのレジスタとして、スタックポインタが使用され
る。このスタックポインタの実装方法として、専用のレ
ジスタとしてマイクロプロセッサに実装される場合と、
汎用レジスタのうち1本がスタックポインタとして使用
される場合とが挙げられる。命令長が16ビット以上の
マイクロプロセッサにおいては、レジスタの内容をスタ
ックに退避する操作、またはスタックに格納されたデー
タをレジスタへ復帰させる操作をマイクロプロセッサに
行なわせるために、ソフトウェアによって対象となるレ
ジスタとその操作とを指定するのが一般的である。
【0004】
【発明が解決しようとする課題】近年主流となりつつあ
るRISC(Reduced Instruction Set Computer)方式
のマイクロプロセッサにおいて、マイクロプロセッサを
構成するレジスタは、メモリに対して直接データの読み
出し/書き込みが行なえるレジスタ(以下、データ用レ
ジスタと呼ぶ。)と、メモリに対して直接データの読み
出し/書き込みが行なえないレジスタ(以下、総称して
制御レジスタと呼ぶ。)とに大きく分類される。
【0005】制御レジスタの内容をスタックに退避した
り、スタックに格納されたデータを制御レジスタに復帰
させたりする場合、制御レジスタからワークレジスタへ
一旦データを転送した後にスタックに書き込むか、スタ
ックに格納されたデータをワークレジスタに一旦読み出
した後に制御レジスタへ転送する必要がある。したがっ
て、データ用レジスタの内容をスタックに退避したり、
スタックに格納されたデータをデータ用レジスタに復帰
させる場合と比較して、プログラムのステップ数が余分
に必要になるという問題点があった。
【0006】一方、全てのレジスタがメモリに対して直
接データの読み出し/書き込みが行なえるタイプのマイ
クロプロセッサにおいては、レジスタの内容をスタック
に退避したり、スタックに格納されたデータをレジスタ
に復帰させたりする際のプログラムのステップ数は、上
述したRISC方式のマイクロプロセッサと比較して少
なくなる。しかし、レジスタを選択する回路構成が複雑
になるため、RISC方式のマイクロプロセッサと比較
して、動作周波数を高くすることが難しくなるという問
題点があった。
【0007】本発明は、上記問題点を解決するためにな
されたものであり、第1の目的は、RISC方式のマイ
クロプロセッサに採用される回路構成を採用しつつ、複
数の制御レジスタの退避/復帰を短いステップ数のプロ
グラムで実現できるマイクロプロセッサを提供すること
である。
【0008】第2の目的は、簡単なマクロ命令で複雑な
スタック操作を行なえるアセンブラ、その方法およびそ
のプログラムを記録した記録媒体を提供することであ
る。
【0009】第3の目的は、複数の制御レジスタの退避
/復帰の整合性を自動的に管理することが可能なアセン
ブラ、その方法およびそのプログラムを記録した記録媒
体を提供することである。
【0010】
【課題を解決するための手段】請求項1に記載のマイク
ロプロセッサは、命令コードのフェッチを制御するため
の制御手段と、フェッチされた命令コードをデコードす
るためのデコード手段と、デコード手段によるデコード
結果に基づいて、メモリのアドレスを演算するためのア
ドレス演算手段と、デコード手段によるデコード結果に
基づいて、データを演算するためのデータ演算手段とを
含み、データ演算手段は、制御手段によってフェッチさ
れた1つのオペレーションコードを有する1つの命令コ
ードに対応して、レジスタ間のデータ転送と、レジスタ
とメモリとの間のデータ転送とを実行する。
【0011】1つの命令コードでレジスタ間のデータ転
送と、レジスタとメモリとの間のデータ転送とを実行で
きるため、所定の処理を行なうプログラムのステップ数
を削減することが可能となる。
【0012】請求項2に記載のマイクロプロセッサは、
請求項1記載のマイクロプロセッサであって、データ演
算手段は、制御手段によってフェッチされた1つの退避
命令に対応して、第1のレジスタに格納されたデータを
メモリに転送し、第2のレジスタに格納されたデータを
第1のレジスタに転送する。
【0013】したがって、直接メモリにデータを退避で
きない第2のレジスタに格納されたデータの退避を、1
命令分のスループットで実行することが可能となる。
【0014】請求項3に記載のマイクロプロセッサは、
請求項2記載のマイクロプロセッサであって、データ演
算手段は、第2のレジスタに格納されたデータを第1の
レジスタに転送した後、スタックポインタの値をデクリ
メントする。
【0015】第2のレジスタに格納されたデータを第1
のレジスタに転送した後、スタックポインタの値がデク
リメントされるため、スタック操作をさらに容易に行な
うことが可能となる。
【0016】請求項4に記載のマイクロプロセッサは、
請求項1記載のマイクロプロセッサであって、データ演
算手段は、制御手段によってフェッチされた1つの復帰
命令に対応して、第1のレジスタに格納されたデータを
第2のレジスタに転送し、メモリに格納されたデータを
前記第1のレジスタに転送する。
【0017】したがって、直接メモリからデータを復帰
できない第2のレジスタへのデータの復帰を、1命令分
のスループットで実行することが可能となる。
【0018】請求項5に記載のマイクロプロセッサは、
請求項4記載のマイクロプロセッサであって、データ演
算手段は、メモリに格納されたデータを第1のレジスタ
に転送した後、スタックポインタの値をインクリメント
する。
【0019】メモリに格納されたデータを第1のレジス
タに転送した後、スタックポインタの値がインクリメン
トされるため、スタック操作をさらに容易に行なうこと
が可能となる。
【0020】請求項6に記載のマイクロプロセッサは、
請求項2〜5のいずれかに記載のマイクロプロセッサで
あって、第1のレジスタは、データ演算手段に実装され
るワークレジスタである。
【0021】したがって、第2のレジスタとメモリとの
間のデータ転送を、ワークレジスタを媒介として行なう
ことが可能となる。
【0022】請求項7に記載のマイクロプロセッサは、
請求項2〜6のいずれかに記載のマイクロプロセッサで
あって、第2のレジスタは、アドレス演算手段または制
御手段に実装される制御レジスタである。
【0023】したがって、第1のレジスタを媒介として
制御レジスタとメモリとの間のデータ転送を行なうこと
が可能となる。また、第1のレジスタをワークレジスタ
としてデータ演算手段に実装し、第2のレジスタを制御
レジスタとしてアドレス演算手段に実装することによっ
て、RISC方式のマイクロプロセッサの回路構成を採
用することが可能となる。
【0024】請求項8に記載のマイクロプロセッサは、
請求項1〜7のいずれかに記載のマイクロプロセッサで
あって、データ演算手段は、制御手段によってフェッチ
された1つの退避命令に対して、第1のレジスタに格納
されたデータをメモリに転送し、スタックポインタの値
をそのまま保持するための手段を含む。
【0025】第1のレジスタに格納されたデータをメモ
リに転送し、スタックポインタの値をそのまま保持する
退避命令を実行可能とすることにより、スタックポイン
タが最後に退避されたデータを指し示すようにすること
が可能となる。
【0026】請求項9に記載のアセンブラは、ソースプ
ログラムからコードを読み込むためのコード読込手段
と、複数のレジスタを特定するための情報を記憶するた
めの記憶手段と、コード読込手段によって読み込まれた
コードが第1のマクロ命令である場合、コードに含まれ
る複数のレジスタを特定するための情報を記憶手段に記
憶し、複数のレジスタを退避するコードを生成するため
の第1のコード生成手段と、コード読込手段によって読
み込まれたコードが第2のマクロ命令である場合、記憶
手段に記憶された複数のレジスタを特定する情報を参照
して、複数のレジスタを復帰させるコードを生成するた
めの第2のコード生成手段とを含む。
【0027】第1のコード生成手段は、第1のマクロ命
令から複数のレジスタを退避するコードを生成するの
で、1つのマクロ命令で複雑なスタック操作を扱うこと
が可能となる。また、第2のコード生成手段は、記憶手
段に記憶された複数のレジスタを特定する情報を参照し
て、複数のレジスタを復帰させるコードを生成するの
で、1つのマクロ命令で複雑なスタック操作を扱うこと
ができ、複数のレジスタの退避/復帰の整合性を自動的
に管理することが可能となる。
【0028】請求項10に記載のアセンブラは、請求項
9記載のアセンブラであって、第1のコード生成手段
は、コード読込手段によって読み込まれたコードが第1
のマクロ命令である場合、コードに含まれる複数のレジ
スタのうち、レジスタとメモリとの間のデータ転送の媒
介として使用されるレジスタ以外のレジスタを退避する
コードを生成する。
【0029】したがって、レジスタとメモリとの間のデ
ータ転送の媒介として使用されるレジスタが自動的にス
タックに退避される場合に、冗長なコードが生成される
のを防止することが可能となる。
【0030】請求項11に記載のアセンブリ方法は、ソ
ースプログラムからコードを読み込むステップと、コー
ドが第1のマクロ命令である場合、コードに含まれる複
数のレジスタを特定するための情報を記憶し、複数のレ
ジスタを退避するコードを生成するステップと、読み込
まれたコードが第2のマクロ命令である場合、記憶され
た複数のレジスタを特定する情報を参照して、複数のレ
ジスタを復帰させるコードを生成するステップとを含
む。
【0031】第1のマクロ命令から複数のレジスタを退
避するコードを生成するので、1つのマクロ命令で複雑
なスタック操作を扱うことが可能となる。また、読み込
まれたコードが第2のマクロ命令である場合、記憶され
た複数のレジスタを特定する情報を参照して、複数のレ
ジスタを復帰させるコードを生成するので、1つのマク
ロ命令で複雑なスタック操作を扱うことができ、複数の
レジスタの退避/復帰の整合性を自動的に管理すること
が可能となる。
【0032】請求項12に記載のアセンブリ方法は、請
求項11記載のアセンブリ方法であって、複数のレジス
タを退避するコードを生成するステップは、読み込まれ
たコードが第1のマクロ命令である場合、読み込まれた
コードに含まれる複数のレジスタのうち、レジスタとメ
モリとの間のデータ転送の媒介として使用されるレジス
タ以外のレジスタを退避するコードを生成するステップ
を含む。
【0033】したがって、レジスタとメモリとの間のデ
ータ転送の媒介として使用されるレジスタが自動的にス
タックに退避される場合に、冗長なコードが生成される
のを防止することが可能となる。
【0034】請求項13に記載の記録媒体は、コンピュ
ータにアセンブリ方法を実行させるプログラムが記録さ
れたコンピュータで読取可能な記録媒体であって、アセ
ンブリ方法は、ソースプログラムからコードを読み込む
ステップと、コードが第1のマクロ命令である場合、コ
ードに含まれる複数のレジスタを特定するための情報を
記憶し、複数のレジスタを退避するコードを生成するス
テップと、読み込まれたコードが第2のマクロ命令であ
る場合、記憶された複数のレジスタを特定する情報を参
照して、複数のレジスタを復帰させるコードを生成する
ステップとを含む。
【0035】第1のマクロ命令から複数のレジスタを退
避するコードを生成するので、1つのマクロ命令で複雑
なスタック操作を扱うことが可能となる。また、読み込
まれたコードが第2のマクロ命令である場合、記憶され
た複数のレジスタを特定する情報を参照して、複数のレ
ジスタを復帰させるコードを生成するので、1つのマク
ロ命令で複雑なスタック操作を扱うことができ、複数の
レジスタの退避/復帰の整合性を自動的に管理すること
が可能となる。
【0036】請求項14に記載の記録媒体は、請求項1
3記載のアセンブリプログラムが記録された記録媒体で
あって、複数のレジスタを退避するコードを生成するス
テップは、読み込まれたコードが第1のマクロ命令であ
る場合、読み込まれたコードに含まれる複数のレジスタ
のうち、レジスタ間のデータ転送の媒介として使用され
るレジスタ以外のレジスタを退避するコードを生成する
ステップを含む。
【0037】したがって、レジスタとメモリとの間のデ
ータ転送の媒介として使用されるレジスタが自動的にス
タックに退避される場合に、冗長なコードが生成される
のを防止することが可能となる。
【0038】
【発明の実施の形態】(実施の形態1)図1は、本発明
の実施の形態1におけるマイクロプロセッサを構成する
レジスタセットを説明するための図である。本実施の形
態においては、マイクロプロセッサのデータ長が16ビ
ットの場合について説明するが、これに限られるもので
はない。
【0039】図1(a)に示すレジスタR0〜R3は、
4本の演算ソースレジスタであり、演算のソースが格納
される。レジスタTR0〜TR3は、4本のワークレジ
スタであり、アドレスやデータ(演算ソースや演算結
果)が一時的に保存されるレジスタである。A0および
A1は、それぞれ40ビットのアキュムレータである。
アキュムレータA0およびA1はそれぞれ、演算ソース
または演算結果の上位16ビットが保持されるA0Hお
よびA1Hと、演算ソースまたは演算結果の下位16ビ
ットが保持されるA0LおよびA1Lと、上位ビットか
らあふれたビットが保持される8ビット長のガードビッ
トA0GおよびA1Gとを含む。
【0040】図1(b)に示すレジスタAR0〜AR3
は、4本のアドレスレジスタであり、メモリアクセスの
際のアドレスが格納される。レジスタAMD0〜AMD
3は、4本のアドレッシングモードレジスタであり、そ
れぞれアドレスレジスタAR0〜AR3を用いたアドレ
ッシングモードが格納される。レジスタAR_SEL
は、AR割当レジスタであり、アドレスレジスタの選択
に使用される。
【0041】レジスタMOD_SおよびMOD_Eは、
それぞれモジュロアドレッシングのための制御レジスタ
である。MOD_Sはモジュロスタートアドレスを保持
し、MOD_Eはモジュロエンドアドレスを保持する。
SPはスタックポインタであり、スタックの先頭アドレ
スを保持する。レジスタAR_PAGEは、ページ指定
レジスタであり、メモリをページ単位で指定する場合の
ページ先頭アドレスを格納する。
【0042】PCはプログラムカウンタであり、マイク
ロプロセッサが現在実行しているプログラムのアドレス
を保持する。PSWはプロセッサ状態語であり、マイク
ロプロセッサを制御するためのフラグ等を格納する。B
PCおよびBPSWは、それぞれバックアップ用のプロ
グラムカウンタおよびプロセッサ状態語であり、割り込
み等の事象が発生した場合にPCおよびPSWの値がそ
れぞれ自動的にコピーされる。
【0043】DPCおよびDPSWは、それぞれデバッ
ガ用のプログラムカウンタおよびプロセッサ状態語であ
り、デバッグ用割り込み事象が発生した場合にPCおよ
びPSWの値が自動的にコピーされる。レジスタPCL
INKはリンクレジスタであり、サブルーチンからの戻
りアドレスを保持する。LP_CTおよびREP_CT
はそれぞれループカウンタおよびリピートカウンタであ
り、ブロックリピートの回数および単一命令リピートの
回数をそれぞれ保持する。
【0044】レジスタLP_SおよびLP_Eは、それ
ぞれブロックリピートの先頭アドレスおよび終了アドレ
スを指定するレジスタである。レジスタPC_BRK
は、ハードウェアブレークポイントを指定する際に利用
されるレジスタである。レジスタINT_Sは、割り込
みステータスレジスタである。レジスタCR00〜CR
63は、周辺I/O(Input/Output)との間のデータの
入出力に利用されるI/Oマップドレジスタである。な
お、レジスタINT_SおよびCR00〜CR63は、
外部に接続された入出力デバイスを制御する際に使用さ
れるレジスタであり、本実施の形態に直接関連するもの
ではないため、詳細な説明は行なわない。なお、以下の
説明においては、1つの命令コードに1つのオペレーシ
ョンコードが含まれるものとする。
【0045】図2は、本実施の形態におけるマイクロプ
ロセッサの概略構成を示すブロック図である。このマイ
クロプロセッサは、命令メモリ43からフェッチされた
命令をデコードする命令デコード部39と、命令メモリ
43に格納された命令のフェッチを制御するPCU(Pr
ogram Control Unit)部40と、Xメモリ44またはY
メモリ45にアクセスする際のアドレスを演算するAA
U(Address Arithmetic Unit)部41と、データの演
算を行なうDAU(Data Arithmetic Unit)部42とを
含む。命令メモリ43は、命令のバイナリコードを格納
する。また、Xメモリ44およびYメモリ45は、被演
算値、演算結果等のデータを格納する。
【0046】命令デコード部39は、命令メモリ43か
らフェッチされた命令コードをデコードし、命令コード
に応じた制御信号P46、A47およびD48をそれぞ
れPCU部40、AAU部41およびDAU部42へ出
力する。PCU部40は、命令デコード部39から出力
された制御信号P46に基づいて、次にフェッチすべき
命令が格納されるアドレスを、アドレスバス56を介し
て命令メモリ43へ出力する。AAU部41は、命令デ
コード部39から出力された制御信号A47に基づい
て、必要に応じて読み出すべきデータが格納されるアド
レスを生成し、アドレスバス57を介してXメモリ44
およびYメモリ45へ出力する。
【0047】DAU部42は、17ビット×17ビット
の乗算を行なう乗算器49、40ビットの2つのデータ
に演算を行なうALU(Arithmetic and Logic Unit)
50および40ビットの入力データに対して左右に16
ビットのシフト演算を行なうシフタ51を含む。DAU
部42は、命令デコード部39から出力された制御信号
D48に基づいて、上述したレジスタに保持された値
や、データバス53を介してXメモリ44またはYメモ
リ45から読み出した値に対して、乗算、加減算または
シフト演算等を行なう。
【0048】図1に示すレジスタセットは、図2に示す
PCU部40、AAU部41およびDAU部42のいず
れかに実装されている。PCU部40は、13個のレジ
スタPC、PSW、BPC、BPSW、DPC、DPS
W、PCLINK、LP_CT、REP_CT、LP_
S、LP_E、PC_BRKおよびINT_Sを有する
レジスタ群60を含む。
【0049】AAU部41は、13個のレジスタAR0
〜AR3、AMD0〜AMD3、AR_SEL、MOD
_S、MOD_E、SPおよびAR_PAGEを有する
レジスタ群61を含む。また、DAU部42は、4個の
レジスタTR0〜TR3を有するレジスタ群62と、4
個のレジスタR0〜TR3を有するレジスタ群63と、
2個のレジスタA0およびA1を有するレジスタ群64
とを含む。
【0050】DAU部42は、レジスタ群63の各レジ
スタからデータを受け、そのデータをMPY49の一方
の入力、ALU50の一方の入力またはSFT51の一
方の入力へ転送するためのデータバスD1と、レジスタ
群63の各レジスタからデータを受け、そのデータをM
PY49の他方の入力、ALU50の他方の入力または
SFT51の他方の入力へ転送するためのデータバスD
2と、MPX49、ALU50またはSFT51から出
力されたデータを受け、そのデータをレジスタ群64の
各レジスタへ転送するためのデータバスD3とを含む。
DAU部42はさらに、データバスD6を含み、このデ
ータバスD6を介してレジスタ群64の各レジスタから
ALU50、SFT51のいずれかへのデータ転送を行
なう。
【0051】また、DAU部42はさらにデータバスD
4を含み、このデータバスD4を介してレジスタ群63
の各レジスタへ入力されるデータの転送、レジスタ群6
4の各レジスタから出力されるデータの転送、およびレ
ジスタ群62の各レジスタに入出力されるデータの双方
向の転送が行なわれる。さらには、このデータバスD4
およびデータバス53を介して、DAU部42とXメモ
リ44またはYメモリ45との間の双方向のデータ転送
も行なわれる。
【0052】マイクロプロセッサはさらに、レジスタ群
60〜64間の双方向のデータ転送を行なうためのデー
タバスD5を含む。算術演算、論理演算、シフト等の演
算命令を実行する場合には、レジスタ群63または64
内の選択されたレジスタからデータバスD1および(ま
たは)D2またはD6へデータが供給され、その演算結
果がデータバスD3を介してレジスタ群64内の所定の
レジスタへ格納される。
【0053】レジスタ間のデータ転送命令を実行する場
合には、データバスD5を介してレジスタ間のデータ転
送が行なわれる。特に、レジスタ群64内のレジスタA
0またはA1からレジスタ群63内のレジスタへのデー
タ転送のときには、バスD4が使用される。
【0054】ロード命令の場合には、Xメモリ44また
はYメモリ45のデータが、データバスD4を介してレ
ジスタ群62またはレジスタ群63へ転送される。スト
ア命令の場合には、レジスタ群62またはレジスタ群6
4のデータが、データバスD4および53を介してXメ
モリ44へ転送される。
【0055】次に、上述した本実施の形態におけるマイ
クロプロセッサが命令メモリ43に格納されたプログラ
ムを実行する手順について説明する。まず、PCU部4
0はフェッチすべき命令コードが格納されたアドレス
を、アドレスバス56を介して命令メモリ43へ出力す
る。命令デコード部39は、命令メモリ43から出力さ
れた命令コードを、データバス52を介して読み出して
命令コードのデコードを行なう。命令デコード部39
は、命令コードのデコード結果に基づいて制御信号P4
6、A47およびD48を出力する。
【0056】PCU部40は、制御信号P46に基づい
て次にフェッチすべき命令が格納されるアドレスを生成
し、アドレスバス56を介して命令メモリ43へ出力す
る。AAU部41は、制御信号A47がXメモリ44お
よびYメモリ45の一方または両方へのアクセスを示す
ものであれば、読み出しまたは書き込みのためのアドレ
スを生成し、アドレスバス57を介してXメモリ44お
よびYメモリ45へ出力する。
【0057】DAU部42は、制御信号D48に基づい
て演算処理を行なう。たとえば、制御信号D48がXメ
モリ44またはYメモリ45からデータを読み出して演
算を行なうものであれば、DAU部42はXメモリ44
またはYメモリ45から出力されたデータを読み込ん
で、そのデータに対して演算処理を行なう。また、制御
信号D48がレジスタの内容を演算し、演算結果をXメ
モリ44へ書き込むものであれば、DAU部42は演算
結果をデータバス53および54を介してメモリ44に
出力する。
【0058】図4は、本実施の形態におけるマイクロプ
ロセッサによって処理される演算命令の一例を示す図で
ある。また、図5は、本実施の形態におけるマイクロプ
ロセッサによって処理される転送命令、シーケンス制御
命令および特殊命令の一例を示す図である。これらの命
令の内容は、それぞれ命令の右側に説明されているの
で、詳細な説明は行なわない。
【0059】図4および図5に示す命令のうち、LOA
D命令およびSTORE命令は、アドレスレジスタAR
0〜AR3を用いてアドレッシングを行ない、メモリと
レジスタとの間のデータ転送を行なう命令である。この
ように、命令中にアドレスレジスタを指定するようにし
て、メモリのアクセスの自由度を高くしている。ただ
し、DAU部42内に実装されたレジスタの一部のみが
指定可能である。そのため、これらの命令を用いてDA
U部42以外のブロックに実装されたレジスタの内容を
退避するためには、レジスタ間転送を行なうmv命令を
用いて一旦DAU部42に実装されたレジスタに転送し
た後、レジスタとメモリとの間のデータ転送を行なう必
要がある。図6は、LOAD命令およびSTORE命令
において指定可能なレジスタの一覧を示す図である。
【0060】図7は、STORE命令を用いたレジスタ
(TR0,AR0)の退避動作を行なうプログラムの一
例を示す図である。図7の(1)および(2)は、アド
レスレジスタAR3およびそれに対応するアドレッシン
グモードレジスタAMD3を初期化している。すなわ
ち、アドレスレジスタAR3に#STACK_BOTT
OMを代入し、アドレッシングモードレジスタAMD3
に#DEC_1を代入している。なお、#STACK_
BOTTOMはレジスタ退避領域の最上位アドレスを表
わす定数であり、#DEC_1はAR3の値が読み出さ
れる毎に1だけデクリメントされることを指定する定数
を表わしている。
【0061】図7の(3)は、ワークレジスタTR0の
値が、Xメモリ44のアドレスレジスタAR3によって
示されるアドレスに格納されることを示している。この
命令が実行されると、DAU部42に実装されているワ
ークレジスタTR0の値が、データバス53および54
を介してDAU部42からXメモリ44へ出力される。
また、AAU部41に実装されているアドレスレジスタ
AR3の値が、アドレスバス57を介してAAU部41
からXメモリ44へ出力される。そして、AAU部41
においてアドレスレジスタAR3の値がデクリメントさ
れる。
【0062】図7の(4)は、アドレスレジスタAR0
の値が、ワークレジスタTR0に転送されることを示し
ている。この命令が実行されると、AAU部41に実装
されているアドレスレジスタAR0の値が、DAU部4
2に実装されているワークレジスタTR0に転送され
る。また、図7の(5)は(3)と同様に、ワークレジ
スタTR0の値が、Xメモリ44のアドレスレジスタA
R3によって示されるアドレスに格納されることを示し
ている。
【0063】図8は、図7に示すプログラムが実行され
たときのスタックの動作を示す図である。図7の(1)
および(2)に示す命令コードが実行されると、アドレ
スレジスタAR3に格納されるアドレスが図8(a)に
示す位置を示すようになる。そして、図7の(3)に示
す命令コードが実行されると、アドレスレジスタAR3
によって示されるアドレスにワークレジスタTR0の値
が格納され、アドレスレジスタAR3の値がデクリメン
トされる。
【0064】図7の(4)に示す命令コードが実行され
ると、アドレスレジスタAR0の値がワークレジスタT
R0に転送される(図8(c)参照)。そして、図7の
(5)に示す命令コードが実行されると、図8(d)に
示すように、アドレスレジスタAR3によって示される
アドレスにワークレジスタTR0(AR0)の値が格納
され、アドレスレジスタAR3の値がデクリメントされ
る。なお、LOAD命令を用いたレジスタへの復帰動作
は、図7および図8に示す動作と逆の動作となるため、
詳細な説明は行なわない。
【0065】図7および図8に示す転送方式において、
制御レジスタの内容をスタックに退避するためには、制
御レジスタの内容をワークレジスタを介して転送する必
要があるため、制御レジスタN個の内容を転送するため
には(2×N)ステップ分の命令コードが必要となる。
【0066】本実施の形態におけるマイクロプロセッサ
においては、図1に示したレジスタセット以外に、次に
説明するPOP命令、PUSH命令およびPUT命令を
実装する。図9は、このPOP命令、PUSH命令およ
びPUT命令のニーモニックおよびその動作を説明する
ための図である。PUSH命令およびPOP命令は、任
意のレジスタを指定することができる。また、PUT命
令は、レジスタを指定することができない。
【0067】図9(a)に示すように、POP命令にお
いてレジスタ指定がない場合(1)には、Xメモリ44
のスタックポインタで指定されたアドレスに格納される
データが、DAU部42に実装されたワークレジスタT
R0へ転送され、スタックポインタの値がインクリメン
トされる。また、POP命令においてレジスタ指定があ
る場合(2)には、ワークレジスタTR0の値がPOP
命令によって指定されるレジスタに転送され、Xメモリ
44のスタックポインタで指定されたアドレスに格納さ
れるデータが、データバス53および54を介してDA
U部42に実装されたワークレジスタTR0に転送され
た後、スタックポインタの値がインクリメントされる。
【0068】図9(b)に示すように、PUSH命令に
おいてレジスタ指定がない場合(1)には、スタックポ
インタの値がデクリメントされる。また、PUSH命令
においてレジスタ指定がある場合(2)には、DAU部
42に実装されたワークレジスタTR0に格納されるデ
ータが、Xメモリ44のスタックポインタで指定された
アドレスに格納され、PUSH命令によって指定された
レジスタの値がワークレジスタTR0に転送された後、
スタックポインタの値がデクリメントされる。
【0069】図9(c)に示すように、PUT命令が実
行されると、DAU部42に実装されたワークレジスタ
TR0に格納されるデータが、Xメモリ44のスタック
ポインタで指定されたアドレスに転送される。なお、P
UT命令が実行されてもスタックポインタの値は更新さ
れない。
【0070】なお、上述した説明において、POP命令
のときにスタックポインタの値がインクリメントされ、
PUSH命令のときにスタックポインタの値がデクリメ
ントされる場合を説明したが、逆にPOP命令のときに
スタックポインタの値がデクリメントされ、PUSH命
令のときにスタックポインタの値がインクリメントされ
るようにしても良い。
【0071】上述したPOP命令、PUSH命令、PU
T命令の詳細動作を以下に説明する。図3は、本実施の
形態におけるマイクロプロセッサのパイプライン処理を
説明するための図である。これらの命令は、動作クロッ
クの1サイクルずつ、それぞれ命令フェッチIF、命令
デコードDおよび命令実行Eの3段のパイプラインで処
理される。
【0072】オペランドありPOP命令は、時刻(A)
に示す動作クロックの立上りエッジでトリガされて、レ
ジスタ群62内のレジスタTR0に記憶されたデータが
データバスD5に出力され、同時に、Xメモリ44内の
SPで示された領域に記憶されたデータがデータバス5
3経由でD4に出力される。また、時刻(B)に示す動
作クロックの立上りエッジでトリガされて、データバス
D5に出力されたTR0のデータが、レジスタ群60、
61、63および64のうちPOP命令で指定されたレ
ジスタに書込まれ、同時に、データバスD4に出力され
たデータがTR0に書込まれ、さらにSPの値がインク
リメントされる。これらのデータ転送は、時刻(C)に
示す動作クロックの立下がりエッジでされても良い。
【0073】オペランドなしPOP命令は、時刻(A)
に示す動作クロックの立上りエッジでトリガされて、X
メモリ44内のSPで示された領域に記憶されたデータ
が、データバス53経由でD4に出力される。また、時
刻(B)に示す動作クロックのエッジでトリガされて、
データバスD4の値はTR0に書込まれ、同時に、SP
の値はインクリメントされる。
【0074】オペランドありPUSH命令は、時刻
(A)に示す動作クロックの立上りエッジでトリガされ
て、レジスタTR0に記憶されたデータが、データバス
D4経由でデータバス53に出力されXメモリ44内の
SPで示された領域に書込まれる。同時に、レジスタ群
60、61、63および64のうちPUSH命令で指定
されたレジスタに記憶されたデータが、データバスD5
に出力される。また、時刻(B)に示す動作クロックの
立上りエッジでトリガされて、データバスD5に出力さ
れたデータがTR0に書込まれ、同時に、SPの値はデ
クリメントされる。
【0075】オペランドなしPUSH命令は、時刻
(B)に示す動作クロックの立上りエッジでトリガされ
て、SPの値がインクリメントされる。
【0076】PUT命令は、時刻(A)に示す動作クロ
ックの立上りエッジでトリガされて、レジスタTR0に
記憶されたデータがデータバス53およびD4を介して
Xメモリ44内のSPで示された領域へ書込まれる。
【0077】図10は、上述したPOP命令、PUSH
命令およびPUT命令を使用したプログラムの一例を示
す図である。このプログラムは、演算ソースレジスタR
0およびアドレスレジスタAR0を退避した後、復帰す
るものである。図10の(1)に示す“push”は、
スタックポインタの値をデクリメントして空き領域を指
すことを示している。図10の(2)に示す“push
R0”は、ワークレジスタTR0の値が、Xメモリ4
4のスタックポインタで指定されたアドレスに格納さ
れ、演算ソースレジスタR0の値がワークレジスタTR
0に転送された後、スタックポインタの値がデクリメン
トされることを示している。
【0078】図10の(3)に示す“push AR
0”は、ワークレジスタTR0の値が、Xメモリ44の
スタックポインタで指定されたアドレスに格納され、ア
ドレスレジスタAR0の値がワークレジスタTR0に転
送された後、スタックポインタの値がデクリメントされ
ることを示している。図10の(4)に示す“put”
は、ワークレジスタTR0の値が、Xメモリ44のスタ
ックポインタで指定されたアドレスに格納されることを
示している。
【0079】図10の(5)に示す“pop”は、Xメ
モリ44のスタックポインタで示されたアドレスに格納
されるデータが、ワークレジスタTR0に転送された
後、スタックポインタの値がインクリメントされること
を示している。図10の(6)に示す“pop AR
0”は、ワークレジスタTR0の値がアドレスレジスタ
AR0に転送され、Xメモリ44のスタックポインタで
示されたアドレスに格納されるデータが、ワークレジス
タTR0に転送された後、スタックポインタの値がイン
クリメントされることを示している。また、図10の
(7)に示す“popR0”は、ワークレジスタTR0
の値が演算ソースレジスタR0に転送され、Xメモリ4
4のスタックポインタで示されたアドレスに格納される
データが、ワークレジスタTR0に転送された後、スタ
ックポインタの値がインクリメントされることを示して
いる。
【0080】図11は、図10に示すプログラムを実行
したときのスタックの動作を説明すための図である。図
10に示すプログラムを実行する前は、図11(a)に
示す位置をスタックポインタが指し示している。図10
の(1)に示す命令を実行すると、スタックポインタの
値がデクリメントされて、図11(b)に示すようにス
タックポインタが空き領域を指し示すようになる。次
に、図10の(2)に示す命令が実行されると、ワーク
レジスタTR0の値がXメモリ44のスタックポインタ
で示されたアドレスに格納される。そして、図11
(c)に示すように演算ソースレジスタR0の値がワー
クレジスタTR0に転送された後、スタックポインタの
値がデクリメントされる。
【0081】次に、図10の(3)に示す命令が実行さ
れると、ワークレジスタTR0の値(R0)がXメモリ
44のスタックポインタで示されたアドレスに格納され
る。そして、図11(d)に示すようにアドレスレジス
タAR0の値がワークレジスタTR0に転送された後、
スタックポインタの値がデクリメントされる。次に、図
10の(4)に示す命令が実行されると、ワークレジス
タTR0の値(AR0)がXメモリ44のスタックポイ
ンタで示されたアドレスに格納される。なお、このとき
スタックポインタの値は更新されない(図11(e)参
照)。
【0082】次に、図10の(5)に示す命令が実行さ
れると、Xメモリ44のスタックポインタで示されたア
ドレスに格納されるデータ(AR0)がワークレジスタ
TR0に転送される。そして、図11(f)に示すよう
にスタックポインタの値がインクリメントされる。次
に、図10の(6)に示す命令が実行されると、ワーク
レジスタTR0の値がアドレスレジスタAR0に転送さ
れ、Xメモリ44のスタックポインタで示されたアドレ
スに格納されるデータ(R0)がワークレジスタTR0
に転送される。そして、図11(g)に示すようにスタ
ックポインタの値がインクリメントされる。
【0083】最後に、図10の(7)に示す命令が実行
されると、ワークレジスタTR0の値が演算ソースレジ
スタR0に転送され、Xメモリ44のスタックポインタ
で示されたアドレスに格納されるデータがワークレジス
タTR0に転送される。そして、図11(h)に示すよ
うにスタックポインタの値がインクリメントされる。こ
のように、PUSH命令、POP命令およびPUT命令
を使用してスタック操作を行なうことにより、N個の制
御レジスタの退避は(N+2)ステップで実現でき、N
個の制御レジスタの復帰は(N+1)ステップで実現で
きる。
【0084】以上説明したように、本実施の形態におけ
るマイクロプロセッサによれば、1つの退避命令(PU
SH命令)で制御レジスタからワークレジスタへのデー
タ転送と、ワークレジスタからXメモリ44へのデータ
転送とが行なわれるようにし、1つの復帰命令(POP
命令)でXメモリ44からワークレジスタへのデータ転
送と、ワークレジスタから制御レジスタへのデータ転送
とが行なわれるようにしたので、短いステップ数で複数
の制御レジスタの退避および復帰が行なわれるようにな
った。また、退避命令および復帰命令によって上述した
動作が行なわれるため、AAU部41に直接データバス
を接続する必要がなくなり、RISC方式のプロセッサ
の回路構成を採用することができ、マイクロプロセッサ
内部の回路構成を簡略化することが可能となる。
【0085】(実施の形態2)本発明の実施の形態2
は、実施の形態1において説明したマイクロプロセッサ
が実行可能な機械語にプログラムを変換するアセンブラ
に関する。このアセンブラは、パーソナルコンピュータ
やワークステーション等のコンピュータにアセンブリプ
ログラムを実行させることによって実現される。
【0086】図12は、アセンブラを実現するコンピュ
ータの構成例を示すブロック図である。このコンピュー
タは、コンピュータ本体1、グラフィックディスプレイ
装置2、FD(Floppy Disk)4が装着されるFDドラ
イブ3、キーボード5、マウス6、CD−ROM(Comp
act Disc-Read Only Memory)8が装着されるCD−R
OM装置7、およびネットワーク通信装置9を含む。
【0087】アセンブリプログラムは、FD4またはC
D―ROM8等の記憶媒体によって供給される。アセン
ブリプログラムはコンピュータ本体1によって実行さ
れ、プログラマによって作成されたプログラムを実施の
形態1において説明したマイクロプロセッサが実行可能
な機械語に変換する。また、アセンブリプログラムは他
のコンピュータより通信回線を経由し、コンピュータ本
体1に供給されてもよい。
【0088】また、コンピュータ本体1は、CPU1
0、ROM(Read Only Memory)11、RAM(Random
Access Memory)12およびハードディスク13を含
む。CPU10は、グラフィックディスプレイ装置2、
磁気テープ装置3、キーボード5、マウス6、CD−R
OM装置7、ネットワーク通信装置9、ROM11、R
AM12またはハードディスク13との間でデータを入
出力しながら処理を行なう。FD4またはCD−ROM
8に記録されたアセンブリプログラムは、CPU10に
よりFDドライブ3またはCD−ROM装置7を介して
一旦ハードディスク13に格納される。CPU10は、
ハードディスク13から適宜アセンブリプログラムをR
AM12にロードして実行することによって処理を行な
う。
【0089】図13は、本実施の形態におけるアセンブ
ラによって処理されるマクロ命令を説明するための図で
ある。図13(a)の(1)に示すマクロ命令“MPU
SHR0,AR0;”は、演算ソースレジスタR0およ
びアドレスレジスタAR0を退避することを示してい
る。なお、“MPUSH”以降に退避すべきレジスタが
記述されるものとし、レジスタの数は特に限定がないも
のとする。
【0090】図13(a)の(2)に示すマクロ命令
“MPOP”は、直前に記述されたマクロ命令“MPU
SH”に対応するマクロ命令であり、マクロ命令“MP
USH”によって退避されたレジスタの内容を全て復帰
させるものである。なお、マクロ命令の記述方法はこれ
らに限られるものではなく、マクロ命令が展開された後
の命令コードが均等であれば同一と考えられるべきであ
る。
【0091】図13(b)は、図13(a)に示すマク
ロ命令“MPUSH”を展開したときの命令コードを示
している。また、図13(c)は、図13(a)に示す
マクロ命令“MPOP”を展開したときの命令コードを
示している。図13(b)および図13(c)に示すプ
ログラムの内容は、図10に示すプログラムの内容と同
じであるので、詳細な説明は繰り返さない。
【0092】図14は、本実施の形態におけるアセンブ
ラの機能的構成の概略を示すブロック図である。このア
センブラは、ソースファイルからコードを1行ずつ読み
込み、読み込んだコードの解釈等を行なうコード解釈部
20と、MPUSH命令を命令コードに展開するMPU
SH命令展開部21と、MPOP命令を命令コードに展
開するMPOP命令展開部22と、MPUSH命令およ
びMPOP命令以外の命令のコード生成を行なうコード
生成部23とを含む。
【0093】図15は、本実施の形態におけるアセンブ
ラの処理手順を示している。まず、コード解釈部20
は、ソースファイルからコードを1行読み込み、そのソ
ース行のコードにエラーがあるか否か、およびそのソー
ス行が最終行であるか否かを判定する(S1)。そのソ
ース行のコードにエラーがあるか、またはそのソース行
が最終行であれば(S1,NG)、コード解釈部20は
処理を終了する。
【0094】また、そのソース行が最終行でなく、コー
ドにエラーがなければ(S1,OK)、ソース解釈部2
0はそのコードがMPUSH命令であるか否かを判定す
る(S2)。そのコードがMPUSH命令であれば(S
2,Yes)、MPUSH命令展開部21はそのMPU
SH命令を展開し(S3)、展開結果をRAM12に格
納する。その後、ステップS1へ戻って以降の処理を繰
り返す。
【0095】また、コードがMPUSH命令でなければ
(S2,No)、そのコードがMPOP命令であるか否
かを判定する(S4)。そのコードがMPOP命令であ
れば(S4,Yes)、MPOP命令展開部22はその
MPOP命令を展開し(S5)、ステップS1へ戻って
以降の処理を繰り返す。また、そのコードがMPOP命
令でなければ(S4,No)、コード生成部23は通常
のコード生成を行ない(S6)、そのコードをRAM1
2に格納する。その後、ステップS1へ戻って以降の処
理を繰り返す。
【0096】図16は、図15のステップS3(MPU
SH命令の展開)の処理をさらに詳細に説明するための
フローチャートである。まず、MPUSH命令展開部2
1は、オペランドなし(レジスタ指定がない)PUSH
命令を生成し、そのコードをRAM12に格納する(S
31)。次に、MPUSH展開部21は、MPUSH命
令のオペランドをチェックする(S32)。MPUSH
命令展開部21は、MPUSH命令に記述されたオペラ
ンドを順にチェックし、未処理のオペランドがあれば
(S32,OK)、そのオペランドを含んだPUSH命
令を生成してそのコードをRAM12に格納するととも
に、そのオペランドをLIFO24に格納する(S3
3)。そして、ステップS32へ戻って以降の処理を繰
り返す。また、未処理のオペランドがなければ(S3
2,NG)、PUT命令を生成してそのコードをRAM
12に格納する(S34)。
【0097】このようにして、MPUSH命令が展開さ
れて、そのコードがRAM12に格納される。たとえ
ば、図13(a)の(1)に示すMPUSH命令の場合
であれば、ステップS33においてまずオペランドR0
が抽出されて、“push R0”のコードが生成され
る。次に、オペランドAR0が抽出されて、“push
AR0”のコードが生成される。なお、図16に示すL
IFO24は、図12に示すRAM12またはハードデ
ィスク13に形成される。
【0098】図17は、図15のステップS5(MPO
P命令の展開)の処理をさらに詳細に説明するためのフ
ローチャートである。まず、MPOP命令展開部22
は、オペランドなし(レジスタ指定がない)POP命令
を生成し、そのコードをRAM12に格納する(S5
1)。次に、MPOP展開部22は、MPUSH命令の
展開時にLIFO24に格納されたオペランドを読み出
し(S52)、未処理のオペランド(レジスタ)の有無
を判定する(S53)。
【0099】MPOP命令展開部22は、未処理のオペ
ランドがあれば(S53,OK)、そのオペランドを含
んだPOP命令を生成してそのコードをRAM12に格
納する(S54)。そして、ステップS52へ戻って以
降の処理を繰り返す。また、未処理のオペランドがなけ
れば(S53,NG)、処理を終了する。なお、図17
に示すLIFO24は、図12に示すRAM12または
CPU10内のレジスタ群に相当する。
【0100】このようにして、MPOP命令が展開され
て、そのコードがRAM12に格納される。たとえば、
図13(a)の(2)に示すMPOP命令の場合であれ
ば、LIFO24に“R0”および“AR0”が格納さ
れているので、ステップS54においてまずオペランド
AR0が抽出されて、“pop AR0”のコードが生
成される。次に、オペランドR0が抽出されて、“po
p R0”のコードが生成される。
【0101】以上説明したように、本実施の形態におけ
るアセンブラによれば、マクロ命令を実施の形態1にお
いて説明したマイクロプロセッサが実行可能なコードに
展開するようにしたので、退避および復帰すべきレジス
タを含んだマクロ命令を記述するだけで一連のスタック
操作を行なうコードを生成することが可能となる。した
がって、プログラマはスタック操作の整合性等の確認を
行なう必要がなくなり、ソフトウェア開発における生産
性を向上させることが可能となった。
【0102】(実施の形態3)上述した実施の形態2の
アセンブラにおいては、ワークレジスタTR0がレジス
タ転送の媒介として使用される。図11の説明から分か
るように、ワークレジスタTR0の退避の有無に関わら
ず、ワークレジスタTR0の値が自動的にスタックに格
納される。本実施の形態におけるアセンブラは、この特
徴を利用したものである。
【0103】本実施の形態におけるアセンブラの機能的
構成は、図14に示す実施の形態2におけるアセンブラ
の機能的構成と比較してMPUSH命令展開部の機能の
みが異なる。また、本実施の形態におけるアセンブラの
処理手順は、図15に示す実施の形態2におけるアセン
ブラの処理手順と同じである。したがって、重複する構
成および機能の詳細な説明は繰り返さない。なお、本実
施の形態におけるMPUSH命令展開部の参照符号を2
1’として説明する。
【0104】図18は、本実施の形態におけるアセンブ
ラによって処理されるマクロ命令を説明するための図で
ある。図18(a)の(1)に示すマクロ命令“MPU
SHTR0,AR0;”は、ワークレジスタTR0およ
びアドレスレジスタAR0を退避することを示してい
る。なお、“MPUSH”以降に退避すべきレジスタが
記述されるものとし、レジスタの数は特に限定がないも
のとする。
【0105】図18(a)の(2)に示すマクロ命令
“MPOP”は、直前に記述されたマクロ命令“MPU
SH”に対応するマクロ命令であり、マクロ命令“MP
USH”によって退避されたレジスタの内容を全て復帰
させるものである。なお、マクロ命令の記述方法はこれ
らに限られるものでなく、マクロ命令が展開された後の
命令コードが均等であれば同一と考えられるべきであ
る。
【0106】図18(b)は、図18(a)に示すマク
ロ命令“MPUSH”を展開したときの命令コードを示
している。また、図18(c)は、図18(a)に示す
マクロ命令“MPOP”を展開したときの命令コードを
示している。ワークレジスタTR0はスタックに自動的
に格納されることになるため、ワークレジスタTR0に
対応した退避命令は生成されない。また、ワークレジス
タTR0以外のレジスタを復帰させると、自動的にワー
クレジスタTR0も復帰されるため、ワークレジスタT
R0に対応した復帰命令も生成されない。
【0107】図19は、図15のステップS3(MPU
SH命令の展開)の処理をさらに詳細に説明するための
フローチャートである。まず、MPUSH命令展開部2
2’は、オペランドなし(レジスタ指定がない)PUS
H命令を生成し、そのコードをRAM12に格納する
(S61)。次に、MPUSH展開部21’は、MPU
SH命令のオペランドをチェックする(S62)。
【0108】MPUSH命令展開部21’は、MPUS
H命令に記述されたオペランドを順にチェックし、未処
理のオペランドがあれば(S62,OK)、そのオペラ
ンドがワークレジスタTR0であるか否かを判定する
(S63)。そのオペランドがワークレジスタTR0で
あれば(S63,Yes)、そのままステップS62へ
戻って以降の処理を繰り返す。
【0109】また、オペランドがワークレジスタTR0
でなければ(S63,No)、そのオペランドを含んだ
PUSH命令を生成してそのコードをRAM12に格納
するとともに、そのオペランドをLIFO24に格納す
る(S64)。そして、ステップS62へ戻って以降の
処理を繰り返す。また、未処理のオペランドがなければ
(S62,NG)、PUT命令を生成してそのコードを
RAM12に格納し(S65)、処理を終了する。
【0110】以上説明したように、本実施の形態におけ
るアセンブラによれば、レジスタとメモリとの間のデー
タ転送において媒介として使用されるレジスタを退避/
復帰する命令を生成しないようにしたので、レジスタの
退避/復帰における冗長なコードが生成されるのを防止
することができ、プログラムのステップ数の削減、処理
速度の向上および使用メモリサイズの削減を図ることが
可能となった。
【0111】今回開示された実施の形態は、すべての点
で例示であって制限的なものではないと考えられるべき
である。本発明の範囲は上記した説明ではなくて特許請
求の範囲によって示され、特許請求の範囲と均等の意味
および範囲内でのすべての変更が含まれることが意図さ
れる。
【0112】
【発明の効果】請求項1に記載のマイクロプロセッサに
よれば、1つの命令コードでレジスタ間のデータ転送
と、レジスタとメモリとの間のデータ転送とを実行でき
るため、所定の処理を行なうプログラムのステップ数を
削減することが可能となった。
【0113】請求項2に記載のマイクロプロセッサによ
れば、直接メモリにデータを退避できない第2のレジス
タに格納されたデータの退避を、1命令分のスループッ
トで実行することが可能となった。
【0114】請求項3に記載のマイクロプロセッサによ
れば、第2のレジスタに格納されたデータを第1のレジ
スタに転送した後、スタックポインタの値がデクリメン
トされるため、スタック操作をさらに容易に行なうこと
が可能となった。
【0115】請求項4に記載のマイクロプロセッサによ
れば、直接メモリからデータを復帰できない第2のレジ
スタへのデータの復帰を、1命令分のスループットで実
行することが可能となった。
【0116】請求項5に記載のマイクロプロセッサによ
れば、メモリに格納されたデータを第1のレジスタに転
送した後、スタックポインタの値がインクリメントされ
るため、スタック操作をさらに容易に行なうことが可能
となった。
【0117】請求項6に記載のマイクロプロセッサによ
れば、第2のレジスタとメモリとの間のデータ転送を、
ワークレジスタを媒介として行なうことが可能となっ
た。
【0118】請求項7に記載のマイクロプロセッサによ
れば、第1のレジスタを媒介として制御レジスタとメモ
リとの間のデータ転送を行なうことが可能となった。ま
た、第1のレジスタをワークレジスタとしてデータ演算
手段に実装し、第2のレジスタを制御レジスタとしてア
ドレス演算手段または制御手段に実装することによっ
て、RISC方式のマイクロプロセッサの回路構成を採
用することが可能となった。
【0119】請求項8に記載のマイクロプロセッサによ
れば、第1のレジスタに格納されたデータをメモリに転
送し、スタックポインタの値をそのまま保持する退避命
令を実行可能とすることにより、スタックポインタが最
後に退避されたデータを指し示すようにすることが可能
となった。
【0120】請求項9に記載のアセンブラによれば、第
1のコード生成手段は、第1のマクロ命令から複数のレ
ジスタを退避するコードを生成するので、1つのマクロ
命令で複雑なスタック操作を扱うことが可能となった。
また、第2のコード生成手段は、記憶手段に記憶された
複数のレジスタを特定する情報を参照して、複数のレジ
スタを復帰させるコードを生成するので、1つのマクロ
命令で複雑なスタック操作を扱うことができ、複数のレ
ジスタの退避/復帰の整合性を自動的に管理することが
可能となった。
【0121】請求項10に記載のアセンブラによれば、
レジスタとメモリとの間のデータ転送の媒介として使用
されるレジスタが自動的にスタックに退避される場合
に、冗長なコードが生成されるのを防止することが可能
となった。
【0122】請求項11に記載のアセンブリ方法によれ
ば、第1のマクロ命令から複数のレジスタを退避するコ
ードを生成するので、1つのマクロ命令で複雑なスタッ
ク操作を扱うことが可能となった。また、読み込まれた
コードが第2のマクロ命令である場合、記憶された複数
のレジスタを特定する情報を参照して、複数のレジスタ
を復帰させるコードを生成するので、1つのマクロ命令
で複雑なスタック操作を扱うことができ、複数のレジス
タの退避/復帰の整合性を自動的に管理することが可能
となった。
【0123】請求項12に記載のアセンブリ方法によれ
ば、レジスタとメモリとの間のデータ転送の媒介として
使用されるレジスタが自動的にスタックに退避される場
合に、冗長なコードが生成されるのを防止することが可
能となった。
【0124】請求項13に記載の記録媒体によれば、第
1のマクロ命令から複数のレジスタを退避するコードを
生成するので、1つのマクロ命令で複雑なスタック操作
を扱うことが可能となった。また、読み込まれたコード
が第2のマクロ命令である場合、記憶された複数のレジ
スタを特定する情報を参照して、複数のレジスタを復帰
させるコードを生成するので、1つのマクロ命令で複雑
なスタック操作を扱うことができ、複数のレジスタの退
避/復帰の整合性を自動的に管理することが可能となっ
た。
【0125】請求項14に記載の記録媒体によれば、レ
ジスタとメモリとの間のデータ転送の媒介として使用さ
れるレジスタが自動的にスタックに退避される場合に、
冗長なコードが生成されるのを防止することが可能とな
った。
【図面の簡単な説明】
【図1】 本発明の実施の形態1におけるマイクロプロ
セッサを構成するレジスタセットを説明するための図で
ある。
【図2】 本発明の実施の形態1におけるマイクロプロ
セッサの概略構成を示すブロック図である。
【図3】 本発明の実施の形態1におけるマイクロプロ
セッサのパイプライン処理を説明するための図である。
【図4】 本発明の実施の形態1におけるマイクロプロ
セッサによって処理される演算命令の一例を示す図であ
る。
【図5】 本発明の実施の形態1におけるマイクロプロ
セッサによって処理される転送命令、シーケンス制御命
令および特殊命令の一例を示す図である。
【図6】 LOAD命令およびSTORE命令において
指定可能なレジスタの一覧を示す図である。
【図7】 STORE命令を用いたレジスタの退避動作
を行なうプログラムの一例を示す図である。
【図8】 図7に示すプログラムが実行されたときのス
タックの動作を示す図である。
【図9】 POP命令、PUSH命令およびPUT命令
のニーモニックおよびその動作を説明するための図であ
る。
【図10】 POP命令、PUSH命令およびPUT命
令を使用したプログラムの一例を示す図である。
【図11】 図10に示すプログラムを実行したときの
スタックの動作を説明するための図である。
【図12】 本発明の実施の形態2におけるアセンブラ
を実現するコンピュータの構成例を示すブロック図であ
る。
【図13】 本発明の実施の形態2におけるアセンブラ
によって処理されるマクロ命令を説明するための図であ
る。
【図14】 本発明の実施の形態2におけるアセンブラ
の概略構成を示すブロック図である。
【図15】 本発明の実施の形態2におけるアセンブラ
の処理手順を説明するためのフローチャートである。
【図16】 図15のステップS3の処理をさらに詳細
に説明するためのフローチャートである。
【図17】 図15のステップS5の処理をさらに詳細
に説明するためのフローチャートである。
【図18】 本発明の実施の形態3におけるアセンブラ
によって処理されるマクロ命令を説明するための図であ
る。
【図19】 図15のステップS3の処理をさらに詳細
に説明するためのフローチャートである。
【符号の説明】
1 コンピュータ本体、2 グラフィックディスプレイ
装置、3 FDドライブ、4 FD、5 キーボード、
6 マウス、7 CD−ROM装置、8 CD−RO
M、9 ネットワーク通信装置、10 CPU、11
ROM、12 RAM、13 ハードディスク、20
コード解釈部、21 MPUSH命令展開部、22 M
POP命令展開部、23 コード生成部、24 LIF
O、39命令デコード部、40 PCU部、41 AA
U部、42 DAU部、43 命令メモリ、44 Xメ
モリ、45 Yメモリ、49 乗算器、50 ALU、
51 シフタ。

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 命令コードのフェッチを制御するための
    制御手段と、 前記フェッチされた命令コードをデコードするためのデ
    コード手段と、 前記デコード手段によるデコード結果に基づいて、メモ
    リのアドレスを演算するためのアドレス演算手段と、 前記デコード手段によるデコード結果に基づいて、デー
    タを演算するためのデータ演算手段とを含み、 前記データ演算手段は、前記制御手段によってフェッチ
    された1つのオペレーションコードを有する1つの命令
    コードに対応して、レジスタ間のデータ転送と、レジス
    タとメモリとの間のデータ転送とを実行する、マイクロ
    プロセッサ。
  2. 【請求項2】 前記データ演算手段は、前記制御手段に
    よってフェッチされた1つの退避命令に対応して、第1
    のレジスタに格納されたデータをメモリに転送し、第2
    のレジスタに格納されたデータを前記第1のレジスタに
    転送する、請求項1記載のマイクロプロセッサ。
  3. 【請求項3】 前記データ演算手段は、前記第2のレジ
    スタに格納されたデータを前記第1のレジスタに転送し
    た後、スタックポインタの値をデクリメントする、請求
    項2記載のマイクロプロセッサ。
  4. 【請求項4】 前記データ演算手段は、前記制御手段に
    よってフェッチされた1つの復帰命令に対応して、第1
    のレジスタに格納されたデータを第2のレジスタに転送
    し、メモリに格納されたデータを前記第1のレジスタに
    転送する、請求項1記載のマイクロプロセッサ。
  5. 【請求項5】 前記データ演算手段は、前記メモリに格
    納されたデータを前記第1のレジスタに転送した後、ス
    タックポインタの値をインクリメントする、請求項4記
    載のマイクロプロセッサ。
  6. 【請求項6】 前記第1のレジスタは、前記データ演算
    手段に実装されるワークレジスタである、請求項2〜5
    のいずれかに記載のマイクロプロセッサ。
  7. 【請求項7】 前記第2のレジスタは、前記アドレス演
    算手段または前記制御手段に実装される制御レジスタで
    ある、請求項2〜6のいずれかに記載のマイクロプロセ
    ッサ。
  8. 【請求項8】 前記データ演算手段は、前記制御手段に
    よってフェッチされた1つの退避命令に対して、第1の
    レジスタに格納されたデータをメモリに転送し、スタッ
    クポインタの値をそのまま保持するための手段を含む、
    請求項1〜7のいずれかに記載のマイクロプロセッサ。
  9. 【請求項9】 ソースプログラムからコードを読み込む
    ためのコード読込手段と、 複数のレジスタを特定するための情報を記憶するための
    記憶手段と、 前記コード読込手段によって読み込まれたコードが第1
    のマクロ命令である場合、前記コードに含まれる複数の
    レジスタを特定するための情報を前記記憶手段に記憶
    し、前記複数のレジスタを退避するコードを生成するた
    めの第1のコード生成手段と、 前記コード読込手段によって読み込まれたコードが第2
    のマクロ命令である場合、前記記憶手段に記憶された複
    数のレジスタを特定する情報を参照して、前記複数のレ
    ジスタを復帰させるコードを生成するための第2のコー
    ド生成手段を含むアセンブラ。
  10. 【請求項10】 前記第1のコード生成手段は、前記コ
    ード読込手段によって読み込まれたコードが第1のマク
    ロ命令である場合、前記コードに含まれる複数のレジス
    タのうち、レジスタとメモリとの間のデータ転送の媒介
    として使用されるレジスタ以外のレジスタを退避するコ
    ードを生成する、請求項9記載のアセンブラ。
  11. 【請求項11】 ソースプログラムからコードを読み込
    むステップと、 前記コードが第1のマクロ命令である場合、前記コード
    に含まれる複数のレジスタを特定するための情報を記憶
    し、前記複数のレジスタを退避するコードを生成するス
    テップと、 前記読み込まれたコードが第2のマクロ命令である場
    合、前記記憶された複数のレジスタを特定する情報を参
    照して、前記複数のレジスタを復帰させるコードを生成
    するステップを含むアセンブリ方法。
  12. 【請求項12】 前記複数のレジスタを退避するコード
    を生成するステップは、前記読み込まれたコードが第1
    のマクロ命令である場合、前記読み込まれたコードに含
    まれる複数のレジスタのうち、レジスタとメモリとの間
    のデータ転送の媒介として使用されるレジスタ以外のレ
    ジスタを退避するコードを生成するステップを含む、請
    求項11記載のアセンブリ方法。
  13. 【請求項13】 コンピュータにアセンブリ方法を実行
    させるプログラムが記録されたコンピュータで読取可能
    な記録媒体であって、 前記アセンブリ方法は、ソースプログラムからコードを
    読み込むステップと、 前記コードが第1のマクロ命令である場合、前記コード
    に含まれる複数のレジスタを特定するための情報を記憶
    し、前記複数のレジスタを退避するコードを生成するス
    テップと、 前記読み込まれたコードが第2のマクロ命令である場
    合、前記記憶された複数のレジスタを特定する情報を参
    照して、前記複数のレジスタを復帰させるコードを生成
    するステップを含む、アセンブリプログラムを記録した
    記録媒体。
  14. 【請求項14】 前記複数のレジスタを退避するコード
    を生成するステップは、前記読み込まれたコードが第1
    のマクロ命令である場合、前記読み込まれたコードに含
    まれる複数のレジスタのうち、レジスタとメモリとの間
    のデータ転送の媒介として使用されるレジスタ以外のレ
    ジスタを退避するコードを生成するステップを含む、請
    求項13記載のアセンブリプログラムを記録した記録媒
    体。
JP2000194033A 2000-06-28 2000-06-28 マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体 Withdrawn JP2002014809A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000194033A JP2002014809A (ja) 2000-06-28 2000-06-28 マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体
US09/819,990 US20020138715A1 (en) 2000-06-28 2001-03-29 Microprocessor executing data transfer between memory and register and data transfer between registers in response to single push/pop instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000194033A JP2002014809A (ja) 2000-06-28 2000-06-28 マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体

Publications (1)

Publication Number Publication Date
JP2002014809A true JP2002014809A (ja) 2002-01-18

Family

ID=18692928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000194033A Withdrawn JP2002014809A (ja) 2000-06-28 2000-06-28 マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体

Country Status (2)

Country Link
US (1) US20020138715A1 (ja)
JP (1) JP2002014809A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021149113A1 (ja) * 2020-01-20 2021-07-29

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US8209523B2 (en) * 2009-01-22 2012-06-26 Intel Mobile Communications GmbH Data moving processor
EP2727114B1 (en) 2011-06-28 2020-04-22 Hewlett-Packard Enterprise Development LP Shiftable memory
WO2013062561A1 (en) 2011-10-27 2013-05-02 Hewlett-Packard Development Company, L.P. Shiftable memory supporting atomic operation
WO2013115779A1 (en) 2012-01-30 2013-08-08 Hewlett-Packard Development Company, L.P. Word shift static random access memory (ws-sram)
US9542307B2 (en) 2012-03-02 2017-01-10 Hewlett Packard Enterprise Development Lp Shiftable memory defragmentation
US10559351B2 (en) * 2017-02-20 2020-02-11 Texas Instruments Incorporated Methods and apparatus for reduced area control register circuit
US20240220257A1 (en) * 2022-12-30 2024-07-04 Jason Agron Instructions and support for stack push and pop

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3786432A (en) * 1972-06-20 1974-01-15 Honeywell Inf Systems Push-pop memory stack having reach down mode and improved means for processing double-word items
US5524268A (en) * 1992-06-26 1996-06-04 Cirrus Logic, Inc. Flexible processor-driven control of SCSI buses utilizing tags appended to data bytes to determine SCSI-protocol phases
US5640548A (en) * 1992-10-19 1997-06-17 Motorola, Inc. Method and apparatus for unstacking registers in a data processing system
US5687338A (en) * 1994-03-01 1997-11-11 Intel Corporation Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US5918031A (en) * 1996-12-18 1999-06-29 Intel Corporation Computer utilizing special micro-operations for encoding of multiple variant code flows
US6108768A (en) * 1998-04-22 2000-08-22 Sun Microsystems, Inc. Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
US6349383B1 (en) * 1998-09-10 2002-02-19 Ip-First, L.L.C. System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution
US6209082B1 (en) * 1998-11-17 2001-03-27 Ip First, L.L.C. Apparatus and method for optimizing execution of push all/pop all instructions
US6363473B1 (en) * 1999-04-01 2002-03-26 Compaq Information Technologies Group, L.P. Simulated memory stack in a stackless environment
US6546480B1 (en) * 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021149113A1 (ja) * 2020-01-20 2021-07-29
WO2021149113A1 (ja) * 2020-01-20 2021-07-29 富士通株式会社 プロセッサ、シミュレータプログラム、アセンブラプログラム、及び情報処理プログラム

Also Published As

Publication number Publication date
US20020138715A1 (en) 2002-09-26

Similar Documents

Publication Publication Date Title
US6061783A (en) Method and apparatus for manipulation of bit fields directly in a memory source
US6772355B2 (en) System and method for reducing power consumption in a data processor having a clustered architecture
JP4202244B2 (ja) Vliw型dsp,及びその動作方法
WO2002048887A2 (en) Single-step processing
JPH07210381A (ja) プロセッサ及びコンピュータ・システム
JPS62197830A (ja) デ−タ処理システム
JP2002014809A (ja) マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体
JP4718901B2 (ja) 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム
US6496924B2 (en) Data processing apparatus including a plurality of pipeline processing mechanisms in which memory access instructions are carried out in a memory access pipeline
US5390306A (en) Pipeline processing system and microprocessor using the system
EP3690639B1 (en) Information processing apparatus, program, and information processing method
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
JP2001117886A (ja) プロセッサ及びプロセッサシステム
JP2000284962A (ja) マイクロコンピュータ
US6922773B2 (en) System and method for encoding constant operands in a wide issue processor
JPH07129399A (ja) 命令属性レジスターを使用して多機能命令を実行する マイクロコンピュータ
JP3507193B2 (ja) ロード・ストア命令処理装置
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
JP3154748B2 (ja) レジスタの退避復帰機能付データ処理装置
JPH07109589B2 (ja) 命令処理方式
JP2915680B2 (ja) Riscプロセッサ
JP2000112754A (ja) データ処理装置
JPH0524537B2 (ja)
JP2622026B2 (ja) 中央処理装置におけるレジスタ書込制御方式
CN120044895A (zh) 一种基于流水线机制的取2校核方法和系统

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: 20070904