JP4626032B2 - プログラム変換装置,プログラム変換方法及び記録媒体 - Google Patents
プログラム変換装置,プログラム変換方法及び記録媒体 Download PDFInfo
- Publication number
- JP4626032B2 JP4626032B2 JP2000257184A JP2000257184A JP4626032B2 JP 4626032 B2 JP4626032 B2 JP 4626032B2 JP 2000257184 A JP2000257184 A JP 2000257184A JP 2000257184 A JP2000257184 A JP 2000257184A JP 4626032 B2 JP4626032 B2 JP 4626032B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- expression
- variable
- instruction
- object code
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000008569 process Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 19
- 238000012360 testing method Methods 0.000 description 10
- 101100412394 Drosophila melanogaster Reg-2 gene Proteins 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 101001084254 Homo sapiens Peptidyl-tRNA hydrolase 2, mitochondrial Proteins 0.000 description 3
- 102100030867 Peptidyl-tRNA hydrolase 2, mitochondrial Human genes 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 101100272590 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BIT2 gene Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
Description
本発明は、ソースコードファイルからRISC型CPUのためのオブジェクトコードファイルを生成するプログラム変換装置,プログラム変換方法及び前記オブジェクトコードファイルを生成させるためのプログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
現在、CPUやマイクロコンピュータなどのプログラム開発は、例えばC言語やC++言語などの高級言語を用いて行われる場合が一般的である。高級言語によって記述されたソースコードは、コンパイラによってプログラム変換(コンパイル)され、CPU等が直接実行可能な命令形式(機械語)のオブジェクトコードが生成されるようになっている。コンパイラによって生成されたオブジェクトコードは、プログラムメモリに格納され、CPU等によって読み出されることで所期の処理が実行されるようになっている。
【0003】
ところで、RISC(Reduced Instruction Set Computer)型CPUは、機能が単純で実行時間が短い命令だけを使用可能とし、複数の命令の実行に伴うプロセスにおける各ステージ(フェッチ,デコード,実行,書込みなど)を複数の命令パイプラインによって並行に実行することでプログラム実行速度の高速化を図ったものである。そのため、ソースコードからコンパイラによって生成されるオブジェクトコードの容量は、CISC(Complex Instruction Set Computer)型CPUに比較して多くなる傾向を示す。
【0004】
図7は、従来のコンパイラによって生成されるオブジェクトコード(ニーモニックで表現)の例を示すプログラムリストである。ソースコードは、
bit1=bit2&bit3 …(1)
であるとする。即ち、ビット変数bit2と、ビット変数bit3との論理積をとった結果をビット変数bit1に代入する、というビット演算である。また、各ビット変数bit1〜bit3は、8ビット変数BIT1〜BIT3の第4ビット(LSBから第3ビット目)に配置されている変数であるとする。
また、図8は、(1)式のビット演算のソースコードをコンパイラが変換する場合のプロセスを示すフローチャートである。
【0005】
図7において、オブジェクトコードの▲1▼部分では、例えばメモリ上に配置された8ビット変数BIT2の内容を汎用レジスタreg1に読み出してからreg1を3ビット右シフトして、その第4ビットをLSBに位置させる。そして、レジスタreg1とマスクデータ$0001(“$”は16進数を示すシンボル)との論理積をとることで、レジスタreg1のLSB以外のビットをクリアする。ここまでが、図8のステップA1に対応する。オブジェクトコードの▲2▼部分では8ビット変数BIT3について同様の処理を行っており、図8のステップA2に対応する。
【0006】
オブジェクトコード▲3▼部分では、レジスタreg1,reg2の論理積演算を行う(図8のステップA3に対応)。続くオブジェクトコード▲4▼部分では、前記論理積演算の結果が格納されているレジスタreg1を3ビット左シフトさせると、8ビット変数BIT1の内容をレジスタreg2に読み出し、レジスタreg2とマスクデータ$fff7との論理積演算を行うことで、代入先となるレジスタreg2の第4ビットをクリアし、それ以外のビットは保存する。そして、レジスタreg1,reg2の論理和演算を行い、その論理積演算結果が格納されているレジスタreg2の内容をメモリ上の8ビット変数BIT1に転送すると(図8のステップA4に対応)、一連の演算処理が終了する。
【0007】
【発明が解決しようとする課題】
このように、RISC型CPUでは命令数が少なくビット変数の値を読み出すための専用命令がないので、他の複数の命令の組み合わせによって所期の処理を実行するようにコード変換されている。その結果、ソースコードにおいて1ステップで記述されたビット演算を実行するのに、オブジェクトコードでは18ステップを要している。従って、CPUのプログラム記憶領域をより多く必要とすることになり、また、ステップ数が多くなった分だけ処理速度が低下するという問題があった。
【0008】
本発明は上記事情に鑑みてなされたものであり、その目的は、プログラム容量をより小さくでき、且つ、処理速度を高速化できるようにオブジェクトコードファイルを生成するプログラム変換装置,プログラム変換方法及び前記オブジェクトコードファイルを生成させるためのプログラムを記録した記録媒体を提供することにある。
【0009】
請求項1記載のプログラム変換装置によれば、ソースコード中に記述されているビット演算式を、そのビット演算式の演算対象である各ビット変数の値を判定する判定命令で構成された条件判定式に変換して、前記条件判定式の真偽に応じて分岐する構成のオブジェクトコードを出力する。そして、前記条件判定式の結果が真である場合と偽である場合との夫々に対応して、ビット演算の結果が格納されるビット変数に異なる即値を代入する代入命令を含む構成のオブジェクトコードを生成することによってオブジェクトコードファイルを生成する。
【0010】
例えば、ビット演算が、ビット変数aとビット変数bとの論理積演算を行った結果をビット変数cに代入するというビット演算、即ち、
c=a&b …(2)
であるとすると、(2)式右辺に記述されたビット演算式“a&b”の結果が “1”となるのは“a=1”且つ“b=1”の場合であり、例えばC言語においてif文やwhile文などに使用される条件判定式で表現すれば、
a==1 && b==1 …(3)
となる。つまり、(2)式は、条件判定式(3)が真である場合に(2)式左辺のビット変数cに“1”を代入し、条件判定式(3)が偽である場合にビット変数cに“0”を代入することと等価であり、ビット演算式は条件判定式に置き換えることが可能である。
【0011】
従って、ソースコード中に記述されているビット演算式については、置き換えた条件判定式に基づいて、各ビット変数の値を判定し、各判定の結果に基づいて条件分岐を行うなどして、前記ビット演算の結果が格納されるビット変数に異なる即値“0,1”を代入するようにオブジェクトコードを生成すれば、ビット演算と等価な処理を行うことができる。
【0012】
即ち、ビット演算について斯様にオブジェクトコードを生成することで、RISC型CPUが実行する命令のステップ数が従来よりも短くなる。そして、一般に、CPUのプログラム中においてビット演算を行う頻度は比較的高いことから、プログラム全体として生成されるオブジェクトコードの量を少なくすることができる。そして、プログラムの容量(サイズ)を従来よりも小さくすることができると共に、RISC型CPUがビット演算を実行する場合の処理速度を高速化することが可能となる。
【0013】
請求項2記載のプログラム変換装置によれば、所謂ビットフィールドと称する複数のビット変数の集合が、レジスタ変数としてRISC型CPUに内蔵されるレジスタに割り当てられているので、ユーザはプログラミングを多様に行うことができ、RISC型CPUによる処理を効率的に行わせることが可能となる。
【0022】
【発明の実施の形態】
以下、本発明の一実施例について図1乃至図6を参照して説明する。図4は、プログラム変換装置の構成を示す図である。プログラム変換装置たるパーソナルコンピュータ(パソコン)若しくはワークステーション1には、コンパイラ2がインストールされている。具体的には、パソコン1の本体1aに内蔵されているハードディスク等の記憶装置(記憶手段)にコンパイラ2のプログラムファイルが記憶されている。
【0023】
本体1a内蔵の記憶装置には、図5に示すように、ユーザが例えばC言語などの高級言語によって記述したソースコードファイル3も記憶されている。そして、ユーザは、コンパイラ2のプログラムをパソコン1上で起動することで、ソースコードファイル3からオブジェクトコードファイル4を変換生成させる。コンパイラ2は、ソースコードファイル3に記述されているC言語のソースコードを読み出してその内容を解釈すると、CPU等が固有の命令によって対応する処理を最も効率的に実行できるようなオブジェクトコードを生成するようにコンパイルを行う。
【0024】
パソコン1の本体1aにはROMライタ5が接続されており、両者は、例えばRS−232C等のシリアル通信プロトコルによって通信が可能となっている。コンパイラ2よって生成されたオブジェクトコードファイル4はROMライタ5に転送されると、ROMライタ5にセットされたマイクロコンピュータ(マイコン)6に内蔵されているプログラムメモリ7(図6参照)にバイナリデータとして書き込まれるようになっている。
【0025】
図6は、マイコン6の電気的構成を示す機能ブロック図である。マイコン6は、RISC型のCPU8,EEPROMやフラッシュROMなどからなるプログラムメモリ7及びSRAMなどからなる内部メモリ9を備え、ワンチップマイコンとして構成されている。また、マイコン6の外部には、DRAMなどからなる外部メモリ10が接続されている。CPU8と、プログラムメモリ7,内部メモリ9及び外部メモリ10は、アドレスバス11及びデータバス12を介して接続されている。
【0026】
CPU8の内部には、演算等を行うための演算部(ALU(Alithmetic Logical Unit) )13,演算部13が演算等を行う場合に使用される複数のレジスタが配置されているレジスタ部14,及びレジスタ部14等にロード/ストア等の制御を行うための制御部15などが配置されている。
【0027】
また、CPU8は、前提構成として固有の命令に、少なくとも、
ビットテスト命令 : tst(.b/w/l)
ビットセット命令 : set(.b/w/l)
ビットクリア命令 : clr(.b/w/l)
を備えている。
【0028】
ビットテスト命令は、指定されたビット変数の値をテスト(判定)する命令であり、そのテスト結果“0,1”は、CPU8のレジスタ部14内にあるコンディションコードレジスタ(CCR)のZフラグに制御部15によって反映されるようになっている。即ち、テスト結果が“0”であれば、CCRのZフラグがセットされ、テスト結果が“1”であればZフラグはクリアされる。
【0029】
また、このビットテスト命令は、ユーザの定義などによりビット変数がメモリに割り当てられている場合と、レジスタ部14内の汎用レジスタに割り当てられている場合との何れであっても実行することが可能である。(.b/w/l)は、メモリ上のビット変数をテスト等する場合のアクセスサイズを指定するものであり、(バイト(8)/ワード(16)/ロングワード(32))に対応する。尚、レジスタ上のビット変数をテスト等する場合は、アクセスサイズの指定は不要である。
また、ビットセット命令は、指定されたビット変数に即値“1”を代入する命令であり、ビットクリア命令は、指定されたビット変数に即値“0”を代入する命令である。
【0030】
次に、本実施例の作用について図1乃至図3をも参照して説明する。図1は、コンパイラ2がビット演算に関するコンパイル処理を行う場合のプロセスを示すフローチャートである。先ず、コンパイラ2は、C言語で記述された右辺のビット演算式を解釈(デコード)すると、ブール代数規則に基づき結果が1(真)または0(偽)となる条件判定式に変換する。そして、その条件判定式に対応するオブジェクトコードを出力する(ステップS1)。
【0031】
次に、コンパイラ2は、条件判定式が真であった場合に、ビット演算式の結果が代入される左辺のビット変数に“1”若しくは“0”(異なる即値)を代入するためのコードを生成し、それから、処理終了へ分岐するためのコードを生成する(ステップS2)。それから、条件判定式が偽であった場合に、ビット演算式の結果が代入される左辺のビット変数に“0”若しくは“1”を代入するためのコードを生成すると(ステップS3)と、処理終了となる。
【0032】
ここで、図2は、図1のフローチャートに基づいて、具体的に(1)式のビット演算をコンパイル処理してオブジェクトコードを生成する場合のフローチャートであり、図3は、図2のフローチャートに従うコンパイル処理によって生成されるオブジェクトコードをニーモニックで示すプログラムリストである。
【0033】
(1)式右辺に記述されたビット演算式“bit2&bit3”の結果が“1”となるのは、“bit2=1”且つ“bit3=1”の場合であり、C言語における条件判定式で表現すると、
bit2==1 && bit3==1 …(4)
となる。従って、(1)式は、条件判定式(4)が真である場合に(1)式左辺のビット変数bit1に“1”を代入し、条件判定式(4)が偽である場合にビット変数bit1に“0”を代入することと等価である。
【0034】
そこで、図2においては、先ずビット変数bit2の値を判定し(ステップB1)、その値が“0”であればビット変数bit1に“0”を書き込んで(ステップB3)処理を終了する。また、ビット変数bit2の値が“1”である場合はビット変数bit1の値を判定し(ステップB2)、その値が“0”であればステップB3に移行し、ビット変数bit1の値が“1”であればビット変数bit1に“1”を書き込んで(ステップB4)処理を終了する。
【0035】
即ち、図2のフローチャートでは、ステップB1,B2が図1のステップS1に基づく処理であり、ステップB1,B2の何れかよりステップB3に移行するケースが条件判定式(4)が偽である場合に対応する。そして、ステップB3は、図1のステップS3に基づく処理である。また、ステップB2よりステップB4に移行するケースが条件判定式(4)が真である場合に対応し、ステップB4は、図1のステップS2に基づく処理である。
【0036】
次に、実際のコンパイル処理結果のプログラムリストである図3を参照すると、ステップ▲1▼でビット変数bit2の値を判定し、ステップ▲2▼ではその値が“0”であればラベルLOO1に分岐させる(ステップB1に対応)。例えば、ビット変数bit2の値が“0”であれば、前述したように、CPU8のレジスタ部14内にあるCCRのZフラグがセットされ、ステップ▲2▼での条件判定は真となる。
【0037】
次のステップ▲3▼,▲4▼では、ビット変数bit3に関してステップ▲1▼,▲2▼と同様の処理を行う(ステップB2に対応)。以上のステップ▲1▼〜▲4▼が図1のステップS1を実行した結果であり、条件判定式(4)に対応して出力されたオブジェクトコードとなる。そして、ステップ▲2▼,▲4▼の何れかにおいてラベルLOO1に分岐するケースが、条件判定式の結果が偽の場合に対応する。また、ステップ▲2▼,▲4▼の何れにおいてもラベルLOO1に分岐することなく、次のステップ▲5▼を実行するケースが、条件判定式の結果が真の場合に対応する。
【0038】
条件判定式の結果が真の場合に対応するステップ▲5▼では、ビット変数bit1に“1”をセットし、このビット演算処理を終了するためにラベルLOO2に分岐する(ステップ▲6▼)。この部分が図1のステップS2を実行した結果であり、図2ではステップB4に対応する。
また、条件判定式の結果が偽の場合に対応するステップ▲7▼では、ビット1をゼロクリアして処理を終了する。この部分が図1のステップS3を実行した結果であり、図2ではステップB3に対応する。
【0039】
斯様にコンパイラ2によって生成されたオブジェクトコードのサイズは、図7に示す従来のコンパイラによって生成されたコードのサイズに比較すると大幅に縮小されている。
【0040】
以上のようにコンパイラ2によってコンパイル処理が行われた結果生成されたオブジェクトコードファイル4は、上述のようにパソコン1よりROMライタ5に転送され、ROMライタ5にセットされたマイコン6内蔵のプログラムメモリ7にバイナリデータとして書き込まれる。
【0041】
そして、マイコン6のCPU8は、プログラムメモリ7に記憶されたオブジェクトコードをプログラムとして読み出して実行する。尚、ビット変数bit1〜bit3は、ユーザの定義により内部メモリ9,外部メモリ10またはレジスタ部14内の汎用レジスタなどの何れに配置されているものでも構わない。ビット変数が汎用レジスタ上に割り付けられている場合は、例えば、図3のステップ▲1▼における“tst.b bit2”に代えて、“tst bit2”がオブジェクトコードとして生成される。
【0042】
ところで、例えば、ビット変数bit2が内部メモリ9上に配置されている場合、図3のステップ▲1▼における“tst.b bit2”を実行すると、CPU8の演算部13は、内部メモリ9よりビット変数bit2の内容を読み出して判定を行う。この場合、例えば、図6に示すコードの“mov BIT2,reg1”などの命令が1クロック(CPU8の動作クロック)で実行可能であるとすると、“tst.b bit2”の実行には2〜3クロックを要することになるが、コードサイズの全体が大幅に縮小されているので、トータルでの処理時間は短縮される。
【0043】
以上のように本実施例によれば、パソコン1の本体1aにインストールされたコンパイラ2は、プログラムとして記述されたソースコードファイル3のソースコード中に記述されているビット演算式を、演算対象である各ビット変数bit2,bit3の値に基づいて条件を判定する式に変換し、その判定式の結果が真である場合と偽である場合との夫々に対応して、ビット演算の結果が格納されるビット変数bit1に異なる即値“0,1”を夫々代入する処理を行うようにオブジェクトコードを生成し、RISC型CPU8に最適なオブジェクトコードファイル4を出力するようにした。
【0044】
従って、CPU8が実行する命令のステップ数が従来よりも短くなり、プログラム全体として生成されるオブジェクトコードの量が少なくなるので、プログラムの容量を従来よりも小さくすることができると共に、CPU8がビット演算を実行する場合の処理速度を高速化することが可能となる。
【0045】
また、マイコン6のプログラムメモリ7には、コンパイラ2によってコード変換されたプログラムが記憶され、マイコン6のCPU8は、プログラムメモリ7に記憶されたオブジェクトコードをプログラムとして読み出して実行するので、CPU8が実行する命令のステップ数が従来よりも短くなって、プログラム全体として生成されるオブジェクトコードの量が少なくなり、プログラムメモリ7の容量を従来よりも小さくすることができる。そして、CPU8がビット演算を実行する場合の処理速度が高速化されるので、マイコン6の処理能力を向上させることができる。
【0046】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、次のような変形または拡張が可能である。
ビット演算式は、論理積に限ることなく、論理和や排他的論理和などを行うものでも良い。その場合、論理の違いに応じて、条件分岐コマンド“beq”に代えて“bne(not equal)”などをオブジェクトコードとして生成すれば良い。
また、ソースコードにおいて複数のビット変数の集合,所謂ビットフィールドがレジスタ変数としてCPU8のレジスタ部14に割り当てている場合であっても、コンパイラ2は、ビットテスト命令によってビットフィールドの各ビット変数毎に値の判定を行うようにコードを出力する。従って、ユーザはプログラミングを多様に行うことができ、CPU8による処理を効率的に行わせることが可能となる。
【0047】
プログラムメモリ7に対するプログラムデータの書き込みは、ROMライタ5を使用するものに限らない。例えば、マイコン6側にRS−232C等のシリアル通信インターフェイスを設けて、パソコン1側よりマイコン6にプログラムデータを直接送信することで、CPU8によってプログラムデータをプログラムメモリ7に書き込ませるようにしても良い。
コンパイラ2のプログラムを、CD−ROM,フロッピーディスクやMOディスク等の記録媒体に記憶させても良く、また、そのような記録媒体に記憶されている状態で、パソコン1の主記憶上にプログラムを読み出してコンパイル処理を行っても良い。
マイクロコンピュータとしては、マイコン6のようなワンチップマイコンに限ることなく、CPU8とプログラムメモリ7とが夫々独立のチップとして形成されて同一のプリント基板上に搭載されているようなマイクロコンピュータであっても良い。この場合、ROMライタ5には、プログラムメモリ7のみを接続してプログラムデータを書き込むようにすれば良い。
また、プログラムメモリは、書き替え可能なメモリに限らず、例えばマスクROMなどの書き替え不可能なメモリを用いても良い。
【図面の簡単な説明】
【図1】本発明の一実施例であり、コンパイラがビット演算に関するコンパイル処理を行う場合のプロセスを示すフローチャート
【図2】図1のフローチャートに基づいて、コンパイラが(1)式のビット演算をコンパイル処理してオブジェクトコードを生成する場合のフローチャート
【図3】図2のフローチャートに従うコンパイル処理によって生成されるオブジェクトコードをニーモニックで示すプログラムリスト
【図4】プログラム変換装置たるパーソナルコンピュータ若しくはワークステーションの構成を示す図
【図5】コンパイラが、ソースコードファイルからオブジェクトコードファイルを変換生成する処理を概念的に示す図
【図6】マイクロコンピュータの電気的構成を示す機能ブロック図
【図7】従来技術を示す図3相当図
【図8】(1)式のビット演算のソースコードを、従来のコンパイラが変換する場合のプロセスを示すフローチャート
【符号の説明】
1はパーソナルコンピュータ若しくはワークステーション(プログラム変換装置)、2はコンパイラ、3はソースコードファイル、4はオブジェクトコードファイル、6はマイクロコンピュータ、7はプログラムメモリ、8はCPUを示す。
Claims (6)
- ソースコードファイルからソースコードを読み出し、ビット変数の値を判定する判定命令と前記ビット変数に対して即値を代入する代入命令とを少なくとも含む命令セットを有するRISC型CPUのためのオブジェクトコードファイルを生成するプログラム変換装置において、
前記ソースコード中に記述されているビット演算式を、前記ビット演算式の演算対象である各ビット変数の値を判定する判定命令で構成された条件判定式に変換して、前記条件判定式の真偽に応じて分岐する構成のオブジェクトコードを出力するとともに、
前記条件判定式の結果が真である場合と偽である場合との夫々に対応して、前記ビット演算の結果が格納されるビット変数に異なる即値を代入する代入命令を含む構成のオブジェクトコードを生成することによって、
前記オブジェクトコードファイルを生成することを特徴とするプログラム変換装置。 - 複数のビット変数の集合が、レジスタ変数として、前記RISC型CPUに内蔵されるレジスタに割り当てられていることを特徴とする請求項1記載のプログラム変換装置。
- ソースコードファイルからソースコードを読み出し、ビット変数の値を判定する判定命令と前記ビット変数に対して即値を代入する代入命令とを少なくとも含む命令セットを有するRISC型CPUのためのオブジェクトコードファイルを生成するコンピュータが実行するプログラム変換方法において、
前記ソースコード中に記述されているビット演算式を、前記ビット演算式の演算対象である各ビット変数の値を判定する判定命令で構成された条件判定式に変換して、前記条件判定式の真偽に応じて分岐する構成のオブジェクトコードを出力する工程と、
前記条件判定式の結果が真である場合と偽である場合との夫々に対応して、前記ビット演算の結果が格納されるビット変数に異なる即値を代入する代入命令を含む構成のオブジェクトコードを生成する工程と、
によって、前記オブジェクトコードファイルを生成することを特徴とするプログラム変換方法。 - 複数のビット変数の集合が、レジスタ変数として、前記RISC型CPUに内蔵されるレジスタに割り当てられていることを特徴とする請求項3記載のプログラム変換方法。
- コンピュータに、ソースコードファイルからソースコードを読み出させ、ビット変数の値を判定する判定命令と前記ビット変数に対して即値を代入する代入命令とを少なくとも含む命令セットを有するRISC型CPUのためのオブジェクトコードファイルを生成させるためのプログラムを記録したコンピュータ読取り可能な記録媒体において、
前記プログラムは、前記コンピュータに、
前記ソースコード中に記述されているビット演算式を、前記ビット演算式の演算対象である各ビット変数の値を判定する判定命令で構成された条件判定式に変換して、前記条件判定式の真偽に応じて分岐する構成のオブジェクトコードを出力する工程と、
前記条件判定式の結果が真である場合と偽である場合との夫々に対応して、前記ビット演算の結果が格納されるビット変数に異なる即値を代入する代入命令を含む構成のオブジェクトコードを生成する工程と、
を実行させることによって、前記オブジェクトコードファイルを生成させるためのものであることを特徴とする記録媒体。 - 複数のビット変数の集合が、レジスタ変数として、前記RISC型CPUに内蔵されるレジスタに割り当てられていることを特徴とする請求項5記載の記録媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000257184A JP4626032B2 (ja) | 2000-08-28 | 2000-08-28 | プログラム変換装置,プログラム変換方法及び記録媒体 |
US09/935,686 US6934941B2 (en) | 2000-08-28 | 2001-08-24 | Compiler for generating risc object code whereby operations on bit variables written in source code are executed by processing based on bit judgement operations to thereby reduce the amount of object code |
DE10141999A DE10141999A1 (de) | 2000-08-28 | 2001-08-28 | Compiler zur Erzeugung von RISC-Maschinencode, wobei Operationen an im Quellcode geschriebenen BIT-Variablen durch Bearbeitung auf der Grundlage von BIT-Beurteilungsoperationen zur Verringerung des Maschinencodeumfangs ausgeführt werden |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000257184A JP4626032B2 (ja) | 2000-08-28 | 2000-08-28 | プログラム変換装置,プログラム変換方法及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002073346A JP2002073346A (ja) | 2002-03-12 |
JP4626032B2 true JP4626032B2 (ja) | 2011-02-02 |
Family
ID=18745689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000257184A Expired - Fee Related JP4626032B2 (ja) | 2000-08-28 | 2000-08-28 | プログラム変換装置,プログラム変換方法及び記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6934941B2 (ja) |
JP (1) | JP4626032B2 (ja) |
DE (1) | DE10141999A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725694B2 (en) * | 2004-12-21 | 2010-05-25 | Denso Corporation | Processor, microcomputer and method for controlling program of microcomputer |
CN104756138B (zh) * | 2012-10-31 | 2017-08-11 | 英派尔科技开发有限公司 | 信息编码方法、系统以及设备 |
JP6366033B2 (ja) * | 2014-05-09 | 2018-08-01 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | プログラム中のif文の最適化方法 |
JP6579095B2 (ja) * | 2016-12-22 | 2019-09-25 | トヨタ自動車株式会社 | プログラム書き込み方法、装置の制御方法、プログラム書き込みのためのプログラム、および装置の制御プログラム |
EP3428792B1 (en) | 2017-07-10 | 2022-05-04 | Arm Ltd | Testing bit values inside vector elements |
US11662988B2 (en) * | 2020-09-29 | 2023-05-30 | Shenzhen GOODIX Technology Co., Ltd. | Compiler for RISC processor having specialized registers |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58166443A (ja) * | 1982-03-27 | 1983-10-01 | Fujitsu Ltd | 論理演算制御方式 |
JP2868122B2 (ja) * | 1987-11-05 | 1999-03-10 | 富士通株式会社 | 論理式評価順序決定方式 |
US5045992A (en) | 1988-10-19 | 1991-09-03 | Hewlett-Packard Company | Apparatus for executing instruction regardless of data types and thereafter selectively branching to other instruction upon determining of incompatible data type |
JP2001202243A (ja) * | 1999-04-30 | 2001-07-27 | Hitachi Ltd | データ処理装置 |
-
2000
- 2000-08-28 JP JP2000257184A patent/JP4626032B2/ja not_active Expired - Fee Related
-
2001
- 2001-08-24 US US09/935,686 patent/US6934941B2/en not_active Expired - Fee Related
- 2001-08-28 DE DE10141999A patent/DE10141999A1/de not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
JP2002073346A (ja) | 2002-03-12 |
US20020042695A1 (en) | 2002-04-11 |
DE10141999A1 (de) | 2002-05-08 |
US6934941B2 (en) | 2005-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2082070C (en) | Branch resolution via backward symbolic execution | |
EP0528028B1 (en) | Automatic flowgraph generation for program analysis and translation | |
JP5118745B2 (ja) | メモリアクセス命令のベクトル化 | |
AU2256692A (en) | Cross-image referencing of program code | |
JPH01201729A (ja) | デコード方法 | |
US6738966B1 (en) | Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method | |
JP4026940B2 (ja) | プログラム変換装置 | |
JP4626032B2 (ja) | プログラム変換装置,プログラム変換方法及び記録媒体 | |
EP0947922B1 (en) | Compiler | |
JP2004086837A (ja) | データ処理装置 | |
US5694605A (en) | Program translator with selective data value amendment and processor with data extension instructions | |
US6233732B1 (en) | Compiling system using intermediate codes to store a plurality of values | |
JP2009020695A (ja) | 情報処理装置及びシステム | |
JP2004038279A (ja) | コンパイラ、演算処理システム及び演算処理方法 | |
JP3264901B2 (ja) | コンパイル装置及びコンパイル方法 | |
JP2002182926A (ja) | コンパイル方法及びコンピュータ読み取り可能な記録媒体 | |
US20040064301A1 (en) | Software development system, simulator, and recording medium | |
JP3692884B2 (ja) | プログラム処理方法および記録媒体 | |
JP2607319B2 (ja) | プログラマブルコントローラ | |
JPH1165622A (ja) | プログラマブルコントローラ | |
JP2002182925A (ja) | コンパイル方法及びコンピュータ読み取り可能な記録媒体 | |
JP3754222B2 (ja) | アセンブラ | |
JP5910197B2 (ja) | 組み込み用プログラム開発装置、コンパイル方法およびコンパイラプログラム | |
JPH06282444A (ja) | コンパイル方法 | |
JP2987281B2 (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070510 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100924 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101012 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101025 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131119 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131119 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |