JP3190639B2 - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP3190639B2
JP3190639B2 JP12063499A JP12063499A JP3190639B2 JP 3190639 B2 JP3190639 B2 JP 3190639B2 JP 12063499 A JP12063499 A JP 12063499A JP 12063499 A JP12063499 A JP 12063499A JP 3190639 B2 JP3190639 B2 JP 3190639B2
Authority
JP
Japan
Prior art keywords
instruction
address
value
program counter
unit
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.)
Expired - Lifetime
Application number
JP12063499A
Other languages
English (en)
Other versions
JP2000020312A (ja
Inventor
秀一 高山
一 小川
謙一 川口
信生 桧垣
謙介 小谷
哲也 田中
信哉 宮地
岳人 瓶子
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP12063499A priority Critical patent/JP3190639B2/ja
Publication of JP2000020312A publication Critical patent/JP2000020312A/ja
Application granted granted Critical
Publication of JP3190639B2 publication Critical patent/JP3190639B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサ、コン
パイラ、最適化装置、アセンブラ、リンカ、デバッガ、
及び逆アセンブラ関し、読み出した命令の単位と無関係
な単位で命令を実行するプロセッサ及びそのようなプロ
セッサを対象としたコンパイラ、最適化装置、アセンブ
ラ、リンカ、デバッガ、及び逆アセンブラに関する。
【0002】
【従来の技術】一般に、プロセッサは、プログラムカウ
ンタに基づき、命令をメモリから読み出し、実行する。
図43は、プロセッサの基本構成の例を示すブロック図
である。命令メモリ4301は、プログラムを構成する
命令列を記憶している。ここで、1命令は、8ビット長
とし、4個の命令を1つの命令パケットとする。
【0003】プログラムカウンタ4300は、命令メモ
リ4301内での命令パケットのアドレスを指定する。
命令読み出し部4302は、プログラムカウンタ430
0により指定される命令パケットを命令メモリ4301
から読み込む。命令実行部4303は、読み出された命
令パケットに含まれる4つの命令のすべてを1サイクル
内で実行する。
【0004】このように、一般にプロセッサは、1つの
プログラムカウンタによって指定される命令パケットを
読み込み、読み出した4個の命令を1サイクルで実行す
ることができる。
【0005】
【発明が解決しようとする課題】しかしながら、このよ
うなプロセッサでは、読み込んだ命令パケット内のすべ
ての命令を1サイクルの実行単位としているため、1つ
の命令パケット中に、I/Oやメモリ等のリソースが利
用できない理由で実行できない命令が1つでもあると、
そのリソースが利用できるようになるまで、その命令パ
ケット内のすべての命令の実行が待たされることにな
る。その結果、このようなプロセッサは、命令の実行速
度が遅い。
【0006】そこで、本発明はかかる問題点に鑑み、命
令の読み出しと命令の実行の単位が異なるプログラムを
実行できるプロセッサ及びそのようなプログラムを作成
できるプログラム開発環境を提供することを目的とす
る。
【0007】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、1バイトデータをメモリの1単位データ
として命令を格納するメモリからプログラムカウンタの
値に基いて命令を読み出し、実行するプロセッサにおい
て、前記メモリの1単位データ又は複数のメモリの1単
位データより構成されるプロセッサの1単位データの前
記メモリ内の格納位置を指定する第1のプログラムカウ
ンタと、前記プロセッサの1単位データに含まれるプロ
セッサが実行する1つのオペレーションを示すプロセッ
サの1単位命令の位置を指定する第2のプログラムカウ
ンタとを備える。
【0008】また、本発明は、命令列から最適化コード
を生成する命令列最適化装置であって、前記命令列の各
命令の大きさを予測して、各命令に対して、上位ビット
は、プロセッサの1単位データが格納されるメモリアド
レスを指定し、下位ビットは、プロセッサの1単位デー
タ内のプロセッサの1単位命令の位置を指定するアドレ
スを付与するアドレス付与手段と、前記命令列から、特
定の1つの命令のアドレスに解決すべきラベルを検出
し、当該命令のアドレスを取得するとともに、特定の2
つの命令のアドレスの差分に解決すべきラベルを検出
し、当該2つの命令のアドレスを取得するラベル検出手
段と、前記特定の2つの命令のアドレスの差分に解決す
べきラベルが検出された場合に、前記特定の2つの命令
の一方の命令のアドレスから他方の命令のアドレスを減
算し、プログラムカウンタ相対値を算出するプログラム
カウンタ相対値算出手段と、前記特定の1つの命令のア
ドレスに解決すべきラベルを有する命令については、そ
の大きさを前記特定の1つの命令のアドレスの大きさに
応じた命令の大きさに変換し、前記特定の2つの命令の
アドレスの差分に解決すべきラベルを有する命令につい
ては、その大きさを前記プログラムカウンタ相対値の大
きさに応じた命令の大きさに変換する変換手段と、前記
変換された命令の大きさに応じて、各命令のアドレスを
変換して、最適化コードを生成する最適化コード生成手
段とを備える。
【0009】また、本発明は、オブジェクトコード中の
命令のアドレスを指定して、そのアドレスで特定される
命令のアセンブラ名を出力する逆アセンブラであって、
上位ビットは、プロセッサの1単位データが格納される
メモリアドレスを指定し、下位ビットは、プロセッサの
1単位データ内のプロセッサの1単位命令の位置を指定
するアドレスが付与された命令からなるオブジェクトコ
ードを取得するオブジェクトコード取得手段と、前記特
定される命令がプログラムカウンタ相対値を含む命令で
ある場合に、前記特定される命令中からプログラムカウ
ンタ相対値を抽出するプログラムカウンタ相対値抽出手
段と、ラベルの位置を示すラベルアドレスとラベル名と
を対応させて記憶する記憶手段と、前記指定した命令の
アドレスとプログラムカウンタ相対値とを加算し、加算
結果をラベルアドレスとするラベルアドレス算出手段
と、前記記憶手段を参照して、前記算出したラベルアド
レスに対応するラベル名を検索する検索手段とを備え
る。
【0010】また、本発明は、ソースコードから命令列
を生成するコンパイラであって、上位ビットは、プロセ
ッサの1単位データが格納されるメモリアドレスを指定
し、下位ビットは、プロセッサの1単位データ内のプロ
セッサの1単位命令の位置を指定するプログラムカウン
タの値とプログラムカウンタ相対値とを加算又は減算
し、演算結果をプログラムカウンタの値とする命令をプ
ロセッサに実行させるプログラムカウンタ相対値演算命
令を生成する。
【0011】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を用いて説明する。 (第1の実施形態)第1の実施形態は、命令の読み出し
の単位と命令の実行の単位とが異なるプログラムを生成
する最適化装置、アセンブラ、リンカとそのプログラム
を実行するプロセッサに関する。 (プロセッサが実行する命令のフォーマット)まず、本
実施の形態に係るプロセッサが実行する命令のフォーマ
ットについて説明する。
【0012】図1(a)〜図1(e)は本実施の形態の
プロセッサが実行する命令のフォーマットを示す図であ
る。プロセッサが実行する命令は21ビットを1単位
(1ユニット)として構成される。命令には、1つのユ
ニットで構成される21ビット命令(1ユニット命令)
と2つのユニットで構成される42ビット命令(2ユニ
ット命令)の2種類の命令が存在する。(以下、「命
令」とは、21ビット命令又は42ビット命令のいずれ
かを指す)。
【0013】1ビットのフォーマット情報101は、そ
の命令がいずれの長さの命令であるかを示す。具体的に
は、フォーマット情報101が“0”の時には、そのフ
ォーマット情報101が含まれるユニットで1つの命
令、すなわち、21ビット命令を構成する。フォーマッ
ト情報101が“1”の時には、そのフォーマット情報
101が含まれるユニットと後続するユニットで1つの
命令、すなわち、42ビット命令を構成する。
【0014】1ビットの並列実行境界情報100は、そ
の命令とそれに後続する命令との間に並列実行の境界が
存在するか否かを示す。具体的には、並列実行境界情報
100が“1”の時には、その並列実行境界情報100
が含まれる命令と後続命令の間に並列実行の境界が存在
し、これらの命令は異なるサイクルにおいて実行され
る。並列実行境界情報100が“0”の時には、並列実
行境界情報100が含まれる命令と後続命令の間に並列
実行の境界が存在せず、これらの命令は同一のサイクル
において実行される。
【0015】フォーマット情報101と並列実行境界情
報100以外の部分は、オペレーションを示す。すなわ
ち、21ビット命令では19ビットの長さで、42ビッ
ト命令では40ビットの長さでオペレーションが指定さ
れる。具体的には、“Op1”、“Op2”、“Op
3”、“Op4”のフィールドは、オペレーションの種
類を表すオペコードを、“Rs”のフィールドは、ソー
スオペランドとなるレジスタのレジスタ番号を、“R
d”のフィールドは、デスティネーションオペランドと
なるレジスタのレジスタ番号を示す。また、“imm
5”及び“imm32”のフィールドは、それぞれ5ビ
ットと32ビットの演算用定数オペランドを示す。そし
て、“disp13”及び“disp32”のフィール
ドは、それぞれ13ビットと32ビットの偏位(ディス
プレースメント)を示す。
【0016】32ビットの定数などの長い定数を扱う転
送命令や演算命令、大きなディスプレースメントを指定
する分岐命令は42ビット命令で定義され、それらを除
くほとんどの命令は21ビット命令で定義される。42
ビット命令の構成要素である2つのユニットのうち、後
ろのユニットには、長い定数やディスプレースメントの
一部のみが配置され、オペコードは配置されない。 (プロセッサの命令の読み出しと実行の動作)次に、本
実施の形態のプロセッサによる命令の読み出しと実行の
動作について説明する。本実施の形態のプロセッサは、
静的な並列スケジューリングを前提としたプロセッサで
ある。図2(a)は、命令の格納、及び読み出し単位で
ある命令パケットを示す図である。命令パケットは、3
個のユニット(63ビット)とダミーデータ(1ビッ
ト)で構成される。プロセッサは、1サイクルにおい
て、64ビットの固定長(以下、「パケット」と呼ぶ)
で命令を読み出す。つまり、1つの命令は21ビット単
位であり、メモリからの読み出しに不便であるので、命
令を複数個組み合わせたバイト単位の命令パケットを読
み出しの単位としている。また、この例のように、命令
パケット内のユニットの個数が2の巾乗数でない場合
に、特に効果がある。後述するように、命令パケット内
のユニットの位置を通常の2進数で表すと都合が悪いか
らである。以下、1パケットを構成する3個のユニット
を、アドレス値の小さい方から順に第1ユニット、第2
ユニット、第3ユニットと呼ぶことにする。
【0017】図2(b)は、命令の読み出しの順序を示
す図である。図に示すように、命令の読み出しは、各サ
イクル、1パケットである。図2(c)は、命令の実行
の順序を示す図である。図に示すように、1サイクルで
実行する命令の単位は、並列実行の境界までである。つ
まり、各サイクルにおいて並列実行境界情報100が
“1”である命令までの命令を並列実行する。読みださ
れながら実行されなかったユニットは、命令バッファに
蓄積され、次のサイクル以降で実行される。
【0018】以上のように、本実施の形態のプロセッサ
は、固定長のパケット単位で命令を読み出し、各サイク
ルにおいて並列度に応じた適切な数のユニットを実行す
るものである。このように、本実施の形態のプロセッサ
は、命令パケット内の先頭の命令以外の命令でも、1サ
イクルの実行開始位置にすることができるのは、後述す
るように命令パケット内の命令の位置を指定する“パケ
ット内アドレス”(下位PC)によるものである。
【0019】また、本実施の形態のプロセッサは、バイ
トアラインされていない命令、すなわち、語長がバイト
単位でない命令を実行するのに、特に適しているという
特徴をもつ。つまり、バイト単位の長さをもたない命令
であっても、バイト単位の長さをもつ命令パケットの単
位でプロセッサ内に読み込めば、命令パケット内でのそ
の命令はパケット内アドレスによって指定できるからで
ある。
【0020】図3は、一般のプロセッサで、バイトアラ
インされていない命令を実行する場合の命令の格納、読
み出し方法の例を示す。命令が21ビットとバイトアラ
インされていない場合には、その命令をバイト単位で読
み出しできるようにするため、その命令に3ビットの未
使用領域を付加して、24ビット長とする。すなわち、
本来21ビット長である1つの命令が24ビットを単位
としてメモリに格納され、読み出しがなされる。この場
合では、3つの命令の長さは72ビット長となるのに対
して、本実施の形態では、3つの命令の長さは64ビッ
ト長であり、プログラムサイズを小さく抑えることがで
きる。
【0021】なお、本実施の形態では、命令の語長が2
1ビット単位である場合のパケットの構成について説明
しているが、これに限定するものでなく、その他の語長
をもつ命令に対しても、パケットを構成して、パケット
単位で命令を読み出すことができる。例えば、命令の語
長がnビット単位である場合には、(n×m+r)mo
d8=0であって、n×m/(n×m+r)を最大にす
るようなmとrの組合わせを選択し、1パケットをnビ
ットの命令単位がm個とrビットのダミーデータで構成
することとしてもよい。これによって、ダミーデータの
比率が小さな、バイト単位の長さをもつ命令パケットを
構成することができる。 (命令のアドレスの表現方法)次に、本実施の形態にお
ける命令のアドレスの表現方法について説明する。命令
のアドレスは、ユニットの位置を特定するアドレスを意
味し、32ビットで表現される。
【0022】32ビット中の上位29ビットは、命令パ
ケットを特定し、「パケットアドレス」と呼ぶ。「パケ
ットアドレス」は、16進数29ビットの29’h01
234567等で表記することとする。この「パケット
アドレス」の値を左へ3ビット分ビットシフトした値
は、命令パケットが格納されているメモリアドレスとな
る。
【0023】32ビット中の下位3ビットは、命令パケ
ットに含まれるユニットを特定し、「パケット内アドレ
ス」と呼ぶ。「パケット内アドレス」は、2進数3ビッ
トの3’b001等で表記することとする。パケット内
アドレス3’b000は、パケット内の第1ユニットを
示し、3’b010パケット内の第2ユニットを示し、
3’b100パケット内の第3ユニットを示す。パケッ
ト内アドレスは、これに限定するものでない。3個の数
値で、3個のユニットを示すこととすれば、他の数値で
表現してもよい。
【0024】また、本実施の形態における命令のアドレ
スの指定は、1つの命令パケット8バイト分に対して3
ビットを割り当てている。従って、本実施の形態におけ
る命令のアドレスの指定方法と、一般のプロセッサにお
ける1バイトごとに1つずつアドレスを割り当てるアド
レスの指定方法とでは、上位29ビットで指定されるア
ドレスは、同一のメモリアドレスを示すことになる。 (プロセッサが実行するオブジェクトコードの作成方
法)本実施の形態に係るプロセッサが実行するオブジェ
クトコードの作成方法について説明する。
【0025】まず、本実施の形態において用いるいくつ
かの用語について説明する。「PC相対値」とは、2つ
の命令のアドレスの差分値である。「ラベル」は、プロ
グラムに含まれるもので、条件分岐や、無条件分岐や、
サブルーチンへの分岐や、サブルーチンからのリターン
などの分岐命令の行き先(分岐先)を示すものである。
【0026】「ラベル」には、「命令のアドレスに解決
すべきラベル」と、「PC相対値に解決すべきラベル」
がある。「命令のアドレスに解決すべきラベル」は、プ
ログラムがオブジェクトコードに変換される過程で、命
令の絶対アドレスにより置き換えられるもので、例え
ば、メモリからレジスタr1への命令の転送命令「mo
vL2、r1」中のラベルL2が該当する。「PC相対
値に解決すべきラベル」は、プログラムがオブジェクト
コードに変換される過程で、PC相対値に置き換えられ
るもので、例えば、PC相対値への無条件分岐命令「b
raL1」中のラベルL1が該当する。また、別の分類
として、ラベルには、「局所ラベル」と「外部ラベル」
がある。すなわち、ラベルとラベルを含む命令が同一の
モジュール、すなわち、1つの処理機能をもったひとま
とまりのサブプログラムに含まれる場合には、そのラベ
ルを「局所ラベル」と呼び、ラベルとラベルを含む命令
が、別個のモジュールに含まれる場合には、そのラベル
を「外部ラベル」と呼ぶ。
【0027】図4は、本実施の形態に係るプロセッサが
実行するオブジェクトコードが、コンパイラと、最適化
装置と、アセンブラと、リンカにより作成される過程を
示す図である。ここでは、それぞれの機能の概略を説明
する。コンパイラ301は、C言語等の高級言語で書か
れたソースコード300の内容を解析し、アセンブラコ
ード302を出力する。
【0028】最適化装置303は、アセンブラコード3
02に仮アドレスを付与し、命令列を3ユニットごとに
連結し、その結果である最適化コード304を出力す
る。その過程において、局所ラベルについては、それぞ
れPC相対値又は命令のアドレスを算出して、その値に
基づき、命令が1ユニットで表されるか2ユニットで表
されるかの命令の大きさが決められる。
【0029】アセンブラ305は、最適化コード304
より再配置可能番地形式であるリロケータブルコード3
06を出力する。その過程において、局所ラベルであっ
て、PC相対値に解決すべきラベルは、PC相対値に変
換される。リンカ307は、複数のモジュールを結合す
る。すなわち、複数のリロケータブルコード306を結
合して、その結果であるオブジェクトコード308を出
力する。その過程において、未解決なラベルは、PC相
対値又は命令のアドレスに変換される。
【0030】プロセッサ309は、オブジェクトコード
308を実行する。以上のように、高級言語で記述され
たプログラムが、コンパイラ301と、最適化装置30
3と、アセンブラ305と、リンカ307によって、プ
ロセッサが実行可能な形式であるオブジェクトコードに
変換される。プログラム中のラベルについては、オブジ
ェクトコード生成過程のいずれかにおいて、PC相対値
又は命令のアドレスに変換される。すなわち、局所ラベ
ルであって、かつPC相対値に解決すべきラベルのアド
レス解決は、アセンブラ305によって行われる。局所
ラベルであって、かつ命令のアドレスに解決すべきラベ
ルのアドレス解決、及び外部ラベルのアドレス解決は、
リンカ307によって行われる。
【0031】以下では、図3に示したプロセッサ309
と、リンカ307と、アセンブラ305と、最適化装置
303について、その構成及び動作の詳細を説明する。 (プロセッサ)図5は、プロセッサ309及び外部メモ
リの詳細を示すブロック図である。プロセッサ309
は、最大3命令を並列実行可能なプロセッサであり、演
算器401a〜cと、汎用レジスタ402、上位PC4
03と、下位PC404と、上位PC演算器411と、
下位PC演算器405と、INC412と、命令バッフ
ァ408と、プリフェッチ上位カウンタ410と、プリ
フェッチ下位カウンタ413と、命令デコーダ409a
〜409cと、PC相対値セレクタ420と、即値セレ
クタ421と、オペランドデータバッファ423と、オ
ペランドバッファ422により構成される。外部メモリ
は、データメモリ406、命令メモリ407より構成さ
れる。
【0032】以下、上位PC403と下位PC404と
を合わせてPCと称し、上位PC演算器411と下位P
C演算器405とを合わせてPC演算器と称する。第1
演算器401aと、第2演算器401bと、第3演算器
401cは、それぞれ1つの演算を実行する。これらの
演算器は同時に実行可能である。汎用レジスタ402
は、データ、アドレス等を格納する。
【0033】上位PC403は、次のサイクルで実行す
べき命令群の先頭命令のアドレスの上位29ビット、す
なわち、パケットアドレスを保持する。下位PC404
は、次のサイクルで実行すべき命令群の先頭命令のアド
レスの下位3ビット、すなわち、パケット内アドレスを
保持する。命令メモリ407は、オブジェクトコード3
08で表された命令を記憶する。
【0034】命令バッファ408は、命令メモリ407
から読み出した命令を格納する。第1命令デコーダ40
9aと、第2命令デコーダ409b、第3命令デコーダ
409cは、命令を解読し、解読した命令が実行可能な
ら、他のプロセッサの構成要素を指示してその命令を実
行させる。第1命令デコーダ409aには、命令バッフ
ァ408に格納されている先頭の命令が入力され、第2
命令デコーダ409bには、その次の命令が入力され、
第3命令デコーダ409cには、その次の命令が入力さ
れる。命令デコーダ409a〜409cは、ユニットの
並列実行境界情報を調べて、そのサイクルにおいて実行
可能な命令のみを実行させる。例えば、定数値を演算す
る命令の場合には、その定数値を即値セレクタ421を
介して演算器401aに送って、演算を実行させる。分
岐命令の場合には、PC相対値をPC相対値セレクタ4
20を介して上位PC演算器411及び下位PC演算器
405に送って、PCを更新させる。そして、命令デコ
ーダ409a〜409cは、実行されたユニット数を制
御信号によりINC412に送りPCを更新させ、実行
されたユニット数を制御信号により命令バッファ408
に送り、命令バッファ408内の実行されたユニットを
消去させる。
【0035】PC相対値セレクタ420は、命令デコー
ダ409a〜409cから出力されたPC相対値を上位
PC演算器411及び下位PC演算器405へ出力す
る。即値セレクタ421は、命令デコーダ409a〜4
09cから出力された即値を汎用レジスタ402叉は演
算器401a〜401cへ出力するINC412は、命
令デコーダ409a〜409cからの制御信号により、
実行されたユニット数の情報を取得し、その分だけ上位
PC403、下位PC404の値をインクリメントす
る。これによって、次のサイクルで実行すべき命令群の
先頭の命令のパケットアドレスが上位PCに設定され、
パケット内アドレスが下位PCに設定される。
【0036】上位PC演算器411及び下位PC演算器
405は、それぞれ上位PC403、下位PC404を
更新する。命令デコーダ409a〜409cが分岐命令
をデコードすると、当該分岐命令に含まれるPC相対値
の上位29ビットが上位PC演算器411に送られ、P
C相対値の下位3ビットが下位PC演算器405に送ら
れる。下位PC演算器405は、現在の下位PC404
の値と、PC相対値の下位3ビットの値とを加算叉は減
算し、その演算結果を更新値として下位PC404に送
る。上位PC演算器411は、現在の上位PC403の
値と、PC相対値の上位29ビットの値とを加算叉は減
算し、その演算結果を更新値として上位PC403に送
る。なお、PC演算器の動作、すなわち演算方法につい
ては後述する。以上のようにして、分岐命令の実行にあ
たって、次に実行すべき分岐先命令のパケットアドレス
が上位PC403に設定され、パケット内アドレスが下
位PC404に設定される。また、上位PC演算器41
1及び下位PC演算器405は、PC相対値と汎用レジ
スタ402に格納されているアドレスとの演算により、
PCを更新する場合もある。
【0037】プリフェッチ上位カウンタ410は、命令
メモリ407から読み出す命令群の先頭命令のアドレス
の上位29ビット、すなわちパケットアドレスを示す。
プリフェッチ上位カウンタ410は、通常、1サイクル
ごとに1つずつその値をインクリメントする。また、1
つ前のサイクルで実行された命令が分岐命令である場合
には、上述のようにして上位PC403に設定された分
岐先の命令のパケットアドレスが上位PC403からプ
リフェッチ上位カウンタ410に送られ、プリフェッチ
上位カウンタ410の値は上位PC403と同一の値に
設定される。
【0038】プリフェッチ下位カウンタ413は、命令
メモリ407から読み出す命令群の先頭命令のアドレス
の下位3ビット、すなわちパケット内アドレスを指定す
る。本実施の形態では、プリフェッチ下位カウンタ41
3は、3’b000に設定するものとする。従って、読
み出される命令は命令パケット単位で指定されることに
なり、1サイクルごとに1パケットが命令メモリ407
から命令バッファ408に送られる。
【0039】データメモリ406は、オペランドデータ
を格納する。オペランドデータバッファ423及びオペ
ランドアドレスバッファ422は、データメモリとプロ
セッサとの間のバッファである。次に、本実施の形態に
おいて最も特徴的である、命令のアドレスのインクリメ
ント方法及び演算方法について説明する。 (命令のアドレスのインクリメント方法)本実施の形態
における命令のアドレスのインクリメント方法について
説明する。命令のアドレスのインクリメントは、命令の
パケット内アドレスにインクリメント値を加算し、桁上
がりがある場合には、その桁上がり数をパケットアドレ
スに加えることとする。
【0040】図6は、パケット内アドレスのインクリメ
ントの規則を示すインクリメント表である。図に示すよ
うに、命令のアドレスのインクリメントは、パケット内
アドレスが3’b000、又は3’b010の場合に
は、下位3ビットの値に2を加算する。パケット内アド
レスが3’b100の場合には、パケットアドレスに桁
上がりを発生させて(すなわち上位29ビットの値に1
を加算)、下位3ビットの値を3’b000とする。つ
まり、パケット内アドレスのインクリメントは3’b0
00,3’b010,3’b100を巡回する3進演算
である。例えば、インクリメント値が2で、インクリメ
ント前のパケット内アドレスの値が3’b100であっ
たとすると、インクリメント後のパケット内アドレスは
3’b010となり、パケットアドレスに桁上がりが1
発生する。
【0041】このように、本実施の形態では、通常の2
進数によりパケット内アドレスを表す必要がない。この
点が、特に、命令パケット内のユニットの個数が2の巾
乗数でない場合に対して効果的である。つまり、命令パ
ケット内のユニットの個数が2の巾乗数でない場合に
は、命令パケット内のユニットの位置を通常の2進数で
表現しても、ユニットの位置を移動する際に2進数の演
算法を用いることができない。しかし、本実施の形態で
は、パケット内のユニットの位置を特有のm個の数値を
用いて表し、ユニットの位置の移動するための演算とし
てm個の数値が巡回する演算を用いることによって、命
令パケット内のユニットの個数が2の巾乗数でない場合
にでも、ユニットの位置指定、ユニットの位置の移動の
ための演算が可能である。 (命令のアドレスの演算方法)次に、本実施の形態にお
ける命令のアドレスの演算方式の一つである桁上がり方
式について説明する。命令のアドレスの演算方法には桁
上がり方式以外にも、分離方式、絶対位置指定方式、リ
ニアアドレス方式があるが、それらについては後述す
る。桁上がり方式では、命令のアドレスを上位29ビッ
トと、下位3ビットに分離して演算する。すなわち、パ
ケットアドレスとパケット内アドレスをそれぞれ別々に
計算する。ただし、上位ビットの演算の際、下位3ビッ
トの演算で発生した桁上がり数または桁借り数を含めた
演算が行われる。
【0042】まず、プロセッサ309が行う、分岐命令
のアドレスとPC相対値とを加算して分岐先命令のアド
レスを求める方法について説明する。図5に示す下位P
C演算器405は、分岐命令のアドレスの下位3ビット
とPC相対値の下位3ビットとを加算する。図7(a)
は、分岐命令のアドレスの下位3ビットとPC相対値の
下位3ビットとの加算規則を示す加算表である。図に示
すように、下位3ビットの加算は通常の2進演算と異な
り、3’b000,3’b010,3’b100を巡回
する3進演算である。図に示すような桁上がりが生じる
場合には、下位PC演算器405は、上位PC演算器4
11に桁上がり数を送る。
【0043】図5に示す上位PC演算器411は、分岐
命令のアドレスの上位29ビットとPC相対値の上位2
9ビットとを加算する。この時、下位PC演算器405
の演算で桁上がりが生じた場合には、その桁上がり数も
加算する。加算方法は通常の2進演算である。以上によ
り算出された加算結果が分岐先命令のアドレスとなる。
すなわち、加算結果のの下位3ビットが下位PC404
に設定され、加算結果の上位29ビットが上位PC40
3に設定される。
【0044】次に、最適化装置303、アセンブラ30
5、リンカ307が行う、PC相対値を求める演算、す
なわち、分岐先命令のアドレスから分岐命令のアドレス
を減算方法について説明する。減算は、加算と同様に上
位29ビットと下位3ビットに分離して行う。後述の最
適化装置303の下位アドレス減算手段907、アセン
ブラ305の下位アドレス減算手段806、リンカ30
7の下位アドレス減算手段706は、分岐先命令のアド
レスの下位3ビットから分岐命令のアドレスの下位3ビ
ットを減算する。図7(b)は、分岐先命令のアドレス
の下位3ビットと分岐命令のアドレスの下位3ビットと
の減算規則を示す減算表である。図に示すように、下位
3ビットの減算は通常の2進演算と異なり、3’b00
0,3’b010,3’b100を巡回する3進演算で
ある。図に示すような桁借りが生じる場合には、下位ア
ドレス減算手段907等は、それぞれ、後述の上位アド
レス減算手段910等に桁借り数を送る。
【0045】後述の最適化装置303の上位アドレス減
算手段910と、アセンブラ305の上位アドレス減算
手段809と、リンカ307の上位アドレス減算手段7
09は、分岐命令のアドレスの上位29ビットと分岐先
命令の上位29ビットとを減算する。この時、下位アド
レス減算手段907等の演算で桁借りが生じた場合に
は、その桁借り数も減算する。減算方法は通常の2進演
算である。
【0046】以上により算出された下位3ビットの減算
結果を下位3ビットとし、上位29ビットの減算結果を
上位29ビットとした値がPC相対値となる。また、プ
ロセッサにより行なわれる分岐命令のアドレスとPC相
対値とを減算して分岐先命令のアドレスを求める場合に
も、上述と同様の方法により行なわれる。以上のよう
に、分岐先命令のアドレスと分岐命令のアドレスとの差
分よりプログラムカウンタ相対値を算出する最適化装置
303、アセンブラ305、リンカ307と、そのプロ
グラムカウンタ相対値を用いて分岐先命令のアドレスを
算出するプロセッサ309とが、どちらも同一の桁上が
り方式によるアドレス演算を行うことによって、プロセ
ッサは、分岐命令の実行時にプログラム相対値から分岐
先命令のアドレスを誤りなく算出できる。また、この桁
上り方式によるアドレス演算は、プログラムカウンタと
PC相対値との上位ビットの演算と下位ビットの演算と
の間に連続性を備えたアドレス演算が可能となる特徴を
有する。 (最適化装置)図8は、図4に示した最適化装置303
の構成要素及び入出力データを示すブロック図である。
この最適化装置303の詳細について説明する。最適化
装置303は、コンパイラ301が生成したアセンブラ
コード302を最適化し、命令列を3ユニットを単位と
するパケットに連結し、その結果である最適化コード9
15を出力する。最適化装置303は、コード最適化手
段902と、アドレス付与手段904と、ラベル検出手
段905と、下位アドレス減算手段907と、上位アド
レス減算手段910と、アドレス差算出手段912と、
ラベル情報解決手段914により構成される。
【0047】コード最適化手段902は、アセンブラコ
ード302の最適化を行い、最適化処理コード903を
生成する。コード最適化手段902の処理は、公知の最
適化装置による処理と同様であるので、詳細な説明は省
略する。アドレス付与手段904は、コード最適化手段
902により得られた最適化処理コード903の各命令
のアドレスの予測を行い、各命令に予測したアドレスの
付与を行い(以下、このアドレスを「仮アドレス」と呼
ぶ)、その結果であるアドレス付与コード916を出力
する。
【0048】ラベル検出手段905は、アドレス付与コ
ード916から「局所ラベル」を検出する。ラベル検出
手段905は、検出したラベルが「命令のアドレスに解
決すべきラベル」であれば、そのラベルが位置する命令
の仮アドレスを取り込む。また、検出したラベルが「P
C相対値に解決すべきラベル」であれば、分岐命令の仮
アドレスと分岐先命令の仮アドレスを取り込む。そし
て、ラベル検出手段905は、ラベルを含む命令とその
ラベルが解決される値についての情報からなるラベル情
報906を出力する。
【0049】下位アドレス減算手段907と、上位アド
レス減算手段910と、アドレス差算出手段912は、
ラベル情報906中の「PC相対値に解決すべきラベ
ル」について、PC相対値の算出を行う。下位アドレス
減算手段907は、分岐先命令の仮アドレスの下位3ビ
ットから分岐命令の仮アドレスの下位3ビットを減算
し、桁借り数908と下位減算結果909を算出する。
【0050】上位アドレス減算手段910は、分岐先命
令の仮アドレスの上位29ビットから分岐命令の仮アド
レスの上位29ビットと下位アドレス減算手段907が
算出した桁借り数908とを減算し、上位減算結果91
1を算出する。アドレス差算出手段912は、下位アド
レス減算手段907が算出した下位減算結果909を下
位3ビットとし、上位アドレス減算手段910が算出し
た上位減算結果911を上位29ビットとするアドレス
差913を算出する。
【0051】ラベル情報解決手段914は、最適化処理
コード903中のラベルを含む命令を、アドレス付与手
段904が予測し付与したアドレス又は、アドレス差算
出手段912が算出したアドレス差913の値から、そ
の値の大きさに応じた命令に変換する。すなわち、ラベ
ルを含む命令は、前記付与アドレスあるいは前記アドレ
ス差の値が13ビット以内で表現できれば21ビット命
令に変換され、そうでなければ42ビット命令に変換さ
れる。
【0052】そして、ラベル情報解決手段914は、ラ
ベル解決後の命令列を3ユニットを単位とするパケット
に連結し、その結果である最適化コード915を出力す
る。次に、最適化装置の動作を具体例を用いて説明す
る。図9は、最適化装置の動作手順を示すフローチャー
トである。まず、コード最適化手段902は、入力され
たアセンブラコード302を最適化し、最適化コード9
03を生成する。図10は、コード最適化手段902が
生成した最適化処理コード903の一部分を示す。図1
0のいくつかの命令について説明を行う。「L1:mo
vr2,r1」1000は、ラベルL1の位置を示し、
レジスタr2からレジスタr1への転送を行う命令であ
る。「jsrf」1001は、関数呼び出しであり、ラ
ベルf(外部ラベル)への相対分岐を行う命令である。
ret命令により、このアドレスに再び戻る。「add
r0,r4」1002は、レジスタr0とレジスタr4
の加算を行い、結果をr4へ格納する命令である。「a
ndr1,r3」1003は、レジスタr1とr3の論
理積を取り、結果をr3へ格納する命令である。「mo
vL2,r2」1004は、ラベルL2が置かれている
命令のアドレスを、レジスタr2に転送する命令であ
る。「ld(r2),r0」1005は、レジスタr2
が示すアドレスに格納されているデータをレジスタr0
へ転送する命令である。「braL1」1006は、ラ
ベルL1(局所ラベル)への相対分岐を行う命令であ
る。なお、図10において、命令1007に後続する命
令が省略してあるが、この後続する命令中には、ラベル
fの位置する命令は存在しないこととする(ステップS
3901)。
【0053】次に、アドレス付与手段904は、最適化
処理コード903の各命令に対して仮アドレスを付与
し、アドレス付与コード916を生成する。図11は、
図10の最適化処理コードより生成されたアドレス付与
コード916を示す。ここでは、32’h000008
00から始まる仮アドレスが割り当てられている(ステ
ップS3902)。
【0054】ラベル検出手段905は、アドレス付与コ
ード916から局所ラベルの検索を行い、検索されたラ
ベルを含む命令とそのラベルの解決される値についての
情報とからなるラベル情報を出力する。図12は、図1
1のアドレス付与コード916から生成されたラベル情
報906を示す。図に示すように、命令のアドレスに解
決すべきラベルとして命令1104のL2、PC相対値
に解決すべきラベルとして命令1106のL1が検出さ
れている。ラベルL2については、L2を含む命令「m
ovL2,r2」と解決されるアドレスの情報が取り込
まれ、ラベルL1については、L1を含む命令「bra
L1」とPC相対値を計算するための分岐先命令のアド
レスと分岐命令のアドレスの情報が取り込まれている。
なお、命令1101のラベルfは外部ラベルであるた
め、最適化の対象外である(ステップS3903、S3
904)。
【0055】ラベル情報906中にPC相対値に解決す
べきラベルがある場合には、PC相対値の算出が行なわ
れる。下位アドレス減算手段907は、PC相対値であ
るL1が示す値の下位ビットを計算する。下位アドレス
減算手段907は、分岐先命令1100の仮アドレス3
2’h00000800の下位3ビット3’b000か
ら分岐命令1106の仮アドレス32’h000008
12の下位3ビット3’b010を減算する。その結
果、桁借り数908として1が得られ、下位減算結果9
09として3’b100が得られる(ステップS390
5、S3906)。
【0056】上位アドレス減算手段910は、PC相対
値であるL1が示す値の上位ビットを計算する。上位ア
ドレス減算手段910は、分岐先命令1100の仮アド
レスの上位29ビット29’h00000100から分
岐命令1106の仮アドレスの上位29ビット29’h
00000102と桁借り数908である1を減算す
る。その結果、上位減算結果911として29’h1f
fffffd(10進数では−3を示す。以下、負数は
2の補数で表す。)が得られる(ステップS390
7)。
【0057】アドレス差算出手段912は、下位演算結
果900を下位ビットとし、上位演算結果911を上位
ビットとしたアドレス差、すなわち、PC相対値を算出
する。ここでは、3’b100を下位ビットとし、2
9’h1ffffffdを上位ビットして、アドレス差
913である32’hffffffecが得られる(ス
テップS3908)。
【0058】ラベル情報解決手段914は、ラベル情報
906のラベルが解決される値が13ビットで表現でき
るか否かにより、ラベルを含む命令の大きさを決定す
る。図12に示すラベルL2が解決される値は32’h
12345678であり、13ビットで表すことができ
ないので、ラベルL2を含む命令1104は42ビット
命令となる。また、ラベルL1が解決される値は32’
hffffffecであり、13ビットで表すことが可
能なので、ラベルL1を含む命令1106は21ビット
命令となる(ステップS3909、S3910、S39
11)。
【0059】さらに、ラベル情報解決手段914は、ア
ドレス付与コード916に基づいて命令列を3ユニット
を単位とするパケットに連結する。この際に、ラベルを
有する命令については、上記のようにして決定された大
きさと一致するようにする。すなわち、21ビット命令
については1ユニットを使用し、42ビット命令につい
ては2ユニットを使用するものとする。そして、ラベル
情報解決手段914は、パケット化された命令列を最適
化コードとして出力する。図13は、図11のアドレス
付与コード916から生成された最適化コード915を
示す。図13は、一つのパケットを構成する命令が一行
に記述され、記号||によりパケット中の命令は区切ら
れている。また、42ビット命令は、()でくくられた
命令を後続させることにより、その命令が2つのユニッ
ト分の領域を使用することを示している(ステップS3
912)。
【0060】以上のように、桁上がり方式によるアドレ
ス演算を行って予測することにより、桁上がり方式に対
応したプロセッサの最適化装置を実現することが可能と
なる。なお、アドレス付与手段904において付与され
た仮アドレスと、アドレス差算出手段912において算
出されたPC相対値は、すべてラベルを含む命令のサイ
ズを確定させるために予測された値であって、実際の値
とは異なる場合があるので、以降の処理では用いないこ
ととする。 (アセンブラ)図14は、図4に示したアセンブラ30
5の構成及び関連する入出力データを示すブロック図で
ある。このアセンブラ305の詳細について説明する。
アセンブラ305は、最適化装置303が生成した最適
化コード304を再配置可能番地形式であるリロケータ
ブルコード306に変換するものである。アセンブラ3
05は、機械語コード生成手段802と、ラベル検出手
段804と、下位アドレス減算手段806と、上位アド
レス減算手段809と、アドレス差算出手段811と、
ラベル情報解決手段813より構成される。
【0061】機械語コード生成手段802は、最適化コ
ード304をプロセッサ309が実行可能な機械語コー
ド803へ変換する。ただし、値が未解決なラベルにつ
いては、変換せずに機械語コード803中に保持する。
その際に、機械語コード生成手段802は、各機械語コ
ードに対してパケットアドレスとパケット内アドレスと
を付与する。そして、この付与されたアドレスに基づい
て、後述のラベルの解決がなされる。
【0062】ラベル検出手段804は、局所ラベルであ
って、2つの命令のアドレスの差分、すなわち、PC相
対値に解決すべきラベルを検索し、分岐命令のアドレス
と分岐先命令のアドレスを取り込む。そして、ラベル検
出手段804は、ラベルを含む命令とそのラベルが解決
される値についての情報からなるラベル情報805を出
力する。
【0063】ラベル検出手段804で得られたラベル情
報805を解決するため、下位アドレス減算手段806
と、上位アドレス減算手段809と、アドレス差算出手
段811は、以下のようにしてPC相対値の算出を行
う。下位アドレス減算手段806は、分岐先命令のアド
レスの下位3ビットから分岐命令のアドレスの下位3ビ
ットを減算し、桁借り数807と下位減算結果808を
算出する。
【0064】上位アドレス減算手段809は、分岐先命
令の仮アドレスの上位29ビットから分岐命令の仮アド
レスの上位29ビットと下位アドレス減算手段806が
算出した桁借り数807とを減算し、上位減算結果81
0を算出する。アドレス差算出手段811は、下位アド
レス減算手段806が算出した下位減算結果808を下
位3ビットとし、上位アドレス減算手段809が算出し
た上位減算結果810を上位29ビットとするアドレス
差812を算出する。
【0065】ラベル情報解決手段813は、機械語コー
ド803中のラベルを、アドレス差算出手段811が算
出したアドレス差812に置換し、その結果であるリロ
ケータブルコード306を出力する。次に、アセンブラ
の動作について、最適化装置303が出力した図13の
最適化コードをアセンブラ305に入力した場合の例を
用いて説明する。
【0066】図15は、アセンブラの動作手順を示すフ
ローチャートである。まず、機械語コード生成手段80
2は、最適化コード304をパケットごとにプロセッサ
309に対応した機械語コード803へ変換する。ただ
し、値が未解決なラベルについては、変換せずに機械語
コード803中に保持する。そして、機械語コード生成
手段802は、各機械語コード803に対して、パケッ
トアドレス(以下、これを「局所パケットアドレス」と
呼ぶ)とパケット内アドレスを割り振る。図16は、図
13の最適化コードから生成された機械語コード803
を示す。なお、実際の機械語コードは、0と1だけのバ
イナリ形式で表されるが、図16では説明の都合上、ニ
ーモニック形式で示されている。また、各命令の並列実
行境界情報100とビットフォーマット情報101もこ
の段階ですでに明らかになっているが、この図では特に
示さない。図16では、29’h00000000から
始まるパケットアドレス(局所パケットアドレス)が割
り当てられている。また、パケット1300の命令「j
srf」中のラベルfと、パケット1301の命令「m
ovL2,r2」中のラベルL2と、パケット1302
の命令「braL1」中のラベルL1は、値が未解決な
ため、変換されていない(ステップS1500、S15
01)。
【0067】次に、ラベル検出手段804は、機械語コ
ード803中の未解決なラベルの中で、局所ラベルであ
って、PC相対値に解決すべきラベルを検出して、その
ラベルが含まれる命令のアドレス、すなわち、分岐命令
のアドレスと、分岐先命令のアドレスを取り込む。そし
て、ラベル検出手段804は、ラベルを含む命令とその
ラベルが解決される値についての情報からなるラベル情
報805を出力する。図17は、図16の機械語コード
より作成されたラベル情報を示す。局所ラベルであっ
て、PC相対値に解決すべきラベルとしてラベルL1が
検出され、分岐命令のアドレスとして、32’h000
00012が取り込まれて、分岐先命令のアドレス3
2’h00000000が取り込まれている(ステップ
S1502、S1503)。
【0068】次に、下位アドレス減算手段806は、P
C相対値であるL1が示す値の下位ビットを計算する。
下位アドレス減算手段806は、分岐先命令1401の
アドレス32’h00000000の下位3ビット3’
b000から分岐命令1409のアドレス32’h00
000012の下位3ビット3’b010を減算する。
その結果、桁借り数807として1が得られ、下位減算
結果808として3’b100が得られる(ステップS
1504)。
【0069】次に、上位アドレス減算手段809は、P
C相対値であるL1が示す値の上位ビットを計算する。
上位アドレス減算手段809は、分岐先命令1401の
アドレスの上位29ビット29’h00000000か
ら分岐命令1409のアドレスの上位29ビット29’
h00000002と桁借り数807である1を減算す
る。その結果、上位減算結果810として29’h1f
fffffd(10進数では−3を示す。以下、負数は
2の補数で表す。)が得られる(ステップS150
5)。
【0070】アドレス差算出手段811は、下位減算結
果808を下位ビットとし、上位演算結果810を上位
ビットとしたアドレス差、すなわち、PC相対値を算出
する。この例では、3’b100を下位ビットとし、2
9’h1ffffffdを上位ビットして、アドレス差
812である32’hffffffecが得られる(ス
テップS1506)。
【0071】次に、ラベル情報解決手段813は、アド
レス差812が下位13ビットで表現できる場合には、
そのアドレス差の下位13ビットをPC相対値とし、下
位13ビットで表現できない場合には、そのアドレス差
をPC相対値として、機械語コード803中のラベルP
C相対値に置換する。図16のラベル情報中のラベルL
1が解決されるアドレス差は32’hffffffec
であり、下位13ビット13’h1fecで表すことが
可能なので、図16の機械語コード中のラベルL1は下
位13ビットの値に変換される。このようにして機械語
コードが変換されて、リロケータブルコードを生成す
る。図18は、図16の機械語コード803から生成さ
れたリロケータブルコードを示す。図18中の命令16
09は、ラベルL1がPC相対値に変換された命令であ
る。図18では、機械語コード803の出力時にすでに
明らかになっていた各命令の並列実行境界情報100と
ビットフォーマット情報101が示され、パケット中の
1ビットが未使用ビットになっていることも示されてい
る(ステップS1507、S1508、S1509)。
【0072】以上のように、桁上がり方式によるアドレ
ス演算を行ってPC相対値を求めることにより、桁上が
り方式に対応したプロセッサのアセンブラを実現するこ
とが可能となる。 (リンカ)図19は、図4に示したリンカ307の構成
及び関連する入出力データを示すブロック図である。こ
のリンカ307の詳細について説明する。リンカ307
は、複数のリロケータブルコード701を結合して、各
命令のアドレスを決定し、プロセッサ309が実行可能
な絶対番地形式であるオブジェクトコード308を出力
するものである。リンカ307は、コード結合手段70
2と、再配置情報検出手段704と、下位アドレス減算
手段706と、上位アドレス減算手段709と、アドレ
ス差算出手段711と、再配置情報解決手段713とか
ら構成される。
【0073】コード結合手段702は、入力された複数
のリロケータブルコード701の結合を行い、すべての
命令のアドレスを決定する。そして、コード結合手段7
02は、命令のアドレスに解決すべきラベルについて
は、上記の決定されたアドレスに解決し、その結果であ
る結合コード703を出力する。再配置情報検出手段7
04は、PC相対値に解決すべき外部ラベルを検索し、
分岐命令のアドレスと分岐先命令のアドレスを取り込
む。そして、再配置情報検出手段704は、ラベルを含
む命令とそのラベルが解決される値についての情報から
なる再配置情報705を出力する。ここで得られた再配
置情報を解決するため、下位アドレス減算手段706
と、上位アドレス減算手段709と、アドレス差算出手
段711は、以下のようにしてPC相対値の算出を行
う。
【0074】下位アドレス減算手段706は、分岐先命
令のアドレスの下位3ビットから分岐命令のアドレスの
下位3ビットを減算し、桁借り数707と下位減算結果
708を算出する。上位アドレス減算手段709は、分
岐先命令のアドレスの上位29ビットから分岐命令のア
ドレスの上位29ビットと下位アドレス減算手段706
が算出した桁借り数707とを減算し、上位減算結果7
10を算出する。
【0075】アドレス差算出手段711は、下位アドレ
ス減算手段706が算出した下位減算結果708を下位
3ビットとし、上位アドレス減算手段709が算出した
上位減算結果710を上位29ビットとするアドレス差
712を算出する。再配置情報解決手段713は、結合
コード703中のラベルを、アドレス差算出手段711
が算出したアドレス差712に置換し、その結果である
オブジェクトコード308を出力する。
【0076】次に、リンカの動作について、アセンブラ
305が出力した図18のリロケータブルコードをリン
カ307に入力した場合の例を用いて説明する。図20
は、リンカの動作手順を示すフローチャートである。ま
ず、コード結合手段702は、複数個のリロケータブル
コード701を結合する。図22は、図18に示すリロ
ケータブルコード306と、別途生成された図21に示
すリロケータブルコードと結合された状態を示す。すな
わち、図21に示すリロケータブルコードの先頭のパケ
ットアドレスを29’h00000000とし、図18
に示すリロケータブルコードの先頭のパケットアドレス
を29’h00000001として、これらの2つのリ
ロケータブルコード結合されている(ステップS200
0、S2001)。
【0077】そして、これによって、すべての命令のア
ドレスが決定されたことになるので、コード結合手段7
02は、さらに、命令のアドレスに解決すべきラベルの
アドレスを解決して、その結果である結合コード703
を出力する。図22に示す命令1810「movL2,
r2」のラベルL2のアドレスは、パケット1815の
先頭のアドレスである。コード結合手段は、当該アドレ
スが32’h12345680と決定しているので、ラ
ベルL2をこの値に置き換える。図23は、結合コード
703を示す。図23中の結合コード1910は、ラベ
ルL2が32’h12345680に置換えられたこと
を示す(ステップS2002)。
【0078】次に、再配置情報検出手段704は、結合
コード703中で、PC相対値に解決すべき外部ラベル
を検出して、そのラベル含まれる命令のアドレスと、ラ
ベルが置かれている命令のアドレス、すなわち、分岐命
令のアドレスと分岐先命令のアドレスを取り込む。そし
て、再配置情報検出手段704は、ラベルを含む命令と
そのラベルが解決される値についての情報からなる再配
置情報705を出力する。図24は、図23の結合コー
ドから作成されたラベル情報を示す。PC相対値に解決
すべき外部ラベルとしてラベルfが検出され、分岐命令
のアドレスとして、32’h0000000aが取り込
まれて、分岐先命令のアドレス32’h0000000
0が取り込まれている(ステップS2003、S200
4)。
【0079】下位アドレス減算手段706は、PC相対
値であるfが示す値の下位ビットを計算する。下位アド
レス減算手段706は、分岐先命令1901のアドレス
32’h00000000の下位3ビット3’b000
から分岐命令1906のアドレス32’h000000
0aの下位3ビット3’b010を減算する。その結
果、桁借り数707として1が得られ、下位減算結果7
08として3’b100が得られる(ステップS200
5)。
【0080】次に、上位アドレス減算手段709は、P
C相対値であるfが示す値の上位ビットを計算する。上
位アドレス減算手段709は、分岐先命令1901のア
ドレス32’h00000000の上位29ビット2
9’h00000000から分岐命令1906のアドレ
ス32’h0000000aの上位29ビット29’h
00000001と桁借り数707である1を減算す
る。その結果、上位減算結果710として29’h1f
fffffeが得られる(ステップS2006)。
【0081】アドレス差算出手段811は、下位減算結
果708を下位ビットとし、上位演算結果710を上位
ビットとしたアドレス差、すなわち、PC相対値を算出
する。3’b100を下位ビットとし、29’h1ff
ffffeを上位ビットして、アドレス差712である
32’hfffffff4が得られる(ステップS20
07)。
【0082】次に、再配置情報解決手段713は、アド
レス差712が下位13ビットで表現できる場合には、
そのアドレス差の下位13ビットをPC相対値とし、下
位13ビットで表現できない場合には、そのアドレス差
をPC相対値として、結合コード703中のラベルをP
C相対値に置換する。図23の再配置情報中のラベルf
が解決されるアドレス差は32’hfffffff4で
あり、下位13ビット13’h1ff4で表すことが可
能なので、図22の結合コード中のラベルfは下位13
ビットの値に変換される。このようにして結合コードが
変換されて、オブジェクトコードが生成される。図25
は、オブジェクトコードを示す。図25中、オブジェク
トコード2106は、ラベルfがPC相対値に変換され
ていることを示している(ステップS2008、S20
09、S2010)。
【0083】以上のように、桁上がり方式によるアドレ
ス演算を行ってPC相対値を求めることにより、桁上が
り方式に対応したプロセッサのリンカを実現することが
可能となる。 (プロセッサの具体的動作)プロセッサの動作につい
て、図25のオブジェクトコードが命令メモリ407に
蓄えられている場合の例を用いて説明する。
【0084】オブジェクトコードの実行開始時には、上
位PC403は、29’h00000000に、下位P
C404は、3’b000に設定されている。プリフェ
ッチ上位カウンタ410は、上位PC403からの入力
を受けて、29’h00000000に設定されてい
る。命令メモリ407から命令の読み出しは、プリフェ
ッチ上位カウンタ410に基づき、パケット単位で行な
われる。すなわち、命令メモリ407に蓄えられた命令
列のうち、プリフェッチ上位カウンタ410により指定
されるパケット2100が、命令バッファ408に格納
される。プリフェッチ上位カウンタ410の値は、1サ
イクルごとに1つずつインクリメントされるので、2
9’h00000001となる。以下、1サイクルごと
に、プリフェッチ上位カウンタ410が指定するパケッ
トが命令メモリ407から命令バッファ408へ読み出
される。
【0085】次に、上位PC403によりパケット21
04が指定され、さらに下位PC404によりパケット
2104中の命令2107が指定されている時の、命令
の解読と実行の動作について説明する。命令バッファ4
08に格納された命令は、命令デコーダ409a〜40
9cにより解釈される。第1命令デコーダ409aは、
命令バッファ408に格納されている先頭のユニット2
107を取り込み、そのユニットが1ユニット命令であ
るか、並列実行境界であるかを調べる。ユニット210
7が1ユニット命令であり、並列実行境界でないので、
第2命令デコーダ409bは、次のユニット2109を
取り込み、そのユニットが1ユニット命令であるか、並
列実行境界であるかを調べる。ユニット2109が1ユ
ニット命令であり、並列実行境界ではないので、第3命
令デコーダ409cは、次のユニットを取り込む、その
ユニットが1ユニット命令であるか、並列実行境界であ
るかを調べる。そのユニットが1ユニット命令でないの
で、第3命令デコーダ409cは、次のユニットも取り
込む。そして、第3命令デコーダ409cは、そのユニ
ットが並列実行境界であることを知る。以上によって、
命令2107、命令2109、命令2110が同時並列
実行可能であることがわかる。
【0086】第1命令デコーダ409aは、命令「ad
dr0,r4」をデコードし、制御信号を第1演算器4
01aに出力する。第1演算器401aは、レジスタr
0とレジスタr4の値を加算し、その結果をレジスタr
4へ格納する。第2命令デコーダ409bは、命令「a
ndr1,r3」をデコードし、制御信号を第2演算器
401bに出力する。第2演算器401bは、レジスタ
r1とレジスタr3の値の論理演算が行い、その結果を
レジスタr3へ格納する。第3命令デコーダ409c
は、命令「mov32’h12345680,r2」を
デコードし、即値である32’h12345680を、
レジスタr2に転送する。
【0087】また、命令デコーダ409a〜409c
は、この例では4つのユニットを実行したことを、制御
信号によりINC412に知らせる。INC412は、
4つのユニット分だけ、上位PC403及び下位PC4
04の値をインクリメントする。以上の結果、下位PC
404は3’b000となり、上位PC403は桁上が
りが2つ起こり29’h00000003となり、次の
サイクルで実行する先頭命令は命令2112となる。
【0088】次に、第1命令デコーダ409aは、命令
バッファ408に格納されている先頭のユニット211
2を取り込み、そのユニットが1ユニット命令である
か、並列実行境界であるかを調べる。ユニット2112
が1ユニット命令であり、並列実行境界でないので、第
2命令デコーダ409bは、次のユニット2113を取
り込み、そのユニットが1ユニット命令であるか、並列
実行境界であるかを調べる。第2命令デコーダ409b
は、ユニット2113が1ユニット命令であり、並列実
行境界であること知る。以上によって、命令2112、
命令2113が同時並列実行可能であることがわかる。
【0089】第1命令デコーダ409aは、命令「ld
(r2),r0」がデコードし、レジスタr2の値をオ
ペランドアドレスとするオペランドデータをデータメモ
リ406中から取り込み、レジスタr0へ格納する。第
2命令デコーダ409bは、命令「bra13’h1f
ec」をデコードし、命令2113が分岐命令であるの
で、上位PC403及び下位PC404を分岐先命令の
アドレスに更新する。
【0090】まず、上位PC403及び下位PC404
の指定するアドレスを補正する。PC相対値は、分岐命
令から分岐先命令とのアドレスの差であるのに対して、
上位PC403及び下位PC404はそのサイクルで実
行する先頭の命令のアドレスを指定しており、整合性が
取れていないので、上位PC403及び下位PC404
を分岐命令のアドレスを指定するように補正する。すな
わち、INC412は、実行単位の先頭命令2112か
ら分岐命令2113までに存在するユニット数1だけ上
位PC403及び下位PC404の値をインクリメント
する。その結果、上位PCが29’h00000003
となり、下位PCが3’b010となる。
【0091】次に、上位PC演算器411及び下位PC
演算器405は、上記により補正された上位PC403
及び下位PC404の値と、第2命令デコーダ409b
から得られたPC相対値13’h1fecとを加算す
る。ここで、PC相対値は、32ビットに符号拡張した
値32’hffffffecを用いる。加算は、上位2
9ビットと下位3ビットに分離して行われる。
【0092】下位PC演算器405は、下位PC3’b
010とPC相対値の下位3ビット3’b100を加算
する。その結果、桁上がり数1と下位演算結果3’b0
00が得られ、桁上がり数は上位PC演算器411に送
られ、下位演算結果は下位PC404に転送される。次
に、上位PC演算器411は、上位PC29’h000
00003と、PC相対値の上位29ビット29’h1
ffffffdと、桁上がり数1とを加算する。上位演
算結果29’h00000001は上位PC403に転
送されるとともに、上位PCからプリフェッチ上位カウ
ンタ410に転送される。以上の処理により、プリフェ
ッチ上位カウンタ410は29’h00000001と
なり、次にプリフェッチするパケットは、パケット21
04となる。また、上位PC403は29’h0000
0001で、下位PC404は3’b000となり、次
のサイクルで実行する先頭命令は命令2105となる。
【0093】以下、同様にして、オブジェクトコードが
順次、読み込まれ、実行されてゆく。以降の命令の説明
については省略する。以上、図4に示したプロセッサ3
09、リンカ307、アセンブラ305、最適化装置3
03についてその構成の詳細を記した。なお、コンパイ
ラ301については、公知のコンパイラの構成と同様で
あるため、詳細な説明は省略する。
【0094】なお、本実施の形態のプロセッサは、3個
の命令デコーダ409a、409b、409cと3個の
演算器401a、401b、401cを備えているもの
としたが、これに限定するものでなく、1個の命令デコ
ーダと、1個の演算器を有するものとしてもよい。ま
た、最適化装置303の機能をコンパイラ301に取り
込んで、コンパイラ301と、アセンブラ305と、リ
ンカ307によって、ソースコード300からオブジェ
クトコード308を生成することとしてもよい。
【0095】また、本実施の形態では、プリフェッチ下
位カウンタ413は、常時3’b000に設定するもの
としたが、これに限定するものではなく、例えば、1サ
イクルごとに1ずつインクリメントすることととしても
よい。この場合には、1サイクルごとに1バイトデータ
が命令メモリ407から命令バッファ408に読み出さ
れることになる。 (第2の実施形態)第2の実施形態は、分岐命令中のラ
ベルが解決されるPC相対値として、第1の実施形態と
異なるものを用いたプロセッサ及び、最適化装置、アセ
ンブラ、リンカに関する。
【0096】第1の実施形態では、分岐命令のPC相対
値は、分岐先命令のアドレスと分岐命令のアドレスとの
差分値であったが、本実施の形態では、分岐命令のPC
相対値は、分岐先命令のアドレスと実行単位の先頭アド
レスとの差分値とする。本実施の形態では、第1の実施
形態とPC相対値の意味づけが異なる。しかし、プログ
ラム生成側、すなわち、プログラム相対値を算出する最
適化装置、アセンブラ、リンカと、プログラム実行側、
すなわち、プログラム相対値からもとのアドレスを算出
するプロセッサとで、PC相対値を同一の意味で用いる
こととすれば、プロセッサは、分岐命令の実行時に、正
しく分岐先命令にプログラムカウンタの値を移行させる
ことができる。
【0097】まず、本実施の形態の最適化装置303、
アセンブラ305、リンカ307、プロセッサ309に
ついて説明する。最適化装置303のラベル検出手段9
05は、「PC相対値に解決すべきラベル」について
は、第1の実施形態で分岐命令の仮アドレスと分岐先命
令の仮アドレスを取り込んでラベル情報を作成した代わ
りに、分岐先命令の仮アドレスとその分岐命令と同一の
実行単位に属する命令群の先頭の命令のアドレスを取り
込んでラベル情報906を作成する。このラベル情報9
06から、第1の実施形態と同様にして、2つの仮アド
レスの差であるアドレス差913が算出され、最適化コ
ード915が算出される。アセンブラ、リンカについて
も同様である。
【0098】本実施の形態により、オブジェクトコード
が生成される具体例を示す。アセンブラ305は、図1
6の機械語コード中の命令1409のラベルL1を、分
岐先命令のアドレス32’h00000000から命令
1409の実行単位の先頭である命令1408のアドレ
ス32’h00000010を減算した減算値13’h
1ff0に置き換える。リンカ307も、同様に、図2
3の結合コード中の命令1906のラベルfを、分岐先
アドレス32’h00000000から命令1906の
実行単位の先頭である命令1907のアドレス32’h
00000008を減算した減算値13’h1ff8に
置き換える。図26は、このようにして生成されるオブ
ジェクトコードを示す。図26では、命令2206、命
令2213のPC相対値が、図25に示すものと異なっ
ていることが示されている。
【0099】次に、本実施の形態のプロセッサについて
説明する。プロセッサ309は、上述のようにして作成
されたオブジェクトコードを実行する。プロセッサ30
9が分岐命令を実行する際に、分岐命令中のPC相対値
は、その時の上位PC403及び下位PC404が指定
しているアドレスと分岐先命令のアドレスとの差分値で
ある。従って、プロセッサ309は、上位PC403、
下位PC404の値を補正する処理をすることなく、第
1の実施形態と同様にして、上位PC403の値及び下
位PC404の値と分岐命令中のPC相対値とを加算
し、加算結果を上位PC403及び下位PC404の値
に更新する。プロセッサが図26に示すオブジェクトコ
ードを実行する場合、命令2213の実行の際には、現
在のPCの値32’h00000008とPC相対値1
3’h1ff8とを加算し、加算値32’h00000
000にPCを更新する。
【0100】以上のように、本実施の形態のプロセッサ
は、分岐命令を実行する際に、第1の実施形態のような
プログラムカウンタの値を補正する処理は不要で、直
接、PC相対値とPCの値とを加算することによって分
岐先のアドレスが得られるので、実行時間を短縮でき
る。 (第3の実施形態)第3の実施形態は、命令のアドレス
の下位3ビットを十分に活用して、命令の実行位置を指
定できるプロセッサに関する。
【0101】第1の実施形態では、命令のアドレスの下
位3ビットを用いて、3個のユニットの位置を指定する
こととしたが、本実施の形態では、命令のアドレスの下
位3ビットを十分に活用して、8個のユニットの位置を
指定するものである。図27(a)は、本実施の形態の
命令パケットの構成を示す図である。命令パケットは、
8個のユニットで構成される。命令パケットの1個のユ
ニットは8ビット長であり、命令パケットの長さは64
ビット長となる。プロセッサは、1サイクルにおいて、
この64ビットの固定長で命令を読み出す。
【0102】図27(b)は、命令の種類を示す図であ
る。各命令は、8ビットのユニットを単位として構成さ
れており、2ユニット命令、3ユニット命令、5ユニッ
ト命令、6ユニット命令が存在する。図27(c)は、
パケット内アドレスと、パケット内アドレスが指定する
パケット内のユニットとの関係を示す図である。命令パ
ケット内の位置は、第1の実施形態と同様に、命令のア
ドレスの下位3ビットで指定される。図に示すように、
パケット内アドレスが3’b000なら第1ユニットを
指定し、3’b001なら第2ユニットを指定し、3’
b010なら第3ユニットを指定し、3’b011なら
第4ユニットを指定し、3’b100なら第5ユニット
を指定し、3’b101なら第6ユニットを指定し、
3’b110なら第7ユニットを指定し、3’b111
なら第8ユニットを指定する。
【0103】以上のように、本実施の形態のプロセッサ
は、命令の下位アドレスの3ビットを最大限に用いて、
命令の実行位置を指定できるので、1サイクルにおける
命令の実行単位にバリエーションをもたせることができ
る。 (第4の実施形態)第4の実施形態は、桁上りなし方式
による命令のアドレスの演算方法に関する。
【0104】第1の実施形態では、プログラムを実行す
るプロセッサと、プログラムを作成する最適化装置、ア
センブラ、リンカのすべてが共通して桁上り方式のアド
レスの演算方法を用いることによって、プロセッサでP
C相対値から分岐先命令のアドレスを誤りなく再現する
ことができたが、桁上り方式以外のアドレスの演算方法
であっても、プロセッサと、最適化装置と、アセンブラ
と、リンカが共通にその演算方法を用いさえすれば、プ
ロセッサが分岐先命令のアドレスを誤りなく再現できる
ようなものがある。本実施の形態は、このような他のア
ドレスの演算方法の一つである桁上りなし方式に関する
ものである。
【0105】桁上りなし方式では、命令のアドレスを上
位29ビット、下位3ビットに分離して演算する点で、
第1の実施形態の桁上がり方式と同じであるが、下位3
ビットの演算で桁上がりあるいは桁借りを発生させない
点で、桁上がり方式と異なる。まず、プロセッサ309
が行う、分岐命令のアドレスとPC相対値とを加算して
分岐先命令のアドレスを求める方法について説明する。
図5に示す下位PC演算器405は、分岐命令のアドレ
スの下位3ビットとPC相対値の下位3ビットとを加算
する。図28(a)は、本実施の形態に係る桁上りなし
方式のアドレス演算による分岐命令のアドレスの下位3
ビットとPC相対値の下位3ビットとの加算規則を示す
加算表である。図に示すように、下位3ビットの加算は
通常の2進演算と異なり、3’b000,3’b01
0,3’b100を巡回する3進演算である。この演算
では、桁上がりは発生させない。
【0106】図5に示す上位PC演算器411は、分岐
命令のアドレスの上位29ビットとPC相対値の上位2
9ビットとを加算する。分岐命令のアドレスの上位29
ビットとのPC相対値の上位29ビットとの加算方法は
通常の2進演算である。以上により算出された加算結果
が分岐先命令のアドレスとなる。すなわち、加算結果の
の下位3ビットが下位PC404に設定され、加算結果
の上位29ビットが上位PC403に設定される。
【0107】次に、最適化装置303、アセンブラ30
5、リンカ307が行う、PC相対値を求める演算、す
なわち、分岐先命令のアドレスから分岐命令のアドレス
を減算方法について説明する。減算は、加算と同様に上
位29ビットと下位3ビットに分離して行う。最適化装
置303の下位アドレス減算手段907、アセンブラ3
05の下位アドレス減算手段806、リンカ307の下
位アドレス減算手段706は、分岐先命令のアドレスの
下位3ビットから分岐命令のアドレスの下位3ビットを
減算する。図28(b)は、本実施の形態に係る桁上り
なし方式のアドレス演算による分岐先命令のアドレスの
下位3ビットと分岐命令のアドレスの下位3ビットとの
減算規則を示す減算表である。図に示すように、下位3
ビットの減算は通常の2進演算と異なり、3’b00
0,3’b010,3’b100を巡回する3進演算で
ある。この演算では、桁借りは発生させない。
【0108】最適化装置303の上位アドレス減算手段
910と、アセンブラ305の上位アドレス減算手段8
09と、リンカ307の上位アドレス減算手段709
は、分岐命令のアドレスの上位29ビットと分岐先命令
の上位29ビットとを減算する。減算方法は通常の2進
演算である。以上により算出された下位3ビットの減算
結果を下位3ビットとし、上位29ビットの減算結果を
上位29ビットとした値がPC相対値となる。
【0109】図29は、本実施の形態に係る桁上りなし
方式のアドレス演算により生成されたオブジェクトコー
ドを示す。図29では、命令2406と命令2413の
PC相対値が、図25のものと異なっている。命令24
06のPC相対値の算出法について説明する。下位アド
レス減算手段706は、命令2401の下位3ビットア
ドレス3’b000から命令2406の下位3ビットア
ドレス3’b010を、図28(b)に示す減算表に従
って減算し、下位減算結果3’b100を得る。
【0110】上位アドレス減算手段709は、命令24
01の上位29ビットアドレス29’h0000000
0から命令2406の上位29ビットアドレス29’h
00000001を減算し、上位減算結果29’h1f
ffffffを得る。アドレス差算出手段711は、上
位減算結果29’h1fffffffを上位29ビット
とし、下位減算結果3’b100を下位3ビットとした
アドレス差32’h1ffffffcを算出する。
【0111】再配置情報解決手段713は、アドレス差
32’h1ffffffcが下位13ビット13’h1
ffcで表現できるので、13’h1ffcをPC相対
値としてラベルを置換えることによって、命令2406
が生成される。プロセッサ309は、上述のようにして
作成されたオブジェクトコードを実行する。プロセッサ
309は、分岐命令を実行する際に、分岐命令中のPC
相対値と、分岐命令のアドレスを指定するように補正し
た上位PC403及び下位PC404の値とを桁上りな
し方式により加算する。
【0112】プロセッサが図29に示すオブジェクトコ
ード中の命令2406を実行する際には、下位PC演算
器405は、補正した下位PC404の値3’b010
と、PC相対値の下位3ビット3’b100とを加算し
て、加算値3’b000に下位PC404を更新し、上
位PC演算器411は、補正した上位PC403の値2
9’h00000001と、PC相対値の上位29ビッ
ト29’h1fffffffとを加算して、加算値2
9’h00000000に上位PC403を更新する。
【0113】以上のように、桁上りなし方式によるアド
レス演算では、下位PC演算器から上位PC演算器に桁
上り数又は桁借り数が送られないので、単純なハードウ
エアによりアドレス演算が実現できる。 (第5の実施形態)第5の実施形態は、絶対値方式によ
る命令のアドレスの演算方法に関する。
【0114】絶対値方式では、命令のアドレスを上位2
9ビット、下位3ビットに分離して演算する点で、第1
の実施形態の桁上がり方式と同じであるが、命令の下位
3ビットアドレスの値を下位3ビットの演算結果とする
点で、桁上がり方式と異なる。まず、プロセッサ309
が行う、分岐命令のアドレスとPC相対値とを加算して
分岐先命令のアドレスを求める方法について説明する。
図5に示す下位PC演算器405は、分岐命令のアドレ
スの下位3ビットとPC相対値の下位3ビットとを加算
する。図30(a)は、本実施の形態に係る絶対値方式
のアドレス演算による分岐命令のアドレスの下位3ビッ
トとPC相対値の下位3ビットとの加算規則を示す加算
表である。図に示すように、PC相対値の下位3ビット
が、下位3ビットの加算結果となる。
【0115】図5に示す上位PC演算器411は、分岐
命令のアドレスの上位29ビットとPC相対値の上位2
9ビットとを加算する。分岐命令のアドレスの上位29
ビットとのPC相対値の上位29ビットとの加算方法は
通常の2進演算である。以上により算出された加算結果
が分岐先命令のアドレスとなる。すなわち、加算結果の
下位3ビットが下位PC404に設定され、加算結果の
上位29ビットが上位PC403に設定される。
【0116】次に、最適化装置303、アセンブラ30
5、リンカ307が行う、PC相対値を求める演算、す
なわち、分岐先命令のアドレスから分岐命令のアドレス
を減算する減算方法について説明する。減算は、加算と
同様に上位29ビットと下位3ビットに分離して行う。
最適化装置303の下位アドレス減算手段907、アセ
ンブラ305の下位アドレス減算手段806、リンカ3
07の下位アドレス減算手段706は、分岐先命令のア
ドレスの下位3ビットから分岐命令のアドレスの下位3
ビットを減算する。図30(b)は、本実施の形態に係
る絶対値方式のアドレス演算による分岐先命令のアドレ
スの下位3ビットと分岐命令のアドレスの下位3ビット
との減算規則を示す減算表である。図に示すように、分
岐先命令のアドレスの下位3ビットが、下位3ビットの
加算結果となる。
【0117】最適化装置303の上位アドレス減算手段
910と、アセンブラ305の上位アドレス減算手段8
09と、リンカ307の上位アドレス減算手段709
は、分岐命令のアドレスの上位29ビットと分岐先命令
の上位29ビットとを減算する。減算方法は通常の2進
演算である。以上により算出された下位3ビットの減算
結果を下位3ビットとし、上位29ビットの減算結果を
上位29ビットとした値がPC相対値となる。
【0118】図31は、本実施の形態に係る絶対値方式
のアドレス演算により生成されたオブジェクトコードを
示す。図31では、命令2606と命令2613のPC
相対値が、図25のものと異なっている。命令2606
のPC相対値の算出法について説明する。下位アドレス
減算手段706は、命令2601の下位3ビットアドレ
ス3’b000から命令2606の下位3ビットアドレ
ス3’b010を、図30(b)に示す減算表に従って
減算し、下位減算結果3’b000を得る。
【0119】上位アドレス減算手段709は、命令26
01の上位29ビットアドレス29’h0000000
0から命令2606の上位29ビットアドレス29’h
00000001を減算し、上位減算結果29’h1f
ffffffを得る。アドレス差算出手段711は、上
位減算結果29’h1fffffffを上位29ビット
とし、下位減算結果3’b000を下位3ビットとした
アドレス差32’h1ffffff8を算出する。
【0120】再配置情報解決手段713は、アドレス差
32’h1ffffff8が下位13ビット13’h1
ff8で表現できるので、13’h1ff8をPC相対
値としてラベルを置換えることによって、命令2606
が生成される。プロセッサ309は、上述のようにして
作成されたオブジェクトコードを実行する。プロセッサ
309は、分岐命令を実行する際に、分岐命令中のPC
相対値と、分岐命令のアドレスを指定するように補正し
た上位PC403及び下位PC404の値とを絶対値方
式により加算する。
【0121】プロセッサが図31に示すオブジェクトコ
ード中の命令2606を実行する際には、下位PC演算
器405は、補正した下位PC404の値3’b010
と、PC相対値の下位3ビット3’b000とを加算し
て、加算値3’b000に下位PC404を更新し、上
位PC演算器411は、補正した上位PC403の値2
9’h00000001と、PC相対値の上位29ビッ
ト29’h1fffffffとを加算して、加算値2
9’h00000000に上位PC403を更新する。
【0122】以上のように絶対値方式によるアドレス演
算では、下位ビットの演算が不要なので、演算速度を高
めることができる。 (第6の実施形態)第6の実施形態は、リニア方式によ
る命令のアドレスの演算方法に関する。リニア方式で
は、他の実施形態と異なり、命令のアドレスを上位29
ビットと、下位3ビットに分離せすに計算する。
【0123】まず、プロセッサが行う、分岐命令のアド
レスとPC相対値とを加算して分岐先命令のアドレスを
求める方法について説明する。桁上り方式のプロセッサ
は、上位29ビットのアドレスを演算する上位PC演算
器と下位3ビットのアドレスを演算する下位PC演算器
を備えていたが、リニア方式のプロセッサは、32ビッ
トのアドレスを演算する1つのPC演算器を備えてい
る。リニア方式のPC演算器は、32ビットの分岐命令
のアドレスと32ビットのPC相対値とを加算する。加
算方法は通常の2進演算である。
【0124】以上により算出された加算結果が分岐先命
令のアドレスとなる。すなわち、加算結果の下位3ビッ
トが下位PC404に設定され、加算結果の上位29ビ
ットが上位PC403に設定される。次に、最適化装置
303、アセンブラ305、リンカ307が行う、PC
相対値を求める演算、すなわち、分岐先命令のアドレス
から分岐命令のアドレスを減算方法について説明する。
リニア方式の最適化装置303、アセンブラ305、リ
ンカ307は、リニア方式のプロセッサと同様に、32
ビットのアドレスを演算する1つのアドレス減算手段を
備えている。リニア方式のアドレス減算手段は、32ビ
ットの分岐先命令のアドレスから32ビットの分岐命令
のアドレスを減算する。減算方法は通常の2進演算であ
る。
【0125】以上により算出された減算結果がPC相対
値となる。図32は、本実施の形態に係るリニア方式の
アドレス演算を用いて生成されたオブジェクトコードを
示す。図32では、命令2706と命令2713のPC
相対値が、図25のものと異なっていることが示されて
いる。命令2706のPC相対値の算出法について説明
する。
【0126】リニア方式のアドレス減算手段は、命令2
701の32ビットアドレス32’h00000000
から命令2706の32ビットアドレス32’h000
0000aを減算し、アドレス差32’hffffff
f6を得る。再配置情報解決手段713は、アドレス差
32’hfffffff6が下位13ビット13’h1
ff6で表現できるので、13’h1ff6をPC相対
値としてラベルを置換えることによって、命令2706
が生成される。
【0127】プロセッサ309は、上述のようにして作
成されたオブジェクトコードを実行する。プロセッサ3
09は、分岐命令を実行する際に、分岐命令中のPC相
対値と、分岐命令のアドレスを指定するように補正した
上位PC403及び下位PC404の値とをリニア方式
により加算する。プロセッサが図32に示すオブジェク
トコード中の命令2706を実行する際には、本実施の
形態のPC演算器は、補正した上位PC403の値を上
位29ビットとし、補正した下位PC404の値を下位
3ビットとした32ビットのPCの値32’h0000
000aと、PC相対値32’hfffffff6とを
加算して、加算結果32’h00000000を得る。
そして、PC演算器は、加算値の下位3ビット3’b0
00に下位PC404を更新し、加算値の上位29ビッ
ト29’h00000000に上位PC403を更新す
る。
【0128】以上のように、リニア方式によるアドレス
演算では、PC演算器として通常の演算器を用いること
ができるので、プロセッサの構成を簡易にすることがで
きる。 (第7の実施形態)第7の実施形態は、PC加算命令及
びPC減算命令を解釈、実行するプロセッサ及びこれら
の命令を生成するコンパイラに関する。
【0129】図33は、本実施の形態に係るプロセッサ
の構成図である。本実施の形態のプロセッサが図5に示
す第1の実施形態に係るプロセッサと異なる点は、第2
下位PC演算器2800と第2上位PC演算器2802
が付加され、第1命令デコーダ2801aと、第2命令
デコーダ2801bと、第2命令デコーダ2801cの
機能が追加されたところである。
【0130】命令デコーダ2801aと、2801b
と、2801cは、通常の命令に加えて、PC加算命令
とPC減算命令も解読する。図34(a)は、PC加算
命令のニーモニックとオペレーションの対応を示す。同
図に示すように、PC加算命令は、PC相対値disp
とレジスタに格納されているPCの値とを加算し、同一
のレジスタに結果を格納するものである。図34(b)
は、PC減算命令のニーモニックとオペレーションの対
応を示す。PC減算命令は、レジスタに格納されている
PCの値からPC相対値dispを減算し、同一のレジ
スタに結果を格納するものである。
【0131】第2下位PC演算器2800と第2上位P
C演算器2802は、第1の実施形態における下位PC
演算器405及び上位PC演算器411と同様の演算規
則に従って、上記のPC加算命令とPC減算命令を実行
する。図35は、本実施の形態に係るコンパイラの構成
図である。ソースコード2901はC言語等の高級言語
で記述されたプログラムである。
【0132】中間コード変換部2902は、ソースコー
ド2901をコンパイラの内部表現である中間コード2
903に変換する。中間コード変換部2902は公知の
技術であるため、詳細な説明を省略する。PC値加算命
令変換部2904は、中間コード2903の中でPCの
値と変数とを加算する中間コードを図33に示したPC
加算命令のアセンブラコード2906に変換する。
【0133】命令変換部2905は、その他の中間コー
ドを対応するアセンブラコード2906に変換する。命
令変換部2905は公知の技術であるため、詳細な説明
を省略する。次に、コンパイラの動作を、具体例を用い
て説明する。図36は、コンパイラの動作手順を示すフ
ローチャートである。
【0134】まず、コンパイラにソースコードが入力さ
れる。図37は、C言語で記述されたソースコードを示
す。図中、外部関数g1、g2、g3、g4は宣言さ
れ、関数fはint型の変数iを受け取る関数として定
義されている。この関数fは、iの値が1ならばポイン
タfpに関数g1のアドレスを代入し、iの値が2なら
ばポインタfpに関数g2のアドレスを代入し、iの値
が3ならばポインタfpに関数g3のアドレスを代入
し、iが以上の値でなければポインタfpに関数g4の
アドレスを代入し、最後にfpの指す関数を呼び出すコ
ードからなる(ステップS3600)。
【0135】次に、中間コード変換部2902は、ソー
スコードを中間コードに変換する。その際に、特に、中
間コード変換部2902は、外部関数へのポインタをポ
インタ変数に代入するソースコードを、関数の先頭のア
ドレスと外部関数の先頭のアドレスとの差分値と、関数
の先頭のアドレスが格納された一時変数とを加算して、
その結果をポインタ変数に代入する中間コードに変換す
る。
【0136】図38は、図37のソースプログラムが変
換された中間コードを示す。図中、中間コード3201
は、関数の先頭のラベルfを有し、一時変数tmpに現
在のPCの値、すなわち関数fの先頭アドレスを代入す
る中間コードである。中間コード3202は、変数iが
1と等しくないかを判定する中間コードである。中間コ
ード3203は、中間コード3202の判定が真の場
合、すなわちiが1と等しくない場合には、ラベルL1
へ分岐する中間コードである。中間コード3204は、
iと1が等しい場合に実行されるもので、関数g1の先
頭アドレスから関数fの先頭のアドレスを減算した差分
値と関数fの先頭アドレスが代入された一時変数tmp
とを加算し、その結果を変数fpに代入する中間コード
である。中間コード3205は、ラベルLへ分岐する中
間コードである。
【0137】中間コード3206はラベルL1を有し、
変数iが2と等しくないかを判定する中間コードであ
る。中間コード3207は、中間コード3206の判定
が真の場合、すなわち、iが2と等しくない場合には、
ラベルL2へ分岐する中間コードである。中間コード3
208は、iと2が等しい場合に実行され、関数g2の
先頭アドレスから関数fの先頭のアドレスを減算した差
分値と関数fの先頭アドレスが代入された一時変数tm
pとを加算し、その結果を変数fpに代入する中間コー
ドである。中間コード3209は、ラベルLへ分岐する
中間コードである。
【0138】中間コード3210はラベルL2を有し、
変数iが3と等しくないかを判定する中間コードであ
る。中間コード3211は、中間コード3210の判定
が真の場合、すなわち、iが3と等しくない場合には、
ラベルL3へ分岐する中間コードである。中間コード3
212は、iと3が等しい場合に実行され、関数g3の
先頭アドレスから関数fの先頭のアドレスを減算した差
分値と関数fの先頭アドレスが代入された一時変数tm
pとを加算し、その結果を変数fpに代入する中間コー
ドである。中間コード3213は、ラベルLへ分岐する
中間コードである。
【0139】中間コード3214は、ラベルL3を有
し、関数g4の先頭アドレスから関数fの先頭のアドレ
スを減算した差分値と関数fの先頭アドレスが代入され
た一時変数tmpを加算し、その結果を変数fpに代入
する中間コードである。中間コード3215は、ラベル
Lを有し、変数fpが指す関数を呼び出す中間コードで
ある。
【0140】以上のように、図38に示す中間コード
は、関数g1、g2、g3、g4の絶対アドレスを変数
fpに代入するのではなく、関数fの先頭アドレスと関
数g1、g2、g3、g4の先頭アドレスとの差分値
を、関数fの先頭アドレスとを加算して、変数fpに代
入するものである(ステップS3601〜S360
3)。次に、PC値加算命令変換部2904及び中間コ
ードをアセンブラコードに変換する。PC値加算命令変
換部2904は、PCの値とPC相対値とを加算する中
間コードを探し、その中間コードを第2下位PC演算器
2800と第2上位PC演算器2802を使用するアセ
ンブラコードに変換する。命令変換部2905は、その
他の中間コードをアセンブラコードに変換する。
【0141】PC値加算命令変換部2904は、図38
中の中間コード3204が有する被演算子tmpが中間
コード3201によりPCの値が転送されたものであ
り、演算子+はPCの値とPC相対値の加算であること
をつきとめ、中間コード3204を第2下位PC演算器
2800と第2上位PC演算器2802を使用して加算
を行うアセンブラコードaddpcに変換する。PC値
加算命令変換部2904は、中間コード3208、32
12、3214に対しても同様にしてアセンブラコード
addpcに変換する。図38中のその他の中間コード
は命令変換部2905によって変換される。
【0142】図39は、図38の中間コードが変換され
たアセンブラコードを示す。図中、アセンブラコード3
301は、関数の先頭のラベルfを有し、レジスタr1
にPCの値を転送する命令である。アセンブラコード3
302は、定数1とレジスタr0の値が等しくないか判
定する命令である。アセンブラコード3303は、命令
3302による判定が真の場合には、ラベルL1へ分岐
する命令である。アセンブラコード3304は、関数g
1の先頭アドレスと関数fの先頭のアドレスの差分値で
あるPC相対値とレジスタr1に格納されたfの先頭ア
ドレスであるPCの値とを第2下位PC演算器2800
と第2上位PC演算器2802により加算し、その結果
をレジスタr1に転送する命令である。アセンブラコー
ド3305は、ラベルLへ分岐する命令である。
【0143】アセンブラコード3306は、ラベルL1
を有し、定数2とレジスタr0の値が等しくないか判定
する命令である。アセンブラコード3307は、命令3
306の判定が真の場合には、ラベルL2へ分岐する命
令である。アセンブラコード3308は、関数g2の先
頭アドレスと関数fの先頭のアドレスとの差分値である
PC相対値とレジスタr1に格納されたfの先頭アドレ
スであるPCの値とを第2下位PC演算器2800と第
2上位PC演算器2802により加算し、その結果をレ
ジスタr1に転送する命令である。アセンブラコード3
309は、ラベルLへ分岐する命令である。
【0144】アセンブラコード3310は、ラベルL2
を有し、定数3とレジスタr0の値が等しくないか判定
する命令である。アセンブラコード3311は、命令3
310の判定が真の場合には、ラベルL3へ分岐する命
令である。アセンブラコード3312は、関数g3の先
頭アドレスと関数fの先頭のアドレスとの差分値である
PC相対値とレジスタr1に格納されたfの先頭アドレ
スであるPCの値とを第2下位PC演算器2800と第
2上位PC演算器2802により加算し、その結果をレ
ジスタr1に転送する命令である。アセンブラコード3
313は、ラベルLへ分岐する命令である。
【0145】アセンブラコード3314はラベルL3を
有し、関数g4の先頭アドレスと関数fの先頭のアドレ
スとの差分値であるPC相対値とレジスタr1に格納さ
れたfの先頭アドレスであるPCの値とを第2下位PC
演算器2800と第2上位PC演算器2802により加
算し、その結果をレジスタr1に転送する命令である。
アセンブラコード3315は、ラベルLを有し、r1が
指す関数を呼び出す命令である。アセンブラコード33
16は関数を終了する命令である。
【0146】以上説明してきたように、本実施の形態の
コンパイラは、関数f中に外部関数gへのポインタをポ
インタ変数に代入するソースコードがある場合、外部関
数gへのアドレスをレジスタr1へ転送する命令(mo
vr1、g)を生成するのではなく、関数fのアドレス
と外部関数gのアドレスとの差分値(g−f)と、レジ
スタr1に格納された関数fのアドレスとを加算して、
その結果をレジスタr1へ転送する命令(addPC
g−f r1)を生成する。絶対アドレスg1よりもP
C相対値g−fの方が値が小さいので、addpc命令
を用いることによって、コードサイズを縮小することが
できる。また、実行時にプログラムのメモリ上のアドレ
スが決定されるPICコードにおいては、絶対アドレス
を避けたコード表現が要求され、このPC相対値を用い
た演算命令が必要不可欠である。
【0147】本実施の形態のコンパイラが出力したアセ
ンブラコードは、第1の実施形態と同様に、最適化装置
303、アセンブラ305、リンカ307によってプロ
セッサが実行するオブジェクトコードに変換される。プ
ロセッサは、生成されたオブジェクトコードに含まれる
PC加算命令addPC g−f r1を第2下位PC
演算器2800と第2上位PC演算器2802によって
実行する。すなわち、第2下位PC演算器2800は、
定数値g−fの下位3ビットとレジスタr1に格納され
た数値の下位3ビットを加算し、桁上りがあれば桁上り
数を第2上位PC演算器2802に送る。第2上位PC
演算器2802は、定数値g−fの上位29ビットとレ
ジスタr1に格納された数値の上位29ビットとを加算
し、第2下位PC演算器2800からの桁上りがあれば
桁上り数をも加算する。第2下位PC演算器2800に
よる加算結果を下位3ビットとし、第2上位PC演算器
2802による加算結果を上位29ビットとした値がレ
ジスタr1に格納される。
【0148】なお、図35に示した命令は定数値とレジ
スタとの加減算であったが、これに限定するものでな
く、レジスタ間の加減算、PCとレジスタの間の加減算
とすることもできる。また、第2下位PC演算器280
0と第2上位PC演算器2802の演算方法は、第1の
実施形態の桁上り方式に限定するものでなく、オブジェ
クトコードを生成した最適化装置303、アセンブラ3
05、リンカ307で用いた方式と同一の方式をプロセ
ッサが採用することとすれば、桁上りなし方式、リニア
方式、絶対値方式のいずれを用いてもよい。 (第8の実施形態)第8の実施形態は、デバッガ及び逆
アセンブラに関する。
【0149】図40は、本実施の形態に係るデバッガと
逆アセンブラの構成を示すブロック図である。入力制御
部4000は、オペレータからの入力を受け付け、入力
された内容に応じて他の構成要素を制御する。パケット
アドレス特定部4001は、入力された命令のアドレス
の上位29ビットを算出する。
【0150】パケット内アドレス特定部4002は、入
力された命令のアドレスの下位3ビットを算出する。命
令メモリ4004は、デバッグ及び逆アセンブルの対象
となる命令を保持する。命令のアドレスは、第1の実施
形態と同様であり、パケットアドレスを上位29ビット
とし、パケット内アドレスを下位3ビットとする32ビ
ット値である。図40では、図24に示した命令が格納
されている状態が示されている。
【0151】命令読み出し部4003は、パケットアド
レス特定部4001で特定されたパケットアドレスで指
定される命令パケットを命令メモリ4004から読み出
す。命令バッファ4005は、命令読み出し部4004
が命令メモリ4004から読み出した命令パケットを格
納する。命令解読部4006は、パケット内アドレス特
定部4002で特定されたパケット内アドレスをもつユ
ニットを命令バッファ4005から取り出し、取り出し
たユニットを解読する。命令解読部4006は、ユニッ
トが分岐命令である場合には、PC相対値4007を下
位PC演算器4008及び上位PC演算器4009に送
る。
【0152】ラベルテーブル4011は、ラベル名とそ
のラベルの命令のアドレスの対応を保持するテーブルで
ある。ラベルテーブル4011は、第1の実施形態で説
明したアセンブラが機械語コードを生成する際に、最適
化コードから抽出することによって作成される。図40
では、アドレス32’h00000000とラベル名f
が対応し、アドレス32’h00000008とラベル
名L1が対応し、アドレス32’h12345680と
ラベル名L2とが対応していることが示されている。
【0153】表示部4012は、命令を逆アセンブルし
た結果を表示する。命令置換部4013は、入力された
置換後の命令を命令バッファ4005内のパケット内ア
ドレス特定部4002で特定されたパケット内アドレス
で指定されるユニットに書き込む。命令書き込み部40
14は、命令メモリ4004内のパケットアドレス特定
部4001により特定されたパケットアドレスを有する
命令パケットを命令バッファ4005内の置換後の命令
パケットに書き換える。
【0154】上位PC演算器4009は、パケットアド
レス特定部4001で特定された命令のアドレスの上位
29ビットとPC相対値4007の上位29ビットとを
演算する。下位PC演算器4008は、パケット内アド
レス特定部4002で特定された命令のアドレスの下位
3ビットとPC相対値4007の下位3ビットを演算す
る。これらのPC演算器の演算方法は、オブジェクトコ
ード生成過程で採用した方式と同一とする。
【0155】次に、本実施の形態の逆アセンブラの動作
を具体例を用いて説明する。図41は、逆アセンブラの
動作手順を示すフローチャートである。まず、入力制御
部4000は、逆アセンブルを指示するコマンドと逆ア
センブルする命令のアドレスの入力を受け付ける。具体
例では、命令のアドレスとして32’h0000001
aが入力されたとする。(ステップS4100)。
【0156】次に、パケットアドレス特定部4001
は、命令のアドレスの上位29ビットよりパケットアド
レスを特定する。そして、命令読み出し部4003は、
特定したパケットアドレスをもつ命令パケットを命令メ
モリ4004から取り出し、命令バッファ4005に格
納する。具体例では、パケットアドレスとして29’h
00000003が特定され、ld(r2),r0||
bra13’h1fec||add r2,r3の命令
列からなる命令パケットが命令バッファ4005に格納
される(ステップS4101)。
【0157】そして、パケット内アドレス特定部400
3は、命令のアドレスの下位3ビットからパケット内ア
ドレスを特定し、特定したパケット内アドレスをもつユ
ニットを命令解読部4006に通知する。命令解読部4
006は、通知されたユニットを命令バッファ4005
から取り出す。具体例では、パケット内アドレスとして
3’b010が特定され、命令バッファ4005中の第
2ユニットの命令であるbra13’h1fecが命令
解読部4006に入力される(ステップS4102)。
【0158】命令解読部4006は、取り出した命令が
分岐命令であるかを判定する。具体例では、取り出した
命令bra13’h1fecは、分岐命令である(ステ
ップS4103)。分岐命令であれば、命令中に指定さ
れるPC相対値4007と入力された命令のアドレス値
とが演算される。すなわち、下位PC演算器4008
は、入力された命令のパケット内アドレス値と、PC相
対値4007の下位3ビットの値とを加算叉は減算し、
その演算結果をラベル検索部4010に送る。また、上
位PC演算器4008は、入力された命令のパケットア
ドレス値と、PC相対値4007の上位29ビットの値
と、場合により下位PC演算器4008からの桁上がり
数又は桁借り数とを加算叉は減算し、その演算結果をラ
ベル検索部4010に送る。ラベル検索部4010は、
下位ビット演算結果と上位ビット演算結果より、ラベル
のアドレスを特定する。具体例では、入力された命令の
アドレスである32’h0000001aとPC相対値
13’h1fecとの演算によって、ラベルのアドレス
が32’h00000008として特定される(ステッ
プS4103、S4104)。
【0159】次に、ラベル検索部4010は、、ラベル
テーブル4011を参照して上記特定したアドレスをも
つラベル名を検索する。具体例では、アドレス32’h
00000008に対応するラベル名がL1であること
が検索される(ステップS4107)。そして、表示部
4012は、分岐命令のアセンブラ名と検索したラベル
名を表示する。具体例では、分岐命令のアセンブラ名で
あるbraと検索したラベル名であるL1が表示される
(ステップS4108)。
【0160】また、命令解読部4006は、取り出した
命令が分岐命令でない場合には、表示部4012を指示
して、そのアセンブラ名を表示させる(ステップS41
09)。次に、本実施の形態のデバッガの動作を具体例
を用いて説明する。図42は、デバッガの動作手順を示
すフローチャートである。
【0161】まず、入力制御部4000は、デバッグを
指示するコマンドと置換される命令のアドレスと置換後
の命令の入力を受け付ける。具体例では、置換される命
令のアドレスとして32’h0000001aが入力さ
れ、置換後の命令として減算命令subr0,r1が入
力されたとする(ステップS4200)。次に、パケッ
トアドレス特定部4001は、置換される命令のアドレ
スの上位29ビットよりパケットアドレスを特定する。
そして、命令読み出し部4003は、特定されたパケッ
トアドレスをもつ命令パケットを命令メモリ4004か
ら取りだし、命令バッファ4005に格納する。具体例
では、パケットアドレスとして29’h0000000
3が特定され、ld(r2),r0||bra13’h
1fec||add r2,r3の命令列からなる命令
パケットが命令バッファ4005に格納される(ステッ
プS4201)。
【0162】次に、パケット内アドレス特定部4002
は、置換される命令のアドレスの下位3ビットよりパケ
ット内アドレスを特定する。具体例では、パケット内ア
ドレスとして3’b010が特定される(ステップS4
202)。次に、命令置換部4013は、特定されたパ
ケット内アドレスが3’b000なら、命令バッファ中
の命令パケットの第1ユニットを入力された置換後の命
令に置換し、特定されたパケット内アドレスが3’b0
10なら、命令バッファ中の命令パケットの第2ユニッ
トを入力された置換後の命令に置換し、特定されたパケ
ット内アドレスが3’b100なら、命令バッファ中の
命令パケットの第3ユニットを入力された置換後の命令
に置換する。具体例では、特定されたパケット内アドレ
スが3’b010なので、第2ユニットの命令bra1
3’h1fecが置換後の命令subr0,r1に置換
される。その結果、命令バッファ4005内の命令パケ
ットはld(r2),r0||subr0,r1||a
ddr2,r3となる(ステップS4203〜S420
7)。
【0163】そして、命令書き込み部4014は、命令
メモリ4004内のパケットアドレスで指定される命令
パケットを命令バッファ4005に格納されている命令
パケットに置き換える。具体例では、命令メモリ400
4内のパケットアドレス29’h00000003で指
定される命令パケットld(r2),r0||bra1
3’h1fec||add r2,r3が命令バッファ
4005内の命令パケットld(r2),r0||su
br0,r1||add r2,r3に置換される。
【0164】以上のように、本実施の形態における逆ア
センブラは、第1の実施形態に係るプロセッサが実行す
る命令を逆アセンブルすることができる。また、逆アセ
ンブルする命令が分岐命令である場合にも、PC相対値
をそのまま表示するのでなく、上位PC演算器及び下位
PC演算器によってラベルの置かれているアドレスを算
出し、そのアドレスからラベルテーブルを参照すること
によって、適切なラベル名を表示できる。
【0165】また、本実施の形態におけるデバッガは、
バイトアラインされた命令パケットの単位で命令をメモ
リから命令バッファに読み出して、命令バッファ中で命
令を書き換えて、命令パケットの単位で命令をメモリへ
書き込むので、バイトアラインされていない命令のデバ
ッグに適している。なお、本実施の形態における上位P
C演算器及び下位PC演算器の演算方式は、第1の実施
形態における桁上がり方式に限定するものでなく、分離
方式、絶対値方式、リニア方式のいずれを用いてもよ
い。
【0166】以上、第1〜第8の実施形態に係るコンパ
イラ、最適化装置、アセンブラ、リンカ、プロセッサ、
逆アセンブラ、デバッガに関する実施の形態を説明した
が、本発明は、これら実施の形態に限られないことは勿
論である。 (1)第1〜第6の実施形態において、アセンブラコー
ド302、最適化コード304、リロケータブルコード
306、オブジェクトコード308はマスクROM、フ
ラッシュメモリ等の半導体集積メモリや、フロッピーデ
ィスク、ハードディスク等の磁気記録媒体や、CD−R
OM,DVD等の光ディスクに記録することもできる。 (2)第7の実施形態において、アセンブラコード29
06は、マスクROM、フラッシュメモリ等の半導体集
積メモリや、フロッピーディスク、ハードディスク等の
磁気記録媒体や、CD−ROM,DVD等の光ディスク
に記録することもできる。
【0167】
【発明の効果】以上の説明から明らかなように、本発明
は、1バイトデータをメモリの1単位データとして命令
を格納するメモリからプログラムカウンタの値に基いて
命令を読み出し、実行するプロセッサにおいて、前記メ
モリの1単位データ又は複数のメモリの1単位データよ
り構成されるプロセッサの1単位データの前記メモリ内
の格納位置を指定する第1のプログラムカウンタと、前
記プロセッサの1単位データに含まれるプロセッサが実
行する1つのオペレーションを示すプロセッサの1単位
命令の位置を指定する第2のプログラムカウンタとを備
えたことを特徴とする。
【0168】これによって、第1のプログラムカウンタ
は、バイト単位の長さをもつプロセッサの1単位データ
のメモリ内の格納位置を指定し、その値に基づいて命令
がメモリから読み出される。また、第2のプログラムカ
ウンタは、メモリからプロセッサ内に読み込んだプロセ
ッサの1単位データに含まれるどのプロセッサの1単位
命令であっても、その位置を指定することができる。つ
まり、命令の実行単位は、読み出し単位と関係なく任意
に設定することができる。従って、メモリからプロセッ
サへ読み出す単位はバイト単位でなくてはならない場合
にでも、命令の語長がバイト単位でない命令を実行する
ことができる。
【0169】ここで、前記プロセッサは、さらに、第1
のプログラムカウンタ更新手段と、第2のプログラムカ
ウンタ更新手段とを含み、前記第2のプログラムカウン
タ更新手段は、前記第2のプログラムカウンタの値を1
つ前のサイクルで実行した命令の分だけインクリメント
し、桁上りがあれば、桁上り数を前記第1のプログラム
カウンタ更新手段に送り、前記第1のプログラムカウン
タ更新手段は、前記第1のプログラムカウンタの値を前
記第2のプログラムカウンタ更新手段から送られた桁上
り数だけ加算することを特徴としてもよい。
【0170】これによって、プロセッサが実行した命令
の分だけ、プログラムカウンタの値をインクリメントで
きるので、プログラムカウンタを次のサイクルで実行す
る命令の先頭位置に移行させることができる。ここで、
前記プロセッサであって、実行命令が、その命令と同一
のサイクルで実行する先頭の命令のアドレスを基準とす
るプログラムカウンタ相対値を含む命令である場合に
は、当該プログラムカウンタ相対値を抽出するプログラ
ムカウンタ相対値抽出手段と、前記第1のプログラムカ
ウンタの値及び前記第2のプログラムカウンタの値と前
記プログラムカウンタ相対値とを加算し、その演算結果
を前記第1のプログラムカウンタの値及び前記第2のプ
ログラムカウンタの値として設定する演算手段とをさら
に備えたことを特徴としてもよい。
【0171】これによって、プロセッサが分岐命令を実
行した際に、プログラムカウンタの値と、分岐命令を実
行する時のプログラムカウンタ値と分岐先命令のアドレ
スとの差分値であるプログラムカウンタ相対値とが加算
されて、加算結果にプログラムカウンタが更新されるの
で、プログラムカウンタを分岐先命令のアドレスに移行
させることができる。
【0172】ここで、前記演算手段は、第1演算部と、
第2演算部とを含み、前記第2演算部は、前記第2のプ
ログラムカウンタの値と前記プログラムカウンタ相対値
の下位ビットとを加算し、その加算結果を前記第2のプ
ログラムカウンタの値として設定し、桁上りがある場合
には、桁上り数を前記第1演算部に送り、桁借りがある
場合には、桁借り数を前記第1演算部に送り、前記第1
演算部は、前記第1のプログラムカウンタの値と前記プ
ログラムカウンタ相対値の上位ビットとを加算し、さら
に前記第2演算部より桁上り数を受けとった場合には、
当該桁上り数を加算し、又は前記第2演算部より桁借り
数を受けとった場合には、当該桁借り数を減算し、それ
らの演算結果を前記第1のプログラムカウンタの値とし
て設定することを特徴としてもよい。
【0173】これによって、プロセッサが分岐命令を実
行する際に、プログラムカウンタとプログラムカウンタ
相対値との演算において、下位ビットの演算で発生した
桁上り数又は桁借り数が上位ビットの演算で考慮される
ので、上位ビットの演算と下位ビットの演算との間に連
続性を備えたアドレス演算が可能となる。ここで、前記
演算手段は、第1演算部と、第2演算部とを含み、前記
第2演算部は、前記第2のプログラムカウンタの値と前
記プログラムカウンタ相対値の下位ビットとを桁上げ、
又は桁借りを発生させずに加算し、その加算結果を前記
第2のプログラムカウンタの値として設定し、前記第1
演算部は、前記第1のプログラムカウンタの値と前記プ
ログラムカウンタ相対値の上位ビットとを加算し、その
加算結果を前記第1のプログラムカウンタの値として設
定することを特徴としてもよい。
【0174】これによって、プロセッサが分岐命令を実
行する際に、第2のプログラムカウンタの値とプログラ
ムカウンタ相対値の下位ビットとを演算する第2の演算
器から、第1のプログラムカウンタの値とプログラムカ
ウンタ相対値の上位ビットとを演算する第1の演算器
へ、桁上げ数又は桁借り数が送られないので、第2の演
算器と第1の演算器としては互いに独立して動作すれば
よい単純なハードウエアを用いることができる。
【0175】ここで、前記演算手段は、前記第1のプロ
グラムカウンタの値と前記プログラムカウンタ相対値の
上位ビットとを加算し、その加算結果を前記第1のプロ
グラムカウンタの値として設定し、前記プログラムカウ
ンタ相対値の下位ビットを前記第2のプログラムカウン
タの値として設定することを特徴としてもよい。これに
よって、プロセッサが分岐命令を実行する際に、第2の
プログラムカウンタの値とプログラムカウンタ相対値の
下位ビットとの演算が不要となるので、プロセッサの分
岐命令の実行速度が早くなる。
【0176】ここで、前記演算手段は、前記第1のプロ
グラムカウンタの値を上位ビットとし、前記第2のプロ
グラムカウンタの値を下位ビットとする値と前記プログ
ラムカウンタ相対値とを加算し、その加算結果の上位ビ
ットを前記第1のプログラムカウンタの値として設定
し、その加算結果の下位ビットを前記第2のプログラム
カウンタの値として設定することを特徴としてもよい。
【0177】これによって、プロセッサが分岐命令を実
行の際に、プログラムカウンタ値とプログラムカウンタ
相対値との演算を通常の演算器を用いて実行することが
できるので、プロセッサの構成を簡易にすることができ
る。ここで、前記プロセッサであって、実行命令が、そ
の命令のアドレスを基準とするプログラムカウンタ相対
値を含む命令である場合には、当該プログラムカウンタ
相対値を抽出するプログラムカウンタ相対値抽出手段
と、前記第1のプログラムカウンタの値及び前記第2の
プログラムカウンタの値を、前記実行命令のアドレスを
指定するように補正するプログラムカウンタ補正手段
と、前記補正された第1のプログラムカウンタの値及び
第2のプログラムカウンタの値と前記プログラムカウン
タ相対値とを加算し、その加算結果を前記第1のプログ
ラムカウンタの値及び前記第2のプログラムカウンタの
値として設定する演算手段とをさらに備えたことを特徴
としてもよい。
【0178】これによって、プログラムカウンタ相対値
は、分岐命令のアドレスと分岐先命令の差分値で表され
るので、プログラム中の並列実行の境界を変更したい事
情が生じた場合にでも、プログラムカウンタ相対値の変
更は不要となる。ここで、前記プロセッサであって、レ
ジスタ又は叉は第1のプログラムカウンタ及び第2のプ
ログラムカウンタに格納されたプログラムカウンタの値
と、プログラムカウンタ相対値とを加算する加算命令又
は減算する減算命令を解読するプログラムカウンタ相対
値演算命令解読手段と、前記プログラムカウンタの値と
前記プログラムカウンタ相対値とを加算又は減算し、演
算結果を算出する演算手段と、前記演算結果にレジスタ
又は第1のプログラムカウンタ及び第2のプログラムカ
ウンタを更新するプログラムカウンタ値更新手段とをさ
らに備えたことを特徴としてもよい。
【0179】これによって、関数の絶対アドレスをレジ
スタに格納する命令を使用する代わりに、プログラムカ
ウンタとプログラムカウンタ相対値との演算を用いる命
令を使用できる。従って、プログラムカウンタ相対値は
命令の絶対アドレスよりも短いビット長で表すことがで
きるので、プログラムのコードサイズを小さくすること
ができる。また、実行時にはじめてプログラムのメモリ
上のアドレスが決定されるPICコードでは、絶対アド
レスを用いることができないので、このプログラムカウ
ンタとプログラムカウンタ相対値を用いた演算命令が必
要不可欠である。
【0180】ここで、前記第1のプログラムカウンタ
は、前記プロセッサの1単位データの長さがnバイトの
時に、第1のプログラムカウンタの値をlog2nだけ
左へビットシフトとした値を番地とするプロセッサの1
単位データの前記メモリ内の格納位置であるメモリアド
レスを指定することを特徴としてもよい。これによっ
て、メモリに1バイトごとに1つのアドレスが付与され
ている場合において、第1のプログラムカウンタの値
と、メモリに格納された各プロセッサの1単位データが
1対1に対応するので、プロセッサからプロセッサの1
単位データの指定が容易となる。
【0181】ここで、前記プロセッサであって、命令を
一時的に記憶する命令バッファと、前記命令バッファの
空き状態に応じて、前記プロセッサの1単位データに限
定されず、メモリから命令をメモリの1単位データを最
小単位として命令バッファへ読み出す命令読み出し手段
とをさらに備えたことを特徴としてもよい。これによっ
て、メモリからプロセッサ内に読み出す命令の読み出し
単位は任意に設定することができるので、プロセッサの
命令の読み出しのための機構に柔軟性をもたせることが
できる。
【0182】また、上記目的を達成するために、本発明
は、命令列から最適化コードを生成する命令列最適化装
置であって、前記命令列の各命令の大きさを予測して、
各命令に対して、上位ビットは、プロセッサの1単位デ
ータが格納されるメモリアドレスを指定し、下位ビット
は、プロセッサの1単位データ内のプロセッサの1単位
命令の位置を指定するアドレスを付与するアドレス付与
手段と、前記命令列から、特定の1つの命令のアドレス
に解決すべきラベルを検出し、当該命令のアドレスを取
得するとともに、特定の2つの命令のアドレスの差分に
解決すべきラベルを検出し、当該2つの命令のアドレス
を取得するラベル検出手段と、前記特定の2つの命令の
アドレスの差分に解決すべきラベルが検出された場合
に、前記特定の2つの命令の一方の命令のアドレスから
他方の命令のアドレスを減算し、プログラムカウンタ相
対値を算出するプログラムカウンタ相対値算出手段と、
前記特定の1つの命令のアドレスに解決すべきラベルを
有する命令については、その大きさを前記特定の1つの
命令のアドレスの大きさに応じた命令の大きさに変換
し、前記特定の2つの命令のアドレスの差分に解決すべ
きラベルを有する命令については、その大きさを前記プ
ログラムカウンタ相対値の大きさに応じた命令の大きさ
に変換する変換手段と、前記変換された命令の大きさに
応じて、各命令のアドレスを変換して、最適化コードを
生成する最適化コード生成手段とを備えたことを特徴と
する。
【0183】これによって、分岐命令を実行するプロセ
ッサを対象としたプログラムを生成する最適化装置を実
現できる。ここで、前記プログラムカウンタ相対値算出
手段は、上位ビット減算部と、下位ビット減算部とを含
み、前記下位ビット減算部は、前記特定の2つの命令の
一方の命令のアドレスの下位ビットから他方の命令のア
ドレスの下位ビットとを減算し、減算結果を前記プログ
ラムカウンタ相対値の下位ビットとして設定し、桁借り
がある場合には、桁借り数を前記上位ビット減算部に送
り、前記上位ビット減算部は、前記特定の2つの命令の
一方の命令のアドレスの上位ビットから他方の命令のア
ドレスの上位ビットとを減算し、さらに前記下位ビット
減算部より桁借り数を受けとった場合には、当該桁借り
数を減算し、減算結果を前記プログラムカウンタ相対値
の上位ビットとして設定することを特徴としてもよい。
【0184】これによって、分岐命令を実行する際に桁
上り方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを生
成する最適化装置が実現できる。ここで、前記プログラ
ムカウンタ相対値算出手段は、上位ビット減算部と、下
位ビット減算部とを含み、前記下位ビット減算部は、前
記特定の2つの命令の一方の命令のアドレスの下位ビッ
トから他方の命令のアドレスの下位ビットとを桁借りを
発生させずに減算し、減算結果を前記プログラムカウン
タ相対値の下位ビットとして設定し、前記上位ビット減
算部は、前記特定の2つの命令の一方の命令のアドレス
の上位ビットから他方の命令のアドレスの上位ビットと
を減算し、減算結果を前記プログラムカウンタ相対値の
上位ビットとして設定することを特徴としてもよい。
【0185】これによって、分岐命令を実行する際に桁
上りなし方式によるアドレス演算によって分岐先命令の
アドレスを算出するプロセッサを対象としたプログラム
を生成する最適化装置が実現できる。ここで、前記プロ
グラムカウンタ相対値算出手段は、前記特定の2つの命
令の一方の命令のアドレスの上位ビットから他方の命令
のアドレスの上位ビットとを減算し、減算結果を前記プ
ログラムカウンタ相対値の上位ビットとして設定し、前
記特定の2つの命令の一方の命令のアドレスの下位ビッ
トを前記プログラムカウンタ相対値の下位ビットとして
設定することを特徴としてもよい。
【0186】これによって、分岐命令を実行する際に絶
対値方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを生
成する最適化装置が実現できる。また、上記目的を達成
するために、本発明は、命令列からリロケータブルコー
ドを生成するアセンブラであって、上位ビットは、プロ
セッサの1単位データが格納されるメモリアドレスを指
定し、下位ビットは、プロセッサの1単位データ内のプ
ロセッサの1単位命令の位置を指定するアドレスが付与
された命令からなる命令列を取得する命令列取得手段
と、前記命令列中の特定の2つの命令のアドレスの差分
に解決すべきラベルを検出し、当該2つの命令のアドレ
スを取得するラベル検出手段と、前記特定の2つの命令
の一方の命令のアドレスから他方の命令のアドレスを減
算し、プログラムカウンタ相対値を算出するプログラム
カウンタ相対値算出手段と、前記ラベルを前記算出され
たプログラムカウンタ相対値に置換する置換手段とを備
えたことを特徴とする。
【0187】これによって、分岐命令を実行するプロセ
ッサを対象としたプログラムを生成するアセンブラを実
現できる。ここで、前記プログラムカウンタ相対値算出
手段は、上位ビット減算部と、下位ビット減算部とを含
み、前記下位ビット減算部は、前記特定の2つの命令の
一方の命令のアドレスの下位ビットから他方の命令のア
ドレスの下位ビットとを減算し、減算結果を前記プログ
ラムカウンタ相対値の下位ビットとして設定し、桁借り
がある場合には、桁借り数を前記上位ビット減算部に送
り、前記上位ビット減算部は、前記特定の2つの命令の
一方の命令のアドレスの上位ビットから他方の命令のア
ドレスの上位ビットとを減算し、さらに前記下位ビット
減算部より桁借り数を受けとった場合には、当該桁借り
数を減算し、減算結果を前記プログラムカウンタ相対値
の上位ビットとして設定することを特徴としてもよい。
【0188】これによって、分岐命令を実行する際に桁
上り方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを生
成するアセンブラが実現できる。ここで、前記プログラ
ムカウンタ相対値算出手段は、上位ビット減算部と、下
位ビット減算部とを含み、前記下位ビット減算部は、前
記特定の2つの命令の一方の命令のアドレスの下位ビッ
トから他方の命令のアドレスの下位ビットとを桁借りを
発生させずに減算し、減算結果を前記プログラムカウン
タ相対値の下位ビットとして設定し、前記上位ビット減
算部は、前記特定の2つの命令の一方の命令のアドレス
の上位ビットから他方の命令のアドレスの上位ビットと
を減算し、減算結果を前記プログラムカウンタ相対値の
上位ビットとして設定することを特徴としてもよい。
【0189】これによって、分岐命令を実行する際に桁
上りなし方式によるアドレス演算によって分岐先命令の
アドレスを算出するプロセッサを対象としたプログラム
を生成するアセンブラが実現できる。ここで、前記プロ
グラムカウンタ相対値算出手段は、前記特定の2つの命
令の一方の命令のアドレスの上位ビットから他方の命令
のアドレスの上位ビットとを減算し、減算結果を前記プ
ログラムカウンタ相対値の上位ビットとして設定し、前
記特定の2つの命令の一方の命令のアドレスの下位ビッ
トを前記プログラムカウンタ相対値の下位ビットとして
設定することを特徴としてもよい。
【0190】これによって、分岐命令を実行する際に絶
対値方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを生
成するアセンブラが実現できる。また、上記目的を達成
するために、本発明は、リロケーターブルコードを結合
してオブジェクトコードを生成するリンカであって、上
位ビットは、プロセッサの1単位データが格納されるメ
モリアドレスを指定し、下位ビットは、プロセッサの1
単位データ内のプロセッサの1単位命令の位置を指定す
るアドレスが付与された命令からなるリロケータブルコ
ードを取得するリロケータブルコード取得手段と、前記
リロケータブルコードから特定の2つの命令のアドレス
の差分に解決すべきラベルを検出し、当該2つの命令の
アドレスを取得する再配置情報検出手段と、前記特定の
2つの命令の一方の命令のアドレスから他方の命令のア
ドレスを減算し、プログラムカウンタ相対値を算出する
プログラムカウンタ相対値算出手段と、前記ラベルを前
記算出されたプログラムカウンタ相対値に置換する置換
手段とを備えたことを特徴とする。
【0191】これによって、分岐命令を実行するプロセ
ッサを対象としたプログラムを生成するリンカを実現で
きる。ここで、前記プログラムカウンタ相対値算出手段
は、上位ビット減算部と、下位ビット減算部とを含み、
前記下位ビット減算部は、前記特定の2つの命令の一方
の命令のアドレスの下位ビットから他方の命令のアドレ
スの下位ビットとを減算し、減算結果を前記プログラム
カウンタ相対値の下位ビットとして設定し、桁借りがあ
る場合には、桁借り数を前記上位ビット減算部に送り、
前記上位ビット減算部は、前記特定の2つの命令の一方
の命令のアドレスの上位ビットから他方の命令のアドレ
スの上位ビットとを減算し、さらに前記下位ビット減算
部より桁借り数を受けとった場合には、当該桁借り数を
減算し、減算結果を前記プログラムカウンタ相対値の上
位ビットとして設定することを特徴としてもよい。
【0192】これによって、分岐命令を実行する際に桁
上り方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを生
成するリンカが実現できる。ここで、前記プログラムカ
ウンタ相対値算出手段は、上位ビット減算部と、下位ビ
ット減算部とを含み、前記下位ビット減算部は、前記特
定の2つの命令の一方の命令のアドレスの下位ビットか
ら他方の命令のアドレスの下位ビットとを桁借りを発生
させずに減算し、減算結果を前記プログラムカウンタ相
対値の下位ビットとして設定し、前記上位ビット減算部
は、前記特定の2つの命令の一方の命令のアドレスの上
位ビットから他方の命令のアドレスの上位ビットとを減
算し、減算結果を前記プログラムカウンタ相対値の上位
ビットとして設定することを特徴としてもよい。
【0193】これによって、分岐命令を実行する際に桁
上りなし方式によるアドレス演算によって分岐先命令の
アドレスを算出するプロセッサを対象としたプログラム
を生成するリンカが実現できる。ここで、前記プログラ
ムカウンタ相対値算出手段は、前記特定の2つの命令の
一方の命令のアドレスの上位ビットから他方の命令のア
ドレスの上位ビットとを減算し、減算結果をプログラム
カウンタ相対値の上位ビットとして設定し、前記特定の
2つの命令の一方の命令のアドレスの下位ビットをプロ
グラムカウンタ相対値の下位ビットとして設定すること
を特徴としてもよい。
【0194】これによって、分岐命令を実行する際に絶
対値方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを生
成するリンカが実現できる。また、上記目的を達成する
ために、本発明は、オブジェクトコード中の命令のアド
レスを指定して、そのアドレスで特定される命令のアセ
ンブラ名を出力する逆アセンブラであって、上位ビット
は、プロセッサの1単位データが格納されるメモリアド
レスを指定し、下位ビットは、プロセッサの1単位デー
タ内のプロセッサの1単位命令の位置を指定するアドレ
スが付与された命令からなるオブジェクトコードを取得
するオブジェクトコード取得手段と、前記特定される命
令がプログラムカウンタ相対値を含む命令である場合
に、前記特定される命令中からプログラムカウンタ相対
値を抽出するプログラムカウンタ相対値抽出手段と、ラ
ベルの位置を示すラベルアドレスとラベル名とを対応さ
せて記憶する記憶手段と、前記指定した命令のアドレス
とプログラムカウンタ相対値とを加算し、加算結果をラ
ベルアドレスとするラベルアドレス算出手段と、前記記
憶手段を参照して、前記算出したラベルアドレスに対応
するラベル名を検索する検索手段とを備えたことを特徴
とする。
【0195】これによって、分岐命令を含むプログラム
を逆アセンブルすることができる。つまり、逆アセンブ
ルする命令が分岐命令である場合にも、プログラムカウ
ンタ相対値から分岐先命令のアドレスを算出し、そのア
ドレスからラベルテーブルを参照して、ラベル名を取得
できるので、プログラムカウンタ相対値よりも、わかり
やすい形式であるラベル名により分岐先をユーザに提示
することできる。
【0196】ここで、前記ラベルアドレス算出手段は、
上位ビット減算部と、下位ビット減算部とを含み、前記
下位ビット減算部は、前記指定した命令のアドレスの下
位ビットと前記プログラムカウンタ相対値の下位ビット
とを加算し、加算結果を前記ラベルアドレスの下位ビッ
トとし、桁上りがある場合には、桁上り数を前記上位ビ
ット演算部に送り、桁借りがある場合には、桁借り数を
前記上位ビット演算部に送り、前記上位ビット減算部
は、前記指定した命令のアドレスの上位ビットと前記プ
ログラムカウンタ相対値の上位ビットとを加算し、さら
に前記下位ビット演算部より桁上り数が受けとった場合
には、当該桁上り数を加算し、又は前記下位ビット演算
部より桁借り数を受けとった場合には、当該桁借り数を
減算し、それらの演算結果を前記ラベルアドレスの上位
ビットとすることを特徴としてもよい。
【0197】これによって、分岐命令を実行する際に桁
上り方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを逆
アセンブルする逆アセンブラを実現できる。ここで、前
記ラベルアドレス算出手段は、上位ビット減算部と、下
位ビット減算部とを含み、前記下位ビット減算部は、前
記指定した命令のアドレスの下位ビットと前記プログラ
ムカウンタ相対値の下位ビットとを桁上げ、又は桁借り
を発生させずに加算し、加算結果を前記ラベルアドレス
の下位ビットとし、前記上位ビット減算部は、前記指定
した命令のアドレスの上位ビットと前記プログラムカウ
ンタ相対値の上位ビットとを加算し、加算結果を前記ラ
ベルアドレスの上位ビットとすることを特徴としてもよ
い。
【0198】これによって、分岐命令を実行する際に桁
上りなし方式によるアドレス演算によって分岐先命令の
アドレスを算出するプロセッサを対象としたプログラム
を逆アセンブルする逆アセンブラが実現できる。ここ
で、前記ラベルアドレス算出手段は、前記指定した命令
のアドレスの上位ビットと前記プログラムカウンタ相対
値の上位ビットとを加算し、加算結果を前記ラベルアド
レスの上位ビットとし、前記プログラムカウンタ相対値
の下位ビットを前記ラベルアドレスの下位ビットとする
ことを特徴としてもよい。
【0199】これによって、分岐命令を実行する際に絶
対値方式によるアドレス演算によって分岐先命令のアド
レスを算出するプロセッサを対象としたプログラムを逆
アセンブルする逆アセンブラが実現できる。また、上記
目的を達成するために、本発明は、オブジェクトコード
中の命令のアドレスと変換命令を指定して、そのアドレ
スで特定される命令を変換命令に置換するデバッガであ
って、上位ビットは、プロセッサの1単位データが格納
されるメモリアドレスを指定し、下位ビットは、プロセ
ッサの1単位データ内のプロセッサの1単位命令の位置
を指定するアドレスが付与された命令からなるオブジェ
クトコードを取得するオブジェクトコード取得手段と、
前記指定した命令のアドレスの上位ビットで特定される
プロセッサの1単位データをメモリから読み出して命令
バッファに書き込むプロセッサの1単位データ読み出し
手段と、前記命令バッファ内のプロセッサの1単位デー
タに含まれる前記指定した命令のアドレスの下位ビット
で特定される命令の位置に前記変換命令を書き込む命令
書き込み手段と、前記命令書き込み後の命令バッファ内
のプロセッサの1単位データをメモリに戻すプロセッサ
の1単位データ書き込み手段とを備えたことを特徴とす
る。
【0200】これによって、バイト単位の長さであるプ
ロセッサの1単位データを単位としてメモリから命令を
命令バッファに読み出して、命令バッファ中で命令を書
き換えて、命令パケットの単位で命令をメモリへ書き込
むので、バイト単位の長さでない命令でもデバッグがで
きるデバッガが実現できる。また、上記目的を達成する
ために、本発明は、ソースコードから命令列を生成する
コンパイラであって、上位ビットは、プロセッサの1単
位データが格納されるメモリアドレスを指定し、下位ビ
ットは、プロセッサの1単位データ内のプロセッサの1
単位命令の位置を指定するプログラムカウンタの値とプ
ログラムカウンタ相対値とを加算又は減算し、演算結果
をプログラムカウンタの値とする命令をプロセッサに実
行させるプログラムカウンタ相対値演算命令を生成する
ことを特徴とする。
【0201】これによって、プログラムカウンタ相対値
演算命令を実行するプロセッサを対象としたプログラム
を生成するコンパイラを実現できる。ここで、前記プロ
グラムカウンタ相対値演算命令は、前記プログラムカウ
ンタの値の下位ビットとプログラムカウンタ相対値の下
位ビットとを加算又は減算し、演算結果をプログラムカ
ウンタの値の下位ビットとし、桁上りがある場合には、
桁上り数を上位ビット演算部に送り、桁借りがある場合
には、桁借り数を上位ビット演算部に送る下位ビット演
算をプロセッサの下位ビット演算部に実行させ、前記プ
ログラムカウンタの値の上位ビットとプログラムカウン
タ相対値の上位ビットとを加算又は減算し、さらに前記
下位ビット演算部より桁上り数が受けとった場合には、
当該桁上り数を加算し、又は前記下位ビット演算部より
桁借り数を受けとった場合には、当該桁借り数を減算
し、それらの演算結果をプログラムカウンタの値の上位
ビットとする上位ビット演算をプロセッサの上位ビット
演算部に実行させることを特徴としてもよい。
【0202】これによって、プログラムカウンタ相対値
演算命令を実行する際に、桁上り方式によりプログラム
カウンタの値とプログラムカウンタ相対値とを演算する
プロセッサを対象としたプログラムを生成するコンパイ
ラを実現できる。ここで、前記プログラムカウンタ相対
値演算命令は、前記プログラムカウンタの値の下位ビッ
トとプログラムカウンタ相対値の下位ビットとを桁上
り、桁借りは発生させずに、加算又は減算し、演算結果
をプログラムカウンタの値の下位ビットとする下位ビッ
ト演算をプロセッサの下位ビット演算部に実行させ、前
記プログラムカウンタの値の上位ビットとプログラムカ
ウンタ相対値の上位ビットとを加算又は減算し、演算結
果をプログラムカウンタの値の上位ビットとする上位ビ
ット演算をプロセッサの上位ビット演算部に実行させる
ことを特徴としてもよい。
【0203】これによって、プログラムカウンタ相対値
演算命令を実行する際に、桁上りなし方式によりプログ
ラムカウンタの値とプログラムカウンタ相対値とを演算
するプロセッサを対象としたプログラムを生成するコン
パイラを実現できる。ここで、前記プログラムカウンタ
相対値演算命令は、前記プログラムカウンタの値の上位
ビットとプログラムカウンタ相対値の上位ビットとを加
算又は減算し、演算結果をプログラムカウンタの値の上
位ビットとする上位ビット演算をプロセッサの上位ビッ
ト演算部に実行させ、前記プログラムカウンタ相対値の
下位ビットをプログラムカウンタの値の下位ビットとす
ることを特徴としてもよい。
【0204】これによって、プログラムカウンタ相対値
演算命令を実行する際に、絶対値方式によりプログラム
カウンタの値とプログラムカウンタ相対値とを演算する
プロセッサを対象としたプログラムを生成するコンパイ
ラを実現できる。
【図面の簡単な説明】
【図1】図1(a)は、第1の実施形態のプロセッサが
実行する命令のフォーマットを示す。図1(b)は、第
1の実施形態のプロセッサが実行する命令のフォーマッ
トを示す。図1(c)は、第1の実施形態のプロセッサ
が実行する命令のフォーマットを示す。図1(d)は、
第1の実施形態のプロセッサが実行する命令のフォーマ
ットを示す。図1(e)は、第1の実施形態のプロセッ
サが実行する命令のフォーマットを示す。
【図2】図2(a)は、命令の格納、及び読み出し単位
である命令パケットを示す図である。図2(b)は、命
令の読み出しの順序を示す図である。図2(c)は、命
令の実行の順序を示す図である。
【図3】通常のプロセッサで、バイトアラインされてい
ない命令を実行する場合の命令の格納、読み出し方法の
例を示す図である。
【図4】プロセッサが実行するオブジェクトコードが、
コンパイラと、最適化装置と、アセンブラと、リンカに
より作成される過程を示す図である。
【図5】プロセッサ309及び外部メモリの詳細を示す
ブロック図である。
【図6】パケット内アドレスのインクリメントの規則を
示すインクリメント表である。
【図7】図7(a)は、分岐命令のアドレスの下位3ビ
ットとPC相対値の下位3ビットとの加算規則を示す加
算表である。図7(b)は、分岐先命令のアドレスの下
位3ビットと分岐命令のアドレスの下位3ビットとの減
算規則を示す減算表である。
【図8】最適化装置303の構成要素及び入出力データ
を示すブロック図である。
【図9】最適化装置303の動作手順を示すフローチャ
ートである。
【図10】コード最適化手段902が生成した最適化処
理コード903の一部分を示す。
【図11】図10の最適化処理コードより生成されたア
ドレス付与コード916を示す。
【図12】図11のアドレス付与コードから生成された
ラベル情報906を示す。
【図13】図11のアドレス付与コードから生成された
最適化コード915を示す。
【図14】アセンブラ305の構成及び関連する入出力
データを示すブロック図である。
【図15】アセンブラ305の動作手順を示すフローチ
ャートである。
【図16】図13の最適化コードから生成された機械語
コード803を示す。
【図17】図16の機械語コードより作成されたラベル
情報を示す。
【図18】図16の機械語コード803から生成された
リロケータブルコードを示す。
【図19】リンカ307の構成及び関連する入出力デー
タを示すブロック図である。
【図20】リンカ307の動作手順を示すフローチャー
トである。
【図21】リロケータブルコードを示す。
【図22】図18に示すリロケータブルコード306
と、別途生成された図21に示すリロケータブルコード
と結合された状態を示す。
【図23】結合コード703を示す。
【図24】図23の結合コードより作成されたラベル情
報を示す。
【図25】図23の結合コードより生成されたオブジェ
クトコードを示す。
【図26】第2の実施形態に係るオブジェクトコードを
示す。
【図27】図27(a)は、第3の実施形態に係る命令
パケットの構成を示す。図27(b)は、命令の種類を
示す。図27(c)は、パケット内アドレスと、パケッ
ト内アドレスが指定するパケット内のユニットとの関係
を示す。
【図28】図28(a)は、第4の実施形態に係る桁上
りなし方式のアドレス演算による分岐命令のアドレスの
下位3ビットとPC相対値の下位3ビットとの加算規則
を示す加算表である。図28(b)は、第4の実施形態
に係る桁上りなし方式のアドレス演算による分岐先命令
のアドレスの下位3ビットと分岐命令のアドレスの下位
3ビットとの減算規則を示す減算表である。
【図29】第4の実施形態に係る桁上りなし方式のアド
レス演算を用いて生成されたオブジェクトコードの具体
例である。
【図30】図30(a)は、第5の実施形態に係る絶対
値方式のアドレス演算による分岐命令のアドレスの下位
3ビットとPC相対値の下位3ビットとの加算規則を示
す加算表である。図30(b)は、第5の実施形態に係
る絶対値方式のアドレス演算による分岐先命令のアドレ
スの下位3ビットと分岐命令のアドレスの下位3ビット
との減算規則を示す減算表である。
【図31】第5の実施形態に係る絶対値方式のアドレス
演算を用いて生成されたオブジェクトコードの具体例で
ある。
【図32】第6の実施形態に係るリニア方式のアドレス
演算を用いて生成されたオブジェクトコードを示す。
【図33】第7の実施形態に係るプロセッサの構成図で
ある。
【図34】図34(a)は、PC加算命令のニーモニッ
クとオペレーションの対応を示す。図34(b)は、P
C減算命令のニーモニックとオペレーションの対応を示
す。
【図35】第8の実施形態に係るコンパイラの構成図で
ある。
【図36】コンパイラの動作手順を示すフローチャート
である。
【図37】C言語で記述されたソースコードを示す。
【図38】図37のソースプログラムが変換された中間
コードを示す。
【図39】図38の中間コードが変換されたアセンブラ
コードを示す。
【図40】第8の実施形態に係るデバッガと逆アセンブ
ラの構成を示すブロック図である。
【図41】逆アセンブラの動作手順を示すフローチャー
トである。
【図42】デバッガの動作手順を示すフローチャートで
ある。
【図43】従来のプロセッサの基本構成を示すブロック
図である。
【符号の説明】
100 並列実行境界情報 101 ビットフォーマット情報 300 ソースコード 301 コンパイラ 302 アセンブラコード 303 最適化装置 304 最適化コード 305 アセンブラ 306 リロケータブルコード 307 リンカ 308 オブジェクトコード 309 プロセッサ 401a〜401c 演算器 402 汎用レジスタ 403 上位PC 404 下位PC 405 下位PC演算器 406 データメモリ 407 命令メモリ 408 命令バッファ 409a〜409c 命令デコーダ 410 フェッチ上位カウンタ 411 上位PC演算器 412 INC 413 プリフェッチ下位カウンタ 420 PC相対値セレクタ 421 即値セレクタ 422 オペランドアドレスバッファ 423 オペランドデータバッファ 424a〜c 制御信号 702 コード結合手段 703 結合コード 704 再配置情報検出手段 705 再配置情報 706 下位アドレス減算手段 707 桁借り数 708 下位減算結果 709 上位アドレス減算手段 710 上位減算結果 711 アドレス差算出手段 712 アドレス差 713 再配置情報解決手段 802 機械語コード生成手段 803 機械語コード 804 ラベル検出手段 805 ラベル情報 806 下位アドレス減算手段 807 桁借り数 808 下位減算結果 809 上位アドレス減算手段 810 上位減算結果 811 アドレス差算出手段 812 アドレス差 813 ラベル情報解決手段 902 コード最適化手段 903 最適化処理コード 904 アドレス付与手段 905 ラベル検出手段 906 ラベル情報 907 下位アドレス減算手段 908 桁借り数 909 下位減算結果 910 上位アドレス減算手段 911 上位減算結果 912 アドレス差算出手段 913 アドレス差 914 ラベル情報解決手段 916 アドレス付与コード 2800 第2下位PC演算器 2801a〜2801c 命令デコーダ 2802 第2上位PC演算器 2901 ソースコード 2902 中間コード変換部 2903 中間コード 2904 PC値加算命令変換部 2905 命令変換部 2906 アセンブラコード 4000 入力制御部 4001 パケットアドレス特定部 4002 パケット内アドレス特定部 4003 パケット内アドレス特定部 4004 命令メモリ 4005 命令バッファ 4006 命令解読部 4007 PC相対値 4008 下位PC演算器 4009 上位PC演算器 4010 ラベル検索部 4011 ラベルテーブル 4012 表示部 4013 命令置換部 4300 プログラムカウンタ 4301 命令メモリ 4302 命令読み出し部 4303 命令実行部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 桧垣 信生 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 小谷 謙介 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 田中 哲也 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 宮地 信哉 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 瓶子 岳人 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平4−40525(JP,A) 特開 平5−289870(JP,A) 特開 平3−48334(JP,A) 特開 平3−152624(JP,A) 特開 平7−10553(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/60 - 9/42

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】 1バイトデータをメモリの1単位データ
    として命令を格納するメモリからプログラムカウンタの
    値に基いて命令を読み出し、実行するプロセッサにおい
    て、 前記メモリの1単位データ又は複数のメモリの1単位デ
    ータより構成されるプロセッサの1単位データの前記メ
    モリ内の格納位置を指定する値を保持する第1のプログ
    ラムカウンタと、 前記プロセッサの1単位データに含まれるプロセッサが
    実行する1つのオペレーションを示すプロセッサの1単
    位命令の位置を指定する値を保持する第2のプログラム
    カウンタとを備えたことを特徴とするプロセッサ。
  2. 【請求項2】 前記プロセッサは、さらに、第1のプロ
    グラムカウンタ更新手段と、第2のプログラムカウンタ
    更新手段とを含み、 前記第2のプログラムカウンタ更新手段は、前記第2の
    プログラムカウンタの値を1つ前のサイクルで実行した
    命令の分だけインクリメントし、桁上りがあれば、桁上
    り数を前記第1のプログラムカウンタ更新手段に送り、 前記第1のプログラムカウンタ更新手段は、前記第1の
    プログラムカウンタの値を前記第2のプログラムカウン
    タ更新手段から送られた桁上り数だけ加算することを特
    徴とする請求項1記載のプロセッサ。
  3. 【請求項3】 前記プロセッサであって、 実行命令が、その命令と同一のサイクルで実行する先頭
    の命令のアドレスを基準とするプログラムカウンタ相対
    値を含む命令である場合には、当該プログラムカウンタ
    相対値を抽出するプログラムカウンタ相対値抽出手段
    と、 前記第1のプログラムカウンタの値及び前記第2のプロ
    グラムカウンタの値と前記プログラムカウンタ相対値と
    を加算し、その演算結果を前記第1のプログラムカウン
    タの値及び前記第2のプログラムカウンタの値として設
    定する演算手段とをさらに備えたことを特徴とする請求
    項2記載のプロセッサ。
  4. 【請求項4】 前記演算手段は、第1演算部と、第2演
    算部とを含み、 前記第2演算部は、前記第2のプログラムカウンタの値
    と前記プログラムカウンタ相対値の下位ビットとを加算
    し、その加算結果を前記第2のプログラムカウンタの値
    として設定し、桁上りがある場合には、桁上り数を前記
    第1演算部に送り、桁借りがある場合には、桁借り数を
    前記第1演算部に送り、 前記第1演算部は、前記第1のプログラムカウンタの値
    と前記プログラムカウンタ相対値の上位ビットとを加算
    し、さらに前記第2演算部より桁上り数を受けとった場
    合には、当該桁上り数を加算し、又は前記第2演算部よ
    り桁借り数を受けとった場合には、当該桁借り数を減算
    し、それらの演算結果を前記第1のプログラムカウンタ
    の値として設定することを特徴とする請求項3記載のプ
    ロセッサ。
  5. 【請求項5】 前記演算手段は、第1演算部と、第2演
    算部とを含み、 前記第2演算部は、前記第2のプログラムカウンタの値
    と前記プログラムカウンタ相対値の下位ビットとを桁上
    げ、又は桁借りを発生させずに加算し、その加算結果を
    前記第2のプログラムカウンタの値として設定し、 前記第1演算部は、前記第1のプログラムカウンタの値
    と前記プログラムカウンタ相対値の上位ビットとを加算
    し、その加算結果を前記第1のプログラムカウンタの値
    として設定することを特徴とする請求項3記載のプロセ
    ッサ。
  6. 【請求項6】 前記演算手段は、前記第1のプログラム
    カウンタの値と前記プログラムカウンタ相対値の上位ビ
    ットとを加算し、その加算結果を前記第1のプログラム
    カウンタの値として設定し、前記プログラムカウンタ相
    対値の下位ビットを前記第2のプログラムカウンタの値
    として設定することを特徴とする請求項3記載のプロセ
    ッサ。
  7. 【請求項7】 前記演算手段は、前記第1のプログラム
    カウンタの値を上位ビットとし、前記第2のプログラム
    カウンタの値を下位ビットとする値と前記プログラムカ
    ウンタ相対値とを加算し、その加算結果の上位ビットを
    前記第1のプログラムカウンタの値として設定し、その
    加算結果の下位ビットを前記第2のプログラムカウンタ
    の値として設定することを特徴とする請求項3記載のプ
    ロセッサ。
  8. 【請求項8】 前記プロセッサであって、 実行命令が、その命令のアドレスを基準とするプログラ
    ムカウンタ相対値を含む命令である場合には、当該プロ
    グラムカウンタ相対値を抽出するプログラムカウンタ相
    対値抽出手段と、 前記第1のプログラムカウンタの値及び前記第2のプロ
    グラムカウンタの値を、前記実行命令のアドレスを指定
    するように補正するプログラムカウンタ補正手段と、 前記補正された第1のプログラムカウンタの値及び第2
    のプログラムカウンタの値と前記プログラムカウンタ相
    対値とを加算し、その加算結果を前記第1のプログラム
    カウンタの値及び前記第2のプログラムカウンタの値と
    して設定する演算手段とをさらに備えたことを特徴とす
    る請求項2記載のプロセッサ。
  9. 【請求項9】 前記プロセッサであって、 レジスタ又は叉は第1のプログラムカウンタ及び第2の
    プログラムカウンタに格納されたプログラムカウンタの
    値と、プログラムカウンタ相対値とを加算する加算命令
    又は減算する減算命令を解読するプログラムカウンタ相
    対値演算命令解読手段と、 前記プログラムカウンタの値と前記プログラムカウンタ
    相対値とを加算又は減算し、演算結果を算出する演算手
    段と、 前記演算結果にレジスタ又は第1のプログラムカウンタ
    及び第2のプログラムカウンタを更新するプログラムカ
    ウンタ値更新手段とをさらに備えたことを特徴とする請
    求項2記載のプロセッサ。
  10. 【請求項10】 前記第1のプログラムカウンタは、前
    記プロセッサの1単位データの長さがnバイトの時に、
    第1のプログラムカウンタの値をlog2nだけ左へビ
    ットシフトとした値を番地とするプロセッサの1単位デ
    ータの前記メモリ内の格納位置であるメモリアドレスを
    指定することを特徴とする請求項1記載のプロセッサ。
  11. 【請求項11】 前記プロセッサであって、 命令を一時的に記憶する命令バッファと、 前記命令バッファの空き状態に応じて、前記プロセッサ
    の1単位データに限定されず、メモリから命令をメモリ
    の1単位データを最小単位として前記命令バッファへ読
    み出す命令読み出し手段とをさらに備えたことを特徴と
    する請求項10記載のプロセッサ。
JP12063499A 1998-04-28 1999-04-27 プロセッサ Expired - Lifetime JP3190639B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12063499A JP3190639B2 (ja) 1998-04-28 1999-04-27 プロセッサ

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10-118326 1998-04-28
JP11832698 1998-04-28
JP12063499A JP3190639B2 (ja) 1998-04-28 1999-04-27 プロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2001028234A Division JP3595269B2 (ja) 1998-04-28 2001-02-05 命令列最適化装置、アセンブラ装置、リンカ装置、逆アセンブラ装置、コンパイラ装置、及び記録媒体

Publications (2)

Publication Number Publication Date
JP2000020312A JP2000020312A (ja) 2000-01-21
JP3190639B2 true JP3190639B2 (ja) 2001-07-23

Family

ID=26456281

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12063499A Expired - Lifetime JP3190639B2 (ja) 1998-04-28 1999-04-27 プロセッサ

Country Status (1)

Country Link
JP (1) JP3190639B2 (ja)

Also Published As

Publication number Publication date
JP2000020312A (ja) 2000-01-21

Similar Documents

Publication Publication Date Title
US7080367B2 (en) Processor for executing instructions in units that are unrelated to the units in which instructions are read, and a compiler, an optimization apparatus, an assembler, a linker, a debugger and a disassembler for such processor
JP6591978B2 (ja) 命令セット変換システム及び方法
US6324686B1 (en) Just in time compiler technique
EP1734440B1 (en) Processor for executing highly efficient VLIW instructions
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
JP3327818B2 (ja) プログラム変換装置及び記録媒体
EP1416374A2 (en) Program converting unit and processor improved in address management
US7480783B2 (en) Systems for loading unaligned words and methods of operating the same
KR19980032264A (ko) 벡터 프로세서 프로그래밍 및 벡터 프로세서와 risc 프로세서를 구비하는 비대칭 이중 프로세서의 병렬 프로그래밍
US7617382B1 (en) Method and apparatus for decompressing relative addresses
JP2857600B2 (ja) プロセッサ及びプログラム翻訳装置
JP3606561B2 (ja) 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
USRE41751E1 (en) Instruction converting apparatus using parallel execution code
US6611956B1 (en) Instruction string optimization with estimation of basic block dependence relations where the first step is to remove self-dependent branching
US4739471A (en) Method and means for moving bytes in a reduced instruction set computer
JPH1049369A (ja) データ処理装置
US7003651B2 (en) Program counter (PC) relative addressing mode with fast displacement
JP4684571B2 (ja) エミュレーションコンピュータ技術を実行する直接命令
JP3190639B2 (ja) プロセッサ
US5774694A (en) Method and apparatus for emulating status flag
JP3595269B2 (ja) 命令列最適化装置、アセンブラ装置、リンカ装置、逆アセンブラ装置、コンパイラ装置、及び記録媒体
CA1254661A (en) Method and means for instruction combination for code compression
JP2004527824A (ja) データプロセッサ及び処理方法
JP4323393B2 (ja) プロセッサ

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090518

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100518

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110518

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110518

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120518

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120518

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130518

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130518

Year of fee payment: 12

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term