JPH1091443A - 情報処理回路、マイクロコンピュータ及び電子機器 - Google Patents

情報処理回路、マイクロコンピュータ及び電子機器

Info

Publication number
JPH1091443A
JPH1091443A JP9135923A JP13592397A JPH1091443A JP H1091443 A JPH1091443 A JP H1091443A JP 9135923 A JP9135923 A JP 9135923A JP 13592397 A JP13592397 A JP 13592397A JP H1091443 A JPH1091443 A JP H1091443A
Authority
JP
Japan
Prior art keywords
instruction
register
stack pointer
stack
information
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
JP9135923A
Other languages
English (en)
Inventor
Satoru Kubota
哲 久保田
Makoto Kudo
真 工藤
Yoshiyuki Miyayama
芳幸 宮山
Hisao Sato
比佐夫 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP9135923A priority Critical patent/JPH1091443A/ja
Priority to US08/859,490 priority patent/US6560692B1/en
Priority to EP97108346A priority patent/EP0809180B1/en
Priority to DE69729974T priority patent/DE69729974T2/de
Priority to KR1019970020002A priority patent/KR100328162B1/ko
Priority to TW086106909A priority patent/TW424197B/zh
Publication of JPH1091443A publication Critical patent/JPH1091443A/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/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/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
    • 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/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing

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)

Abstract

(57)【要約】 【課題】 スタックポインタを取り扱う処理を、短い命
令長で効率よく記述し、実行すること及びレジスタ退避
やレジスタ復旧の処理を、効率よく記述し、割り込み処
理及びサブルーチンコール・リターンの処理速度を向上
させること。 【解決手段】 CPU10は、スタックポインタ専用の
レジスタSP14を含みSP14を暗黙のオペランドと
するスタックポインタ専用命令群を命令デコーダ20で
解読する。そして、汎用レジスタ11、PC12、SP
14、アドレス加算器30、ALU40、PCインクリ
メンタ44、内部バス72、74、76、78、内部信
号線82、84、86、88、外部バス92、94、9
6、98等を用いて前記スタックポインタ専用命令群を
ハードウエア的に実行する。前記スタックポインタ専用
命令群は、SP相対ロード命令やスタックポインタ移動
命令やcall命令やret命令や連続プッシュ命令や
連続ポップ命令を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理回路、前
記情報処理回路を内蔵するマイクロコンピュータ、及び
該マイクロコンピュータを用いて構成された電子機器に
関する。
【0002】
【背景技術及び発明が解決しようとする課題】従来、3
2ビットのデータを処理できるRISC方式のマイクロ
コンピュータでは、32ビット幅の固定長命令が用いら
れていた。その理由は、固定長命令を用いると、可変長
命令を用いる場合に比べ、命令のデコードに要する時間
を短縮でき、また、マイクロコンピュータの回路規模を
小さくすることが出来るからである。
【0003】ところが、32ビットのマイクロコンピュ
ータにおいても、特に32ビットも必要としない命令も
多い。従って全ての命令を32ビットで記述すると、命
令に冗長な部分が生じる命令が多くなり、メモリーの使
用効率が悪くなる。
【0004】そこで、本願の発明者は、制御回路を複雑
にすることなくメモリの使用効率を向上させるために、
処理出来るデータのビット幅より短いビット幅の固定長
命令を処理するマイクロコンピュータについての検討を
行っていた。
【0005】しかし、例えば32ビット固定長の命令を
単に16ビットの固定長にすると以下のような問題点が
生じる。
【0006】即ちRISC方式のマイクロコンピュータ
では処理及び命令セットの汎用性を重視するため、スタ
ックポインタを取り扱う処理を行う場合、いずれかの汎
用レジスタをスタックポインタとして用い、汎用レジス
タを操作対象とする命令を用いて前記処理を行ってい
た。従って、このような処理を記述する際の前記命令の
には、スタックポインタとして使用している汎用レジス
タの指定が必要となる。
【0007】例えば、スタックポインタに所与のオフセ
ット値を加えたメモリアドレスで特定されるデータを所
与のレジスタに転送する処理を汎用レジスタを操作対象
とする命令で記述する場合、その命令のオブジェクトコ
ードには、前記オフセット値、前記所与のレジスタを特
定する情報、スタックポインタとして使用しているレジ
スタを特定する情報が必要となる。
【0008】このように、汎用レジスタを操作対象とす
る命令でスタックポインタを取り扱う処理を記述する場
合、オブジェクトコードで指定する情報が多くなるた
め、命令の内容を16ビットの固定長で記述することが
困難となる。ここで命令長を例えば32ビットにする
と、命令の中にも特に命令に32ビットも必要としない
命令も多いため、命令に冗長な部分を生じる命令が多く
なり、メモリの使用効率の悪化を招く。
【0009】また、命令長が長くなればそれを格納する
メモリも余分に必要になるため、メモリの効率的な使用
という観点からは、固定長の命令に限らず、命令長を短
くできることが好ましい。
【0010】また、例えばC言語のようにスタックポイ
ンタに関連づけてオート変数の記憶領域が確保される言
語で記述されたプログラムを実行させる場合、スタック
ポインタを取り扱う命令が多くなるため、スタックポイ
ンタを取り扱う命令を効率的に記述し、実行させること
が望ましい。
【0011】そこで、スタックポインタを取り扱う処理
を行う場合、できるだけ短い命令長でその命令内容を記
述し、実行することができるアーキテクチャが望まれて
いた。
【0012】また最近の特にRISC方式のCPUは、
性能を高めるため内部に多くの汎用レジスタを持つよう
になった。多くのレジスタを内部に持つことによりメモ
リにアクセスすることなくCPU内部で高速に多くの処
理を出来るからである。このように内部レジスタを多く
持つと、割り込み処理やサブルーチンコールの時のレジ
スタ退避と復旧の処理の際、退避すべきレジスタ数が多
くなる。
【0013】以下、スタック系命令の中でもサブルーチ
ンに入ったりでたりする際に多用するレジスタの待避、
復帰命令を例にとり従来例を説明する。
【0014】通常マイクロコンピュータの命令セットは
CPUのレジスタをメモリに設けたスタックに待避した
り復旧するための命令を持っている。そのための専用の
命令を持つもの、あるいはレジスタ間接アドレッシング
命令をもつものがある。
【0015】前記待避したり復旧したりするための命令
に関する技術としては、インテル社の80386に関し
て、「80386プログラミン」(John H. Crawford
Patric P. Gelsigner 著 岩谷宏 訳)に以下のよう
な記述がある。
【0016】即ちレジスタをスタックに書き込む命令と
して push、pusha、pushadがあり,ス
タックからレジスタにデータを戻すための命令としてp
op、popa、popadがある。
【0017】push命令でレジスタをスタックに書き
込むときは push EAX のようにオペランドと
してレジスタを指定する。これは32ビットレジスタE
AXの場合である。レジスタEAX、ECX、EDX、
EBXを全てスタックに書く場合は、 push EAX push ECX push EDX push EBX のようにpush命令を繰り返す。
【0018】このようにpush、pop命令でレジス
タを1本ずつ操作しているとオブジェクトコードのサイ
ズは大きくなり、プログラムの実行ステップも多くな
り、そのためプログラムの実行時間や処理動作はより遅
くなる。
【0019】そこで80386の有する8本の汎用レジ
スタ全てをスタックに書き込むにはpusha または
pushad 命令を使う。pushaは8本のレジ
スタの其々の下位16ビットレジスタを対象とし、pu
shadは32ビットを対象とする。pusha、pu
shadによりpush命令を8回繰り返すことを省略
できる。
【0020】pop、popa、popad命令につい
ても同様である。
【0021】push命令を繰り返すことの不利な点は
プログラムコードが長くなること、1命令毎フェッチし
実行するため実行が遅いことである。この点は、前記p
usha、pushadにより、前記8本のレジスタを
全てスタックに書き込む場合には大きく改善される。し
かし、4本の場合とか6本の場合等のように8未満のレ
ジスタを書き込む場合には、この点は改善されない。
【0022】即ち、80386のようにpusha、p
ushad、popa、popad命令で全てのレジス
タを操作すると、レジスタの全てを退避・復旧する必要
の無いときも、このサイクルの長い遅い命令を使わなけ
ればならない。このような場合、命令は一命令で済むが
この命令の実行サイクルは長くなるという問題が生じ
る。
【0023】また、call命令やリターン命令等でサ
ブルーチンへ分岐したり、呼ばれたルーチンへ戻る際に
は、戻り先アドレスとして必要となるプログラムカウン
タの待避や復旧の処理が必要となる。従来のRISC方
式のCPUにおいては、これらの処理をソフトウエア的
に実現していた。即ち、該処理を記述したアセンブラ命
令(オブジェクトコード)を実行することにより、前記
プログラムカウンタの待避や復旧の処理を行っていた。
このため、call命令やリターン命令はオブジェクト
コードの増加を招き、また1命令毎フェッチし実行する
ために実行速度の鈍化を招いていた。
【0024】本発明の目的は、スタックポインタを取り
扱う処理を、短い命令長で効率よく記述し、実行するこ
とができるアーキテクチャを有する情報処理回路、マイ
クロコンピュータ、電子機器を提供することである。
【0025】また 本発明の他の目的は、レジスタ退避
やレジスタ復旧の処理を、効率よく記述し、割り込み処
理及びサブルーチンコール・リターンの処理速度が速い
情報処理回路、マイクロコンピュータ、電子機器を提供
することである。
【0026】
【課題を解決するための手段】本発明は、スタックポイ
ンタ専用に用いるスタックポインタ専用レジスタと、該
スタックポインタ専用レジスタを暗黙のオペランドとす
るオブジェクトコードを有し、該スタックポインタ専用
レジスタに基づく処理が記述されたスタックポインタ専
用命令群のオブジェクトコードを解読して、該オブジェ
クトコードに基づき制御信号を出力する解読手段と、前
記スタックポインタ専用命令群を、前記制御信号及び前
記スタックポインタ専用レジスタの内容に基づき実行す
る実行手段とを含むことを特徴とする。
【0027】ここにおいてオブジェクトコードとは、一
般に翻訳プログラムによって機械語に翻訳した結果得ら
れるプログラムコードのことをいうが、本発明において
は、翻訳プログラムによるかいなかに関係なく、機械語
で記述されているプログラムコードを含む広い概念で使
用する。
【0028】本発明の情報処理回路は、スタックポイン
タ専用のスタックポインタ専用レジスタを有し、該スタ
ックポインタ専用レジスタを操作対象とするスタックポ
インタ専用命令群の解読、実行を行うよう構成されてい
る。
【0029】前記スタックポインタ専用命令群は、スタ
ックポインタ専用レジスタを取り扱うための専用のオペ
コードを有しているため、オブジェクトコードのオペラ
ンドにスタックポインタを特定するための情報を必要と
しない。言い換えれば、前記スタックポインタ専用命令
群はスタックポインタ専用レジスタを暗黙のオペランド
としている。このため、汎用レジスタの1つをスタック
ポインタに割あて、汎用レジスタを操作対象とする命令
を用いてスタックポインタの操作を行う場合に比べて、
短い命令長でスタックポインタを取り扱う命令を記述す
ることができる。
【0030】従って本発明によれば、スタックポインタ
を取り扱う処理を短い命令長で記述し実行することがで
きる情報処理回路を提供することができる。また、命令
を記憶するメモリの使用効率のよい情報処理回路を提供
することができる。
【0031】本発明は、前記スタックポインタ専用命令
群が、転送レジスタ特定情報をオブジェクトコードに有
するロード命令を含み、前記解読手段が、前記ロード命
令を解読し、前記実行手段が、前記ロード命令を実行す
る際、メモリ上の所与の第一のエリアから所与の第一の
レジスタへのデータの転送及び前記所与の第一のレジス
タから前記所与の第一のエリアへのデータの転送の少な
くとも一方を、前記スタックポインタ専用レジスタによ
り特定されるメモリアドレス及び前記転送レジスタ特定
情報により特定されるレジスタアドレスに基づき行うこ
とを特徴とする。
【0032】ここにおいて前記スタックポインタ専用命
令群に含まれる前記ロード命令とは、メモリとレジスタ
間でデータの転送を行う命令であり、メモリからレジス
タへの転送及びレジスタからメモリへの転送の少なくと
も一方を含む概念である。なお、データの内容は問わず
アドレスデータも含む概念である。メモリアドレスと
は、転送の際のメモリ上のエリアを特定するためのアド
レスをいう。
【0033】前記ロード命令は、スタックポインタ専用
レジスタを操作対象とするための専用のオペコードを有
しているため、オブジェクトコードのオペランドにスタ
ックポインタを特定するための情報を必要としない。こ
のため、スタックポインタに関連づけたメモリアドレス
を有するメモリ上のエリアとレジスタ間でデータの転送
処理を行わせる場合、短い命令長で記述することができ
る。
【0034】本発明は、前記ロード命令が、前記メモリ
上の前記第一のエリアのアドレスを特定するためのオフ
セットに関する情報であるオフセット情報をオブジェク
トコードに含み、前記実行手段が、前記スタックポイン
タ専用レジスタの内容と前記オフセット情報により前記
メモリアドレスを特定することを特徴とする。
【0035】ここにおいてオフセット情報とは、オフセ
ット値を直接即値で指定したものでもよいし、オフセッ
ト値が格納されたレジスタ等のアドレスを指定する場合
のように間接的に指定する場合でもよい。オフセット情
報を含んだ前記ロード命令が実行される場合、転送の際
に必要となる前記メモリアドレスは、スタックポインタ
専用レジスタの内容及びオフセット情報に基づき特定さ
れる。
【0036】従ってスタックポインタ及び前記オフセッ
ト情報に基づき特定されるメモリアドレスを有するメモ
リ上のエリアとレジスタ間でデータの転送処理を行わせ
る場合、短い命令長で記述することができる。
【0037】また本発明によれば、例えばスタックポイ
ンタが常にワード境界をさすような構造の情報処理回路
においても、適当なオフセット情報を指定することによ
り、スタック上の任意のエリアを指定することが可能と
なる。このため、データのサイズに応じて効率良くスタ
ックに格納することができ、スタックの使用効率の向上
を図ることができる。
【0038】本発明は、前記オフセット情報が、即値で
与えられた即値オフセット情報とメモリ上の所与のデー
タのサイズに関するデータサイズ情報とを含み、前記実
行手段が、前記即値オフセット情報と前記データサイズ
情報とに基づき、前記即値オフセット情報を左論理シフ
トしてオフセット値を生成し、前記スタックポインタ専
用レジスタの内容と前記オフセット値を加算した値によ
り前記メモリアドレスを特定することを特徴とする。
【0039】ここにおいて即値オフセット情報とは、オ
フセット値を直接即値で指定したものをいう。またデー
タサイズ情報とは、転送すべきメモリ上データのサイズ
をいう。通常データサイズは、8ビットのバイトデータ
や、16ビットのハーフワードデータ、32ビットのワ
ードデータ等の2n(nは3以上)で表される。メモリ
上のアドレスはバイト単位に与えられており、ハーフワ
ードデータはハーフワード境界におかれ、ワードデータ
はワード境界におかれる。従って、ハーフワードデータ
のメモリアドレスの下位の1ビットは0となり、ワード
データのメモリアドレスの下位の2ビットは00とな
る。スタックポインタのアドレスは、ワード境界を指し
ているため、ハーフワードデータのメモリアドレスを生
成する場合のオフセット値の下位の1ビットは0とな
り、ワードデータのメモリアドレスを生成する場合のオ
フセット値の下位の2ビットは00となる。
【0040】また、左論理シフトとは、データのビット
列を左にずらし、シフトによってデータの右側にでるあ
きビット(シフトインビット)に0が入るシフトをい
う。
【0041】本発明によれば、データサイズに基づき、
前記オフセット即値情報の左論理シフトを行うため、デ
ータサイズによって一義的に決まる下位のビットを省略
して、即値オフセット情報を記述することができる。従
って、即値オフセット情報を効率的に指定することがで
き、バイト以外のデータサイズの場合、そのまま指定す
る場合に比べて、より大きいオフセット値に指定が可能
となる。
【0042】また該命令を用いることによって、データ
のメモリへの書き込み、読み出し時にそのデータサイズ
に応じた適切な境界位置が選択されることになる。
【0043】本発明は、前記スタックポインタ専用命令
群が、オブジェクトコードに移動情報を有しスタックポ
インタを移動するためのスタックポインタ移動命令を含
み、前記解読手段が、前記スタックポインタ移動命令を
解読し、前記実行手段が、前記スタックポインタ移動命
令を実行する際、前記移動情報に基づき、前記スタック
ポインタ専用レジスタの内容を変更することを特徴とす
る。
【0044】前記スタックポインタ移動命令は、スタッ
クポインタ専用レジスタを操作対象とするための専用の
オペコードを有しているため、オブジェクトコードのオ
ペランドにスタックポインタを特定するための情報を必
要としない。このため、スタックを移動させたい場合、
短い命令長で記述することができる。従って、スタック
に格納されているデータの処理やスタックポインタに関
連づけて記憶されているデータの処理を行う際の命令の
記述量を削減することができる。
【0045】本発明によればスタックの移動が容易に行
えるため、特に異なるルーチンにおいてそれぞれ異なる
スタックエリアを確保して処理を行う場合に有効であ
る。即ちルーチンごとにスタックポインタを移動させる
処理を行うことで、広範囲な領域にわたるアドレス指定
が可能となる。
【0046】本発明は、前記移動情報が、即値で与えら
れた即値移動情報を含み、前記命令実行手段が、前記即
値移動情報と前記スタックポインタ専用レジスタの内容
とを加算する処理及び前記スタックポインタ専用レジス
タの内容から前記即値移動情報を減算する処理の少なく
とも一方の処理を行うことを特徴とする。
【0047】本発明によれば、スタックポインタの値を
即値移動情報で指定された分だけ上方又は下方に移動さ
せる処理を短い命令長で記述することができる。
【0048】本発明は、連続して順序づけられた複数の
レジスタを含み、前記スタックポインタ専用命令群が、
複数レジスタ特定情報をオブジェクトコードに有する連
続プッシュ命令及び連続ポップ命令の少なくとも一方を
含み、前記解読手段が、前記連続プッシュ命令及び連続
ポップ命令の少なくとも一方を解読し、前記命令実行手
段が、前記連続プッシュ命令及び前記連続ポップ命令の
少なくとも一方を実行する際、前記複数のレジスタから
メモリに設けられたスタックへ連続して複数回プッシュ
する処理及び前記スタックから前記複数のレジスタに連
続して複数回ポップする処理の少なくとも一方を、前記
スタックポインタ専用レジスタの内容により特定される
メモリアドレスに及び前記複数レジスタ特定情報とに基
づき行うことを特徴とする。
【0049】プッシュとはメモリに設けられたスタック
にデータを積み重ねて格納すること、ポップとは前記ス
タックからデータを取り出すことをいう。ここにおいて
プッシュする処理及びポップする処理とは、前記格納及
び取り出しの処理と、それに伴うスタックポインタの更
新処理を含む。通常の情報処理回路は1のレジスタから
スタックにデータやアドレスを格納するためのpush
命令、スタックの内容をレジスタに取り出すpop命令
を有している。該push命令やpop命令は、レジス
タとスタックとのデータのやり取りや、該やり取りに伴
うスタックポインタの更新を行う。
【0050】従って複数のレジスタとスタックでデータ
等のやり取りを行う場合には、これらの命令を複数回実
行することが必要となる。
【0051】しかし本発明によれば、前記連続プッシュ
命令や前記連続ポップ命令を実行すると、push命令
を連続して複数回実行する場合やpop命令を連続して
複数回実行する場合と同じ効果が得られる。即ち複数の
レジスタとスタックとの間のデータのやり取り及び該や
り取りに伴うスタックポインタの更新を1命令で実行す
ることが出来る。このため複数のレジスタとスタックと
の間のデータの転送を行う場合、push命令あるいは
pop命令をくり返すことによりオブジェクトコードサ
イズが増大するのを防ぐことができる。またプログラム
実行ステップが長くなることを回避し、無駄なサイクル
を消費することなく、割り込み処理及びサブルーチンコ
ール・リターンの処理速度の向上を図ることができる。
【0052】本発明は、0からnー1までのレジスタ番
号で特定されたn個の汎用レジスタを含み、前記連続プ
ッシュ命令及び連続ポップ命令の少なくとも一方のオブ
ジェクトコードが、前記複数レジスタ特定情報として、
前記レジスタ番号のいずれかが指定された最終レジスタ
番号を含み、前記実行手段が、レジスタ0から前記最終
レジスタ番号で特定されるレジスタまでの複数のレジス
タからメモリに設けられたスタックへ連続して複数回プ
ッシュする処理及び前記スタックから前記複数のレジス
タに連続して複数回ポップする処理の少なくとも一方
を、前記スタックポインタ専用レジスタの内容により特
定されるメモリアドレスに基づき行うことを特徴とす
る。
【0053】通常汎用レジスタが複数ある場合、レジス
タを特定するためのアドレスを有している。本発明では
0からnー1までの連続したレジスタ番号で前記レジス
タを特定している。
【0054】本発明によれば、前記最終レジスタ番号に
任意のレジスタ番号を指定することにより、レジスタ0
から前記最終レジスタ番号までの連続した複数のレジス
タとメモリとの間でデータをプッシュする処理及びポッ
プする処理の少なくとも一方が行われる。従って、レジ
スタ番号0のレジスタから順番にレジスタを使用するよ
うな構造を有するプログラムの実行において、レジスタ
の待避や復旧を効率的に行うことができる。
【0055】本発明は、前記実行手段が、前記複数のレ
ジスタのいずれか所与のレジスタの内容を、前記スタッ
クポインタ専用レジスタで特定されるメモリアドレスに
基づきメモリに設けられたスタックに書き込む書き込み
手段と、前記書き込み手段による前記スタックへの書き
込み回数をカウントする書き込み回数カウント手段と、
前記カウント手段によってカウントされた前記書き込み
回数と前記複数レジスタ特定情報の値を比較する比較手
段とを含み、前記書き込み手段が、第一の入力と第二の
入力を加算器で加算し書き込み先を特定するための書き
込みメモリアドレスを生成する書き込みメモリアドレス
生成手段と、前記加算器の第一の入力が、連続専用命令
の実行開始時にはスタックポインタ専用レジスタの内容
となるように制御し、それ以降は書き込みアドレス生成
手段によって生成された書き込みアドレスとなるよう制
御する第一の入力制御手段と、前記加算器の第二の入力
に前記スタックから1ワードを書き込んだときのオフセ
ット値を出力する第二の入力制御手段と、前記複数レジ
スタ特定情報から前記書き込み回数を減じた値で特定さ
れるレジスタの内容を、前記書き込みメモリアドレスに
基づき前記スタックに書き込む手段とを含み、前記比較
手段の比較結果に基づき、複数のレジスタからの前記ス
タックへの書き込み及び書き込み終了を制御することを
特徴とする。
【0056】また本発明は、前記命令実行手段が、前記
スタックポインタ専用レジスタで特定されるメモリアド
レスに基づきメモリに設けられたスタックの内容を読み
出し、前記複数のレジスタのいずれか所与のレジスタに
格納する読み出し手段と、前記読み出し手段による前記
スタックからの読み出し回数をカウントする読み出し回
数カウント手段と、前記カウント手段によってカウント
された前記読み出し回数と前記複数レジスタ特定情報の
値を比較する比較手段とを含み、前記読み出し手段が、
第一の入力と第二の入力を加算器で加算し書き込み先を
特定するための書き込みメモリアドレスを生成する書き
込みメモリアドレス生成手段と、前記加算器の第一の入
力が、連続専用命令の実行開始時にはスタックポインタ
専用レジスタの内容となるように制御し、それ以降は読
み出しアドレス生成手段によって生成された読み出しア
ドレスとなるよう制御する第一の入力制御手段と、前記
加算器の第二の入力に前記スタックから1ワードを書き
込んだときのオフセット値を出力する第二の入力制御手
段と、前記読み出しメモリアドレスに基づき前記スタッ
クの内容を読み出し、前記書き込み回数に基づき特定さ
れるレジスタに格納する読み出し手段とを含み、前記比
較手段の比較結果に基づき、前記スタックの内容の読み
出し及び読み出し終了を制御することを特徴とする。
【0057】このようにすると連続した値で順序づけて
特定される複数のレジスタのスタックへの待避又はスタ
ックから連続した値で特定される複数のレジスタへの復
旧をカウント手段と簡単なシーケンス制御のみで実現可
能である。従って少ないゲート数の情報処理回路で実現
出来るため、ワンチップのマイクロコンピュータ等に適
したものである。
【0058】本発明は、プログラムカウンタ専用のプロ
グラムカウンタレジスタを含み、前記スタックポインタ
専用命令群が、サブルーチンへ分岐する命令及び前記サ
ブルーチンからのリターン命令である分岐命令を含み、
前記解読手段が、前記分岐命令を解読し、前記命令実行
手段が、前記分岐命令を実行する際、メモリに設けられ
たスタックの所与の第二のエリアへの前記プログラムカ
ウンタレジスタの内容の待避及び前記第二のエリアの内
容のプログラムカウンタレジスタへの復帰の少なくとも
一方を、前記スタックポインタ専用レジスタにより特定
されるメモリアドレスに基づき行う手段と、前記待避及
び前記復帰に基づき前記スタックポインタ専用レジスタ
の内容を更新する手段とを含むことを特徴とする。
【0059】ここにおいてサブルーチンとは、割り込み
処理及び例外処理及びデバッグ処理ルーチン等も含む。
従ってサブルーチンへ分岐する命令とは、サブルーチン
等をコールする命令、割り込み処理及び例外処理及びデ
バッグ処理ルーチン等へ分岐するためのソフトウェア割
り込み命令、ソフトウェアデバッグ割り込み命令等も含
む。またサブルーチンからのリターン命令には、割り込
み処理及び例外処理及びデバッグ処理ルーチン等からの
リターン命令を含む。
【0060】通常サブルーチンへ分岐する場合や前記サ
ブルーチンから戻る場合プログラムカウンタの待避や復
帰が必要となる。
【0061】本発明では、前記サブルーチンへ分岐する
命令の実行及びサブルーチンからリターンする命令を実
行する際に前記プログラムカウンタの待避及び復帰も同
時に行う。即ち、本発明の情報処理回路は、サブルーチ
ンへ分岐する命令及び前記サブルーチンからのリターン
命令のいずれか一命令でプログラムカウンタの待避及び
復帰が出来る回路構成を有している。このためサブルー
チンへの分岐やサブルーチンからのリターンに伴って必
要となる前記プログラムカウンタの待避及び復帰の命令
が不要となり、命令数を削減することができる。また、
無駄なサイクルを消費することなく、サブルーチンコー
ル・リターン等の他のルーチンへ分岐時の処理速度の向
上を図ることができる。
【0062】また、ソフトウエア割り込み命令が発生し
た場合には、例えばCPU等の情報処理回路の現在の状
態を保持するプロセッサーステータスレジスタの待避及
び復帰も必要となる。従って、ソフトウエア割り込み命
令等の場合は該命令の実行時にプロセッサーステータス
レジスタの待避及び復帰も同時に行うようにすることが
好ましい。
【0063】本発明は、連続して順序づけられた複数の
レジスタと、いずれかの汎用レジスタに割り当てられた
スタックポインタを含む情報処理回路であって、複数レ
ジスタ特定情報をオブジェクトコードに有する連続プッ
シュ命令及び連続ポップ命令の少なくとも一方の命令の
オブジェクトコードを解読して、該オブジェクトコード
に基づき制御信号を出力する手段と、前記連続プッシュ
命令及び前記連続ポップ命令の少なくとも一方を実行す
る際、前記複数のレジスタからメモリに設けられたスタ
ックへ連続して複数回プッシュする処理及び前記スタッ
クから前記複数のレジスタに連続して複数回ポップする
処理の少なくとも一方を、前記制御信号及び前記スタッ
クポインタ専用レジスタの内容により特定されるメモリ
アドレス及び前記複数レジスタ特定情報とに基づき行う
手段を含むことを特徴とする。
【0064】本発明は、汎用レジスタをスタックポイン
タとして使用する場合の前記連続プッシュ命令及び前記
連続ポップ命令に関する。
【0065】本発明によれば、前記連続プッシュ命令や
前記連続ポップ命令を実行すると、push命令を連続
して複数回実行する場合やpop命令を連続して複数回
実行する場合と同じ効果が得られる。即ち複数のレジス
タとスタックとの間のデータのやり取り及び該やり取り
に伴うスタックポインタの更新を1命令で実行すること
が出来る。このため複数のレジスタとスタックとの間の
データの転送を行う場合、push命令あるいはpop
命令をくり返すことによりオブジェクトコードサイズが
増大するのを防ぐことができる。またプログラム実行ス
テップが長くなることを回避し、無駄なサイクルを消費
することなく、割り込み処理及びサブルーチンコール・
リターンの処理速度の向上を図ることができる。
【0066】本発明はの情報処理回路はRISC方式で
あることを特徴とする。
【0067】RISC方式の情報処理回路は、ハードウ
エアを小型化して高速化を図ることを目的として設計さ
れている。このため汎用レジスタを多く有しており、命
令セットを汎用性の高いものに絞ることで命令数の削減
を図っている。
【0068】従ってRISC方式の情報処理回路では、
スタックポインタを汎用レジスタに割り当て、スタック
ポインタを扱う場合は汎用レジスタを扱う命令セットを
用いて処理を行っていた。しかしこの様な方法では命令
長が大きくなりメモリの使用効率がよくない。
【0069】本発明によれば、RISC方式の情報処理
回路において、命令長を削減することが出来、メモリの
使用効率を上げることが出来る。
【0070】本発明の情報処理回路は、固定長の命令を
解読し、該命令に基づき実行処理を行うことを特徴とす
る。
【0071】固定長命令を用いると可変長命令を用いる
場合に比べ、命令のデコードに要する時間を短縮でき、
情報処理回路の回路規模を小さくすることが出来る。固
定長命令を採用する場合、命令に冗長な部分が出来るの
を防ぎメモリを効率よく使用するためには、各命令に必
要なビット数はばらつきが少なく、出来るだけ短いほう
が好ましい。
【0072】本発明によれば、一般に命令長が長くなり
がちなスタックポインタを取り扱う命令の命令長を短く
することができる。従って固定長命令を採用した場合で
あっても命令に冗長な部分が出来るのを防ぎ、メモリを
効率よく使用することが出来る。
【0073】本発明のマイクロコンピュータは、前述し
た本発明の情報処理回路と記憶手段と外部との入出力を
行う手段とを含むことを特徴とする。
【0074】本発明によれば、処理速度が速くメモリの
使用効率のよい、マイクロコンピュータを提供すること
が出来る。
【0075】本発明のマイクロコンピュータは、前記ス
タックポインタに関連づけてオート変数の記憶領域が確
保される構造を有する言語のプログラムが実行されるこ
とを特徴とする。
【0076】スタックポインタに関連づけてオート変数
の記憶領域が確保される構造を有するする言語として、
例えばC言語がある。この様な言語のプログラムの処理
を本発明のマイクロコンピュータが行う場合、処理速度
及びメモリの使用効率を効果的に向上させることが出来
る。
【0077】本発明の電子機器は、前述した本発明のマ
イクロコンピュータを含むことを特徴とする。
【0078】本発明によれば、処理速度が速くメモリの
使用効率のよい情報処理回路を内蔵しているため、安価
で高機能な電子機器を提供することが出来る。
【0079】
【発明の実施の形態】以下、本実施例を図面に基づき説
明する。
【0080】(実施例1) (1)本実施例のCPUの構成 本実施例のCPUはパイプラインとロード・ストア型の
アーキテクチュアによって、ほとんど全ての命令を1サ
イクルで実行する。全ての命令は16ビットの固定長で
記述されており、本実施例のCPUの処理する命令は極
めて小さいオブジェクトコードサイズを実現している。
【0081】特に本実施例のCPUは、スタックポイン
タを取り扱う処理を効率よく記述し実行するためにスタ
ックポインタ専用のレジスタを有し、該スタックポイン
タ専用レジスタを暗黙のオペランドとするオブジェクト
コードを有するスタックポインタ専用命令群の命令セッ
トを解読、実行出来るよう構成されている。
【0082】図1は、本実施例のCPUの回路構成の概
略を説明するための図である。
【0083】本CPU10は、汎用レジスタ11、プロ
グラムカウンタが格納されているPC12、プロセッサ
ーステータスレジスタ(PSR)13、スタックポイン
タ専用のレジスタであるSP14を含むレジスタセット
と、命令デコーダ20、即値生成器22、アドレス加算
器30、ALU40、PCインクリメンタ44及び各種
内部バス72、74、76、78、各種内部信号線8
2、84、86、88等を含む。
【0084】前記命令デコーダ20は、入力したオブジ
ェクトコードを解読し、該命令を実行するために必要な
処理を行い、必要な制御信号を出力する。なお、該命令
デコーダ20は前記スタックポインタ専用命令のオブジ
ェクトコードを解読して該命令に基づき制御信号を出力
する前記解読手段としても機能する。
【0085】即値生成器22は、オブジェクトコードに
含まれた即値に基づき、実行時に使用する32ビットの
即値データを生成したり、各命令の実行に必要な0、±
1、±2、±4のconstantデータを生成したりする。P
Cインクリメンタ44は、命令の実行サイクルに基づき
PC12に格納されたプログラムカウンタの更新を行
う。アドレス加算器30は、各種レジスタに格納されて
いる情報や即値生成器22で生成される即値データの加
算を行いメモリからデータを読み出す際に必要なアドレ
スデータを生成する。ALU40は数値演算や論理演算
を行う。
【0086】また、該CPUは内部に各種バスや信号線
を含んでいる。PA_BUS72やPB_BUS74は
ALU40の入力信号を伝送する機能等を有する。WW
_BUS76はALU40の演算結果を取り出して汎用
レジスタに伝送する機能等を有する。XA_BUS78
は汎用レジスタ11やSP14から取り出したアドレス
データを伝送する機能等を有する。IA信号線82は、
CPU内部の各部から外部のI_ADDR_BUS92
へアドレスデータを伝送する。DA信号線84は、CP
U内部の各部から外部のD_ADDR_BUS96へア
ドレスデータを伝送する。DIN信号線86は、CPU
外部のD_DATA_BUS98からCPU内部の各部
へデータを伝送する。DOUT信号線88は、CPU内
部の各部から外部のD_DATA_BUS98へデータ
を伝送する。IA入力切換83はIA信号線82へ出力
される各種信号(PA_BUS72、WW_BUS7
6、PC12、PC+2)の切換を行う。DOUT入力
切換89はDOUT信号線88へ出力される各種信号
(PA_BUS72、WW_BUS76、PC12、P
C+2)の切換を行う。
【0087】また、CPU10の前記各部は前記命令デ
コーダ20の出力する制御信号に基づき、命令の実行を
おこなうもので、スタックポインタ専用命令群を、前記
制御信号及び前記スタックポインタ専用レジスタの内容
に基づき実行する前記実行手段としても機能する。
【0088】本CPU10は、16ビットの命令データ
バス(I_DATA_BUS)94、命令データアクセ
スのための命令アドレスバス(I_ADDR_BUS)
92と、32ビットのデータバス(D_DATA_BU
S)98と、データアクセスのためのデータアドレスバ
ス(D_ADDR_BUS)96と、コントロール信号
のための図示しないコントロールバスを介して外部と信
号のやり取りを行う。
【0089】(2)本実施例のCPU有するレジスタセ
ットの説明 次に本実施例のCPUが有するレジスタセットの概要に
ついて、必要な部分について説明する。
【0090】図2に本実施例のCPUの持つレジスタセ
ットを示す。本実施例のCPUは、汎用レジスタ11を
16本と、PC12、PSR13、SP14、図示しな
いALR(算術演算ローレジスタ)15、図示しないA
HR(算術演算ハイレジスタ)16を含むレジスタセッ
トを有している。
【0091】前記汎用レジスタ11は機能的に等価な3
2ビットのレジスタであり、R0からR15と名付けら
ている。該汎用レジスタ11はデータ演算時及びアドレ
ス計算時に使用される。
【0092】またPC12は、32ビット長のインクリ
メンタルカウンタであり、現在実行中の命令のアドレス
であるプログラムカウンタを保持している。本文中で、
レジスタ名を指すときはPCといい、PCに格納された
値をさすときはプログラムカウンタという。
【0093】該PC12は、ロード命令等で直接アクセ
スすることは出来ない。call命令、int命令や割
り込み、例外が発生すると、プログラムカウンタはPC
12から読み出されスタックに退避される。この様に分
岐命令が実行されると飛びさきアドレスがPCに設定さ
れる。条件分岐命令で分岐する場合も同様である。そし
て、ret命令やreti命令により、戻りさき命令ア
ドレスがスタックより読み出され、PC12に復帰され
る。
【0094】PSR(プロセッサステータスレジスタ)
13は、フラグが割り当てられている32ビットレジス
タであり、CPUの現在の状態を保持している。int
命令、割り込み、例外等が発生すると、それぞれの処理
ルーチンに分岐する際に、その時のPSRの状態がスタ
ックに退避される。逆にreti命令の実行で、退避さ
れていた値がPSRに復帰される。
【0095】SP14は32ビットのスタックポインタ
専用のレジスタで、スタックの先頭番地をさすスタック
ポインタが格納されている。本文中で、レジスタ名を指
すときはSPといい、SPに格納された値をさすときは
スタックポインタという。但し、スタックポインタは常
にワードの境界を指しているため、前記スタックポイン
タの下位の2ビットは常に0である。
【0096】該スタックポインタは、本実施例で用意し
ているスタックポインタ専用命令群に含まれる各種命令
の実行や、トラップの発生に伴い更新される。スタック
ポインタの更新を行うスタックポインタ専用命令として
は、call命令やret命令等の他のルーチンへ分岐
する命令、スタックポインタ移動命令、pushn命
令、popn命令等がある。例えばcall命令が実行
されると、まずスタックポインタがワードサイズ(4)
だけデクリメント(−4)され、PC12がスタックに
退避される。また、ret命令が実行されると、逆にス
タックより戻りさきアドレスがPCにロードされ、スタ
ックポインタはワードサイズ分インクリメント(+4)
される。int命令が実行されたり、または、割り込
み、例外等が発生したときには,スタックにPCやPS
Rの値が以下の手順で退避される。
【0097】1)SP=SP−4 2)スタックポインタで指されるスタックの先頭番地に
PCを退避する。
【0098】3)SP=SP−4 4)スタックポインタで指されるスタックの先頭番地に
PSRを退避する。
【0099】reti命令が実行されると、上記とは逆
の処理を行ってCPUは以前の状態に戻る。このように
call命令やret命令やint命令が実行される
と、該実行に基づきスタックポインタが更新される。各
命令の詳細については後述する。
【0100】また、本実施例においてトラップとは、命
令の実行に非同期に発生する割り込みと命令の実行によ
り発生する例外を合わせたものをいう。トラップが発生
すると、CPUはプログラムカウンタ(PC)とプロセ
ッサステータスレジスタ(PSR)をスタックに退避し
てからトラップテーブルよりベクタテーブルを読み出
し、そのトラップに対応する処理ルーチンへ分岐する。
トラップの発生に伴って,PSR中のIEビット(割り
込みイネーブル)はクリアされ、それ以上のマスク可能
割り込みの発生が禁止される。再び、マスク可能な外部
割り込みをイネーブルにするには,PSRに対するロー
ド命令を使ってPSRのIEビットに1を書き込んで設
定する。
【0101】トラップ処理から元のルーチンに復帰する
には、reti命令を使う。reti命令を実行する
と、CPUはスタックからPSR、PCの順に読み出し
て、PSRを元の値に戻すとともに、戻りアドレスに分
岐する。なお、例外にはデバッグ例外、アドレス不整列
例外、オーバーフロー例外、ゼロ除算例外等がある。
【0102】ALR(算術演算ローレジスタ)15及び
AHR(算術演算ハイレジスタ)16については説明を
省略する。
【0103】CPUの持つ特殊レジスタPSR13、S
P14、ALR15、AHR16はロード命令を使って
汎用レジスタとの間でデータ転送を行うことが出来る。
各レジスタは、特殊レジスタ番号を持っており、この番
号を使ってアクセスされる。
【0104】 特殊レジスタ名 特殊レジスタ番号 アセンブラの記述方法 プロセッサステータスレジスタ 0 %PSR SP 1 %SP 算術演算ローレジスタ 2 %ALR 算術演算ハイレジスタ 3 %AHR (3)スタック及びスタックポインタについての説明 スタックはメモリにもうけられた一時記憶領域で、連続
した領域の下方からデータが棚状に積み重ねて記憶され
る。スタックポインタは、スタックメモリの一番上つま
り最後に記憶されたデータのアドレスを示している。
【0105】スタックポインタの一般的な動作について
図3を用いて説明する。
【0106】図3の100はメモリに設けられたスタッ
ク領域を表している。斜線部分102が最後に格納され
たデータであるとすると、SP14に格納されたスタッ
クポインタは、該データのメモリアドレス1000を示
している。なお、斜線部分102の下方領域104は既
にデータが格納されている領域で、斜線部分102の上
方領域106はこれからデータが格納される領域を示し
ている。
【0107】スタックポインタは常にワードの境界を指
しているため、スタックに情報を書き込む時はSP14
の格納されたスタックポインタを4だけ上に動かして、
該スタックポインタのさす場所に情報を格納する。また
スタックに格納されている情報を取り出すときは、現在
SP14が示すアドレスの情報をとりだして、SP14
に格納されたスタックポインタを4だけ下に動かす。こ
のようにスタックポインタは常に最後にスタックに格納
された情報の格納アドレスを示している。
【0108】(4)スタックポインタ専用命令群につい
ての説明 通常RISC方式のCPUでは汎用レジスタをスタック
ポインタとして使用するが、本実施例ではスタックポイ
ンタ専用のレジスタであるSP14を有しており、前記
スタックポインタ専用命令群の操作対象となる。
【0109】前記スタックポインタ専用命令群は、スタ
ックポインタ専用のレジスタであるSP14を暗黙のオ
ペランドとし、SP14をもちいて操作をおこなう複数
の命令の総称である。該スタックポインタ専用命令群
は、SP相対ロード命令(ld等)、スタックポインタ
移動命令(add、sub)、サブルーチンへ分岐する
命令(call等)及びリターン命令(ret等)等の
他のルーチンへ分岐する命令、連続プッシュ命令(pu
shn)、連続ポップ命令(popn)を含む。
【0110】これらにの命令に共通するのは、スタック
ポインタ専用命令であるため、オブジェクトコードにス
タックポインタを特定するための情報が必要ないという
ことである。従ってスタックポインタを用いる処理を短
い命令長で効率よく記述することができるという効果も
共通する。
【0111】また、これらの命令を用いるとメモリに設
けられたスタックに記憶されている情報の処理を効率よ
く行うことができる。また、割り込み処理及びサブルー
チンコール・リターンの処理を効率よく行うことが出来
る。
【0112】ここで、サブルーチンがコールされる場合
の前記スタックポインタ専用命令の使用例とメモリにも
うけられたスタックの使用状態及びスタックポインタの
状態について図4を用いて説明する。図4のメインプロ
グラム500とサブルーチン520は、Cコンパイラが
作成したオブジェクトコードで記述されたプログラムで
ある。540はメモリ上のスタックの状態を示してい
る。502は汎用レジスタR0〜R3を使用する処理が
行われていることを示している。506はサブルーチン
コール命令を示している。メインプログラム500でサ
ブルーチンコール命令が実行されるサブルーチンコール
命令前、即ち504に示す前の命令が実行された後スタ
ックポインタ(SP)はメモリ上のスタック540上の
のアドレスを指していたとする。前記サブルーチンコ
ール命令が実行されると、実行の制御はサブルーチン5
20にわたる。このとき本実施例では、前記スタックポ
インタ専用命令であるサブルーチンへ分岐する命令(c
all命令)が実行される。該命令が実行されると、ス
タックポインタ(SP)の値は自動的に−4だけインク
リメントされ(図4のSP参照)、該スタックポイン
タSPが指しているスタック上のエリア544にメイ
ンプログラムへのリターンアドレスが格納される。
【0113】そして、サブルーチン520側では、実行
の最初にメインプログラムで使用されていた汎用レジス
タR0〜R3に格納されていた値をスタックに転送する
処理を行う。524は、汎用レジスタR0〜R3に格納
されていた値をスタックに待避する処理を行うスタック
ポインタ専用命令である連続プッシュ命令(push
n)を示している。該命令が実行されると汎用レジスタ
R0〜R3に格納されていた値が連続的にスタックに転
送され、図4の550に示すように、スタック540に
格納される。この処理の実行が終わる(524)と、
スタックポインタ(SP)は546を指している(S
P)。
【0114】次にサブルーチン520では、サブルーチ
ンで使用するオート変数領域の確保を行う。526に示
したadd命令は、スタックポインタ専用命令であるス
タックポインタ移動命令であり、スタックポインタを上
方に移動させサブルーチン520で使用するスタック領
域を確保する。該命令が実行されるとスタックポインタ
(SP)はXバイトだけ上方の位置548に移動し(
SP)、注2)に示すサブルーチンが使用するオート変
数の領域が確保される。
【0115】528はサブルーチン520でオート変数
と汎用レジスタR0〜R3を用いた処理を行うことを示
している。このときスタックポインタの位置はSPを
指しており、オート変数のロードは、スタックポインタ
専用命令であるSP専用ロード命令をもちいて行われ
る。
【0116】529は、メモリ上に格納されたオート変
数S1を汎用レジスタR1に転送する前記SPロード命
令を示している。前記オート変数S1はスタックポイン
タ(SP)からYバイトだけオフセット値を有する場
所に格納されている。前述したようにサブルーチンの5
28の処理の最中にはスタックポインタは移動しないの
で、オート変数のメモリアドレスは、スタックポインタ
+オフセット値で特定され、前記SP専用ロード命令を
用いて効率良く汎用レジスタとのやり取りを行うことが
できる。
【0117】また、サブルーチン520からメインプロ
グラム500に戻る前には、スタックに待避されていた
汎用レジスタR0〜R3の値を汎用レジスタR0〜R3
に復帰させ、スタックポインタがメインルーチンへのリ
ターンアドレスが格納されているエリア544を指すよ
うにしなければならない。そのためにまず、526のス
タックポインタ移動命令で移動させたスタックポインタ
をもとの位置に戻してやる。530に示したsub命令
は、スタックポインタ専用命令であるスタックポインタ
移動命令であり、スタックポインタを下方に移動させ
る。該命令が実行されると、スタックポインタは546
に移動する(SP参照)。次にスタックに格納されて
いる情報550を汎用レジスタR0〜R3に復旧する処
理を行う。532は、スタックの情報を汎用レジスタR
0〜R3に転送するする処理を行うスタックポインタ専
用命令である連続ポップ命令(popn)を示してい
る。該命令が実行されるとスタックに格納されていた値
550が汎用レジスタR0〜R3に連続的に転送され、
図4の550に示すように、スタック540に格納され
る。この処理の実行が終わる(532)と、スタック
ポインタは544を指している(SP参照)。
【0118】534はリターン命令を示している。前記
リターン命令が実行されると、実行の制御はメインプロ
グラム500にわたる。このとき本実施例では、前記ス
タックポインタ専用命令であるリターン命令(ret命
令)が実行される。該命令が実行されると、SPが指
すスタックエリアに格納されたメインプログラムへのリ
ターンアドレスが示す命令に分岐する、即ちメインプロ
グラム500の次の命令507に戻る。そしてスタック
ポインタの値は自動的に+4だけインクリメントされメ
インプログラム500が使用するスタックの先頭エリア
に移動する(図4のSP参照)。
【0119】以下前記各スタックポインタ専用命令につ
いてそれぞれ命令の説明及び該命令を実行するための回
路構成及び実行時の動き等について詳細に説明する。
【0120】(5)スタックポインタ相対ロード命令 前述したようにCコンパイラはオート変数の領域をスタ
ックポインタに関連づけて記憶するオブジェクトコード
を作成する。具体的には、Cコンパイラはスタックポイ
ンタからオフセットがXのところにYバイトだけオート
変数の領域を確保する仕様になっている。
【0121】図5は、メモリ上のオート変数をレジスタ
に転送する処理を説明するための図である。オート変数
aはワードデータ、オート変数b、cはハーフワードデ
ータ、オート変数d〜gはバイトデータである。SPに
格納されたスタックポインタはスタック上のオート変数
が格納される領域600の先頭領域のアドレスである1
000を示している。オート変数aを格納するためのエ
リアとして前記スタックポインタをメモリアドレスとす
るスタック上のエリアが、オート変数b、cを格納する
ためのエリアとしてそれぞれスタックポインタ+2、ス
タックポインタ+4をメモリアドレスとするスタック上
のエリアが、オート変数d〜gを格納するためのエリア
としてそれぞれスタックポインタ+5、スタックポイン
タ+6、スタックポインタ+7、スタックポインタ+8
をメモリアドレスとするスタック上のエリアが確保され
ている。そして所与の処理を実行する際には、スタック
ポインタ+オフセット値のメモリアドレスで特定される
オート変数と汎用レジスタ間でデータの転送処理が必要
となる。
【0122】本実施例のCPUでは、このような転送処
理を短いオブジェクトコードで記述し効率良く実行する
ために、スタックポインタ専用命令の一つであるSP相
対ロード命令として、次に示す命令セットを用意してい
る。
【0123】 ld.b %Rd、[%sp+imm6] …(1) ld.ub %Rd、[%sp+imm6]…(2) ld.h %Rd、[%sp+imm7] …(3) ld.uh %Rd、[%sp+imm7]…(4) ld.w %Rd、[%sp+imm8] …(5) ld.b [%sp+imm6]、%Rs …(6) ld.h [%sp+imm7]、%Rs …(7) ld.w [%sp+imm8]、%Rs …(8) (1)〜(8)は命令コードをアセンブラで記述したも
のである。(1)はスタックからバイトデータをサイン
拡張してレジスタに転送する命令であり、(2)はスタ
ックからバイトデータをゼロ拡張してレジスタに転送す
る命令であり、(3)はスタックからハーフワードデー
タをサイン拡張してレジスタに転送する命令であり、
(4)はスタックからハーフワードデータをゼロ拡張し
てレジスタに転送する命令であり、(5)はスタックか
らワードデータをレジスタに転送する命令であり、
(6)はレジスタからバイトデータをスタックに転送す
る命令であり、(7)はレジスタからハーフワードデー
タをスタックに転送する命令であり、(8)はレジスタ
からワードデータをスタックに転送する命令である。
【0124】[%sp+imm6]、[%sp+imm7]、
[%sp+imm8]は、それぞれ即値オフセット情報を
表しており、該即値オフセット情報に基づき実行時に生
成されるオフセット値とSP14に格納されたスタック
ポインタの値を加算してメモリアドレスが生成される。
[%sp+imm6]はメモリ上のデータのデータサイズ
がバイトの時、[%sp+imm7]はメモリ上のデータ
のデータサイズがハーフワードの時、[%sp+imm
8]はメモリ上のデータのデータサイズがワードの時の
即値オフセット情報である。これらはいずれも、後述す
る図6(A)に示す用にオブジェクトコード上では6ビ
ットの即値オフセット情報614として記述されてい
る。しかし命令実行時には、imm7の場合(即ちデータ
サイズがハーフワードの場合)、即値オフセット情報6
14は1ビット左論理シフトしてスタックポインタに加
算すべきオフセット値が生成される。また、imm8の場
合(即ちデータサイズがワードの場合)、即値オフセッ
ト情報614は2ビット左論理シフトしてスタックポイ
ンタに加算すべきオフセット値が生成される。
【0125】ここにおいてスタックとはメモリに設けら
れた一時記憶領域をいい、前記メモリアドレスで、例え
ば図5に示すスタック上のオート変数(a〜g)の位置
を指定することができる。
【0126】図6(A)は、前記(1)〜(8)のSP
相対ロード命令のビットフィールド610である。図6
(A)に示すようにSP相対ロード命令は、操作機能が
メモリとレジスタ間のデータの転送であることを示すオ
ペコード612(6ビット)、即値で指定された即値オ
フセット情報(6ビット)614と、転送対象となる汎
用レジスタのレジスタ番号616(4ビット)を含み、
16ビットのオブジェクトコードを有している。前記オ
ペコード612はSP14を操作対象とするロード命令
であることを示す共通のコードと前記データサイズ、サ
イン拡張及びゼロ拡張の別に応じて与えられる異なるコ
ードとを含んでいる。従ってオペコードによりSP14
に格納されたスタックポインタを操作対象とすることが
わかるため、オブジェクトコードのオペランドにスタッ
クポインタに関する情報を必要としない。即値オフセッ
ト情報614は転送対象となるデータのスタックポイン
タからのオフセット値を生成するための情報である。こ
れは、前述したようにデータサイズを問わず6ビットで
指定される。転送対象となるレジスタのアドレス616
には、前記(1)〜(5)の場合はスタックからよみだ
されたデータが格納されるレジスタのレジスタ番号が、
前記(6)〜(8)の場合はスタックに書き込まれるデ
ータが格納されているレジスタのレジスタ番号が入って
いる。
【0127】図6(B)はスタックポインタとして汎用
レジスタを用いた場合に使用する汎用レジスタを操作対
象とするロード命令(以下汎用ロード命令という)のオ
ブジェクトコードのビットフィールド620の例を示し
ている。
【0128】図6(B)に示すように汎用ロード命令
は、操作機能がメモリと汎用レジスタ間のデータの転送
であることを示すオペコード622(6ビット)、即値
で指定された即値オフセット情報624(6ビット)と
スタックポインタとして使用する汎用レジスタを特定す
る第一のレジスタ番号626(4ビット)と、転送対象
となる汎用レジスタを特定する第二のレジスタ番号62
8(4ビット)を含み、20ビットのオブジェクトコー
ドを有している。汎用マイクロコンピュータでは命令長
は8ビット単位なので24ビット若しくは32ビット命
令になる。
【0129】図6(A)(B)は、いずれもスタックポ
インタにオフセット値を加算して特定されるメモリアド
レスとレジスタの間でのデータの転送処理を行う場合に
使用する命令のオブジェクトコードを示しているが、同
図に示すように、SP相対ロード命令は汎用ロード命令
に比べて短いオブジェクトコードで記述することができ
る。
【0130】以下、スタックからレジスタにデータを転
送する命令として(5)の命令(スタックからレジスタ
にワードデータを読み出す命令なので、以下ワードデー
タ読み出しのSP相対ロード命令という)、レジスタか
らスタックにデータを転送する命令として(8)の命令
(レジスタからスタックにワードデータを取り込む命令
なので、以下ワードデータ書き込みのSP相対ロード命
令という)を例にとりこれらの命令を実行するための構
成及び実行時の動作について説明する。
【0131】まず図1を用いてこれらの命令を実行する
ために必要なハードウエア構成について説明する。これ
らの命令は外部のメモリ(ROM)52よりI_DAT
A_BUS94を介して伝送され、CPU10の命令デ
コーダ20に入力される。該命令デコーダ20で、命令
が解読され命令の実行に必要な図示しない各種信号が出
力される。また前記即値生成器22は、データサイズに
応じて前記即値オフセット情報614の左論理シフトを
行い、必要に応じてサイン拡張及びゼロ拡張行い実行に
使用するオフセット値を生成し、PB_BUS74に出
力する。SP14はスタックポインタを格納しており、
この値はアドレス加算器30の入力に接続されたXA_
BUS78に出力できる。アドレス加算器30のもう一
方の入力は、即値生成器22の出力であるPB_BUS
74に接続されている。アドレス加算器30の出力(A
DDR)は、DA信号線84を介して外部のD_ADD
R_BUS96に接続されている。
【0132】バスコントロールユニット(BCU)60
は、CPUから出力される各種リクエスト信号(外部バ
スに出力された信号等)に基づき、スタックエリアを含
むメモリ(RAM、ROM)50、52とのデータの入
出力を制御し、READ、WRITE制御信号を出力す
る。
【0133】まずワードデータ読み出しのSP相対ロー
ド命令の実行時の動作について説明する。
【0134】ワードデータ読み出しのSP相対ロード命
令が実行されると、SP14に格納されたスタックポイ
ンタの値と、前記即値オフセット情報614に基づき即
値生成器22が生成したオフセット値が加算され、メモ
リ読み出し用のメモリアドレスが生成される。そして該
メモリアドレスに基づきメモリ上の情報が読み出され、
オブジェクトコードの前記レジスタ番号616で特定さ
れる汎用レジスタに転送される。
【0135】図7はワードデータ読み出しのSP相対ロ
ード命令の動作を説明するためのフローチャート図であ
る。
【0136】前記命令の実行の最初にSP14に格納さ
れているスタックポインタがXA_BUS78に出力さ
れる(ステップ210)。また、即値生成器22が即値
オフセット情報から生成したオフセット値immがPB_
BUS74に出力される(ステップ212)。アドレス
加算器30は、前記XA_BUS78上の値と前記PB
_BUS74上の値を加算し、結果(ADDR)である
メモリの読み出しアドレスをDA信号線84を介してD
_ADDR_BUS96に出力する(ステップ214、
ステップ216)。そしてCPUからBCU60へのデ
ータ読み出しリクエスト信号がアクティブになり、外部
メモリのリードサイクルを実行する(ステップ21
8)。即ち前記BCU60は該リクエスト信号に基づ
き、前記読み出しアドレスをメモリアドレスとしてメモ
リからデータが読み出され、D_DATA_BUS98
に出力されるよう制御する。D_DATA_BUS98
上のデータはDIN信号線86を介してWW_BUS7
6に出力される(ステップ220)。そしてWW_BU
S76上の値は命令コードの転送対象となるレジスタ
(Rs/Rd)のアドレス(4ビット)616で指定さ
れたレジスタ番号を有するレジスタ(%Rd)に格納さ
れる(ステップ222)。
【0137】次にワードデータ書き込みのSP相対ロー
ド命令の実行時の動作について説明する。
【0138】ワードデータ書き込みのSP相対ロード命
令が実行されると、SP14に格納されたスタックポイ
ンタの値と、前記即値オフセット情報614に基づき即
値生成器22が生成したオフセット値が加算され、メモ
リ書き込み用のメモリアドレスが生成される。そしてオ
ブジェクトコードの前記レジスタ番号616で特定され
る汎用レジスタに格納されている情報が、該メモリアド
レスに基づき特定されるメモリ上のエリアに転送され
る。
【0139】図8はワードデータ書き込みのSP相対ロ
ード命令の動作を説明するためのフローチャート図であ
る。
【0140】前記命令の実行の最初にSP14に格納さ
れているスタックポインタがXA_BUS78に出力さ
れる(ステップ230)。また、即値生成器22が即値
オフセット情報から生成したオフセット値immがPB_
BUS74に出力される(ステップ232)。アドレス
加算器30は、前記XA_BUS78上の値と前記PB
_BUS74上の値を加算し、結果(ADDR)である
メモリへの書き込みアドレスをDA信号線84を介して
D_ADDR_BUS96に出力する(ステップ23
4、ステップ236)。また、命令コードの転送対象と
なるレジスタ(Rs/Rd)のアドレス(4ビット)6
16で指定されたレジスタ番号を有するレジスタ(%R
d)に格納されているデータがPA_BUS72に出力
される(ステップ238)。PA_BUS72上のデー
タはDOUT信号線88を介して、D_DATA_BU
S98に出力される(ステップ240)。そしてCPU
からBCU60へのデータ書き込みリクエスト信号がア
クティブとなり、外部メモリのライトサイクルを実行す
る(ステップ242)。即ち前記BCU60は前記リク
エスト信号に基づき、前記書き込みアドレスをメモリア
ドレスとして、D_DATA_BUS98で転送されて
きたデータをメモリ50に書き込む動作を制御する。
【0141】(6)スタックポインタ移動命令 図9(A)〜(F)は、複数のルーチンにわたってプロ
グラムが実行される場合の各ルーチンによるメモリ上の
スタックの使用状態及びスタックポインタの状態を説明
するための図である。
【0142】図9(A)に示すMAINルーチン210
の所与の処理aの実行時におけるメモリ上のスタック領
域の状態及びスタックポインタ(SP14に格納されて
いる値)の状態を図9(D)に示している。222はM
AINルーチン210で使用するためのスタック領域を
示しており、スタックポインタは222の先頭アドレス
232を示している。
【0143】図9(B)のSUB1ルーチン212は、
前記MAINルーチン210から呼ばれて実行されるサ
ブルーチンである。該SUB1ルーチン212の所与の
処理b213の実行時におけるメモリ上のスタック領域
の状態及びスタックポインタ(SPに格納されている
値)の状態を図9(E)に示している。224はSUB
1ルーチン212で使用するためのスタック領域を示し
ており、スタックポインタは224の先頭アドレス23
4を示している。
【0144】図9(C)のSUB2ルーチン214は、
前記SUB1ルーチン210から呼ばれて実行されるサ
ブルーチンである。該SUB2ルーチン214の所与の
処理c215の実行時におけるメモリ上のスタック領域
の状態及びスタックポインタ(SPに格納されている
値)の状態を図9(F)に示している。226はSUB
2ルーチン214で使用するためのスタック領域を示し
ており、スタックポインタは226の先頭アドレス23
6を示している。
【0145】このように複数のサブルーチンにわたって
実行が行われる場合、各ルーチンで使用するスタック領
域が移動するため、それに伴いスタックポインタの値
を、各ルーチンで使用するスタック領域の先頭に移動す
ることが行われる。
【0146】本実施例のCPUでは、このようなスタッ
クポインタの移動処理を短いオブジェクトコードで記述
し効率良く実行するために、スタックポインタ専用命令
の一つであるスタックポインタ移動命令として、次に示
す命令セットを用意している。
【0147】 add %sp、imm12 …(9) sub %sp、imm12 …(10) (9)(10)は命令コードをアセンブラで記述したも
のである。(9)はSP14に格納されたスタックポイ
ンタに対する即値加算命令であり、(10)はSP14
に格納されたスタックポインタに対する即値減算命令で
ある。imm12は、命令のオブジェクトコードに含まれ
た10ビットの即値を2ビット左方向にシフトした後、
ゼロ拡張されて32ビットデータとなり、SP14に格
納されたスタックポインタとの演算に用いられる。
【0148】図10(A)は、前記(9)(10)のス
タックポインタ移動命令のビットフィールド630であ
る。図10(A)に示すようにスタックポインタ移動命
令は、操作機能がSP14に格納されたスタックポイン
タへの移動情報の加算及び減算であることを示すオペコ
ード632(6ビット)、即値で指定された即値移動情
報634(10ビット)を含み、16ビットのオブジェ
クトコードを有している。前記オペコード632はSP
14を操作対象とするスタックポインタ移動命令である
ことを示す共通のコードと加算及び減算の別に応じて与
えられる異なるコードとを含んでいる。従ってオペコー
ドによりSP14に格納されたスタックポインタを操作
対象とすることがわかるため、オブジェクトコードのオ
ペランドにスタックポインタに関する情報を必要としな
い。即値移動情報634はスタックポインタに加算又は
減算を行うオフセット値を生成するための情報である。
【0149】図10(B)はスタックポインタとして汎
用レジスタを用いた場合に使用する加算及び減算命令
(以下汎用演算命令という)のオブジェクトコードのビ
ットフィールド640の例を示している。
【0150】図10(B)に示すように汎用演算命令
は、操作機能が汎用レジスタの値への即値演算情報の加
算及び減算であることを示すオペコード642(6ビッ
ト)、即値で指定された即値演算情報644(10ビッ
ト)と操作対象となる汎用レジスタを特定するレジスタ
番号646(4ビット)とを含み、20ビットのオブジ
ェクトコードを有している。汎用マイクロコンピュータ
では命令長は8ビット単位なので24ビット若しくは3
2ビット命令になる。
【0151】図10(A)(B)は、いずれもスタック
ポインタに即値を加算及び減算する処理を行う場合に使
用する命令のオブジェクトコードであるが、同図に示す
ように、スタックポインタ移動命令は汎用演算命令に比
べて短いオブジェクトコードで記述することができる。
【0152】以下、(9)のSPに対する即値加算命令
(以下加算スタックポインタ移動命令という)と、(1
0)のSPに対する即値減算命令(以下減算スタックポ
インタ移動命令という)を実行するための構成及び実行
時の動作について説明する。
【0153】まず図1を用いてこれらの命令を実行する
ために必要なハードウエア構成について説明する。これ
らの命令は外部のメモリ(ROM)52よりI_DAT
A_BUS94を介して伝送され、CPU10の命令デ
コーダ20に入力される。該命令デコーダ20で、命令
が解読され命令の実行に必要な図示しない各種信号が出
力される。また前記即値生成器22は、前記即値移動情
報634の10ビットを2ビット左論理シフトし、ゼロ
拡張してPA_BUS72に出力する。SP14はスタ
ックポインタを格納しており、この値はXA_BUS7
8に出力される。XA_BUS78はALU40の入力
となるPB_BUS74に接続されている。ALU40
のもう一方の入力は、即値生成器22の出力であるPA
_BUS72に接続されている。ALU40の出力は、
WW_BUS76に接続されている。WW_BUS76
はSPの入力に接続されている。
【0154】まず加算スタックポインタ移動命令の実行
時の動作について説明する。
【0155】加算スタックポインタ移動命令が実行され
ると、SP14に格納されたスタックポインタの値と、
前記即値移動情報634に基づき即値生成器22が生成
した移動即値が加算されて新たなスタックポインタが生
成され、その値がSP14に格納される。
【0156】図11は加算スタックポインタ移動命令の
動作を説明するためのフローチャート図である。
【0157】前記命令の実行の最初にSP14に格納さ
れているスタックポインタがXA_BUS78に出力さ
れる(ステップ250)。そして前記XA_BUS78
上のデータはPB_BUS74に出力される(ステップ
252)。また、即値生成器22が即値移動情報に基づ
き生成した移動即値immがPA_BUS72に出力され
る(ステップ254)。ALU40は、前記PB_BU
S74上の値と前記PA_BUS72上の値を加算し、
結果をWW_BUS76に出力する(ステップ25
6)。そして、WW_BUS76上の値がSP14に入
力される(ステップ258)。
【0158】次に減算スタックポインタ移動命令の実行
時の動作について説明する。
【0159】減算スタックポインタ移動命令が実行され
ると、SP14に格納されたスタックポインタの値か
ら、前記即値移動情報634に基づき即値生成器22が
生成した移動即値が減算されて新たなスタックポインタ
が生成され、その値がSP14に格納される。
【0160】図12は減算スタックポインタ移動命令の
動作を説明するためのフローチャート図である。
【0161】前記命令の実行の最初にSP14に格納さ
れているスタックポインタがXA_BUS78に出力さ
れる(ステップ260)。そして前記XA_BUS78
上のデータはPB_BUS74に出力される(ステップ
262)。また、即値生成器22が即値移動情報に基づ
き生成した移動即値immがPA_BUS72に出力され
る(ステップ264)。ALU40は、前記PB_BU
S74上の値から前記PA_BUS72上の値を減算
し、結果をWW_BUS76に出力する(ステップ26
6)。そして、WW_BUS76上の値がSP14に入
力される(ステップ268)。
【0162】(7)分岐命令 図13は、call命令とret命令によるプログラム
の実行の制御を説明するための図である。図13に示す
ように、MAINルーチン300において、サブルーチ
ンSUB310へ分岐するためのcall命令が実行さ
れると(302)、制御がサブルーチンSUB310に
渡る。サブルーチンの最後には、ret命令(312)
が書かれており、この命令が実行されると、MAINル
ーチン300の前記call命令(302)の次の命令
(304)に戻る。従って、図13に示す場合の
順でプログラムが実行されることになる。このようにサ
ブルーチンSUB310での実行が終わるとMAINル
ーチン300に戻り、前記call命令(302)の次
の命令(304)から実行するため、サブルーチンSU
B310に分岐する際、どこかに戻り先のアドレスを記
憶しておくことが必要となる。このため、call命令
等のサブルーチンへ分岐する分岐命令実行の際には、図
4で説明したように戻り先アドレスをスタックに待避す
る処理が行われ、ret命令等のサブルーチンから戻る
分岐命令の実行の際には前記スタックから戻り先アドレ
スをプログラムカウンタに戻す処理(以下プログラムカ
ウンタの待避及び復旧の処理という)が行われる。
【0163】従来のRISC方式のCPUでは、前記プ
ログラムカウンタの待避及び復旧の処理をソフトウエア
的に実現していたため、call命令等の分岐命令を実
行する際には、これらの処理を実行するためオブジェク
トコード(アセンブラ命令)も必要であった。例えばc
all命令を実行する際には、スタックポインタをワー
ドサイズ(4)だけデクリメント(−4)して、プログ
ラムカウンタの値に基づきcall命令の次の命令のア
ドレスをスタックに格納するためのオブジェクトコード
(アセンブラ命令)が必要であった。
【0164】しかし本実施例のCPUは、前記call
命令やret命令が実行されると、前記プログラムカウ
ンタの待避及び復旧の処理も一緒に行うようなハードウ
エア構成を有している。従って、前記call命令やr
et命令と別に、前記プログラムカウンタの待避及び復
旧の処理を記述するオブジェクトコード(アセンブラ命
令)を必要としない。本実施例のCPUでは、このよう
な前記プログラムカウンタの待避及び復旧の処理を一命
令で実行するために、スタックポインタ専用命令の一つ
である分岐命令として次に示す命令セットを用意してい
る。
【0165】call sign9 …(11) call %Rb …(12) ret …(13) reti …(14) retd …(15) int imm2 …(16) brk …(17) (11)〜(17)は命令コードをアセンブラで記述し
たものである。(11)はPC相対サブルーチンコール
命令で、プログラムカウンタPCをベースアドレスとし
て、オペランドで指定されたディスプレースメント情報
sign9に基づき分岐先アドレスを相対的に指定して分岐
するコール命令である。(12)はレジスタ間接サブル
ーチンコール命令であり、オペランドで指定されたレジ
スタに格納されている分岐先アドレスに分岐するコール
命令である。(13)はサブルーチンからのリターン命
令である。(14)は割り込み又は例外処理ルーチンか
らのリターン命令である。(15)はデバッグ処理ルー
チンからのリターン命令である。(16)はソフトウエ
ア割り込み命令である。(17)はソフトウエア・デバ
ッグ割り込み命令である。
【0166】図14は、前記(11)のPC相対サブル
ーチンコール命令のビットフィールド650である。図
14に示すようにPC相対サブルーチンコール命令は、
操作機能がプログラムカウンタをベースアドレスとし
て、分岐先アドレスを相対的に指定してサブルーチンへ
分岐するコール命令であることを示すオペコード652
(8ビット)、即値で指定されたディスプレースメント
情報sign9(8ビット)654とを含み、16ビットの
オブジェクトコードを有している。前記8ビットの即値
は、実行時に1ビット左に論理シフトされた後、サイン
拡張される。
【0167】本実施例のCPUでは、call命令実行
には図14に示すオブジェクトコードのみで、プログラ
ムカウンタのスタックへの待避も実行することが出来
る。
【0168】以下、サブルーチンへ分岐する命令として
(11)のPC相対サブルーチンコール命令、サブルー
チンからリターンする命令として(13)のリターン命
令を例にとりこれらの命令を実行するための構成及び実
行時の動作について説明する。
【0169】まず図1を用いてこれらの命令を実行する
ために必要なハードウエア構成について説明する。これ
らの命令は外部のメモリ(ROM)52よりI_DAT
A_BUS94を介して伝送され、CPU10の命令デ
コーダ20に入力される。該命令デコーダ20で、命令
が解読され命令の実行に必要な図示しない各種信号が出
力される。また前記即値生成器22は、前記ディスプレ
ースメント情報654を1ビット左に論理シフトした後
サイン拡張して32ビットの即値ディスプレースメント
immを生成し、PB_BUS74に出力する。SP1
4はスタックポインタを格納しており、この値はアドレ
ス加算器30の入力に接続されたXA_BUS78に出
力できる。アドレス加算器30のもう一方の入力は、即
値生成器22の出力であるPB_BUS74に接続され
ている。アドレス加算器30の出力(ADDR)は、I
A信号線82を介して外部のI_ADDR_BUS92
に接続されている。
【0170】また、I_ADDR_BUS92及びI_
DATA_BUS94は命令のオブジェクトコードが格
納されたROM52に接続されており、バスコントロー
ルユニット(BCU)60は、CPUから出力される各
種リクエスト信号(外部バスに出力された信号等)に基
づき、メモリ(ROM)52から前記命令のオブジェク
トコードを読み出すREAD制御信号を出力する。
【0171】まずPC相対サブルーチンコール命令の実
行時の動作について説明する。
【0172】PC相対サブルーチンコール命令が実行さ
れると、図4で説明したように、PC12に格納された
プログラムカウンタの値がスタックに待避され、SP1
4に格納されたスタックポインタの値がワードサイズ
(4)だけディクリメントされる。そしてPC12にプ
ログラムカウンタと前記32ビットの即値ディスプレー
スメントを加算して得られた分岐先アドレスがセットさ
れる。
【0173】図15はPC相対サブルーチンコール命令
の動作を説明するためのフローチャート図である。
【0174】前記命令の実行の最初にSP14に格納さ
れているスタックポインタがXA_BUS78に出力さ
れる(ステップ270)。これはアドレス加算器の一方
の入力となり、即値生成器22が生成したconstantデー
タ(−4)がアドレス加算器30の他方の入力となる。
そしてアドレス加算器30で前記XA_BUS78上の
スタックポインタの値と−4を加算して戻りアドレスを
格納するスタックへの書き込みアドレス生成され、WW
_BUS76に出力される。また、前記書き込みアドレ
スはDA信号線84を介してD_ADDR_BUS96
に出力される。(ステップ272)。また、PCインク
リメンタ44ではPC12に格納されたプログラムカウ
ンタの値が+2されて戻りアドレスが生成されて、DO
UT信号線88を介してD_DATA_BUS98に出
力される(ステップ274)。そしてCPUからBCU
60へのデータ書き出しリクエスト信号がアクティブに
なり、外部メモリのライトサイクルを実行する(ステッ
プ276)。即ち前記BCU60は該リクエスト信号に
基づき、前記書き込みアドレスをメモリアドレスとして
メモリに設けられたスタックに前記戻りアドレスが格納
される。
【0175】そして、WW_BUS76上の値がSP1
4に出力される(ステップ278)。すなわちスタック
ポインタの値が−4した値に更新される。
【0176】次にPC12に格納されているプログラム
カウンタがXA_BUS78に出力される(ステップ2
80)。また、前記即値生成器22は、命令のオブジェ
クトコードに含まれている前記ディスプレースメント情
報654を1ビット左に論理シフトした後サイン拡張し
て32ビットの即値ディスプレースメントimmを生成
し、PB_BUS74に出力する。前記アドレス加算器
30はXA_BUS78上のプログラムカウンタとPB
_BUS74上の即値ディスプレースメントimmを加
算し分岐アドレス(ADDR)を生成し、IA信号線8
2を介して、I_ADDR_BUS92に出力する(ス
テップ282)。そしてCPUからBCU60への命令
読み出しリクエスト信号がアクティブとなり、外部メモ
リ(ROM)52のリードサイクルを実行し、分岐先の
命令のオブジェクトコードを読み出す(ステップ28
4)。
【0177】次にret命令の実行時の動作について説
明する。
【0178】ret命令が実行されると、図4で説明し
たように、スタックに待避されていたプログラムカウン
タの値がPC12に復帰され、SP14に格納されたス
タックポインタの値がワードサイズ(4)だけインクリ
メントされる。
【0179】図16はret命令の動作を説明するため
のフローチャート図である。
【0180】前記命令の実行前には、SP14に格納さ
れたスタックポインタは呼ばれたルーチンへの戻り先ア
ドレスが格納されたスタックのアドレスをさしている。
【0181】前記命令の実行の最初にSP14に格納さ
れているスタックポインタがXA_BUS78に出力さ
れる(ステップ290)。そしてXA_BUS78上の
スタックポインタはD_ADDR_BUS96に出力さ
れる(ステップ292)。そしてCPUからBCU60
へのデータ読み込みリクエスト信号がアクティブにな
り、外部メモリのリードサイクルを実行する。即ち前記
BCU60は該リクエスト信号に基づき、前記スタック
ポインタをメモリアドレスとしてメモリに設けられたス
タックから前記戻りアドレスを読み出す。メモリ(RA
M)50から読み出された前記戻り先アドレスはD_D
ATA_BUS94からDIN信号線86を介してCP
U内部にとりこまれ、さらにDIN信号線からIA信号
線82を介してI_ADDR_BUS92に出力される
(ステップ294)。そしてCPUからBCU60への
命令読み出しリクエスト信号がアクティブとなり、外部
メモリ(ROM)52のリードサイクルを実行し、戻り
先アドレスの命令のオブジェクトコードを読み出す(ス
テップ296)。
【0182】そして、XA_BUS78上のスタックポ
インタの値は、前記アドレス加算器30の一方の入力と
なる。また即値生成器22が生成したconstantデータ
(+4)がアドレス加算器30の他方の入力となる。そ
してアドレス加算器30で前記XA_BUS78上のス
タックポインタの値と+4を加算して、戻り先のルーチ
ンが確保したスタック領域の先頭エリアのアドレスが生
成され、WW_BUS76に出力される(ステップ29
8)。そして、WW_BUS76上の前記アドレス(戻
り先のルーチンが確保したスタック領域の先頭エリアの
アドレス)がSP14に出力される(ステップ30
0)。
【0183】(8)連続プッシュ命令(pushn)、
連続ポップ命令(popn)の説明 前述したように、最近の特にRISC方式のCPUは、
性能を高めるため内部に多くの汎用レジスタを持ち、メ
モリにアクセスすることなくCPU内部で高速に多くの
処理をおこなうよう構成されている。本実施例でも内部
に16本の汎用レジスタをもち、処理の高速化を図って
いる。しかし、このように内部レジスタを多く持つと,
割り込み処理やサブルーチンコールの時のレジスタ退避
と復旧の処理の際、退避すべきレジスタ数が多くなる。
【0184】このようなレジスタの待避や復旧を行う場
合、従来は、番地部で指定した内容をスタックに格納す
るpush命令や、スタックの内容をレジスタに取り出
すpop命令を用いていた。ここで一般的なpush命
令及びpop命令時の動きを説明する。
【0185】図17(A)(B)はpush命令実行時
の動きを模式的に示した図であり、図18(A)(B)
はpop命令実行時の動きを模式的に示した図である。
図17(A)(B)及び図18(A)(B)を用いて、
複数の汎用レジスタとスタック間でデータの転送を行う
場合の動きを説明する。
【0186】図17(A)は、汎用レジスタR1の内容
をスタックに書き出す命令である’push R1’が
実行された場合の動きを示している。該命令の実行時に
は、SP14の内容は現在の値から4がひかれた値に更
新される(図17(A)に示すように1000が996
に更新される)。そして、更新されたSP14のスタッ
クポインタが示すメモリアドレスである996に汎用レ
ジスタR1の内容aが書き込まれる。
【0187】図17(B)は、さらに汎用レジスタR2
の内容をスタックに書き出す命令である’push R
2’が実行された場合の動きを示している。該命令の実
行時には、SP14の内容は現在の値から4がひかれた
値に更新される(図17(B)に示すように996が9
92に更新される)。そして、更新されたSP14のス
タックポインタが示すメモリアドレスである992に汎
用レジスタR2の内容bが書き込まれる。
【0188】図18(A)は、スタックの内容を汎用レ
ジスタR2に取り出す命令である’pop R2’が実
行された場合の動きを示している。該命令の実行時に
は、SP14のスタックポインタが示しているメモリア
ドレス992に格納されている内容bがとりだされて汎
用レジスタR2に格納される。そしてSP14の内容は
現在の値に4が足された値に更新される(図18(A)
示すように実行前992であったのが実行後996に更
新される)。
【0189】図18(B)は、更にスタックの内容を汎
用レジスタR1に取り出す命令である’pop R1’
が実行された場合の動きを示している。該命令の実行時
には、SP14のスタックポインタが示しているメモリ
アドレス996に格納されている内容aがとりだされて
汎用レジスタR1に格納される。そしてSP14の内容
は現在の値に4が足された値に更新される(図18
(B)に示すように実行前996であったのが実行後1
000に更新される)。
【0190】このように従来は、複数の汎用レジスタと
スタックでデータの転送を行う場合、push命令やp
op命令を複数回繰り返して実行することが必要であっ
た。push命令やpop命令は1回の命令で1本のレ
ジスタしか操作することができなかったからである。
【0191】従って多数のレジスタに対してスタックへ
の待避やスタックからの復旧処理を行う場合、命令数の
増加によりオブジェクトコードのサイズの増大を招いて
いた。また、プログラムの実行ステップも多くなり、プ
ログラムの実行時間や処理動作の遅延を招いていた。
【0192】そこで 本実施例のCPUでは、次に示す
命令セットを用意している。
【0193】pushn %Rs …(18) popn %Rd …(19) (18)は連続プッシュ命令のアセンブラの記述を示し
ており、%RsからR0までのn個(nは1から16の
自然数)の汎用レジスタの内容を連続的にスタックへプ
ッシュする命令である。(19)は連続ポップ命令のア
センブラの記述を示しており、スタックからn個(nは
1から16の自然数)のワードデータを連続的に%Rd
からR0までの汎用レジスタへポップする命令である。
pushn、popn命令は、いずれもオペコードとオ
ペランドからなる。%Rsはpushn命令のオペラン
ドでレジスタ%RsからR0までをスタックに書き込む
場合のRsのレジスタ番号を示している。%Rdはpo
pn命令のオペランドでR0から%Rd迄のレジスタに
スタックからデータを持ってくる場合のRdのレジスタ
番号を示している。
【0194】図19にpushn、popn命令のビッ
トマップを示す。下位の4ビットのフィールドに%Rs
または%Rdを示すコードが入り、16本ある汎用レジ
スタの任意のレジスタが指定できる。特殊レジスタとス
タックの間でデータの転送をするときは、汎用レジスタ
を介して行う。
【0195】図20は連続プッシュ命令(push
n)、連続ポップ命令(popn)を実行するためのハ
ードウェア構成を説明するためのブロック図である。図
1から連続プッシュ命令(pushn)及び連続ポップ
命令(popn)の説明に必要な部分を取り出して、説
明に必要な部分を追加した構成になっている。図1と同
一部分を指すものについて同一の番号を付している。図
中11はR0からR15の16本の汎用レジスタであ
る。汎用レジスタ11はデータバス(D_DATA_B
US)98とデータの入出力を行う。またレジスタを選
択するレジスタ選択アドレス信号54はコントロール回
路ブロック45から来る。14はSPでスタックポイン
タが格納されている。SP14の値はアドレスバス(D
_ADDR_BUS)96と32ビットのアドレス加算
器30の入力に接続する内部アドレスバス(XA_BU
S)78に出力できる。アドレス加算器30のもう一方
の入力はコントロール回路ブロック45からの出力され
るオフセット信号24に接続されている。アドレス加算
器30の出力はラッチ(Add_LT)32でラッチさ
れ、さらにXA_BUS78またはWW_BUS76に
出力される。WW_BUS76はSP14の入力に接続
されている。コントロール回路ブロック45の中には4
ビットのカウンタ(countx)46があり、転送す
るレジスタ数をカウントする。又、コントロール回路ブ
ロック45中には図20では示されていないがインスト
ラクションレジスタがあり、pushn、popn命令
のオぺランド%Rs、%Rdを保持するとともに、イン
ストラクションデコーダによって各命令に応じた制御信
号を出力する。図中60はバスコントロールユニット
(BCU)で外部のスタックエリアを含むメモリ(RA
M)50とのデータの入出力を制御し、READ、WR
ITE制御信号を出力する。
【0196】まず連続プッシュ命令(pushn)の実
行時の動作について説明する。
【0197】連続プッシュ命令(pushn)が実行さ
れると、図4で説明したように、%Rsのレジスタ番号
の汎用レジスタから汎用レジスタR0までの汎用レジス
タに格納された内容が連続的にスタックにプッシュされ
る。
【0198】図21はpushn命令の動作を説明する
ためのフローチャート図である。
【0199】pushn命令の実行の最初にオフセット
信号24のoffsetは−4になる。カウンタ(count
x)46はゼロにクリアされ、SP14に格納されたス
タックポインタ値がXA_BUS78に出力される(ス
テップ100)。
【0200】次にアドレス加算器30はXA_BUS7
8上の値と−4を加算し結果をラッチ(Add_LT)
32に入れる(ステップ101)。
【0201】ラッチ(Add_LT)32の値はアドレ
スバスD_ADDR_BUS96に出力される。コント
ロール回路ブロック45ではインストラクションレジス
タの下位4ビットに保持された%Rsとカウンタ(co
untx)46の差を計算し結果をレジスタ選択アドレ
ス信号54に出力する。54によって選択されたレジス
タをデータバス(D_DATA_BUS)98にのせ、
外部メモリ(RAM)50の書き込み動作をする(ステ
ップ102)。
【0202】ステップ103では、カウンタ(coun
tx)46と%Rsを比較する。等しいときはレジスタ
の外部メモリへの書き込みは完了しており、ラッチ(A
dd_LT)32の値をWW_BUS76を通じてSP
14に書き込んでpushnの実行を終わる(ステップ
104)。
【0203】等しくないときはカウンタ(count
x)をプラス1し、ラッチ(Add_LT)32の値を
XA_BUS78に出力し、ステップ101以降の処理
を繰り返す(ステップ105)。
【0204】次に連続ポップ命令(popn)の実行時
の動作について説明する。
【0205】連続ポップ命令(popn)が実行される
と、図4で説明したように、スタックの内容が汎用レジ
スタR0から%Rdのレジスタ番号の汎用レジスタに連
続的にプッシュされる。
【0206】図22は、popn命令の動作を説明する
ためのフローチャート図である。
【0207】popn命令の最初にオフセット信号24
は+4になる。カウンタ(countx)46はゼロク
リアされ、SP14のスタックポインタの値がXA_B
US78とアドレスバス(D_ADDR_BUS)96
に出力される(ステップ110)。
【0208】次にアドレス加算器30はXA_BUS7
8上の値と+4を加算し結果をラッチ(Add_LT)
32に入れる(ステップ111)。
【0209】次に外部メモリのリードサイクルを実行す
る。リードされたデータはデータバス(D_DATA_
BUS)98を通じて汎用レジスタ11に書き込まれ
る。このときコントロール回路ブロック45ではカウン
タ(countx)46をレジスタ選択アドレス信号5
4に出力する(ステップ112)。
【0210】ステップ113では、カウンタ(coun
tx)46と%Rsを比較する。等しいときはレジスタ
の外部メモリへの書き込みは完了しており、ラッチ(A
dd_LT)32の値をWW_BUS76を通じてSP
14に書き込んでpopnの実行を終わる(ステップ1
14)。
【0211】等しくないときはカウンタ(count
x)をプラス1し、ラッチ(Add_LT)32の値を
XA_BUS78とアドレスバス(D_ADDR_BU
S)96に出力し、ステップ111以降の処理を繰り返
す(ステップ115)。
【0212】このように’pushn %Rs’で%R
sからR0までのレジスタをスタックに書き込め,ま
た’popn %Rd’でスタックから必要な個数のデ
ータをR0から%Rdまでのレジスタに戻すことが出来
る。たとえば、’pushn%R3’の実行によりレジ
スタR3からR0までを一命令でプッシュできる。
【0213】ここにおいてレジスタの使い方に一つの制
約を加えることで、更に有効な効果が発生する。即ち、
レジスタの待避や復旧は割り込み処理やサブルーチンコ
ール時等のプログラムが他のルーチンに分岐するときに
特に必要になるが、このとき他の割り込みルーチンまた
はサブルーチン等の呼び出されるルーチンではレジスタ
をR0から順に使って行くことが好ましい。このように
すると、R0からRdまたはRsに退避の必要のないレ
ジスタが含まれず、pushn命令及びpopn命令を
用いて、効率的にレジスタの待避又は復帰を行うことが
できる。本実施例ではレジスタはどれも同じ機能を持っ
ており、レジスタの使い方と命令には何の制約も無いの
で、このような制約は何の問題もなく満たすことが出来
る。
【0214】従って本実施例のpushn命令及びpo
pn命令を用いることにより、レジスタからメモリ中の
スタックへの退避、またスタックからレジスタへのデー
タの復旧がpushn、popnの各々一命令で実行で
きる。このためオブジェクトコードサイズやプログラム
実行ステップを最少にし、かつ実行サイクルを一回の命
令フェッチと必要な回数のデータの転送だけですませ、
最少のサイクルで行うことが出来る。これにより割り込
み処理ルーチンやサブルーチンの処理も高速化を図るこ
とができる。
【0215】一方、これを実現する構成要素はカウント
手段と簡単なシーケンス制御のみであり、少ないゲート
数で実現出来、ワンチップのマイクロコンピュータに適
したものである。
【0216】また、本実施例ではスタックポインタ専用
のレジスタSP14を用いた場合の連続プッシュ命令
(pushn)、連続ポップ命令(popn)を実行さ
せるための構成について説明したが、スタックポインタ
として汎用レジスタを使用する場合にも適用可能であ
る。
【0217】(実施例2)図23は、本実施例のマイク
ロコンピュータのハードウエアブロック図である。
【0218】該マイクロコンピュータ2は、32ビット
マイクロコントローラであり、CPU10とROM52
とRAM50、高周波発振回路910、低周波発振回路
920、リセット回路930、プリスケーラ940、1
6ビットプログラマブルタイマ950、8ビットプログ
ラマブルタイマ960、クロックタイマ970、インテ
リジェントDMA980、高速DMA990、割り込み
コントローラ800、シリアルインターフェース81
0、バスコントロールユニット(BCU)60、A/D
変換器830、D/A変換器840、入力ポート85
0、出力ポート860、I/Oポート870、及びそれ
らを接続する各種バス92、94、96、98、各種ピ
ン890等を含む。
【0219】前記CPU10は、スタックポインタ専用
レジスタであるSPを有し、前述した各種のスタックポ
インタ専用命令の解読、実行を行う。該CPU10は、
前述した、実施例1の構成を有しており、前記解読手
段、前記実行手段として機能する。
【0220】従って本実施例のマイクロコンピュータ
は、スタックポインタを取り扱う処理を、短い命令長で
効率よく記憶し、実行することができる。
【0221】また、レジスタ退避やレジスタ復旧の処理
を効率よく記憶し、割り込み処理及びサブルーチンコー
ル・リターンの処理を高速に行うことができる。
【0222】本発明のマイクロコンピュータは例えばプ
リンター等のパソコン周辺機器や、携帯機器等の各種の
電子機器に適用可能である。この様にすると、簡単な構
成でメモリの使用効率がよく高速に処理の行える情報処
理回路を内蔵することができるため、安価で高機能な電
子機器を提供することが出来る。
【0223】なお本発明は、上記実施例で説明したもの
に限らず、種々の変形実施が可能である。
【0224】
【図面の簡単な説明】
【図1】本実施例のCPUの回路構成の概略を説明する
ための図である。
【図2】本実施例のCPUの持つレジスタセットを示
す。
【図3】スタックポインタの一般的な動作について説明
するための図である。
【図4】スタックポインタ専用命令の使用例とメモリに
もうけられたスタックの使用状態及びスタックポインタ
の状態について説明するための図である。
【図5】メモリ上のオート変数をレジスタに転送する処
理を説明するための図である。
【図6】図6(A)(B)は、SP相対ロード命令及び
汎用ロード命令のビットフィールドを示した図である。
【図7】ワードデータ読み出しのSP相対ロード命令の
動作を説明するためのフローチャート図である。
【図8】ワードデータ書き込みのSP相対ロード命令の
動作を説明するためのフローチャート図である。
【図9】図9(A)〜(F)は、複数のルーチンにわた
ってプログラムが実行される場合の各ルーチンによるメ
モリ上のスタックの使用状態及びスタックポインタの状
態を説明するための図である。
【図10】図10(A)(B)は、スタックポインタ移
動命令及び汎用演算命令のビットフィールドを示した図
である。
【図11】加算スタックポインタ移動命令の動作を説明
するためのフローチャート図である。
【図12】減算スタックポインタ移動命令の動作を説明
するためのフローチャート図である。
【図13】call命令とret命令によるプログラム
の実行の制御を説明するための図である。
【図14】PC相対サブルーチンコール命令のビットフ
ィールドを示した図である。
【図15】PC相対サブルーチンコール命令の動作を説
明するためのフローチャート図である。
【図16】ret命令の動作を説明するためのフローチ
ャート図である。
【図17】図17(A)(B)はpush命令実行時の
動きを模式的に示した図である。
【図18】図18(A)(B)はpop命令実行時の動
きを模式的に示した図である。
【図19】pushn、popn命令のビットマップを
示す。
【図20】連続プッシュ命令(pushn)、連続ポッ
プ命令(popn)を実行するためのハードウェア構成
を説明するためのブロック図である。
【図21】pushn命令の動作を説明するためのフロ
ーチャート図である。
【図22】popn命令の動作を説明するためのフロー
チャート図である。
【図23】本実施の形態のマイクロコンピュータのハー
ドウエアブロック図である。
【符号の説明】
2 マイクロコンピュータ 10 CPU 11 汎用レジスタ 12 PC(プログラムカウンタ) 13 PSR(プロセッサステータスレジスタ) 20 命令デコーダ 22 即値生成器期 24 オフセット信号 30 アドレス加算器 32 ラッチ(Add_LT) 40 ALU 44 PCインクリメンタ 45 コントロール回路ブロック 46 4ビットカウンタ(countx) 50 メモリ(RAM) 52 メモリ(ROM) 54 レジスタ選択アドレス信号 60 バスコントロールユニット(BCU) 72、74、76、78 内部バス 82、84、86、88 内部信号線 92、94、96、98 外部バス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 佐藤 比佐夫 長野県諏訪市大和3丁目3番5号 セイコ ーエプソン株式会社内

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 スタックポインタ専用に用いるスタック
    ポインタ専用レジスタと、 該スタックポインタ専用レジスタを暗黙のオペランドと
    するオブジェクトコードを有し、該スタックポインタ専
    用レジスタに基づく処理が記述されたスタックポインタ
    専用命令群のオブジェクトコードを解読して、該オブジ
    ェクトコードに基づき制御信号を出力する解読手段と、 前記スタックポインタ専用命令群を、前記制御信号及び
    前記スタックポインタ専用レジスタの内容に基づき実行
    する実行手段とを含むことを特徴とする情報処理回路。
  2. 【請求項2】 請求項1において、 前記スタックポインタ専用命令群が、転送レジスタ特定
    情報をオブジェクトコードに有するロード命令を含み、 前記解読手段が、 前記ロード命令を解読し、 前記実行手段が、 前記ロード命令を実行する際、メモリ上の所与の第一の
    エリアから所与の第一のレジスタへのデータの転送及び
    前記所与の第一のレジスタから前記所与の第一のエリア
    へのデータの転送の少なくとも一方を、前記スタックポ
    インタ専用レジスタにより特定されるメモリアドレス及
    び前記転送レジスタ特定情報により特定されるレジスタ
    アドレスに基づき行うことを特徴とする情報処理回路。
  3. 【請求項3】 請求項2において、 前記ロード命令が、前記メモリ上の前記第一のエリアの
    アドレスを特定するためのオフセットに関する情報であ
    るオフセット情報をオブジェクトコードに含み、 前記実行手段が、 前記スタックポインタ専用レジスタの内容と前記オフセ
    ット情報により前記メモリアドレスを特定することを特
    徴とする情報処理回路。
  4. 【請求項4】 請求項3において、 前記オフセット情報が、即値で与えられた即値オフセッ
    ト情報とメモリ上の所与のデータのサイズに関するデー
    タサイズ情報とを含み、 前記実行手段が、 前記即値オフセット情報と前記データサイズ情報とに基
    づき、前記即値オフセット情報を左論理シフトしてオフ
    セット値を生成し、前記スタックポインタ専用レジスタ
    の内容と前記オフセット値を加算した値により前記メモ
    リアドレスを特定することを特徴とする情報処理回路。
  5. 【請求項5】 請求項1〜請求項4のいずれかにおい
    て、 前記スタックポインタ専用命令群が、オブジェクトコー
    ドに移動情報を有しスタックポインタを移動するための
    スタックポインタ移動命令を含み、 前記解読手段が、 前記スタックポインタ移動命令を解読し、 前記実行手段が、 前記スタックポインタ移動命令を実行する際、前記移動
    情報に基づき、前記スタックポインタ専用レジスタの内
    容を変更することを特徴とする情報処理回路。
  6. 【請求項6】 請求項5において、 前記移動情報が、即値で与えられた即値移動情報を含
    み、 前記命令実行手段が、 前記即値移動情報と前記スタックポインタ専用レジスタ
    の内容とを加算する処理及び前記スタックポインタ専用
    レジスタの内容から前記即値移動情報を減算する処理の
    少なくとも一方の処理を行うことを特徴とする情報処理
    回路。
  7. 【請求項7】 請求項1〜請求項6のいずれかにおい
    て、 連続して順序づけられた複数のレジスタを含み、 前記スタックポインタ専用命令群が、複数レジスタ特定
    情報をオブジェクトコードに有する連続プッシュ命令及
    び連続ポップ命令の少なくとも一方を含み、 前記解読手段が、 前記連続プッシュ命令及び連続ポップ命令の少なくとも
    一方を解読し、 前記命令実行手段が、 前記連続プッシュ命令及び前記連続ポップ命令の少なく
    とも一方を実行する際、前記複数のレジスタからメモリ
    に設けられたスタックへ連続して複数回プッシュする処
    理及び前記スタックから前記複数のレジスタに連続して
    複数回ポップする処理の少なくとも一方を、前記スタッ
    クポインタ専用レジスタの内容により特定されるメモリ
    アドレスに及び前記複数レジスタ特定情報とに基づき行
    うことを特徴とする情報処理回路。
  8. 【請求項8】 請求項7において、 0からnー1までのレジスタ番号で特定されたn個の汎
    用レジスタを含み、 前記連続プッシュ命令及び連続ポップ命令の少なくとも
    一方のオブジェクトコードが、前記複数レジスタ特定情
    報として、前記レジスタ番号のいずれかが指定された最
    終レジスタ番号を含み、 前記実行手段が、 レジスタ0から前記最終レジスタ番号で特定されるレジ
    スタまでの複数のレジスタからメモリに設けられたスタ
    ックへ連続して複数回プッシュする処理及び前記スタッ
    クから前記複数のレジスタに連続して複数回ポップする
    処理の少なくとも一方を、前記スタックポインタ専用レ
    ジスタの内容により特定されるメモリアドレスに基づき
    行うことを特徴とする情報処理回路。
  9. 【請求項9】 請求項7又は8のいずれかにおいて、 前記実行手段が、 前記複数のレジスタのいずれか所与のレジスタの内容
    を、前記スタックポインタ専用レジスタで特定されるメ
    モリアドレスに基づきメモリに設けられたスタックに書
    き込む書き込み手段と、 前記書き込み手段による前記スタックへの書き込み回数
    をカウントする書き込み回数カウント手段と、 前記カウント手段によってカウントされた前記書き込み
    回数と前記複数レジスタ特定情報の値を比較する比較手
    段とを含み、 前記書き込み手段が、 第一の入力と第二の入力を加算器で加算し書き込み先を
    特定するための書き込みメモリアドレスを生成する書き
    込みメモリアドレス生成手段と、 前記加算器の第一の入力が、連続専用命令の実行開始時
    にはスタックポインタ専用レジスタの内容となるように
    制御し、それ以降は書き込みアドレス生成手段によって
    生成された書き込みアドレスとなるよう制御する第一の
    入力制御手段と、 前記加算器の第二の入力に前記スタックから1ワードを
    書き込んだときのオフセット値を出力する第二の入力制
    御手段と、 前記複数レジスタ特定情報から前記書き込み回数を減じ
    た値で特定されるレジスタの内容を、前記書き込みメモ
    リアドレスに基づき前記スタックに書き込む手段とを含
    み、 前記比較手段の比較結果に基づき、複数のレジスタから
    の前記スタックへの書き込み及び書き込み終了を制御す
    ることを特徴とする情報処理回路。
  10. 【請求項10】 請求項7〜9のいずれかにおいて、 前記命令実行手段が、 前記スタックポインタ専用レジスタで特定されるメモリ
    アドレスに基づきメモリに設けられたスタックの内容を
    読み出し、前記複数のレジスタのいずれか所与のレジス
    タに格納する読み出し手段と、 前記読み出し手段による前記スタックからの読み出し回
    数をカウントする読み出し回数カウント手段と、 前記カウント手段によってカウントされた前記読み出し
    回数と前記複数レジスタ特定情報の値を比較する比較手
    段とを含み、 前記読み出し手段が、 第一の入力と第二の入力を加算器で加算し書き込み先を
    特定するための書き込みメモリアドレスを生成する書き
    込みメモリアドレス生成手段と、 前記加算器の第一の入力が、連続専用命令の実行開始時
    にはスタックポインタ専用レジスタの内容となるように
    制御し、それ以降は読み出しアドレス生成手段によって
    生成された読み出しアドレスとなるよう制御する第一の
    入力制御手段と、 前記加算器の第二の入力に前記スタックから1ワードを
    書き込んだときのオフセット値を出力する第二の入力制
    御手段と、 前記読み出しメモリアドレスに基づき前記スタックの内
    容を読み出し、前記書き込み回数に基づき特定されるレ
    ジスタに格納する読み出し手段とを含み、 前記比較手段の比較結果に基づき、前記スタックの内容
    の読み出し及び読み出し終了を制御することを特徴とす
    る情報処理回路。
  11. 【請求項11】 請求項1〜請求項10のいずれかにお
    いて、 プログラムカウンタ専用のプログラムカウンタレジスタ
    を含み、 前記スタックポインタ専用命令群が、サブルーチンへ分
    岐する命令及び前記サブルーチンからのリターン命令で
    ある分岐命令を含み、 前記解読手段が、 前記分岐命令を解読し、 前記命令実行手段が、 前記分岐命令を実行する際、メモリに設けられたスタッ
    クの所与の第二のエリアへの前記プログラムカウンタレ
    ジスタの内容の待避及び前記第二のエリアの内容のプロ
    グラムカウンタレジスタへの復帰の少なくとも一方を、
    前記スタックポインタ専用レジスタにより特定されるメ
    モリアドレスに基づき行う手段と、 前記待避及び前記復帰に基づき前記スタックポインタ専
    用レジスタの内容を更新する手段とを含むことを特徴と
    する情報処理回路。
  12. 【請求項12】 連続して順序づけられた複数のレジス
    タと、いずれかの汎用レジスタに割り当てられたスタッ
    クポインタを含む情報処理回路であって、 複数レジスタ特定情報をオブジェクトコードに有する連
    続プッシュ命令及び連続ポップ命令の少なくとも一方の
    命令のオブジェクトコードを解読して、該オブジェクト
    コードに基づき制御信号を出力する手段と、 前記連続プッシュ命令及び前記連続ポップ命令の少なく
    とも一方を実行する際、前記複数のレジスタからメモリ
    に設けられたスタックへ連続して複数回プッシュする処
    理及び前記スタックから前記複数のレジスタに連続して
    複数回ポップする処理の少なくとも一方を、前記制御信
    号及び前記スタックポインタ専用レジスタの内容により
    特定されるメモリアドレス及び前記複数レジスタ特定情
    報とに基づき行う手段を含むことを特徴とする情報処理
    回路。
  13. 【請求項13】 請求項1〜請求項12のいずれかにお
    いて、RISC方式であることを特徴とする情報処理回
    路。
  14. 【請求項14】 請求項1〜請求項13のいずれかにお
    いて、 固定長の命令を解読し、該命令に基づき実行処理を行う
    ことを特徴とする情報処理回路。
  15. 【請求項15】 請求項1〜請求項14のいずれかに記
    載の情報処理回路と記憶手段と外部との入出力を行う手
    段とを含むことを特徴とするマイクロコンピュータ。
  16. 【請求項16】 請求項15において、 前記スタックポインタに関連づけてオート変数の記憶領
    域が確保される構造を有する言語のプログラムが実行さ
    れることを特徴とするマイクロコンピュータ。
  17. 【請求項17】 請求項15又は16のいずれかに記載
    されたマイクロコンピュータを含むことを特徴とする電
    子機器。
JP9135923A 1996-05-22 1997-05-08 情報処理回路、マイクロコンピュータ及び電子機器 Withdrawn JPH1091443A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP9135923A JPH1091443A (ja) 1996-05-22 1997-05-08 情報処理回路、マイクロコンピュータ及び電子機器
US08/859,490 US6560692B1 (en) 1996-05-22 1997-05-20 Data processing circuit, microcomputer, and electronic equipment
EP97108346A EP0809180B1 (en) 1996-05-22 1997-05-22 Data processing circuit, microcomputer, and electronic equipment
DE69729974T DE69729974T2 (de) 1996-05-22 1997-05-22 Datenverarbeitungsschaltung, Mikrocomputer und elektronische Einrichtung
KR1019970020002A KR100328162B1 (ko) 1996-05-22 1997-05-22 정보처리회로와마이크로컴퓨터와전자기기
TW086106909A TW424197B (en) 1996-05-22 1997-05-22 Data processing circuit, microcomputer, and electronic equipment

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP8-127541 1996-05-22
JP12754196 1996-05-22
JP9135923A JPH1091443A (ja) 1996-05-22 1997-05-08 情報処理回路、マイクロコンピュータ及び電子機器

Publications (1)

Publication Number Publication Date
JPH1091443A true JPH1091443A (ja) 1998-04-10

Family

ID=26463482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9135923A Withdrawn JPH1091443A (ja) 1996-05-22 1997-05-08 情報処理回路、マイクロコンピュータ及び電子機器

Country Status (6)

Country Link
US (1) US6560692B1 (ja)
EP (1) EP0809180B1 (ja)
JP (1) JPH1091443A (ja)
KR (1) KR100328162B1 (ja)
DE (1) DE69729974T2 (ja)
TW (1) TW424197B (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001202243A (ja) * 1999-04-30 2001-07-27 Hitachi Ltd データ処理装置
JP2004515857A (ja) * 2000-12-06 2004-05-27 インテル・コーポレーション マルチサイクル命令
US6955411B2 (en) 1998-11-26 2005-10-18 Seiko Epson Corporation Ink cartridge and printer using the same
US7195346B1 (en) 1998-11-02 2007-03-27 Seiko Epson Corporation Ink cartridge and printer using the same
JP2013173064A (ja) * 2013-06-14 2013-09-05 Sanyo Product Co Ltd 遊技機
JP2014510971A (ja) * 2011-03-07 2014-05-01 エイアールエム リミテッド データ処理装置内におけるアドレス生成
JP2014239997A (ja) * 2014-09-01 2014-12-25 株式会社三洋物産 遊技機
JP2016064211A (ja) * 2015-12-18 2016-04-28 株式会社三洋物産 遊技機

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3975593B2 (ja) * 1999-01-21 2007-09-12 株式会社ソニー・コンピュータエンタテインメント 再生音を発生する方法、再生音を発生する電子機器及びエンターテインメント・システム
US6668317B1 (en) 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6427196B1 (en) 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
HK1046049A1 (zh) 1999-09-01 2002-12-20 Intel Corporation 用於多线程处理器的分支指令
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6625654B1 (en) 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US6307789B1 (en) 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6631430B1 (en) 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US6584522B1 (en) 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6631462B1 (en) 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
AU2001236976A1 (en) * 2000-02-14 2001-08-27 Chicory Systems, Inc. Delayed update of a stack pointer and program counter
JP2002014809A (ja) * 2000-06-28 2002-01-18 Mitsubishi Electric Corp マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
KR100602374B1 (ko) * 2000-08-31 2006-07-14 어보브반도체 주식회사 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서
US7050197B1 (en) * 2000-09-14 2006-05-23 Eastman Kodak Company Image processor for high-speed printing applications
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7126952B2 (en) 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7158964B2 (en) 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7181594B2 (en) 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7149226B2 (en) 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7471688B2 (en) 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US7433307B2 (en) 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US7111149B2 (en) * 2003-07-07 2006-09-19 Intel Corporation Method and apparatus for generating a device ID for stacked devices
JP2005050208A (ja) * 2003-07-30 2005-02-24 Matsushita Electric Ind Co Ltd マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置
US7213099B2 (en) 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US20060200650A1 (en) * 2005-03-04 2006-09-07 Froemming Benjamin F Single-cycle low-power CPU architecture
US7870542B1 (en) * 2006-04-05 2011-01-11 Mcafee, Inc. Calling system, method and computer program product
GB2486738B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
GB2518912B (en) * 2014-01-17 2015-08-26 Imagination Tech Ltd Stack pointer value prediction
US9767004B2 (en) * 2014-06-16 2017-09-19 Symantec Corporation Dynamic call tracking method based on CPU interrupt instructions to improve disassembly quality of indirect calls
GB2540948B (en) * 2015-07-31 2021-09-15 Advanced Risc Mach Ltd Apparatus with reduced hardware register set
US12608199B2 (en) * 2022-04-02 2026-04-21 Intel Corporation Instruction set architecture support for a load global pointer instruction

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701976A (en) * 1970-07-13 1972-10-31 Bell Telephone Labor Inc Floating point arithmetic unit for a parallel processing computer
US4016545A (en) * 1975-07-31 1977-04-05 Harris Corporation Plural memory controller apparatus
US4236206A (en) 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
JPH0748179B2 (ja) 1988-10-12 1995-05-24 日本電気株式会社 データ処理装置
EP0368144B1 (en) * 1988-11-10 1996-02-07 Motorola, Inc. Digital computing system with low power mode
US5142635A (en) * 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5274792A (en) * 1989-08-19 1993-12-28 Fujitsu Limited Information processing apparatus with parallel instruction decoding
JP2669158B2 (ja) 1991-01-22 1997-10-27 三菱電機株式会社 データ処理装置
US5386560A (en) * 1991-05-23 1995-01-31 International Business Machines Corporation Execution of page data transfer by PT processors and issuing of split start and test instructions by CPUs coordinated by queued tokens
JPH0536259A (ja) * 1991-07-27 1993-02-12 Sony Corp 電子機器
US5283874A (en) * 1991-10-21 1994-02-01 Intel Corporation Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
JPH05204656A (ja) * 1991-11-30 1993-08-13 Toshiba Corp スレッド固有データ保持方法
US5377337A (en) * 1993-06-08 1994-12-27 International Business Machines Corporation Method and means for enabling virtual addressing control by software users over a hardware page transfer control entity
JPH07114469A (ja) * 1993-10-18 1995-05-02 Mitsubishi Electric Corp データ処理装置
JPH086854A (ja) * 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
WO1996008767A2 (en) 1994-09-16 1996-03-21 Philips Electronics N.V. Microcontroller system with a multiple-register stacking instruction
US5687336A (en) * 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
WO1997027536A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US6151662A (en) * 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7195346B1 (en) 1998-11-02 2007-03-27 Seiko Epson Corporation Ink cartridge and printer using the same
US6955411B2 (en) 1998-11-26 2005-10-18 Seiko Epson Corporation Ink cartridge and printer using the same
JP2001202243A (ja) * 1999-04-30 2001-07-27 Hitachi Ltd データ処理装置
JP2004515857A (ja) * 2000-12-06 2004-05-27 インテル・コーポレーション マルチサイクル命令
JP2014510971A (ja) * 2011-03-07 2014-05-01 エイアールエム リミテッド データ処理装置内におけるアドレス生成
US9495163B2 (en) 2011-03-07 2016-11-15 Arm Limited Address generation in a data processing apparatus
JP2013173064A (ja) * 2013-06-14 2013-09-05 Sanyo Product Co Ltd 遊技機
JP2014239997A (ja) * 2014-09-01 2014-12-25 株式会社三洋物産 遊技機
JP2016064211A (ja) * 2015-12-18 2016-04-28 株式会社三洋物産 遊技機

Also Published As

Publication number Publication date
EP0809180A2 (en) 1997-11-26
US6560692B1 (en) 2003-05-06
TW424197B (en) 2001-03-01
EP0809180A3 (en) 1999-01-07
EP0809180B1 (en) 2004-07-28
KR100328162B1 (ko) 2002-06-29
DE69729974D1 (de) 2004-09-02
DE69729974T2 (de) 2005-07-21

Similar Documents

Publication Publication Date Title
JPH1091443A (ja) 情報処理回路、マイクロコンピュータ及び電子機器
JP3592230B2 (ja) データ処理装置
JP2616182B2 (ja) データ処理装置
KR100266337B1 (ko) 정보처리회로,반도체집적회로장치,마이크로컴퓨터,및전자기기
US20070106889A1 (en) Configurable instruction sequence generation
JPH09212361A (ja) データ処理装置およびデータ処理方法
JP3619939B2 (ja) 中央処理装置
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
JPH03218523A (ja) データプロセッサ
JPH0766324B2 (ja) データ処理装置
JP2847974B2 (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
JP2669158B2 (ja) データ処理装置
JP2556182B2 (ja) デ−タ処理装置
US6223275B1 (en) Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
JP3345787B2 (ja) データ処理装置
JPH04260929A (ja) データ処理装置
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置
JP3504355B2 (ja) プロセッサ
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
JP2646855B2 (ja) データ処理装置
JPH04104350A (ja) マイクロプロセッサ
JP2001216136A (ja) 加算回路およびプロセッサ
JP3019818B2 (ja) データ処理方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040601

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20040630