JPH02230320A - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH02230320A JPH02230320A JP4981989A JP4981989A JPH02230320A JP H02230320 A JPH02230320 A JP H02230320A JP 4981989 A JP4981989 A JP 4981989A JP 4981989 A JP4981989 A JP 4981989A JP H02230320 A JPH02230320 A JP H02230320A
- Authority
- JP
- Japan
- Prior art keywords
- data
- size
- bit
- register
- processing device
- 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.)
- Pending
Links
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は主にマイクロプロセッサ(MPU)の演算フラ
グの生成方式、及び、レジスタ内のビット番号付け規則
に係り、特に,11数型データのサイズが複数種類規定
されているM 1) Uに好適な演算フラグの生成方式
、及び,レジスタ内のビット番号付け規則に関する. 〔従来の技術〕 16ビット以上のワード長を有するマイクロプロセッサ
では.処理するデータのサイズとして、ワードサイズの
他に1バイト(8ビット)のサイズも必要となっている
.そのため、1つの命令でもサイズによって、数種のバ
リエーションがある.例えば、T R O N Th
e Real−Time Operatingsyst
em Nucleus)仕様に準拠した日立の32ビッ
トマイクロプロセッサGmieroにおいては、整数型
データのデータ長としてワード(32ビット)サイズの
他に、ハーフワード(16ビット),バイト(8ビット
)の3種のデータ長が用意されている.この詳細な仕様
については、日立32ビットマイクロプロセッサH32
/200プログラミングマニュアルに示されている. H32/200においては、メモリ上の32ビット(4
バイト)整数型データを扱う場合、小さいアドレスがデ
ータの上位側に対応し、大きいアドレスがデータの下位
側に対応している.また、データ内のビット番号の付け
方としては、最上位ビットを0として下位側にいくに従
ってビット番号が大きくなるように付けている.一方、
H32/200はレジスタとして32ビット幅のものを
持っている。このレジスタを32ビットより4−さい整
数型データ、例えば、バイト,ハーフワードの整数型デ
ータとして使う場合、32ビットのレジスタのうち下位
側(右側)の部分を使っている. 〔発明が解決しようとするIlllfl)上記の様に従
来の32ビットマイクロプロセッサにおいては、レジス
タのサイズより短い整数型データを扱うとき、レジスタ
の下位側(右側)の部分を使っていたので,演算結果の
フラグ(?フラグ,負フラグ,桁上げフラグ等)を生成
するとき,それぞれのサイズに対応したフラグを全て生
成しておき、その中からサイズに合ったものを選択しな
ければならなかった.そのため、演算回路におけるフラ
グ生成回路が複雑になり、単一サイズの整数型データし
か扱わない場合と比べて回路規模が大きくなっていた. また、H32/200では、データのビット番号の付け
方として、最上位ビットをOとして下位側にいくに従っ
てビット番号が大きくなるように付けているので、レジ
スタのビット番号がサイズによって変ってしまうという
不都合な点があった.つまり,バイトサイズのOビット
目は、ハーフワードのときには8ビット目に対応し、ワ
ードのときには24ビット目に対応している.そのため
、同じ位置を示すのにサイズによって違うビット番号を
指定しなければならず、プログラムから見たとき、特別
の注意が必要になる. そこで,本発明の目的は. (1)データのサイズに依存しない演算フラグの生成方
法、及び、生成回路を提供すること、(2)データのサ
イズに依存しないレジスタのビット番号の指定方法を提
供すること、 である. (課題を解決するための手段〕 上記目的は, (1)レジスタを32ビットより小さい整数型データ.
例えば,バイト,ハーフワードのデータとして使う場合
、32ビット幅のレジスタのうち上位側(左側)の部分
を使うこと、 (2)32ビットより小さい整数型データ、例えば、バ
イト,ハーフワードのデータを演算するとき、データを
左詰にし、右側に0を補って演算すること、 により、達成される. 〔作用〕 レジスタを32ビットより小さいデータ、例えば、バイ
ト,ハーフワードのデータとして使う場合、32ビット
のレジスタのうち上位側(左側)の部分を使うことによ
り、バイトサイズの0ビット目は、ハーフワード,ワー
ドのときにもOビット目に対応する.そのため,サイズ
が違っても同じビット番号なら同じ位置を示すことにな
り、プログラマから見たときの特別な注意は不要になる
.また、32ビットより小さい整数型データ,例えば、
バイト,ハーフワードのデータを演算するとき,データ
を左詰にし、右側にOを補って演算することにより、演
算結果のフラグ(零フラグ,負フラグ,桁上げフラグ等
)を生成するとき、演算フラグはワードサイズのときの
ものを生成すれば、全てのサイズの場合に適用できる。
グの生成方式、及び、レジスタ内のビット番号付け規則
に係り、特に,11数型データのサイズが複数種類規定
されているM 1) Uに好適な演算フラグの生成方式
、及び,レジスタ内のビット番号付け規則に関する. 〔従来の技術〕 16ビット以上のワード長を有するマイクロプロセッサ
では.処理するデータのサイズとして、ワードサイズの
他に1バイト(8ビット)のサイズも必要となっている
.そのため、1つの命令でもサイズによって、数種のバ
リエーションがある.例えば、T R O N Th
e Real−Time Operatingsyst
em Nucleus)仕様に準拠した日立の32ビッ
トマイクロプロセッサGmieroにおいては、整数型
データのデータ長としてワード(32ビット)サイズの
他に、ハーフワード(16ビット),バイト(8ビット
)の3種のデータ長が用意されている.この詳細な仕様
については、日立32ビットマイクロプロセッサH32
/200プログラミングマニュアルに示されている. H32/200においては、メモリ上の32ビット(4
バイト)整数型データを扱う場合、小さいアドレスがデ
ータの上位側に対応し、大きいアドレスがデータの下位
側に対応している.また、データ内のビット番号の付け
方としては、最上位ビットを0として下位側にいくに従
ってビット番号が大きくなるように付けている.一方、
H32/200はレジスタとして32ビット幅のものを
持っている。このレジスタを32ビットより4−さい整
数型データ、例えば、バイト,ハーフワードの整数型デ
ータとして使う場合、32ビットのレジスタのうち下位
側(右側)の部分を使っている. 〔発明が解決しようとするIlllfl)上記の様に従
来の32ビットマイクロプロセッサにおいては、レジス
タのサイズより短い整数型データを扱うとき、レジスタ
の下位側(右側)の部分を使っていたので,演算結果の
フラグ(?フラグ,負フラグ,桁上げフラグ等)を生成
するとき,それぞれのサイズに対応したフラグを全て生
成しておき、その中からサイズに合ったものを選択しな
ければならなかった.そのため、演算回路におけるフラ
グ生成回路が複雑になり、単一サイズの整数型データし
か扱わない場合と比べて回路規模が大きくなっていた. また、H32/200では、データのビット番号の付け
方として、最上位ビットをOとして下位側にいくに従っ
てビット番号が大きくなるように付けているので、レジ
スタのビット番号がサイズによって変ってしまうという
不都合な点があった.つまり,バイトサイズのOビット
目は、ハーフワードのときには8ビット目に対応し、ワ
ードのときには24ビット目に対応している.そのため
、同じ位置を示すのにサイズによって違うビット番号を
指定しなければならず、プログラムから見たとき、特別
の注意が必要になる. そこで,本発明の目的は. (1)データのサイズに依存しない演算フラグの生成方
法、及び、生成回路を提供すること、(2)データのサ
イズに依存しないレジスタのビット番号の指定方法を提
供すること、 である. (課題を解決するための手段〕 上記目的は, (1)レジスタを32ビットより小さい整数型データ.
例えば,バイト,ハーフワードのデータとして使う場合
、32ビット幅のレジスタのうち上位側(左側)の部分
を使うこと、 (2)32ビットより小さい整数型データ、例えば、バ
イト,ハーフワードのデータを演算するとき、データを
左詰にし、右側に0を補って演算すること、 により、達成される. 〔作用〕 レジスタを32ビットより小さいデータ、例えば、バイ
ト,ハーフワードのデータとして使う場合、32ビット
のレジスタのうち上位側(左側)の部分を使うことによ
り、バイトサイズの0ビット目は、ハーフワード,ワー
ドのときにもOビット目に対応する.そのため,サイズ
が違っても同じビット番号なら同じ位置を示すことにな
り、プログラマから見たときの特別な注意は不要になる
.また、32ビットより小さい整数型データ,例えば、
バイト,ハーフワードのデータを演算するとき,データ
を左詰にし、右側にOを補って演算することにより、演
算結果のフラグ(零フラグ,負フラグ,桁上げフラグ等
)を生成するとき、演算フラグはワードサイズのときの
ものを生成すれば、全てのサイズの場合に適用できる。
つまり、零フラグは32ビット全体の零、負フラグは0
ビット目の値、桁上げフラグは0ビット目からの桁上げ
を検出すれば,全てのサイズの場合に適用できる.その
結果、それぞれのサイズに対応したフラグを全て生成す
る必要が無くなるので,演算回路におけるフラグ生成回
路が簡単になり,回路規模が小さくなる. 〔実施例〕 以下,本発明の一実施例を図を用いて説明する。
ビット目の値、桁上げフラグは0ビット目からの桁上げ
を検出すれば,全てのサイズの場合に適用できる.その
結果、それぞれのサイズに対応したフラグを全て生成す
る必要が無くなるので,演算回路におけるフラグ生成回
路が簡単になり,回路規模が小さくなる. 〔実施例〕 以下,本発明の一実施例を図を用いて説明する。
第1図は本発明の一実施例であるデータ処理装置のレジ
スタについて示した図である.レジスタ1・00は32
ビットのデータ幅を持っている.本実施例のデータ処理
装置では、32ビットのデータ幅をワードサイズと呼び
、半分の16ビットのデータ幅をハーフワードサイズ、
8ビットのデータ幅をバイトサイズと呼ぶ.レジスタ1
00は1ワード分のデータ幅を持っている.レジスタ1
00にハーフワードサイズのデータや、バイトサイズの
データを格納するときには,第1図に示したように、レ
ジスタの上位側(左側)に詰めて格納する・. レジスタ内の各ビットは、ビット番号で1ビットずつア
クセスすることができる.ビット番号は、第1図に示し
てあるように、左端の最上位ビット101を0ビット目
とし,右側の下位ビットにいくに従ってビット番号が大
きくなるように付けられている.そのため、ハーフワー
ドサイズや、バイトサイズのデータを上記の様にレジス
タに格納することにより、ワードサイズのOビット目は
ハーフワードやバイトサイズでアクセスしても、常に,
0ビット目となる. 第2図はメモリ上のデータをアクセスする場合の図であ
る.メモリには1バイト単位にアドレスが付けられてい
る.メモリ上のワードサイズやハーフワードサイズのデ
ータを扱う場合、第2図の様になり、小さいアドレスに
対応するバイトがデータの上位側になる.例えば、$2
0008地のハーフワードサイズのデータをアクセスす
ると,$2000番地の内容がデータの上位側になり、
$2001番地の内容がデータの下位側になる.また.
$2000番地のワードサイズのデータをアクセスする
と、$2000番地から$2003番地までの内容が、
第2図に示す様に、データとして扱われる. 本実施例のデータ処理装置ではビットを操作する命令の
1つとして,BTST命令がある。BTST命令は、処
理するビット番号とそのビットが格納されている場所を
オペランドとして指定する.BTST命令は、指定され
たビットの0または1をテストして演算フラグに反映す
る命令である.次の3種の命令 BTST #O,($2000).wBTST $
0.($2000).hBTST SO, ($
2000). bは,メモリの$2000番地から始
まる、それぞれワードサイズ,ハーフワードサイズ,バ
イトサイズのデータの0ビット目をテストする命令であ
る。各命令ともビット番号がOであるので、第2図に示
す様に,各命令とも同一のビット(左端のビット)20
1をテストする命令である。
スタについて示した図である.レジスタ1・00は32
ビットのデータ幅を持っている.本実施例のデータ処理
装置では、32ビットのデータ幅をワードサイズと呼び
、半分の16ビットのデータ幅をハーフワードサイズ、
8ビットのデータ幅をバイトサイズと呼ぶ.レジスタ1
00は1ワード分のデータ幅を持っている.レジスタ1
00にハーフワードサイズのデータや、バイトサイズの
データを格納するときには,第1図に示したように、レ
ジスタの上位側(左側)に詰めて格納する・. レジスタ内の各ビットは、ビット番号で1ビットずつア
クセスすることができる.ビット番号は、第1図に示し
てあるように、左端の最上位ビット101を0ビット目
とし,右側の下位ビットにいくに従ってビット番号が大
きくなるように付けられている.そのため、ハーフワー
ドサイズや、バイトサイズのデータを上記の様にレジス
タに格納することにより、ワードサイズのOビット目は
ハーフワードやバイトサイズでアクセスしても、常に,
0ビット目となる. 第2図はメモリ上のデータをアクセスする場合の図であ
る.メモリには1バイト単位にアドレスが付けられてい
る.メモリ上のワードサイズやハーフワードサイズのデ
ータを扱う場合、第2図の様になり、小さいアドレスに
対応するバイトがデータの上位側になる.例えば、$2
0008地のハーフワードサイズのデータをアクセスす
ると,$2000番地の内容がデータの上位側になり、
$2001番地の内容がデータの下位側になる.また.
$2000番地のワードサイズのデータをアクセスする
と、$2000番地から$2003番地までの内容が、
第2図に示す様に、データとして扱われる. 本実施例のデータ処理装置ではビットを操作する命令の
1つとして,BTST命令がある。BTST命令は、処
理するビット番号とそのビットが格納されている場所を
オペランドとして指定する.BTST命令は、指定され
たビットの0または1をテストして演算フラグに反映す
る命令である.次の3種の命令 BTST #O,($2000).wBTST $
0.($2000).hBTST SO, ($
2000). bは,メモリの$2000番地から始
まる、それぞれワードサイズ,ハーフワードサイズ,バ
イトサイズのデータの0ビット目をテストする命令であ
る。各命令ともビット番号がOであるので、第2図に示
す様に,各命令とも同一のビット(左端のビット)20
1をテストする命令である。
一方,次の3種の命令
B ’rS ’rn O , R 1 . wBTST
$0,R1.h BTST #0.Rl.b は、1番目のレジスタを,それぞれワードサイズ,ハー
フワードサイズ,バイトサイズのデータとして、0ビッ
ト目をテストする命令である。各命令ともビット番号が
Oであるので、第1図に示す様に、各命令とも同一のビ
ット(左端のビット)101をテストする命令である. 第3図は従来のデータ処理装置のレジスタについて示し
た図である,従来は、レジスタのサイズより短いデータ
をレジスタに格納するとき、レジスタの下位側(右側)
に詰めて格納していた.そのため、上記の様なビット操
作命令を実行すると、データのサイズにより、同じビッ
ト番号が指すビット位置が変ってしまう。例えば、上記
のBTST命令を実行した場合を考えてみると、 BTST 110,Rl.w は、レジスタの最上位ビットであるOビット目301を
対象にしているが、 BTST #O,Rl.h は,レジスタの16ビット目302を対象にしており、
また、 BTST #O,Rl.b は,レジスタの24ビット目303を対象にしている. 以上の様に、従来のデータ格納方式によると、レジスタ
に格納されたデータのビット番号がデータのサイズによ
り変化してしまうという問題点があった. 本実施例のデータ格納方式によれば、サイズの短いデー
タをレジスタの左側に詰めているので、ビットテスト命
令の様にビット番号でデータをアクセスする場合、同じ
ビット番号のビット位置がサイズによって変ることがな
い.したがって、プログラムを作成するときに、サイズ
によるビット番号のずれを意識しなくても良いので、プ
ログラムの作成が容易になり、また、エラーの発生を未
然に防止することができる。
$0,R1.h BTST #0.Rl.b は、1番目のレジスタを,それぞれワードサイズ,ハー
フワードサイズ,バイトサイズのデータとして、0ビッ
ト目をテストする命令である。各命令ともビット番号が
Oであるので、第1図に示す様に、各命令とも同一のビ
ット(左端のビット)101をテストする命令である. 第3図は従来のデータ処理装置のレジスタについて示し
た図である,従来は、レジスタのサイズより短いデータ
をレジスタに格納するとき、レジスタの下位側(右側)
に詰めて格納していた.そのため、上記の様なビット操
作命令を実行すると、データのサイズにより、同じビッ
ト番号が指すビット位置が変ってしまう。例えば、上記
のBTST命令を実行した場合を考えてみると、 BTST 110,Rl.w は、レジスタの最上位ビットであるOビット目301を
対象にしているが、 BTST #O,Rl.h は,レジスタの16ビット目302を対象にしており、
また、 BTST #O,Rl.b は,レジスタの24ビット目303を対象にしている. 以上の様に、従来のデータ格納方式によると、レジスタ
に格納されたデータのビット番号がデータのサイズによ
り変化してしまうという問題点があった. 本実施例のデータ格納方式によれば、サイズの短いデー
タをレジスタの左側に詰めているので、ビットテスト命
令の様にビット番号でデータをアクセスする場合、同じ
ビット番号のビット位置がサイズによって変ることがな
い.したがって、プログラムを作成するときに、サイズ
によるビット番号のずれを意識しなくても良いので、プ
ログラムの作成が容易になり、また、エラーの発生を未
然に防止することができる。
第4図は本発明の一実施例であるデータ処理装置の演算
フラグの生成方式について示した図である。本データ処
理装置の演算フラグには、演算時の最上位ビットからの
桁上がりを示す桁上げ(キャリー.C)フラグ,及び、
演算結果の正または負を示す負(ネガティブ、N)フラ
グ、演算結果の零または非零を示す零(ゼロ、Z)フラ
グがある. 第4図(a)はワードサイズの整数型データの加算にお
ける演算フラグの生成方式を示している.Cフラグは0
ビット目からの桁上げ401、Nフラグはビット0の値
402、Zフラグは32ビット全部のオールOを検出(
403)L,て反映する.第4図(b)はハーフワード
サイズの整数型データの加算における演算フラグの生成
方式を示している.演算に先立ち入力データは、図に示
す様に、左詰めにされ、左側の残りの部分には0が補充
されている。この場合、左側のOは演算に関与しないの
で,Cフラグは0ビット目からの桁上げ401.Nフラ
グはビット0の値402、また、2フラグは32ビット
全部のオールOを検出(403)して反映すれば良い. 第4図(c)はバイトサイズの整数型データの加算にお
ける演算フラグの生成方式を示している.第4図(b)
と同様に、演算に先立ち人力データは、図に示す様に、
左詰めにされ、左側の残りの部分にはOが補充されてい
る.この場合も同様に、右側のOは演算に関与しないの
で,CフラグはOビット目からの桁上げ401、Nフラ
グはビットOの値402、また,Zフラグは32ビット
全部のオールOを検出(403)L,て反映すれば良い
.第5図は、データを右詰めにして演算する、従来のデ
ータ処理装置における、演算フラグの生成方式を示した
ものである. 第5図(a)はワードサイズの整数型データの加算にお
ける演算フラグの生成方式を示している.CフラグはO
ビット目からの桁上げ501.NフラグはビットOの値
502.Zフラグは32ビット全部のオールOを検出(
503)L/て反映する.この場合は本発明の実施例と
同じになる.第5図(b)はハーフワードサイズの整数
型データの加算における演算フラグの生成方式を示して
いる.Cフラグはレジスタの16ビット目からの桁上げ
511、Nフラグは16ビット目の値512,また、2
フラグは下位16ビットのオールOを検出(513)L
て反映する必要がある.第5図(a)はバイトサイズの
整数型データの加算における演算フラグの生成方式を示
している.Cフラグは24ビット目からの桁上げ521
、Nフラグは16ビット目の値522、また、2フラグ
は下位8ビットのオール0を検出(523)Lて反映す
る必要がある. 以上の様に、本発明の実施例によれば,演算フラグの生
成回路をデータのサイズ毎に持つ必要が無くなるので,
演算フラグの生成回路を簡略化できる. なお,上記の説明では、演算として加算の場合について
説明したが,減算、或いは、AND/ORの様な論理演
算の場合でも、右側にOを補って演算しても問題無いこ
とは明らかである。
フラグの生成方式について示した図である。本データ処
理装置の演算フラグには、演算時の最上位ビットからの
桁上がりを示す桁上げ(キャリー.C)フラグ,及び、
演算結果の正または負を示す負(ネガティブ、N)フラ
グ、演算結果の零または非零を示す零(ゼロ、Z)フラ
グがある. 第4図(a)はワードサイズの整数型データの加算にお
ける演算フラグの生成方式を示している.Cフラグは0
ビット目からの桁上げ401、Nフラグはビット0の値
402、Zフラグは32ビット全部のオールOを検出(
403)L,て反映する.第4図(b)はハーフワード
サイズの整数型データの加算における演算フラグの生成
方式を示している.演算に先立ち入力データは、図に示
す様に、左詰めにされ、左側の残りの部分には0が補充
されている。この場合、左側のOは演算に関与しないの
で,Cフラグは0ビット目からの桁上げ401.Nフラ
グはビット0の値402、また、2フラグは32ビット
全部のオールOを検出(403)して反映すれば良い. 第4図(c)はバイトサイズの整数型データの加算にお
ける演算フラグの生成方式を示している.第4図(b)
と同様に、演算に先立ち人力データは、図に示す様に、
左詰めにされ、左側の残りの部分にはOが補充されてい
る.この場合も同様に、右側のOは演算に関与しないの
で,CフラグはOビット目からの桁上げ401、Nフラ
グはビットOの値402、また,Zフラグは32ビット
全部のオールOを検出(403)L,て反映すれば良い
.第5図は、データを右詰めにして演算する、従来のデ
ータ処理装置における、演算フラグの生成方式を示した
ものである. 第5図(a)はワードサイズの整数型データの加算にお
ける演算フラグの生成方式を示している.CフラグはO
ビット目からの桁上げ501.NフラグはビットOの値
502.Zフラグは32ビット全部のオールOを検出(
503)L/て反映する.この場合は本発明の実施例と
同じになる.第5図(b)はハーフワードサイズの整数
型データの加算における演算フラグの生成方式を示して
いる.Cフラグはレジスタの16ビット目からの桁上げ
511、Nフラグは16ビット目の値512,また、2
フラグは下位16ビットのオールOを検出(513)L
て反映する必要がある.第5図(a)はバイトサイズの
整数型データの加算における演算フラグの生成方式を示
している.Cフラグは24ビット目からの桁上げ521
、Nフラグは16ビット目の値522、また、2フラグ
は下位8ビットのオール0を検出(523)Lて反映す
る必要がある. 以上の様に、本発明の実施例によれば,演算フラグの生
成回路をデータのサイズ毎に持つ必要が無くなるので,
演算フラグの生成回路を簡略化できる. なお,上記の説明では、演算として加算の場合について
説明したが,減算、或いは、AND/ORの様な論理演
算の場合でも、右側にOを補って演算しても問題無いこ
とは明らかである。
第6図はレジスタ内の整数型データのサイズ変換につい
て示したものである. 第6図(a)はバイトサイズのデータをワードサイズに
変換する様子を示している.バイトサイズのデータはレ
ジスタに左詰めで格納されているので,ワードサイズに
拡張する場合は、24ビット右にシフトすれば良い.こ
こで、データを符号無しの2進数とみなす場合は左側か
ら0をシフトインすれば良い.また,データを符号付き
の2進数とみなす場合は最上位のビットと同じ値を左側
からシフトインすれば良い. 第6図(b)はハーフワードサイズのデータをワードサ
イズに変換する様子を示している.バイトサイズからワ
ードサイズへの場合と同様に,ハーフワードサイズのデ
ータもレジスタに左詰めで格納されているので、ワード
サイズに拡張する場合は、16ビット右にシフトすれば
良い.第6図(c)はバイトサイズのデータをハーフワ
ードサイズに変換する様子を示している.この場合も同
様に、バイトサイズのデータがレジスタに左詰めで格納
されているので,ハーフワードサイズに拡張する場合は
、8ビット右にシフトすれば良い. 以上述べた様に、データを符号無しの2進数として扱う
場合はOをシフトインし、データを符号付きの2進数と
して扱う場合は符号をシフトインすれば良い.これらの
処理は,マイクロプロセッサの基本的な命令である、論
理右シフト命令と算術右シフトによって容易に実現でき
る.また逆に、長いサイズのデータを短いサイズに変換
する場合は、左にシフトすれば良い.つまり、ワードサ
イズからハーフワードサイズに変換するときは,右側か
ら0をシフトインしながら,16ビット左にシフトすれ
ば良い.同様に、ワードサイズからバイトサイズに変換
するときは、24ビット左にシフトし、ハーフワードサ
イズからバイトサイズに変換するときは、8ビット左に
シフトすれば良い. なお、上記のようにデータのサイズを大きくする場合は
、データの符号付き/符号無に関係なく、左からシフト
インする値は常にOで良い。したがって,この処理も,
マイクロプロセッサの基本的な命令である左シフト命令
によって容易に実現できる. 以上の様に、本発明のデータ処理装置では、データのサ
イズの変換をシフト命令で容易に実現できる.従来のデ
ータ処理装置では、サイズ変換のための専用命令を特別
に設けておく必要があったが,本発明によれば、基本的
なシフト命令を使って容易に実現できるので、特別な命
令を設ける必要がなくなり、命令体系をシンプルにする
ことができる. 第7図は以上に述べてきた本発明の一実施例であるデー
タ処理装置のブロック図である.データ処理装置700
はレジスタRl(711)、R2 (712),R3
(713).バレルシフタ720、演算器730、デー
タ長補正用マスク回路731,732、メモリデータレ
ジスタ740、メモリデータアライナ741,メモリバ
ス742,及び、データバス751,752,753か
ら成る。
て示したものである. 第6図(a)はバイトサイズのデータをワードサイズに
変換する様子を示している.バイトサイズのデータはレ
ジスタに左詰めで格納されているので,ワードサイズに
拡張する場合は、24ビット右にシフトすれば良い.こ
こで、データを符号無しの2進数とみなす場合は左側か
ら0をシフトインすれば良い.また,データを符号付き
の2進数とみなす場合は最上位のビットと同じ値を左側
からシフトインすれば良い. 第6図(b)はハーフワードサイズのデータをワードサ
イズに変換する様子を示している.バイトサイズからワ
ードサイズへの場合と同様に,ハーフワードサイズのデ
ータもレジスタに左詰めで格納されているので、ワード
サイズに拡張する場合は、16ビット右にシフトすれば
良い.第6図(c)はバイトサイズのデータをハーフワ
ードサイズに変換する様子を示している.この場合も同
様に、バイトサイズのデータがレジスタに左詰めで格納
されているので,ハーフワードサイズに拡張する場合は
、8ビット右にシフトすれば良い. 以上述べた様に、データを符号無しの2進数として扱う
場合はOをシフトインし、データを符号付きの2進数と
して扱う場合は符号をシフトインすれば良い.これらの
処理は,マイクロプロセッサの基本的な命令である、論
理右シフト命令と算術右シフトによって容易に実現でき
る.また逆に、長いサイズのデータを短いサイズに変換
する場合は、左にシフトすれば良い.つまり、ワードサ
イズからハーフワードサイズに変換するときは,右側か
ら0をシフトインしながら,16ビット左にシフトすれ
ば良い.同様に、ワードサイズからバイトサイズに変換
するときは、24ビット左にシフトし、ハーフワードサ
イズからバイトサイズに変換するときは、8ビット左に
シフトすれば良い. なお、上記のようにデータのサイズを大きくする場合は
、データの符号付き/符号無に関係なく、左からシフト
インする値は常にOで良い。したがって,この処理も,
マイクロプロセッサの基本的な命令である左シフト命令
によって容易に実現できる. 以上の様に、本発明のデータ処理装置では、データのサ
イズの変換をシフト命令で容易に実現できる.従来のデ
ータ処理装置では、サイズ変換のための専用命令を特別
に設けておく必要があったが,本発明によれば、基本的
なシフト命令を使って容易に実現できるので、特別な命
令を設ける必要がなくなり、命令体系をシンプルにする
ことができる. 第7図は以上に述べてきた本発明の一実施例であるデー
タ処理装置のブロック図である.データ処理装置700
はレジスタRl(711)、R2 (712),R3
(713).バレルシフタ720、演算器730、デー
タ長補正用マスク回路731,732、メモリデータレ
ジスタ740、メモリデータアライナ741,メモリバ
ス742,及び、データバス751,752,753か
ら成る。
レジスタ711,712,713,740、データバス
751,752,753,742,及び、演算器類(7
20,730)のデータ輸は32ビット(4バイト)あ
り、これをワードサイズとよぶ. メモリデータレジスタ740は、メモリとのデータ転送
時にバッファとして使用される.メモリデータアライナ
741は,4バイトの境界にないメモリデータを扱うと
きに、データの位置を調整するために使用される. 演算器730は左詰めにされたデータの加減算,及び、
論理演算を行い、演算結果と演算フラグ760を出力す
る.データ長補正用マスク回路731,732は、ワー
ドサイズより小さいサイズのデータを演算するとき、左
詰めにされたデータ以外の部分に0を挿入するための回
路である.なお、本実施例では上記の様に,データ長補
正用マスク回路731,732を用いてOを挿入してい
るが、(1)演算結果をレジスタに格納するとき,右側
のOも一緒に書き込むこと、(2)短いデータをメモリ
から読み出すとき、アライナ741によって右側に0を
補う様にすることにより、データ長補正用マスク回路7
31,732を省略することもできる. バレルシフタ720はシフト命令に対応する処理を1サ
イクルで実行する回路である。
751,752,753,742,及び、演算器類(7
20,730)のデータ輸は32ビット(4バイト)あ
り、これをワードサイズとよぶ. メモリデータレジスタ740は、メモリとのデータ転送
時にバッファとして使用される.メモリデータアライナ
741は,4バイトの境界にないメモリデータを扱うと
きに、データの位置を調整するために使用される. 演算器730は左詰めにされたデータの加減算,及び、
論理演算を行い、演算結果と演算フラグ760を出力す
る.データ長補正用マスク回路731,732は、ワー
ドサイズより小さいサイズのデータを演算するとき、左
詰めにされたデータ以外の部分に0を挿入するための回
路である.なお、本実施例では上記の様に,データ長補
正用マスク回路731,732を用いてOを挿入してい
るが、(1)演算結果をレジスタに格納するとき,右側
のOも一緒に書き込むこと、(2)短いデータをメモリ
から読み出すとき、アライナ741によって右側に0を
補う様にすることにより、データ長補正用マスク回路7
31,732を省略することもできる. バレルシフタ720はシフト命令に対応する処理を1サ
イクルで実行する回路である。
次に本実施例の動作について、例をあげて説明する.
レジスタ711に格納されているハーフワードサイズの
符号付き整数データと、レジスタ712に格納されてい
るバイトサイズの符号付き整数データとを加算して、ハ
ーフワードサイズの符号付き整数データとして、レジス
タ713に格納する場合を考える. (1)レジスタ712のバイトサイズの符号付き整数デ
ータをバレルシフタ720を用いて、8ビット分、右に
算術シフトし、その結果を、レジスタ712.に格納す
る. (2)レジスタ711、及び、712の内容をそれぞれ
バス751,752を介して、演算器に730に入力し
て加算する.なおこのとき、入力データは、それぞれデ
ータ長補正用マスク回路731,732によって、32
ビットデータ幅のうち右側16ビットは0にマスクされ
て、演算される. (3)演算器730の演算結果をレジスタ713に格納
する.また同時に、演算結果のOビット目からの桁上が
りを桁上げフラグ、0ビット目の値を負フラグ、32ビ
ット全体のオールOを検出してそれを零フラグとする. 以上の様に本発明の実施例によれば,演算器やレジスタ
のデータ幅より小さいデータを容易に処理することがで
きる. 〔発明の効果〕 以上述べてきたように本発明によれば、レジスタのビッ
ト番号がデータのサイズによって変らないので,メモリ
のビット番号と同様に扱うことができ、プログラム作成
時にビット番号に対する特別な注意が不要になり、プロ
グラムの作成不良が混入する確率を少なくできる効果が
ある.また、演算フラグの生成回路がデータのサイズに
よる影響を受けないので、生成回路の簡略化ができ、回
路規模削減、並びに、動作速度向上の効果がある. また、本発明によれば、データのサイズを更に拡張する
ときにも、ビット番号の付け方が容易に拡張でき、並び
に、演算フラグの生成回路は変更が不要であることから
、データサイズを拡張したデータ.処理装置の移行が容
易に行なえるという効果がある.
符号付き整数データと、レジスタ712に格納されてい
るバイトサイズの符号付き整数データとを加算して、ハ
ーフワードサイズの符号付き整数データとして、レジス
タ713に格納する場合を考える. (1)レジスタ712のバイトサイズの符号付き整数デ
ータをバレルシフタ720を用いて、8ビット分、右に
算術シフトし、その結果を、レジスタ712.に格納す
る. (2)レジスタ711、及び、712の内容をそれぞれ
バス751,752を介して、演算器に730に入力し
て加算する.なおこのとき、入力データは、それぞれデ
ータ長補正用マスク回路731,732によって、32
ビットデータ幅のうち右側16ビットは0にマスクされ
て、演算される. (3)演算器730の演算結果をレジスタ713に格納
する.また同時に、演算結果のOビット目からの桁上が
りを桁上げフラグ、0ビット目の値を負フラグ、32ビ
ット全体のオールOを検出してそれを零フラグとする. 以上の様に本発明の実施例によれば,演算器やレジスタ
のデータ幅より小さいデータを容易に処理することがで
きる. 〔発明の効果〕 以上述べてきたように本発明によれば、レジスタのビッ
ト番号がデータのサイズによって変らないので,メモリ
のビット番号と同様に扱うことができ、プログラム作成
時にビット番号に対する特別な注意が不要になり、プロ
グラムの作成不良が混入する確率を少なくできる効果が
ある.また、演算フラグの生成回路がデータのサイズに
よる影響を受けないので、生成回路の簡略化ができ、回
路規模削減、並びに、動作速度向上の効果がある. また、本発明によれば、データのサイズを更に拡張する
ときにも、ビット番号の付け方が容易に拡張でき、並び
に、演算フラグの生成回路は変更が不要であることから
、データサイズを拡張したデータ.処理装置の移行が容
易に行なえるという効果がある.
第1図は本発明の一実施例であるデータ処理装置のレジ
スタの図、第2図は同じくメモリの図、第3図は従来の
データ処理装置のレジスタの図,第4図は本発明の一実
施例であるデータ処理装置における演算フラグの生成方
式を示す図、第5図は従来のデータ処理装置における演
算フラグの生成方式を示す図、第6図は本発明の一実施
例であるデータ処理装置におけるデータサイズの変換方
式を示す図,第7図は本発明の一実施例であるデータ処
理装置のブロック図である. 100・・・レジスタ、700・・・データ処理装置、
711,712,713・・・レジスタ、720・・・
バレルシフタ、730・・・演算器.731,732・
・・データ長補正用マスク回路、740・・・メモリデ
ータレジスタ、741・・・メモリデータアライナ,7
42・・・メモリデータバス、751,752,753
・・・データバス. 第 ■ (αつ 第 口 (b) 4o3 32ビ,トう辷イイ(シ11=4今jl二,←一−一一
一一一 ノVイト 第 ハーフワード 口 箒 凹 /DO レシ゛スタ /o+ ftrイ立ビノト 201 最t仕ビ・7ト 奉 目 (α) 第 占 図 ( しり 第 S 口(C) 第 6 口(α) パイトーワード 第 6 図 (ト〕 ハーフ7−ドー ワード 第 6 口(C) ノVイト ーハーフヮード
スタの図、第2図は同じくメモリの図、第3図は従来の
データ処理装置のレジスタの図,第4図は本発明の一実
施例であるデータ処理装置における演算フラグの生成方
式を示す図、第5図は従来のデータ処理装置における演
算フラグの生成方式を示す図、第6図は本発明の一実施
例であるデータ処理装置におけるデータサイズの変換方
式を示す図,第7図は本発明の一実施例であるデータ処
理装置のブロック図である. 100・・・レジスタ、700・・・データ処理装置、
711,712,713・・・レジスタ、720・・・
バレルシフタ、730・・・演算器.731,732・
・・データ長補正用マスク回路、740・・・メモリデ
ータレジスタ、741・・・メモリデータアライナ,7
42・・・メモリデータバス、751,752,753
・・・データバス. 第 ■ (αつ 第 口 (b) 4o3 32ビ,トう辷イイ(シ11=4今jl二,←一−一一
一一一 ノVイト 第 ハーフワード 口 箒 凹 /DO レシ゛スタ /o+ ftrイ立ビノト 201 最t仕ビ・7ト 奉 目 (α) 第 占 図 ( しり 第 S 口(C) 第 6 口(α) パイトーワード 第 6 図 (ト〕 ハーフ7−ドー ワード 第 6 口(C) ノVイト ーハーフヮード
Claims (1)
- 【特許請求の範囲】 1、整数型データとして、複数種類のサイズのデータを
処理することができるデータ処理装置において、 該データの第1のサイズは、プロセッサ内のレジスタの
データ幅と同じであり、 該データの第2のサイズは、該第1のサイズの2分の1
、または、4分の1のサイズであり、該レジスタを該第
2のサイズのデータとして使用するときには、該レジス
タの上位側(左側)を使う ことを特徴とするデータ処理装置。 2、請求項1記載のデータ処理装置において、該データ
のビット番号は、最上位ビットを0ビット目とし、以下
、下位側(右側)のビットにいくにしたがつて、順次大
きくなるように、ビット番号を対応付ける ことを特徴とするデータ処理装置。 3、整数型データとして、複数種類のサイズのデータを
処理することができるデータ処理装置において、 該データの第1のサイズは、プロセッサ内の演算器のデ
ータ幅と同じであり、 該データの第2のサイズは、該第1のサイズの2分の1
、または、4分の1のサイズであり、該第2のサイズの
データを演算するとき、該データを左詰めにして、該演
算器の上位側を使つて演算する ことを特徴とするデータ処理装置。 4、請求項3記載のデータ処理装置において、該第2の
サイズのデータを左詰めにして演算するとき、右側の残
りの部分に0を挿入して演算する ことを特徴とするデータ処理装置。 5、請求項3記載のデータ処理装置において、該第2の
サイズのデータを演算するとき、 該演算器の演算結果のうち左端の最上位ビットを、該第
2のサイズのデータ演算の負フラグとする ことを特徴とするデータ処理装置。 6、請求項3記載のデータ処理装置において、該第2の
サイズのデータを演算するとき、 該演算器の演算結果のうち左端の最上位ビットからの桁
上がりを、該第2のサイズのデータ演算の桁上げフラグ
とする ことを特徴とするデータ処理装置。 7、請求項4記載のデータ処理装置において、該第2の
サイズのデータを演算するとき、 該演算器の演算結果の全てのビットの零を検出して、該
第2のサイズのデータ演算の零フラグとする ことを特徴とするデータ処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4981989A JPH02230320A (ja) | 1989-03-03 | 1989-03-03 | データ処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4981989A JPH02230320A (ja) | 1989-03-03 | 1989-03-03 | データ処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02230320A true JPH02230320A (ja) | 1990-09-12 |
Family
ID=12841719
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4981989A Pending JPH02230320A (ja) | 1989-03-03 | 1989-03-03 | データ処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH02230320A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03119420A (ja) * | 1989-10-03 | 1991-05-21 | Nec Corp | 情報処理装置 |
| JP2020526825A (ja) * | 2017-07-10 | 2020-08-31 | エイアールエム リミテッド | ベクトル要素内のビット値のテスト |
-
1989
- 1989-03-03 JP JP4981989A patent/JPH02230320A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03119420A (ja) * | 1989-10-03 | 1991-05-21 | Nec Corp | 情報処理装置 |
| JP2020526825A (ja) * | 2017-07-10 | 2020-08-31 | エイアールエム リミテッド | ベクトル要素内のビット値のテスト |
| US11422807B2 (en) | 2017-07-10 | 2022-08-23 | Arm Limited | Testing bit values inside vector elements |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4021655A (en) | Oversized data detection hardware for data processors which store data at variable length destinations | |
| US5666510A (en) | Data processing device having an expandable address space | |
| JPS5862746A (ja) | 割算装置 | |
| JPH0414385B2 (ja) | ||
| JPH11272546A (ja) | 可変長レジスタ装置 | |
| JPH0546383A (ja) | データ処理装置 | |
| JP4002151B2 (ja) | 情報処理装置 | |
| JPH034936B2 (ja) | ||
| JPH02230320A (ja) | データ処理装置 | |
| JP2703884B2 (ja) | データ書込み制御方式 | |
| JPS5826584B2 (ja) | デ−タ処理装置 | |
| JPH0831033B2 (ja) | データ処理装置 | |
| JPH02127726A (ja) | 情報処理装置 | |
| JP3613466B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
| US6128636A (en) | Method for interfacing floating point and integer processes in a computer system | |
| JP3787951B2 (ja) | コード変換方法及びこれを用いたコード変換装置 | |
| KR930003410B1 (ko) | 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치 | |
| JPS59188900A (ja) | デ−タ処理装置 | |
| JP3541776B2 (ja) | マイクロコンピュータ | |
| JP2707256B2 (ja) | マイクロコンピユータ | |
| JPH0588887A (ja) | データ処理装置 | |
| JPH04195629A (ja) | 演算フラグ生成装置 | |
| JPH0553759A (ja) | 固定小数点演算ユニツト | |
| JPH03149656A (ja) | 演算回路 | |
| JP2002522822A (ja) | プロセッサでデータ変換を行う回路装置および方法 |