JPH08194626A - 即値生成方法 - Google Patents

即値生成方法

Info

Publication number
JPH08194626A
JPH08194626A JP2231195A JP2231195A JPH08194626A JP H08194626 A JPH08194626 A JP H08194626A JP 2231195 A JP2231195 A JP 2231195A JP 2231195 A JP2231195 A JP 2231195A JP H08194626 A JPH08194626 A JP H08194626A
Authority
JP
Japan
Prior art keywords
register
instruction
operand
immediate value
immediate
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
Application number
JP2231195A
Other languages
English (en)
Inventor
Tatsuo Isobe
竜雄 磯部
Yuugo Kashiwagi
有吾 柏木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2231195A priority Critical patent/JPH08194626A/ja
Publication of JPH08194626A publication Critical patent/JPH08194626A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 (修正有) 【目的】 即値生成のための命令追加をすることなく、
制限を超えた即値の指定を可能にする。 【構成】 指定枠を超える即値#Xをオペランドとする
第1の命令を超えない即値#Zを第1オペランドとしい
ずれかのレジスタに残存するレジスタ保持値Yを第2オ
ペランドとする四則演算命令に置き換え生成する。一連
の命令を、複数の基本ブロックに分割し、コンパイラの
動作環境となる記憶装置内に、各基本ブロックを構成す
る命令のオペランドに関するオペランド情報テーブル
と、レジスタの設定及び参照ならびにその順序に関する
フロー情報テーブルと、レジスタの保持値に関するレジ
スタ保持値テーブルとを含む即値生成メモリを設け、第
1の命令の結果と四則演算命令の結果が格納されるレジ
スタRA及びRBとが同一のものでないときには、これ
らをフロー解析した上で、オペランドとしてのレジスタ
RA及びRBを置き換える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は即値生成方法に関し、
例えば、原始プログラムをオペランドとして与えうる即
値の大きさに制限のあるプロセッサで実行可能なオブジ
ェクトプログラムに変換するためのコンパイラ等の翻訳
システムならびにその実行効率の向上に利用して特に有
効な技術に関するものである。
【0002】
【従来の技術】高級言語で書かれた原始プログラムを、
マイクロコンピュータ等のプロセッサで実行可能な機械
語のオブジェクトプログラムに変換するコンパイラ等の
翻訳システムがある。また、命令回数や命令の種類を削
減することにより、高頻度の処理を集中的に効率良く実
行しうるRISC(Reduced Instruct
ion Set Computer)等のコンピュータ
システムがある。これらのコンピュータシステムでは、
その命令の特にオペランド部が固定長とされ、オペラン
ドとして与えうる即値の大きさに制限が設けられる場合
がある。
【0003】
【発明が解決しようとする課題】原始プログラムをオペ
ランドとして与えうる即値の大きさに制限のあるプロセ
ッサで実行可能なオブジェクトプログラムに変換する従
来の翻訳システムでは、指定枠を超えた即値をオペラン
ドとして指定したい場合、この即値を定数定義してラベ
ルを付与した後、所望のレジスタにロードするか、指定
枠内にある複数の即値を四則演算し又は連結することで
指定枠外の即値を算出した後、所望のレジスタに格納す
るいわゆる命令生成法によらざるを得ない。しかし、前
者の方法では、定数定義やラベル付与のためにメモリの
有効領域が余分に費やされるとともに、ラベル参照に際
して実質的なサイクルタイムの長いメモリアクセスが必
要となる。また、後者の方法では、追加された即値演算
命令の格納にメモリの有効領域が余分に費やされるとと
もに、オブジェクトプログラムに従って動作する実行用
プロセッサのステップ数が増大する。この結果、いずれ
においても実行用プロセッサの処理負担が増加し、その
実行効率が低下するものである。
【0004】この発明の目的は、定数定義によるラベル
付与又はラベル参照のためのメモリアクセスあるいは即
値生成命令の追加を必要とすることなく、指定枠を超え
る大きさの即値の指定を可能にしうる即値生成方法を提
供することにある。この発明の他の目的は、その命令が
固定長とされる実行プロセッサの処理負担を軽減してそ
の実行効率を高め、メモリの使用効率を高めることにあ
る。
【0005】この発明の前記ならびにその他の目的と新
規な特徴は、この明細書の記述及び添付図面から明らか
になるであろう。
【0006】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば、次
の通りである。すなわち、原始プログラムを、所定数の
レジスタを具備しかつその命令の少なくともオペランド
部が固定長とされるプロセッサで実行可能なオブジェク
トプログラムに変換する翻訳システムにおいて、指定枠
を超える第1の即値として与えられたオペランドを、指
定枠を超えない第2の即値といずれかのレジスタに残存
するレジスタ保持値とをもとに、しかも第1の即値をオ
ペランドとする第1の命令を、第2の即値を第1のオペ
ランドとしレジスタ保持値を第2のオペランドとする四
則演算命令に置き換えることにより生成する。このた
め、一連の命令を、その中間に分岐の始点又は終点を含
まない範囲を一つの単位として複数の基本ブロックに分
割し、翻訳システムの動作環境となる記憶装置内に、各
基本ブロックを構成する一つ又は複数の命令のオペラン
ドに関するオペランド情報テーブルと、レジスタの設定
及び参照ならびにその順序に関するフロー情報テーブル
と、レジスタの保持値に関するレジスタ保持値テーブル
とを含む即値生成メモリを設けるとともに、第1の命令
の結果が格納される第1のレジスタと四則演算命令の結
果が格納される第2のレジスタとが同一のものでないと
きは、これらのレジスタの以後の振る舞いを即値生成メ
モリによりフロー解析し問題がないことを確認した上
で、第1及び第2のレジスタを置き換える。
【0007】
【作用】上記した手段によれば、プログラムの実質的な
機能を損いまた実行プロセッサの不正実行を招くことな
く、しかも定数定義によるラベル付与又はラベル参照の
ためのメモリアクセスあるいは即値演算命令の追加を必
要とすることなく、指定枠を超える大きさの即値の指定
を可能としうる即値生成方法を実現することができる。
この結果、その命令が固定長とされる実行プロセッサの
処理負担を軽減してその実行効率を高め、メモリの使用
効率を高めることができる。
【0008】
【実施例】図1には、この発明が適用されたコンパイラ
(翻訳システム)の動作環境を説明するための一実施例
のシステム構成図が示されている。また、図2及び図3
には、図1のコンパイラで用いられる即値生成メモリの
一実施例の記憶領域構成図が示されている。これらの図
をもとに、まずこの実施例のコンパイラの動作環境と即
値生成メモリの記憶領域構成ならびにその特徴について
説明する。
【0009】図1において、この実施例のコンパイラ
は、中央処理装置(CPU)11を基本構成要素とする
翻訳用コンピュータ1をその稼動環境とする。中央処理
装置11には、所定の記憶容量を有する記憶装置12
と、オペレータ及びコンピュータ間のマンマシンインタ
フェースとなるキーボード13とが結合される。また、
記憶装置12には、コンパイラつまり翻訳プログラム4
を格納するための領域と、この翻訳プログラム4による
翻訳処理の過程で用いられる即値生成メモリ5の領域と
が設けられる。翻訳用コンピュータ1は、所定の高級言
語で書かれた原始プログラム3を、翻訳プログラム4に
従って、実行用マイコン(マイクロコンピュータ)2で
実行可能な機械語のオブジェクトプログラム6に変換す
る。
【0010】一方、オブジェクトプログラム6の実行環
境となる実行用マイコン2は、中央処理装置21を基本
構成要素とし、この中央処理装置21には、所定の記憶
容量を有するROM(リードオンリーメモリ)22が結
合される。ROM22には、コンパイラにより作成され
たオブジェクトプログラム6が実行プログラム7として
格納される。実行用マイコン2は、ROM22内の実行
プログラム7により制御され、図示されない入出力装置
の制御や所定の演算処理を行う。
【0011】この実施例において、実行用マイコン2を
構成するプロセッサつまり中央処理装置21は、p+1
個の汎用のレジスタR0〜Rpとユーザによって定義可
能なq+1個のスペシャルレジスタSP0〜SPqとを
備える。また、その命令は固定長とされ、特にその第1
及び第2オペランド部はそれぞれ例えば8ビットとされ
る。したがって、命令の第1及び第2オペランドとして
指定しうる即値の大きさは、−128から+127まで
の範囲に制限される。これに対処するため、この実施例
のコンパイラは、指定枠を超えた即値として指定された
第1オペランドを、指定枠を超えない他の即値といずれ
かのレジスタに残存するレジスタ保持値とをもとに等価
的に生成する即値生成機能を有し、その動作環境となる
記憶装置12には、即値生成処理に供される即値生成メ
モリ5が設けられる。なお、コンパイラの具体的な即値
生成方法については、後で詳細に説明する。
【0012】記憶装置12内に設けられた即値生成メモ
リ5は、図2及び図3に示されるように、命令ポインタ
51,レジスタ探索ポインタ52,命令テーブル53,
オペランド情報テーブル54,フロー情報テーブル5
5,レジスタ保持値テーブル56,レジスタフラグテー
ブル57,スペシャルレジスタ保持値テーブル58及び
スペシャルレジスタフラグテーブル59を含む。この実
施例において、プログラムを構成する一連の命令は、そ
の中間に分岐の始点又は終点を含まない範囲を一つの単
位として所定数の基本ブロック50つまり500及び5
01等に分割される。命令ポインタ51,レジスタ探索
ポインタ52,レジスタ保持値テーブル56,レジスタ
フラグテーブル57,スペシャルレジスタ保持値テーブ
ル58及びスペシャルレジスタフラグテーブル59は、
すべての基本ブロック50に共通に設けられ、命令テー
ブル53,オペランド情報テーブル54及びフロー情報
テーブル55は、各基本ブロック50に対応して個別に
設けられる。
【0013】ここで、即値生成メモリ5の命令テーブル
53は、各基本ブロックの命令テーブルを順次リンクさ
せるためのリンク情報LINK0及びLINK1等と、
その中間に分岐の始点又は終点を含まない任意数の命令
INST00〜INST03等ならびにINST10〜
INST13等とを保持する。また、オペランド情報テ
ーブル54は、命令テーブル53の対応する命令INS
T00〜INST03等ならびにINST10〜INS
T13等の第1オペランド541及び第2オペランド5
42を保持し、その内容は、レジスタR0〜Rpあるい
はスペシャルレジスタSR0〜SRqであったり、即値
IMMDであったりする。
【0014】一方、フロー情報テーブル55は、設定レ
ジスタ情報REGS LIST0及びREGS LIS
T1等,参照レジスタ情報REGR LIST0及びR
EGR LIST1等,設定参照順序情報S/R OR
D0及びS/R ORD1等ならびに分岐先情報BRA
NCH0及びBRANCH1等を含む。このうち、設定
レジスタ情報REGS LIST0及びREGS LI
ST1等は、その各ビットがレジスタR0〜Rpあるい
はスペシャルレジスタSR0〜SRqに対応され、対応
する基本ブロックにおいて対応するレジスタ又はスペシ
ャルレジスタに何らかの値が設定されているとき選択的
にセットされる。同様に、参照レジスタ情報REGR
LIST0及びLISTR LIST1等は、その各ビ
ットがレジスタR0〜Rpあるいはスペシャルレジスタ
SR0〜SRqに対応され、対応する基本ブロックにお
いて対応するレジスタ又はスペシャルレジスタがいずれ
かの命令によって参照されるとき選択的にセットされ
る。
【0015】さらに、レジスタ保持値テーブル56は、
対応するレジスタR0〜Rpに設定され残存する値を保
持する。また、レジスタフラグテーブル57は、その各
ビットがレジスタR0〜Rpに対応され、メモリ内容が
転送又は演算の対象となりあるいはアドレスが設定され
たために対応するレジスタR0〜Rpの保持値が翻訳時
に未知の値となったとき、選択的にセットされる。同様
に、スペシャルレジスタ保持値テーブル58は、対応す
るスペシャルレジスタSR0〜SRqに設定され残存す
る値を保持する。また、スペシャルレジスタフラグテー
ブル58は、その各ビットがスペシャルレジスタSR0
〜SRqに対応され、メモリ内容が転送又は演算の対象
となりあるいはアドレスが設定されたために対応するス
ペシャルレジスタSR0〜SRqの保持値が翻訳時に未
知の値となったとき、選択的にセットされる。
【0016】命令ポインタ51は、後述するように、コ
ンパイラによる翻訳処理の過程で、命令テーブル53に
格納された命令INST00〜INST03等ならびに
INST10〜INST13等を順次指定し、指定枠を
超えた即値を含む命令に対して即値生成処理を選択的に
施すためのポインタとなる。また、レジスタ探索ポイン
タ52は、この即値生成処理の過程で、レジスタ保持値
テーブル56ならびにスペシャルレジスタ保持値テーブ
ル58を順次指定し、指定枠を超えた即値を等価的に生
成すべくレジスタ保持値を探索するためのポインタとな
る。
【0017】図4には、図1のコンパイラによる即値生
成処理の一実施例のフロー図が示されている。また、図
5には、図1のコンパイラの処理対象となるプログラム
のうち即値生成が必要な部分の一実施例の部分的な命令
リストが示され、図6には、そのもう一つの実施例の部
分的な命令リストが示されている。これらの図をもと
に、この実施例のコンパイラによる即値生成処理の具体
的方法ならびにその特徴について説明する。なお、図5
には、指定枠を超えた即値を含む命令の第2オペランド
となるレジスタ(第1のレジスタ)と即値生成に供され
るレジスタ保持値を保持するレジスタ(第2のレジス
タ)とが同一レジスタR1である場合が例示され、図6
には、これらのレジスタが同一レジスタではなく異なる
レジスタR1及びR2である場合が例示される。また、
図5及び図6には、(a)として原始プログラムに近い
翻訳処理の中間段階つまりは即値生成処理が施されない
状態におけるオブジェクトプログラムが、(b)として
(a)のプログラムを従来のコンパイラで処理した後の
オブジェクトプログラムが、また(c)として(a)の
プログラムをこの発明が適用されたコンパイラで即値生
成処理した後のオブジェクトプログラムがそれぞれ示さ
れている。さらに、各命令リストの左外側には、各命令
のプログラム行番号が付記され、その右外側には、各命
令に関するコメントが付記されているので、説明にあわ
せて参照されたい。
【0018】図4において、この実施例のコンパイラに
よる即値生成処理は、ステップST1つまりオペランド
情報テーブル54を含む命令テーブル53の作成によっ
て開始される。このとき、翻訳過程にあるプログラムを
構成する一連の命令は、前述のように、その中間に分岐
の始点又は終点を含まない範囲を一つの単位として複数
の基本ブロック50に分割され、翻訳用コンピュータ1
の記憶装置12の即値生成メモリ5には、これらの基本
ブロック50に対応して作成された命令テーブル53及
びオペランド情報テーブル54が用意される。
【0019】命令テーブル53及びオペランド情報テー
ブル54の作成が終了すると、コンパイラは、ステップ
ST2により、最初の基本ブロック500から命令ポイ
ンタ51によって指定される一つの命令を選択し、ステ
ップST3により、選択された命令が指定枠を超えた即
値を第1オペランドとして含むいわゆる指定不可即値命
令であるかどうかを判定する。このとき、命令は、コメ
ントとして付記されるように、コマンドCMD1と、第
1オペランドとなる即値#X(ここで、#はオペランド
がXなる十進数の即値からなることを表す。以下同様)
と、第2オペランドとなるレジスタRAとを含み、この
命令が指定不可即値命令である場合、第1オペランドで
ある即値#Xはその指定枠#Sより大きな値となる。こ
の実施例において、実行用マイコン2が実行しうる命令
の第1オペランドは、前述のように、8ビットとされ、
その最大値#Sは+127とされる。なお、各命令で第
2オペランドとして指定されるレジスタRA等は、当該
命令の実行結果を格納するためのいわゆるデスティネー
ションオペランドともなる。
【0020】ステップST3において、選択された命令
が指定枠を超える即値を含まず指定不可即値命令ではな
い場合、コンパイラは、ステップST11により、すべ
ての命令に関する選択処理が終了したかを判定し、まだ
未選択の命令が存在する場合には、ステップST2に戻
り、未選択の命令が存在しない場合には、一連の即値生
成処理を終結する。なお、コンパイラは、ステップST
11の判定処理に移行する直前で、図示されないフロー
情報テーブル55,レジスタ保持値テーブル56,レジ
スタフラグテーブル57,スペシャルレジスタ保持値テ
ーブル58及びスペシャルレジスタフラグテーブル59
の更新処理を行う。すなわち、コンパイラは、選択され
た命令によりレジスタR0〜Rpあるいはスペシャルレ
ジスタSR0〜SRqに何らかの値が設定され又は参照
されるのをモニタし、フロー情報テーブル55の設定レ
ジスタ情報及び参照レジスタの対応するビットをセット
するとともに、各レジスタに設定された値を可能な限り
レジスタ保持値テーブル56又はスペシャルレジスタ保
持値テーブル58に登録する。また、選択された命令に
よりメモリ内容が転送又は演算の対象となりあるいはア
ドレスが設定されたために対応するレジスタR0〜Rp
あるいはスペシャルレジスタSR0〜SRqの保持値が
不定となったときには、レジスタフラグテーブル57又
はスペシャルレジスタフラグテーブル59の対応するビ
ットをセットする。
【0021】一方、ステップST3において、選択され
た命令が指定枠を超える即値#X(第1の即値)を含む
指定不可即値命令であった場合、コンパイラは、ステッ
プST4により、レジスタ保持値テーブル56を参照
し、その保持値Yと指定枠を超えない即値#Z(第2の
即値)とにより指定枠を超えた即値#Xを等価的に生成
できそうなレジスタを探索する。すなわち、例えば、図
5(a)のプログラム行L23の移動命令『MOV #
128,R1』のように、選択された命令の第1オペラ
ンドが指定枠を超える即値#Xつまり“128”であっ
た場合、コンパイラは、その前に実行された移動命令
『MOV #127,R1』によりレジスタR1に設定
された指定枠内の値Yつまり“127”に着目する。そ
して、 128−127=1 であることから、指定枠内の即値#Zとして、 #Z=1 を算出する。この結果、ステップST5において、 #X=Y+#Z つまり、例えば『ADD #Z,R1』なる加算命令に
より“128”なる指定枠外の即値#Xが等価的に生成
可能であることを判定する。
【0022】即値生成可能であることを判定したコンパ
イラは、ステップST6により、もとの命令『CMD1
#X,RA』の第2オペランドつまりデスティネーシ
ョンオペランドとなるレジスタRA(第1のレジスタ)
と、レジスタ保持値Yを保持するレジスタRB(第2の
レジスタ)とが同一レジスタであるかどうかを判定す
る。その結果、レジスタRA及びRBが同一レジスタで
ある場合には、ステップST9において、命令置き換え
により実行用マイコン2の中央処理装置21の処理負荷
が軽減されるかどうかを判定し、負荷軽減の見込みがあ
る場合には、ステップST10により、もとの命令『C
MD1 #X,RA』(第1の命令)を新しい命令『C
MD2 #Z,RA』(第2の命令)に置き換える。こ
れにより、例えば図5(a)のプログラム行L23の移
動命令『MOV #128,R1』は、図5(c)のプ
ログラム行L43の加算命令『ADD #1,R1』に
そのまま1対1で置き換えられ、同一の実行結果が得ら
れるものとなる。
【0023】なお、ステップST6において、レジスタ
RA及びRBが同一レジスタでないと判定された場合、
コンパイラは、ステップST7により、フロー情報テー
ブル55の設定レジスタ情報及び参照レジスタ情報なら
びに設定参照順序情報を参照し、ステップST8によ
り、レジスタRA及びRBの置き換えが可能であるかど
うかを判定する。すなわち、コンパイラは、フロー情報
テーブル55の設定レジスタ情報及び参照レジスタ情報
ならびに設定参照順序情報をもとに、レジスタRA及び
RBの以後の振る舞いをフロー解析する。そして、レジ
スタRAが、 (1)対応する命令以後の同一基本ブロック内あるいは
フロー情報テーブル55の分岐先情報BRANCH0及
びBRANCH1等をもとにたぐりうるすべての基本ブ
ロック内で設定されていること (2)次に設定されるまでに参照がないこと (3)参照があったとしてもその基本ブロックに分岐す
るのは当該基本ブロックのみであること なる条件を満たし、しかもレジスタBが、 (1)対応する命令以後の同一基本ブロック内あるいは
フロー情報テーブル55の分岐先情報BRANCH0及
びBRANCH1等をもとにたぐりうるすべて基本ブロ
ック内で設定されていること (2)次に設定されるまでに参照がないこと なる条件を満たすことを確認した上で、ステップST1
0による命令の書き換えを実行するとともに、新しい命
令『CMD2 #Z,RA』の第2オペランドをレジス
タRBに置き換えて『CMD2 #Z,RB』とし、以
後の命令でオペランドとして指定されるレジスタRAも
レジスタRBに置き換える。なお、このフローの中に図
示してはいないが、命令1個1個処理してゆくと同時に
レジスタ保持値テーブルを逐次更新してゆく処理が必要
なことは言うまでもない。
【0024】これらのことから、例えば、図6(a)の
指定枠を超える即値#250を含むプログラム行L53
の移動命令『MOV #250,R2』に着目した場
合、プログラム行L51の移動命令『MOV #12
7,R1』の実行結果としてレジスタR1に設定された
値“127”を利用して即値の生成は可能であるが、こ
の値“127”を保持するレジスタR1がもとの移動命
令『MOV #250,R2』の第2オペランドとなる
レジスタR2とは異なるため、これらのレジスタの以後
の振る舞いをフロー解析した上で、もとの移動命令は図
6(c)のプログラム行L73の加算命令『ADD #
123,R1』に置き換えられる。言うまでもなく、レ
ジスタR1の保持値は“127”であり、この加算命令
の結果“250”は同じレジスタR1に格納される。ま
た、図6(a)のプログラム行L54の減算命令『SU
B R2,R3』の第1オペランドとして指定されるレ
ジスタR2は、上記レジスタの置き換えを受けてレジス
タR1に置き換えられる。この結果、プログラムの本来
の機能を維持できるとともに、レジスタ置き換えにとも
なう実行用マイコン2の不正実行を防止することができ
る。
【0025】ところで、即値生成機能を持たない従来の
コンパイラでは、図5(a)の移動命令『MOV #1
28,R1』あるいは図6(a)の移動命令『MOV
#250,R2』のような指定枠を超える即値を直接指
定できない。したがって、このような即値#128又は
#250を指定したい場合、図5(b)のプログラム行
L35の定義命令『DCL 128』あるいは図6
(b)の定義命令『DCL250』によってこれを定義
し、『LABEL1』又は『LABEL2』なるラベル
を付与した後、もとの移動命令を図5(b)のプログラ
ム行33の移動命令『MOV LABEL1,R1』あ
るいは図6(b)のプログラム行63の移動命令『MO
V LABEL1,R1』に書き換えるか、もとの移動
命令の直前に128又は250を結果とする四則演算命
令を追加し、もとの移動命令の第1オペランドを四則演
算命令のデスティネーションオペランドとなるレジスタ
に書き換える必要がある。しかし、定数定義を行う図5
(b)及び図6(b)の方法では、ラベル付与のために
メモリの有効領域が余分に費やされるとともに、プログ
ラム行L33又はL63のラベル参照に際して実質的な
サイクルタイムの長いメモリアクセスが必要となり、四
則演算命令を追加する方法では、追加命令の格納にメモ
リの有効領域が余分に費やされるとともに、実行用マイ
コン2におけるオブジェクトプログラム6のステップ数
が増大する。この結果、いずれの場合も実行用マイコン
2の処理負担が増大し、その実行効率が低下する。
【0026】ところが、この発明が適用されたコンパイ
ラの場合、指定枠を超えた即値を含む移動命令『MOV
#128,R1』及び『MOV #250,R2』
は、前述のように、指定枠を超えない即値#1又は#1
23とレジスタR1の保持値127とによる加算命令
『ADD #1,R1』又は『ADD #123,R
2』にそのまま1対1で置き換えられるとともに、これ
らの命令に関与するレジスタの以後の振る舞いがフロー
解析され、必要に応じてオペランドの置き換えが行われ
る。これらのことから、プログラムの実質的な機能を損
いまた実行用マイコン2の不正実行を招くことなく、し
かも定数定義によるラベル付与又はラベル参照のための
メモリアクセスあるいは即値生成のための命令追加を必
要とすることなく、指定枠を超える大きさの即値の指定
を可能としうる即値生成方法を実現できる。この結果、
その命令が固定長とされる実行用マイコン2の処理負担
を軽減してその実行効率を高め、メモリの使用効率を高
めることができる。
【0027】以上の実施例から得られる作用効果は、下
記の通りである。すなわち、 (1)原始プログラムを、所定数のレジスタを具備しか
つその命令の少なくともオペランド部が固定長とされる
プロセッサで実行可能なオブジェクトプログラムに変換
する翻訳システムにおいて、指定枠を超える第1の即値
として与えられたオペランドを、指定枠を超えない第2
の即値といずれかのレジスタに残存するレジスタ保持値
とをもとに、しかも第1の即値をオペランドとする第1
の命令を、第2の即値を第1のオペランドとしレジスタ
保持値を第2のオペランドとする四則演算命令に置き換
えることにより生成することで、定数定義によるラベル
付与又はラベル参照のためのメモリアクセスあるいは即
値生成のための命令追加を必要とすることなく、指定枠
を超える大きさの即値の指定を可能としうる即値生成方
法を実現することができるという効果が得られる。
【0028】(2)上記(1)項において、一連の命令
を、その中間に分岐の始点又は終点を含まない範囲を一
つの単位として複数の基本ブロックに分割し、翻訳シス
テムの動作環境となる記憶装置内に、各基本ブロックを
構成する命令のオペランドに関するオペランド情報テー
ブルと、レジスタの設定及び参照ならびにその順序に関
するフロー情報テーブルと、レジスタの保持値に関する
レジスタ保持値テーブルとを含む即値生成メモリを設け
るとともに、第1の命令の結果が格納される第1のレジ
スタと四則演算命令の結果が格納される第2のレジスタ
とが同一のものでないときには、これらのレジスタの以
後の振る舞いを即値生成メモリによりフロー解析し問題
がないことを確認した上で、選択的に第1及び第2のレ
ジスタを置き換えることで、プログラムの本来の機能を
保ち、プロセッサ等の不正実行を防止することができる
という効果が得られる。 (3)上記(1)項及び(2)項により、その命令が固
定長とされるプロセッサ等の処理負担を軽減してその実
行効率を高めることができるとともに、そのメモリの使
用効率を高めることができるという効果が得られる。
【0029】以上、本発明者によってなされた発明を実
施例に基づき具体的に説明したが、この発明は、上記実
施例に限定されるものではなく、その要旨を逸脱しない
範囲で種々変更可能であることは言うまでもない。例え
ば、図1において、翻訳用コンピュータ1及び実行用マ
イコン2のブロック構成は、種々の実施形態を採りう
る。図2及び図3において、即値生成メモリ5の構成
は、この実施例による制約を受けないし、その利用方法
も任意である。図4において、コンパイラによる即値生
成処理は、基本的なアルゴリズムが変わらないことを条
件に、種々の処理フローを採りうる。図5及び図6にお
いて、命令の構成,オペランド等の組み合わせ及び順序
等は、種々の実施形態が考えられよう。即値生成のため
の演算命令には、加算命令以外の四則演算命令を利用し
てもよいし、四則演算命令以外の命令を利用することも
できる。また、実行用マイコン2は、必ずしもスペシャ
ルレジスタSR0〜SRqを備えることを必須条件とは
しない。さらに、即値生成の対象となるオペランドは、
第1オペランドに限定されないし、即値の具体的な指定
枠や命令の種別及び名称等も、この実施例の限りではな
い。
【0030】以上の説明では、主として本発明者によっ
てなされた発明をその背景となった利用分野であるコン
パイラに適用した場合について説明したが、それに限定
されるものではなく、例えばアセンブラやオプティマイ
ザ等の各種翻訳システムにも適用できる。この発明は、
少なくとも原始プログラムをオペランドとして与えうる
即値の大きさに制限のあるプロセッサで実行可能なオブ
ジェクトプログラムに変換するための翻訳システムなら
びにその即値生成方法に広く適用できる。
【0031】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば、下
記の通りである。すなわち、原始プログラムを、所定数
のレジスタを具備しかつその命令の少なくともオペラン
ド部が固定長とされるプロセッサで実行可能なオブジェ
クトプログラムに変換する翻訳システムにおいて、指定
枠を超える第1の即値として与えられたオペランドを、
指定枠を超えない第2の即値といずれかのレジスタに残
存するレジスタ保持値とをもとに、しかも第1の即値を
オペランドとする第1の命令を、第2の即値を第1のオ
ペランドとしレジスタ保持値を第2のオペランドとする
四則演算命令に置き換えることにより生成する。このた
め、一連の命令を、その中間に分岐の始点及び終点を含
まない範囲を一つの単位として複数の基本ブロックに分
割し、翻訳システムの動作環境となる記憶装置内に、各
基本ブロックを構成する命令のオペランドに関するオペ
ランド情報テーブルと、レジスタの設定及び参照ならび
にその順序に関するフロー情報テーブルと、レジスタの
保持値に関するレジスタ保持値テーブルとを含む即値生
成メモリを設けるとともに、第1の命令の結果が格納さ
れる第1のレジスタと四則演算命令の結果が格納される
第2のレジスタが同一のものでないときには、これらの
レジスタの以後の振る舞いを即値生成メモリによりフロ
ー解析し問題がないことを確認した上で、第1及び第2
のレジスタを置き換える。これにより、プログラムの本
来の機能を損いまたプロセッサの不正実行を招くことな
く、しかも定数定義によるラベル付与又はラベル参照の
ためのメモリアクセスあるいは即値生成のための命令追
加を必要とすることなく、指定枠を超える大きさの即値
の指定を可能としうる即値生成方法を実現することがで
きる。この結果、その命令が固定長とされるプロセッサ
等の処理負担を軽減してその実行効率を高め、メモリの
使用効率を高めることができる。
【図面の簡単な説明】
【図1】この発明が適用された即値生成方法を採るコン
パイラの動作環境を説明するための一実施例を示すシス
テム構成図である。
【図2】図1のコンパイラで用いられる即値生成メモリ
の一実施例を示す部分的な記憶領域構成図である。
【図3】図1のコンパイラで用いられる即値生成メモリ
の一実施例を示す他の部分的な記憶領域構成図である。
【図4】図1のコンパイラによる即値生成処理の一実施
例を示すフロー図である。
【図5】図1のコンパイラの処理対象となるプログラム
のうち即値生成を必要とする部分の一実施例を示す命令
リストである。
【図6】図1のコンパイラの処理対象となるプログラム
のうち即値生成を必要とする部分の他の一実施例を示す
命令リストである。
【符号の説明】
1・・・翻訳用コンピュータ、2・・・実行用マイコン
(マイクロコンピュータ)、11,21・・・中央処理
装置、12・・・記憶装置、22・・・ROM(リード
オンリーメモリ)、13・・・キーボード、3・・・原
始プログラム、4・・・翻訳プログラム(コンパイ
ラ)、5・・・即値生成メモリ、6・・・オブジェクト
プログラム、7・・・実行プログラム。50,500〜
501・・・基本ブロック、51・・・命令ポインタ、
52・・・レジスタ探索ポインタ53・・・命令テーブ
ル、LINK0〜LINK1・・・リンク情報、INS
T00〜INST03ないしINST10〜INST1
3・・・命令、54・・・オペランド情報テーブル、5
41・・・第1オペランド、542・・・第2オペラン
ド、IMMD・・・即値、R0〜Rp・・・レジスタ、
SR0〜SRq・・・スペシャルレジスタ、55・・・
フロー情報テーブル、REGS LIST0,REGS
LIST1・・・設定レジスタ情報、REGR LI
ST0,REGR LIST1・・・参照レジスタ情
報、S/RORD0,S/R ORD1・・・設定参照
順序情報、BRANCH0,BRANCH1・・・分岐
先情報。56・・・レジスタ保持値テーブル、REG0
〜REGp・・・レジスタ保持値、57・・・レジスタ
フラグテーブル、REGF LIST・・・レジスタフ
ラグリスト、58・・・スペシャルレジスタ保持値テー
ブル、SPE REG0〜SPE REGq・・・スペ
シャルレジスタ保持値、59・・・スペシャルレジスタ
フラグテーブル、SPE REGF LIST・・・ス
ペシャルレジスタフラグ情報。ST1〜ST11・・・
処理ステップ、CMD1〜CMD2・・・コマンド、R
A〜RB・・・レジスタ、#S,#X,#Y,#Z・・
・即値。L21〜L24ないしL71〜L74・・・プ
ログラム行。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 柏木 有吾 東京都小平市上水本町5丁目20番1号 株 式会社日立製作所半導体事業部内

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを、所定数のレジスタを
    具備しかつその命令の少なくともオペランド部が固定長
    とされるプロセッサで実行可能なオブジェクトプログラ
    ムに変換する翻訳システムにおいて、上記オペランド部
    の指定枠を超える第1の即値として与えられたオペラン
    ドを、上記オペランド部の指定枠を超えない第2の即値
    と上記レジスタのいずれかに残存するレジスタ保持値と
    をもとに等価的に生成することを特徴とする即値生成方
    法。
  2. 【請求項2】 上記第1の即値を含む第1の命令は、第
    1の即値を第1オペランドとし第1のレジスタを第2オ
    ペランドとするものであり、上記レジスタ保持値は、第
    2のレジスタに残存するものであって、上記第1の即値
    として与えられたオペランドの生成は、上記第1の命令
    を、上記第2の即値を第1オペランドとし第2のレジス
    タを第2オペランドとする四則演算命令に置き換えるこ
    とにより実現されるものであることを特徴とする請求項
    1の即値生成方法。
  3. 【請求項3】 上記第1の命令の結果は、上記第1のレ
    ジスタに格納され、上記四則演算命令の結果は、上記第
    2のレジスタに格納されるものであって、上記翻訳シス
    テムは、第1及び第2のレジスタが同一のものでないと
    き、これらのレジスタの以後の振る舞いをフロー解析
    し、必要に応じて以後の命令の第1又は第2のオペラン
    ドとして指定されている第1のレジスタを第2のレジス
    タに置き換えるものであることを特徴とする請求項2の
    即値生成方法。
  4. 【請求項4】 上記翻訳システムにおいて、一連の命令
    は、その中間に分岐の始点又は終点を含まない範囲を一
    つの単位として複数の基本ブロックに分割されるもので
    あって、上記翻訳システムは、その動作環境の一部とな
    る記憶装置内に、上記基本ブロックのそれぞれを構成す
    る一つ又は複数の命令のオペランドに関するオペランド
    情報テーブルと、上記所定数のレジスタの設定及び参照
    ならびにその順序に関するフロー情報テーブルと、上記
    所定数のレジスタの保持値に関するレジスタ保持値テー
    ブルとを含む即値生成メモリを備えるものであることを
    特徴とする請求項1,請求項2又は請求項3の即値生成
    方法。
JP2231195A 1995-01-17 1995-01-17 即値生成方法 Pending JPH08194626A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2231195A JPH08194626A (ja) 1995-01-17 1995-01-17 即値生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2231195A JPH08194626A (ja) 1995-01-17 1995-01-17 即値生成方法

Publications (1)

Publication Number Publication Date
JPH08194626A true JPH08194626A (ja) 1996-07-30

Family

ID=12079201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2231195A Pending JPH08194626A (ja) 1995-01-17 1995-01-17 即値生成方法

Country Status (1)

Country Link
JP (1) JPH08194626A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100496946B1 (ko) * 1997-08-29 2005-09-09 마츠시타 덴끼 산교 가부시키가이샤 정수복원형장어명령프로세서용프로그램변환장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100496946B1 (ko) * 1997-08-29 2005-09-09 마츠시타 덴끼 산교 가부시키가이샤 정수복원형장어명령프로세서용프로그램변환장치

Similar Documents

Publication Publication Date Title
EP2569694B1 (en) Conditional compare instruction
JP4573189B2 (ja) プログラムコード変換方法
KR100325658B1 (ko) 프로세서
WO2006112045A1 (ja) 演算処理装置
Shahbaz et al. The case for an intermediate representation for programmable data planes
JPH04172533A (ja) 電子計算機
JP3606561B2 (ja) 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造
US7386843B2 (en) Method and system for register allocation
JP3752224B2 (ja) コンピュータ・システムにおいて命令を処理する方法および装置
JP2560988B2 (ja) 情報処理装置および処理方法
CN110908716B (zh) 一种向量聚合装载指令的实现方法
EP1085411B1 (en) A relocation format for linking
JP2006018830A (ja) ビット・ブロック転送関数のためのクロス・プラットフォームのランタイム・コード生成
US20050257200A1 (en) Generating code for a configurable microprocessor
US6704928B1 (en) Relocation format for linking
GB2358491A (en) A relocation format for linking
US7089402B2 (en) Instruction execution control for very long instruction words computing architecture based on the free state of the computing function units
JP3630804B2 (ja) データ処理装置
JPH08194626A (ja) 即値生成方法
JP5193624B2 (ja) データプロセッサ
WO2002046885A9 (en) Handling conditional processing in a single instruction multiple datapath processor architecture
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
JP5610551B2 (ja) データプロセッサ
JP2022023631A (ja) アセンブリ命令変換プログラム、アセンブリ命令変換方法、及び情報処理装置
JP2007188366A (ja) コンパイル装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051125