JP4860240B2 - 翻訳方法および実行通知命令の埋め込み方法 - Google Patents

翻訳方法および実行通知命令の埋め込み方法 Download PDF

Info

Publication number
JP4860240B2
JP4860240B2 JP2005327028A JP2005327028A JP4860240B2 JP 4860240 B2 JP4860240 B2 JP 4860240B2 JP 2005327028 A JP2005327028 A JP 2005327028A JP 2005327028 A JP2005327028 A JP 2005327028A JP 4860240 B2 JP4860240 B2 JP 4860240B2
Authority
JP
Japan
Prior art keywords
instruction
execution
identification information
unit
execution notification
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
Application number
JP2005327028A
Other languages
English (en)
Other versions
JP2007133716A (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 JP2005327028A priority Critical patent/JP4860240B2/ja
Priority to US11/595,900 priority patent/US7877743B2/en
Publication of JP2007133716A publication Critical patent/JP2007133716A/ja
Priority to US12/962,075 priority patent/US8402445B2/en
Application granted granted Critical
Publication of JP4860240B2 publication Critical patent/JP4860240B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、実行通知命令の埋め込みによるカバレッジ計測に適した翻訳方法および実行通知命令の埋め込み方法に関するものである。
従来のカバレッジ計測方法では、プログラム中に予め実行通知命令を埋め込んでおき、プログラム実行時に通知される情報から実行範囲を解析する方法が用いられている。従来の実行通知命令の埋め込み方法には2通りがある。ソースプログラムから変換した機械語プログラム中の基本ブロック毎に実行通知命令を埋め込む方法と、ソースプログラム中の分岐箇所毎に実行通知命令を埋め込む方法とである。また、各実行通知命令には、実行箇所の特定を可能にするための識別情報として、予めプログラム全体において唯一となる(互いに識別可能な)ID番号が付与されている。
従来の実行通知命令の埋め込み方法において、機械語プログラム中の基本ブロック毎に実行通知命令を埋め込む場合の構成を図11に示し、ソースプログラム中の分岐箇所毎に実行通知命令を埋め込む場合の構成を図12に示す。
図11において、翻訳部200は、ソースプログラムP1を機械語プログラムに変換する変換部10と、機械語プログラムの冗長性を排除する最適化部20と、基本ブロック毎への実行通知命令埋め込み部30と、実行プログラムP2を生成する実行プログラム生成部40から構成されている。基本ブロック毎への実行通知命令埋め込み部30では、機械語プログラム中の基本ブロックを検索し、ID番号を付与した実行通知命令を埋め込む。
図12において、翻訳部300は、ソースプログラムP1中の分岐箇所毎への実行通知命令埋め込み部5と、実行通知命令を埋め込んだソースプログラムを機械語プログラムに変換する変換部10と、機械語プログラムの冗長性を排除する最適化部20と、実行プログラムP2を生成する実行プログラム生成部40から構成されている。分岐箇所毎への実行通知命令埋め込み部5では、ソースプログラムP1中の分岐箇所を検索し、ID番号を付与した実行通知命令を埋め込む。
特許文献1には、ソースプログラム中の分岐箇所に、プログラム全体において唯一となるID番号を付与した実行通知命令を埋め込み、プログラム実行時に通知される情報から実行範囲を解析する方法が開示されている。
特開平11−316696号公報(第15−16頁、第6−7図)
しかしながら、機械語プログラム中の基本ブロック毎に実行通知命令を埋め込む従来の方法では、計測対象となるプログラム中に条件実行命令が含まれる場合に、条件実行命令に対応した実行通知命令が生成されないという問題がある。
上記の問題は、機械語プログラムに対して実行通知命令を埋め込む従来の方法ではなく、機械語プログラムに変換される前のソースプログラムに対して実行通知命令を埋め込む従来の方法であれば、ソースプログラム中に埋め込まれた実行通知命令は、翻訳時に自動的に条件実行命令を含む実行プログラムへの翻訳されるため、解決可能である。
しかし、機械語プログラムに変換される前のソースプログラムに実行通知命令を埋め込む従来の計測方法では、機械語プログラムの最適化を行うと、埋め込んだ実行通知命令が意図しない箇所に移動されてしまう可能性があるため、結果として実行範囲が正確に解析できないという問題がある。
すなわち、条件実行命令が含まれる機械語プログラムを最適化すると、従来の計測方法では、実行範囲を正確に解析できないという問題がある。
従来の計測方法の具体例を図13、図14を参照しながら説明する。
図13は、図11に示した構成によって、機械語プログラム中の基本ブロック毎に実行通知命令を埋め込んだ場合の例を示す図である。
図13に示す機械語プログラムの例は、基本ブロックA,B,Cからなる。機械語プログラム中には、各基本ブロックに対応する実行通知命令i1,i2,i3が埋め込まれており、プログラム実行時にこれらの実行通知命令が通知する情報から実行範囲を解析する。例えば、4行目の命令1については、同一基本ブロック内にある3行目の実行通知命令i1が実行されていれば、4行目の命令1も実行されたと判断することができる。
しかし、11行目の条件実行命令については、命令に付与されている条件aの真偽値によって実行状態が変化するため、同一基本ブロック内にある8行目の実行通知命令が実行されていたとしても、11行目の条件実行命令も実行されたかどうかは判断できない。
図14は、図12に示した構成によって、ソースプログラム中の分岐箇所毎に実行通知命令を埋め込み、機械語プログラムに変換、最適化した場合の例を示す図である。
図14に示す機械語プログラムの例は、基本ブロックA,B,Cからなる。基本ブロックA,B,Cの開始点は、それぞれ機械語プログラムに変換する前のソースプログラムにおける分岐箇所a,b,cに対応しているものとする。機械語プログラム中には、ソースプログラム中の分岐箇所a,b,cに対応する実行通知命令i1,i2,i3が埋め込まれており、プログラム実行時にこれらの実行通知命令が通知する情報から実行範囲を解析する。
しかし、機械語プログラム中では、最適化によりソースプログラム中の分岐箇所bに対応する実行通知命令が、基本ブロックBの開始点より前の8行目に移動されている。そのため、機械語プログラムからは、基本ブロックB内の命令が実行されたかどうかが判断できない。
以上の理由により、条件実行命令が含まれる機械語プログラムを最適化すると、従来の計測方法では、実行範囲を正確に解析できない。
本発明は、上記の従来技術の課題を解決するもので、計測対象となるプログラムに条件実行命令が含まれる場合でも、正確かつ効率的に実行範囲を解析することが可能な翻訳方法および実行通知命令の埋め込み方法を提供することを目的とする。
また、本発明を実行することによってプログラムに埋め込む実行通知命令の数が増大することが予想される。この新たな課題に対して、実行通知命令を階層的に使用することで、各実行通知命令に通知させる情報量を削減することを目的とする。
本発明による翻訳方法は、ソースプログラムを実行プログラムに翻訳する翻訳方法であって、
前記ソースプログラムを機械語プログラムに変換する変換ステップと、
前記機械語プログラムの冗長性を排除する最適化ステップと、
前記最適化ステップの後に、自身が実行されたことを通知する実行通知命令を、最適化した前記機械語プログラム中に埋め込む埋め込みステップと、
前記埋め込みステップで前記実行通知命令が埋め込まれた前記機械語プログラムに基づいて、前記実行通知命令を含んだ実行プログラムを生成するプログラム生成ステップとを備え、
前記埋め込みステップは、
前記機械語プログラム中の分岐命令や分岐先を含まない一連の命令列である基本ブロック毎の開始点を検索する第1の検索サブステップと、
前記第1の検索サブステップにおいて検索した基本ブロック毎の開始点に実行通知命令を配置する第1の命令配置サブステップと、
前記機械語プログラム中において、分岐命令とは異なる条件実行命令のうち、同一の条件が付与されている条件実行命令で構成される条件実行命令群毎の開始点を検索する第2の検索サブステップと、
前記第2の検索サブステップにおいて検索した条件実行命令群毎の開始点に、条件実行命令群と同一の条件を付与した条件実行命令である前記実行通知命令を配置する第2の命令配置サブステップとを備え、
前記プログラム生成ステップは、
前記実行通知命令毎に対して、個々の実行通知命令を識別するための情報を生成する識別情報生成サブステップと、
前記実行通知命令を実行することによって各実行通知命令を識別できるように、前記識別情報を各実行通知命令に付与する識別情報付与サブステップとを備えることを特徴とする。
本構成によって、各基本ブロックに対応する実行通知命令および各条件実行命令群に対応する実行通知命令が埋め込まれるため、計測対象となるプログラムに条件実行命令が含まれる場合でも、実行範囲を解析することが可能となる。
上記の翻訳方法の前記第2の命令配置サブステップにおいて、
処理対象とする任意の条件実行命令群について、当該条件実行命令群の開始点から、当該条件実行命令群を含む基本ブロックの開始点に向かって、当該条件実行命令群に付与されている条件の真偽値を設定する条件設定命令を検索する第3の検索サブステップと、
前記第3の検索サブステップの結果、前記条件設定命令が存在する場合に、前記条件設定命令と当該条件実行命令群の開始点との間に、前記実行通知命令を配置しても既存の命令と並列実行可能な配置可能箇所を検索する第4の検索サブステップと、
前記第4の検索サブステップの結果、前記配置可能箇所があれば、前記実行通知命令を前記配置可能箇所に配置し直す第1の配置変更サブステップと、
前記第3の検索サブステップの結果、前記条件設定命令が存在しない場合に、前記基本ブロックの開始点と当該条件実行命令群の開始点との間に、前記配置可能箇所を検索する第5の検索サブステップと、
前記第5の検索サブステップの結果、前記配置可能箇所があれば、前記実行通知命令を前記配置可能箇所に配置し直す第2の配置変更サブステップとを備えるという態様がある。
本構成によって、実行通知命令の並列実行度を向上させることで、命令埋め込みによるプログラムの実行速度の低下を防ぐことが可能となる。
また、本発明による実行通知命令の埋め込み方法は、機械語プログラムに対する実行通知命令の埋め込み方法であって、
前記プログラムを1命令以上の領域に分割するために用いられ、それぞれが包含関係にある複数の単位を生成する単位生成ステップと、
第1の単位として、前記単位生成ステップで生成した複数の単位の中から任意の単位を選択する第1の単位選択ステップと、
変換前のソースプログラムまたは変換後の機械語プログラムを前記第1の単位で分割するプログラム分割ステップと、
前記プログラム分割ステップで分割した領域毎の開始点および終了点に、前記実行通知命令を配置する命令配置ステップと、
第1の識別情報として、第1の単位に対応した前記実行通知命令全体に対して、前記機械語プログラム全体の中で唯一となる識別情報を生成する第1の識別情報生成ステップと、
前記第1の識別情報を前記実行通知命令毎に付与する第1の識別情報付与ステップと、
第2の単位として、前記単位生成ステップで決定した単位から、第1の単位に包含される単位を選択する第2の単位選択ステップと、
第2の識別情報として、第2の単位に対応した実行通知命令毎に対して、前記第1の単位で分割した領域の中で唯一となる識別情報を生成する第2の識別情報生成ステップと、
前記第2の識別情報を前記実行通知命令毎に付与する第2の識別情報付与ステップとを備え、
前記単位生成ステップで生成した全ての単位について、前記の第1の単位選択ステップ、プログラム分割ステップ、開始点および終了点検索ステップ、命令配置ステップ、第1の識別情報生成ステップ、第1の識別情報付与ステップ、第2の単位選択ステップ、第2の識別情報生成ステップ、第2の識別情報付与ステップを実行することを特徴とする。
本構成によって、実行通知命令を階層的に使用することで識別情報のサイズを小さくし、増大する実行通知命令に付与するID番号が不足することを防ぐことが可能となる。
上記の実行通知命令の埋め込み方法において、さらに、
前記任意の単位において分割する領域の開始点と終了点が一対一で対応するかどうかを判定する対応判定ステップを備え、
前記対応判定ステップの結果、領域の開始点と終了点が一対一で対応している場合は、当該単位で分割する領域の終了点に対する検索ステップ、命令配置ステップ、識別情報の生成ステップ、識別情報の付与ステップを省略するという態様がある。
本構成によって、任意の単位で分割する領域毎の開始点と終了点が一対一で対応している場合は、終了点に対する実行通知命令の埋め込みを省略することにより、当該単位に対応する実行通知命令を半分に減少させることができ、プログラムのサイズの増大および実行速度の低下を防ぐことが可能となる。
また、上記の実行通知命令の埋め込み方法において、さらに、
前記任意の単位において分割する領域の開始点が、当該単位を包含する単位で分割した領域の開始点と同一であるかどうか、または、前記任意の単位において分割する領域の終了点が、当該単位を包含する単位で分割した領域の終了点と同一であるかどうかを判定する重複判定ステップを備え、
前記重複判定ステップの結果、当該領域毎の開始点が、当該単位を包含する単位で分割した領域の開始点と同一である場合、または、当該領域毎の終了点が、当該単位を包含する単位で分割した領域の終了点と同一である場合は、当該領域開始点に対する命令配置ステップ、識別情報の生成ステップ、識別情報の付与ステップ、または当該領域終了点に対する命令配置ステップ、識別情報の生成ステップ、識別情報の付与ステップを省略するという態様がある。
本構成によって、重複する実行通知命令の埋め込みを省略することで、プログラムのサイズの増大および実行速度の低下を防ぐことが可能となる。
また、上記の実行通知命令の埋め込み方法において、さらに、
プログラムが複数のソースファイルから構成される場合に、各ソースファイルに対応したオブジェクトファイルの生成時には、識別情報がソースファイル間で依存し合う単位に対する識別情報の生成ステップおよび識別情報の付与ステップは未実施のままにしておき、生成された各オブジェクトファイルのリンク時に、識別情報がソースファイル間で依存し合う単位に対する識別情報の生成ステップおよび識別情報の付与ステップを実行するという態様がある。
本構成によって、複数のソースファイルから構成されるプログラムを再度翻訳する場合に、前回の翻訳時から内容が変更されていないソースファイルについては、再翻訳時にオブジェクトファイルを生成し直すステップを省略することが可能となる。
本発明によれば、基本ブロックに対応した実行通知命令および条件実行命令に対応した実行通知命令が埋め込まれるため、計測対象となるプログラムに条件実行命令が含まれる場合でも、実行範囲を解析することが可能となる。
また、本発明を実行することによってプログラムに埋め込む実行通知命令の数が増大することが予想されるが、実行通知命令を階層的に使用することによって、実行通知命令毎に付与するID番号が不足することを防ぐことが可能となる。
以下、本発明にかかわる翻訳方法および実行通知命令の埋め込み方法の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の実行通知命令の埋め込み方法の構成を説明するブロック図である。
図1において、本実施の形態における翻訳方法は、パーソナルコンピュータ等のコンピュータ上で実行されるプログラムによって実現され、ソースプログラムP1を翻訳部100によって実行プログラムP2に翻訳する。
翻訳部100は、ソースプログラムP1を機械語プログラムに変換する変換部10と、変換した機械語プログラムの冗長性を排除する最適化部20と、機械語プログラム内に実行通知命令を埋め込む実行通知命令埋め込み部30と、実行プログラムP2を生成する実行プログラム生成部40から構成される。
実行通知命令埋め込み部30は、機械語プログラム内のソースファイル単位に対応した実行通知命令埋め込み部31と、機械語プログラム内の関数単位に対応した実行通知命令埋め込み部32と、機械語プログラム内の基本ブロック単位に対応した実行通知命令埋め込み部33と、機械語プログラム内の条件実行命令群に対応した実行通知命令埋め込み部34から構成されている。
以下、本発明による実行通知命令の埋め込み手順を説明する。
本発明の実施の形態では、機械語プログラムを分割する複数の単位として、ソースファイル、関数、基本ブロックの3つを使用する。また、ソースファイル単位、関数単位、基本ブロック単位に対応して埋め込む実行通知命令に、第1の識別情報として、それぞれID番号1、ID番号2、ID番号3を予め付与しておく。
まず、ソースファイル単位に対応した実行通知命令の埋め込み部31の処理手順について図2を用いて説明する。
ステップS1では、機械語プログラム中に未処理のソースファイルの開始点、すなわち外部関数があるかどうかを判定する。未処理の外部関数がない場合は、処理を終了する。ある場合は、ステップS2に進み、次に処理する外部関数を選択する。
ステップS3では、外部関数の開始点に第1の識別情報としてID番号1を付与した実行通知命令を配置する。
ステップS4では、外部関数中に未処理の外部関数の終了点があるかどうかを判定する。未処理の外部関数の終了点がない場合は、ステップS1に戻り、次の処理を行う。ある場合は、ステップS5に進み、次に処理する外部関数の終了点を選択する。
ステップS6では、終了点に第1の識別情報としてID番号1を付与した実行通知命令を配置し、ステップS4に戻る。
次に、関数単位に対応した実行通知命令の埋め込み部32の処理手順について図3を用いて説明する。
ステップS11では、機械語プログラム中に未処理の内部関数があるかどうかを判定する。未処理の内部関数がない場合は、処理を終了する。ある場合は、ステップS12に進み、次に処理する内部関数を選択する。
ステップS13では、関数の開始点に第1の識別情報としてID番号2を付与した実行通知命令を配置する。
ステップS14では、実行通知命令に、第2の識別情報としてソースファイル中で唯一となるID番号を付与する。
ステップS15では、内部関数中に未処理の内部関数の終了点があるかどうかを判定する。未処理の内部関数の終了点がない場合は、ステップS11に戻り、次の処理を行う。ある場合は、ステップS16に進み、次に処理する内部関数の終了点を選択する。
ステップS17では、終了点に第1の識別情報としてID番号2を付与した実行通知命令を配置する。
ステップS18では、実行通知命令に、第2の識別情報としてソースファイル中で唯一となるID番号を付与し、ステップS15に戻る。
ここで、関数単位で分割する領域のうち、外部関数の開始点および終了点は、関数単位を包含する単位であるソースファイル単位で分割した領域の開始点および終了点と重複している。そのため、外部関数の開始点および終了点に対する実行通知命令の埋め込みは、省略可能であると判断できる。
ゆえに、関数単位に対応した実行通知命令の埋め込みでは、外部関数以外、すなわち内部関数のみについて処理を行う。
次に、基本ブロック単位に対応した実行通知命令の埋め込み部33の処理手順について図4を用いて説明する。
ステップS21では、機械語プログラム中に未処理の基本ブロックがあるかどうかを判定する。未処理の基本ブロックがない場合は、処理を終了する。ある場合は、ステップS22に進み、次に処理する基本ブロックを選択する。
ステップS23では、基本ブロックの開始点が、関数の開始点と等しいかどうかを判定する。基本ブロックの開始点と関数の開始点が等しい場合は、ステップS21に戻り、次の処理を行う。等しくない場合は、ステップS24に進み、基本ブロックの開始点に、第1の識別情報としてID番号3を付与した実行通知命令を配置する。
ステップS25では、実行通知命令に、第2の識別情報として関数中で唯一となるID番号を付与し、ステップS21に戻る。
ここで、基本ブロック単位で分割する領域の開始点および終了点は、常に一対一で対応している。そのため、基本ブロックの終了点に対する実行通知命令の埋め込みは、省略可能であると判断できる。
ゆえに、基本ブロック単位に対応した実行通知命令の埋め込みでは、基本ブロックの開始点についてのみの処理を行う。
次に、条件実行命令に対応した実行通知命令の埋め込み部34の処理手順について図5を用いて説明する。
ステップS31では、機械語プログラム中に未処理の条件実行命令群があるかどうかを判定する。未処理の条件実行命令群がない場合は、処理を終了する。ある場合は、ステップS32に進み、次に処理する条件実行命令群を選択する。
ステップS33では、条件実行命令群の開始点に、第1の識別情報としてID番号3を付与した実行通知命令を配置する。
ステップS34では、実行通知命令に、条件実行命令と同一の実行条件を付与する。
ステップS35では、条件実行命令の開始点と、これより先行する基本ブロックの開始点の間に、条件実行命令群に付与されている条件の真偽値を設定する条件設定命令があるかどうかを判断する。条件設定命令がない場合は、ステップS36に進み、次の処理を行う。ある場合は、ステップS37に進み、次の処理を行う。
ステップS36では、条件実行命令群の開始点と、当該条件実行命令群を包含する基本ブロックの開始点の間に、命令並列度に空きがある箇所があるかどうか判定する。空きがある箇所がない場合は、ステップS39に進み、次の処理を行う。ある場合は、ステップS38に進み、次の処理を行う。
ステップS37では、条件実行命令群の開始点と条件設定命令の間に、命令並列度に空きがある箇所があるかどうか判定する。空きがある箇所がない場合は、ステップS39に進み、次の処理を行う。ある場合は、ステップS38に進み、次の処理を行う。
ステップS38では、命令並列度に空きがある箇所に実行通知命令を配置し直す。
ステップS39では、実行通知命令に、第2の識別情報として関数中で唯一となるID番号を付与し、ステップS31に戻る。
次に、ソースファイル単位に対応した実行通知命令に対する第2の識別情報の生成、付与手順について図6を用いて説明する。
ソースファイル単位に対応した実行通知命令に対する第2の識別情報の生成、付与は、機械語プログラムから生成するオブジェクトファイルのリンク時に行う。
ステップS41では、機械語プログラム中に未処理の実行通知命令があるかどうかを判定する。未処理の実行通知命令がない場合は、処理を終了する。ある場合は、ステップS42に進み、次に処理する実行通知命令を選択する。
ステップS43は、実行通知命令の第1の識別情報にID番号1が付与されているかどうかを判定する。ID番号1が付与されていない場合は、ステップS41に戻り、次の処理を行う。付与されている場合は、ステップS44に進み、実行通知命令に第2の識別情報としてプログラム全体の中で唯一となるID番号を付与し、ステップS41に戻る。
以上、図2〜図6に示した手順により、各基本ブロックに対応する実行通知命令、および各条件実行命令群に対応する実行通知命令が埋め込まれるため、計測対象となるプログラムに条件実行命令が含まれる場合でも、実行範囲を解析することが可能となる。
本発明の実施の形態では、図5におけるステップS35〜S38を実行することにより、実行通知命令の並列実行度を向上させることで、命令埋め込みによるプログラムの実行速度の低下を防ぐことが可能となる。
本発明の実施の形態では、機械語プログラムを分割する複数の単位として、ソースファイル、関数、基本ブロックの3つを使用する。また、機械語プログラムに対して、図2、図3、図4の処理フローを適用して実行通知命令に第1の識別情報および第2の識別情報を付与し、実行通知命令を単位毎に階層化して使用することで、識別情報のサイズを小さくし、実行通知命令に付与するID番号が不足することを防ぐことが可能となる。
図4で説明したように、基本ブロック単位で分割する領域の開始点および終了点は、常に一対一で対応しているため、基本ブロックの終了点に対する実行通知命令の埋め込みを省略している。このように、不要な実行通知命令の埋め込みを省略することで、プログラムのサイズの増大、および実行速度の低下を防ぐことが可能となる。
図3で説明したように、関数単位で分割する領域のうち、外部関数の開始点および終了点は、関数単位を包含する単位であるソースファイル単位で分割した領域の開始点および終了点と重複しているため、実行通知命令の埋め込みを省略している。また、図4におけるステップS23で選択中基本ブロックの開始点と関数の開始点が重複している場合は、実行通知命令の埋め込みを省略している。このように、重複する実行通知命令の埋め込みを省略することで、プログラムのサイズの増大、および実行速度の低下を防ぐことが可能となる。
図6で説明したように、機械語プログラムから生成するオブジェクトファイルのリンク時に図6におけるステップS41〜S44を実行することにより、複数のソースファイルから構成されるプログラムを再度翻訳する場合は、前回の翻訳時から内容が変更されていないソースファイルからオブジェクトファイルを生成し直すステップを省略することが可能となる。
ここで、〔課題を解決するための手段〕での説明との対応関係を説明する。
前記埋め込みステップは、前記機械語プログラム中の基本ブロック毎の開始点を検索する第1の検索サブステップ(これは、図4のステップS21,S22に対応する)と、前記第1の検索サブステップにおいて検索した基本ブロック毎の開始点に実行通知命令を配置する第1の命令配置サブステップ(これは、図4のステップS24に対応する)と、前記機械語プログラム中の条件実行命令群毎の開始点を検索する第2の検索サブステップ(これは、図5のステップS31,S32に対応する)と、前記第2の検索サブステップにおいて検索した条件実行命令群毎の開始点に、条件実行命令群と同一の条件を付与した前記実行通知命令を配置する第2の命令配置サブステップ(これは、図5のステップS33,S34に対応する)とを備え、前記プログラム生成ステップは、前記実行通知命令毎に対して、個々の実行通知命令を識別するための情報を生成する識別情報生成サブステップと、前記実行通知命令毎に対して、前記識別情報を付与する識別情報付与サブステップ(これは、図6のステップS41〜S44に対応する)とを備える。
次の対応関係を説明する。
上記の翻訳方法の前記第2の命令配置サブステップにおいて、処理対象とする任意の条件実行命令群について、当該条件実行命令群の開始点から、当該条件実行命令群を含む基本ブロックの開始点に向かって、当該条件実行命令群に付与されている条件の真偽値を設定する条件設定命令を検索する第3の検索サブステップ(これは、図5のステップS35に対応する)と、前記第3の検索サブステップの結果、前記条件設定命令が存在する場合に、前記条件設定命令と当該条件実行命令群の開始点との間に、命令並列度に空きがある箇所を検索する第4の検索サブステップ(これは、図5のステップS37に対応する)と、前記第4の検索サブステップの結果、命令並列度に空きがある箇所があれば、前記実行通知命令を空きがある箇所に配置し直す第1の配置変更サブステップ(これは、図5のステップS38に対応する)と、前記第3の検索サブステップの結果、前記条件設定命令が存在しない場合に、前記基本ブロックの開始点と当該条件実行命令群の開始点との間に、命令並列度に空きがある箇所を検索する第5の検索サブステップ(これは、図5のステップS36に対応する)と、前記第5の検索サブステップの結果、命令並列度に空きがある箇所があれば、前記実行通知命令を空きがある箇所に配置し直す第2の配置変更サブステップ(これは、図5のステップS38に対応する)とを備える。
次の対応関係を説明する。
それぞれが包含関係にある複数の単位を決定する単位決定ステップと、第1の単位として、前記単位決定ステップで決定した単位から任意の単位を選択する第1の単位選択ステップと、変換前のソースプログラムまたは変換後の機械語プログラムを前記第1の単位で分割するプログラム分割ステップと、前記プログラム分割ステップで分割した領域毎の開始点および終了点を検索する開始点および終了点検索ステップ(これは、図3のステップS11,S12,S15,S16に対応する)と、前記開始点および終了点検索ステップで検索した領域毎の開始点および終了点に、前記実行通知命令を配置する命令配置ステップ(これは、図3のステップS13,S17に対応する)と、第1の識別情報として、第1の単位に対応した前記実行通知命令全体に対して、前記機械語プログラム全体の中で唯一となる識別情報を生成する第1の識別情報生成ステップ(これは、図3のステップS18に対応する)と、前記第1の識別情報を前記実行通知命令毎に付与する第1の識別情報付与ステップ(これは、図3のステップS18に対応する)と、第2の単位として、前記単位決定ステップで決定した単位から、第1の単位に包含される単位を選択する第2の単位選択ステップ(これは、図4のステップS21,S22に対応する)と、第2の識別情報として、第2の単位に対応した実行通知命令毎に対して、前記第1の単位で分割した領域の中で唯一となる識別情報を生成する第2の識別情報生成ステップ(これは、図4のステップS25に対応する)と、前記第2の識別情報を前記実行通知命令毎に付与する第2の識別情報付与ステップ(これは、図4のステップS25に対応する)とを備え、前記単位決定ステップで決定した全ての単位について、前記の第1の単位選択ステップ、プログラム分割ステップ、開始点および終了点検索ステップ、命令配置ステップ、第1の識別情報生成ステップ、第1の識別情報付与ステップ、第2の単位選択ステップ、第2の識別情報生成ステップ、第2の識別情報付与ステップを実行する。
また、次の対応関係を説明する。
「前記任意の単位において分割する領域の開始点と終了点が常に一対一で対応するかどうかを判定する対応判定ステップ」および「前記任意の単位において分割する領域の開始点が、当該単位を包含する単位で分割した領域の開始点と同一であるかどうか、または、前記任意の単位において分割する領域の終了点が、当該単位を包含する単位で分割した領域の終了点と同一であるかどうかを判定する重複判定ステップ」は、図4のステップS23に対応する。
以上で、〔課題を解決するための手段〕での説明との対応関係の説明を終わる。
次に、本発明の実施の形態による、実行通知命令を埋め込み方法の具体例を図7〜図10を参照しながら説明する。
本発明によって生成される実行プログラムP2は、2命令までの並列実行が可能なプロセッサで実行されるものとする。また、前記プロセッサは、自身が実行されると、予め付与された2種類の識別情報を通知する実行通知命令を備えているものとする。
実行通知命令毎に付与した第1の識別情報および第2の識別情報は、実行通知命令の末尾に「(第1の識別情報−第2の識別情報)」という形式で記述する。
図7、図8において、機械語プログラムA,Bは、それぞれソースファイルa,bを変換、最適化したものとする。図8は、ある特定の時点での状態を示すものではなく、時系列的に変化する状態を重ね合わせて示している。特に、機械語プログラムAにおいて、実行通知命令(3−3)が13行目から9行目へ移動されている点に注目すべきである。
図7に示すように、機械語プログラムAは、外部関数A、および内部関数aを含む。外部関数Aは、基本ブロックA,Bを含み、基本ブロックAには、条件a,bに対応した2つの条件実行命令群が存在する。外部関数Aの関数終了命令は、基本ブロックA,Bの2箇所に存在する。内部関数aは、基本ブロックCを含み、基本ブロックCは関数終了命令を含む。
また、機械語プログラムBは、外部関数B、および内部関数bを含む。外部関数Bは、基本ブロックD,E,Fを含み、基本ブロックDは、条件cの設定命令を含む。基本ブロックEは、条件cに対応した条件実行命令群を含み、基本ブロックFは、関数終了命令を含む。内部関数bは、基本ブロックGを含み、基本ブロックGは関数終了命令を含む。
まず、機械語プログラムAに着目して実行通知命令の埋め込む処理の説明を行う。
まずは、ソースファイル単位に対応した実行通知命令について処理する。
図2における手順に従い、ステップS1で、未処理のソースファイルの開始点、すなわち外部関数を検索する。その結果、ステップS2で、外部関数Aを選択する。
ステップS3で、外部関数Aの開始点である3行目に、第1の識別情報としてID番号1を付与した実行通知命令を配置する。
ステップS4で、未処理の終了点を検索する。その結果、ステップS5で、16行目の終了点を選択する。
ステップS6で、16行目に、第1の識別情報としてID番号1を付与した実行通知命令を配置する。
ステップS4に戻り、未処理の終了点を検索する。その結果、ステップS5で、23行目の終了点を選択する。
ステップS6で、23行目に、第1の識別情報としてID番号1を付与した実行通知命令を配置する。
ステップS4に戻り、未処理の終了点を検索する。その結果、未処理の終了点が存在しないため、ステップS1に戻る。
ステップS1で、未処理の外部関数を検索する。その結果、未処理の外部関数が存在しないため、処理を終了する。
次に、関数単位に対応した実行通知命令について処理する。
図3における手順に従い、ステップS11で、未処理の内部関数を検索する。その結果、ステップS12で、内部関数aを選択する。
ステップS13で、内部関数aの開始点である27行目に、第1の識別情報としてID番号2を付与した実行通知命令を配置する。
ステップS14で実行通知命令に、第2の識別情報としてソースファイル中で唯一となるID番号である「1」を付与する。
つまり、27行目に実行通知命令(2−1)を埋め込む。
ステップS15で未処理の終了点を検索する。その結果、ステップS16で、30行目の終了点を選択する。
ステップS17で、30行目に、第1の識別情報としてID番号2を付与した実行通知命令を配置する。
ステップS18で、実行通知命令に、第2の識別情報としてソースファイル中で唯一となるID番号である「2」を付与する。
つまり、30行目に実行通知命令(2−2)を埋め込む。
ステップS15に戻り、未処理の終了点を検索する。その結果、未処理の終了点が存在しないため、ステップS11に戻る。
ステップS11で、未処理の内部関数を検索する。その結果、未処理の内部関数が存在しないため、処理を終了する。
次に、基本ブロック単位に対応した実行通知命令について処理する。
図4における手順に従い、ステップS21で、未処理の基本ブロックを検索する。
その結果、ステップS22で基本ブロックAを選択する。
ステップS23で、関数の開始点と重複しているかどうかを判定する。その結果、関数の開始点と重複しているためステップS21に戻る。
ステップS21で、未処理の基本ブロックを検索する。その結果、ステップS22で、基本ブロックBを選択する。
ステップS23で、関数の開始点と重複しているかどうかを判定する。その結果、関数の開始点と重複していないため、ステップS24に進む。
ステップS24で、基本ブロックBの開始点である20行目に、第1の識別情報としてID番号3を付与した実行通知命令を配置する。
ステップS25で実行通知命令に、第2の識別情報として関数中で唯一となるID番号である「1」を付与する。
つまり、20行目に実行通知命令(3−1)を埋め込む。
ステップS21に戻り、未処理の基本ブロックを検索する。その結果、ステップS22で、基本ブロックCを選択する。
ステップS23で、関数の開始点と重複しているかどうかを判定する。その結果、関数の開始点と重複しているためステップS21に戻る。
ステップS21で、未処理の基本ブロックを検索する。その結果、未処理の基本ブロックが存在しないため処理を終了する。
次に、条件実行命令群に対応した実行通知命令について処理する。
図5における手順に従い、ステップS31で、未処理の条件実行命令群を検索する。その結果、ステップS32で、条件aに対応する条件実行命令群を選択する。
ステップS33で、条件実行命令群の先頭である7行目に、第1の識別情報としてID番号3を付与した実行通知命令を配置する。
ステップS34で、実行通知命令に、条件実行命令群と同一の実行条件であるaを付与する。
ステップS35で、条件実行命令群の開始点と、基本ブロックの開始点との間に、条件設定命令があるかどうかを判定する。その結果、条件設定命令が存在するためステップS37に進む。
ステップS37で、条件実行命令群の開始点と条件設定命令の間に、命令並列度に空きがある箇所があるかどうかを判定する。その結果、空きがある箇所が存在しないため、ステップS39に進む。
ステップS39で、実行通知命令に、第2の識別情報として関数中で唯一となるID番号である「2」を付与する。
つまり、7行目に実行通知命令(3−2)を埋め込む。
ステップS31に戻り、未処理の条件実行命令群を検索する。その結果、ステップS32で、条件bに対応する条件実行命令群を選択する。
ステップS33で、条件実行命令群の先頭である13行目に、第1の識別情報としてID番号3を付与した実行通知命令を配置する。
ステップS34で、実行通知命令に、条件実行命令群と同一の実行条件であるbを付与する。
ステップS35で、条件実行命令群の開始点と基本ブロックの開始点との間に、条件設定命令があるかどうかを判定する。その結果、条件設定命令が存在するためステップS37に進む。
ステップS37で、条件実行命令群の開始点と条件設定命令の間に、命令並列度に空きがある箇所があるかどうかを判定する。11、12行目の命令セットは2命令存在するため空きがないが、10行目の命令セットは1命令のみで空きがあるため、ステップS38に進む。
ステップS38で、命令並列度に空きがある9行目に実行通知命令を配置し直す。
ステップS39で、実行通知命令に、第2の識別情報として関数中で唯一となるID番号である3を付与する。
つまり、9行目に実行通知命令(3−3)を埋め込む。
ステップS31に戻り、未処理の条件実行命令群を検索する。その結果、未処理の条件実行命令が存在しないため処理を終了する。
次に、機械語プログラムBに着目して実行通知命令の埋め込む処理の説明を行う。
ソースファイル単位、関数単位、基本ブロック単位に対応した実行通知命令については、機械語プログラムAと同様の手順で処理できるため記述を省略し、条件実行命令群に対応した実行通知命令についての処理のみ説明する。
図5における手順に従い、ステップS31で、未処理の条件実行命令群を検索する。その結果、ステップS32で、条件cに対応する条件実行命令群を選択する。
ステップS33で、条件実行命令群の先頭である10行目に、第1の識別情報としてID番号3を付与した実行通知命令を配置する。
ステップS34で、実行通知命令に、条件実行命令群と同一の実行条件であるcを付与する。
ステップS35で、条件実行命令群の開始点と基本ブロックの開始点との間に、条件設定命令があるかどうかを判定する。その結果、条件設定命令が存在しないためステップS36に進む。
ステップS36で、条件実行命令群の開始点と基本ブロックの開始点の間に、命令並列度に空きがある箇所があるかどうかを判定する。その結果、空きがある箇所が存在しないため、ステップS39に進む。
ステップS39で、実行通知命令に、第2の識別情報として関数中で唯一となるID番号である3を付与する。
つまり、10行目に実行通知命令(3−3)を埋め込む。
ステップS31に戻り、未処理の条件実行命令群を検索する。その結果、未処理の条件実行命令群が存在しないため処理を終了する。
以上の手順で実行通知命令を埋め込んだ機械語プログラムA,Bから、それぞれのオブジェクトファイルを生成する。これらのオブジェクトファイルをリンクし、実行プログラムを生成する際に、第1の識別情報としてID番号1を付与した実行通知命令、すなわちソースファイル単位で配置した実行通知命令に、第2の識別情報として実行プログラム中で唯一となるID番号を付与する手順を説明する。
図9は、図8の機械語プログラムA,Bから生成されるオブジェクトファイルをリンクし、生成した実行プログラムの例を示したものである。
図6における手順に従い、ステップS41で、未処理の実行通知命令を検索する。その結果、ステップS42で、3行目の実行通知命令を選択する。
ステップS43で、第1の識別情報にID番号1が付与されているかどうかを判定する。その結果、ID番号1が付与されているためステップS44に進む。
ステップS44で、実行通知命令に、第2の識別情報として、プログラム全体の中で唯一となるID番号である「11」を付与する。
ステップS41に戻り、未処理の実行通知命令を検索する。その結果、ステップS42で、7行目の実行通知命令を選択する。
ステップS43で、第1の識別情報にID番号1が付与されているかどうかを判定する。その結果、ID番号1が付与されていないため、ステップS41に戻る。
同様の処理を9、15、19、22、26、29、34、39、41、47、50、54、56行目の実行通知命令に対して行う。その結果、15、22、34、50行目の実行通知命令に、第2の識別情報として、プログラム全体の中で唯一となるID番号である、「12」、「13」、「14」、「15」がそれぞれ付与される。
以上の処理により、各基本ブロックに対応する実行通知命令および各条件実行命令群に対応する実行通知命令が埋め込まれる。
次に、本発明の実施の形態によるカバレッジ計測方法の具体例を図10を参照しながら説明する。
図10は、図9の実行プログラムを実行した際に、通知される識別情報の内容と通知順の例を示す図である。
まず、プログラム実行時に通知される識別情報とその通知順から、実行された実行通知命令の箇所を特定する。
本発明では、実行通知命令を階層的に使用するため、プログラム実行時に通知される識別情報は、ネスト構造になる。そのため、ソースファイルの開始点および終了点に埋め込まれた実行通知命令の識別情報の組合せでネストを解析し、同じ深さにある実行通知命令は当該ソースファイル内に存在する実行通知命令であると判断できる。同様に、関数の開始点および終了点に埋め込まれた実行通知命令の識別情報の組合せでネストを解析し、同じ深さにある実行通知命令は当該関数内に存在する実行通知命令であると判断できる。
例えば、図10において、4、5、9、10行目の識別情報(3−2)、(2−1)、(2−2)、(3−1)は、外部関数Aの開始点および終了点に埋め込まれた識別情報である(1−11)および(1−13)の組合せと同じ深さにあることから、全て機械語プログラムAに含まれる実行通知命令であると判断できる。同様に、7行目の識別情報(3−2)は、外部関数Bの開始点および終了点に埋め込まれた識別情報である(1−14)および(1−15)の組合せと同じ深さにあることから、機械語プログラムBに含まれる実行通知命令であると判断できる。
以上のように、実行された実行通知命令の箇所を特定することにより、当該実行通知命令と同一条件で実行される命令についても実行されていると判断することができる。
例えば、図9における3行目の実行通知命令(1−11)が実行されていることが判断できれば、当該実行通知命令と同一基本ブロック内の命令であり、且つ条件実行命令でない命令である6、10、11、12行目の命令も実行されていると判断することができる。
また同様に、図9における7行目の実行通知命令(3−2)が実行されていることが判断できれば、当該実行通知命令と同一条件が付与されている条件実行命令群である8行目の条件実行命令も実行されていると判断することができる。
また逆に、図9における9行目の実行通知命令(3−3)が実行されていないことが判断できれば、当該実行通知命令と同一条件が付与されている条件実行命令群である13、14行目の条件実行命令も実行されていないと判断することができる。
なお、実施例の中では機械語プログラムを分割する複数の単位として、ソースファイル、関数、基本ブロックの3つを使用した例で説明したが、単位はこの3つに限定したものではなく、単位数も3つに限定したものではない。
また、実施例の中では2命令までの並列実行が可能なプロセッサの例で説明したが、並列度は2命令に限定したものではない。
また、実施例の中では2種類の識別情報を使用した例で説明したが、識別情報の種類は2種類に限定したものではない。
また、実施例の中では実行通知命令の埋め込み処理を、第1の識別情報の付与、機械語プログラム中への配置、第2の識別情報の付与という順で実行する例を説明したが、埋め込み処理の順はこの順に限定したものではない。
本発明の技術は、条件実行命令を含むプログラムについても実行範囲の解析が可能なカバレッジ計測方法等として有用である。
本発明の実施の形態における実行通知命令の埋め込み方法の構成を説明するブロック図 本発明の実施の形態におけるソースファイル単位に対応した実行通知命令の埋め込み手順を示す図 本発明の実施の形態における関数単位に対応した実行通知命令の埋め込み手順を示す図 本発明の実施の形態における基本ブロック単位に対応した実行通知命令の埋め込み手順を示す図 本発明の実施の形態における条件実行命令単位に対応した実行通知命令の埋め込み手順を示す図 本発明の実施の形態におけるソースファイル単位に対応した実行通知命令に対する第2の識別情報の生成、付与手順を示す図 本発明の実施の形態における機械語プログラムの概念図 本発明の実施の形態における機械語プログラムに実行通知命令を埋め込んだ例を示す図 本発明の実施の形態における機械語プログラムから生成される実行プログラムの例を示す図 本発明の実施の形態におけるプログラム実行時に通知される識別情報の例を示す図 従来の実行通知命令の埋め込み方法の構成を説明するブロック図(その1) 従来の実行通知命令の埋め込み方法の構成を説明するブロック図(その2) 従来の技術において、機械語プログラム中の基本ブロック毎に実行通知命令を埋め込んだ例を示す図 従来の技術において、ソースプログラム中の分岐箇所毎に実行通知命令を埋め込み、機械語プログラムに変換、最適化した例を示す図
符号の説明
10 変換部
20 最適化部
30 実行通知命令埋め込み部
31 ソースファイル単位に対応した実行通知命令埋め込み部
32 関数単位に対応した実行通知命令埋め込み部
33 基本ブロック単位に対応した実行通知命令埋め込み部
34 条件実行命令群に対応した実行通知命令埋め込み部
40 プログラム生成部
100 翻訳部
P1 ソースプログラム
P2 実行プログラム

Claims (6)

  1. ソースプログラムを実行プログラムに翻訳する翻訳方法であって、
    前記ソースプログラムを機械語プログラムに変換する変換ステップと、
    前記機械語プログラムの冗長性を排除する最適化ステップと、
    前記最適化ステップの後に、自身が実行されたことを通知する実行通知命令を、最適化した前記機械語プログラム中に埋め込む埋め込みステップと、
    前記埋め込みステップで前記実行通知命令が埋め込まれた前記機械語プログラムに基づいて、前記実行通知命令を含んだ実行プログラムを生成するプログラム生成ステップとを備え、
    前記埋め込みステップは、
    前記機械語プログラム中の分岐命令や分岐先を含まない一連の命令列である基本ブロック毎の開始点を検索する第1の検索サブステップと、
    前記第1の検索サブステップにおいて検索した基本ブロック毎の開始点に実行通知命令を配置する第1の命令配置サブステップと、
    前記機械語プログラム中において、分岐命令とは異なる条件実行命令のうち、同一の条件が付与されている条件実行命令で構成される条件実行命令群毎の開始点を検索する第2の検索サブステップと、
    前記第2の検索サブステップにおいて検索した条件実行命令群毎の開始点に、条件実行命令群と同一の条件を付与した条件実行命令である前記実行通知命令を配置する第2の命令配置サブステップとを備え、
    前記プログラム生成ステップは、
    前記実行通知命令毎に対して、個々の実行通知命令を識別するための情報を生成する識別情報生成サブステップと、
    前記実行通知命令を実行することによって各実行通知命令を識別できるように、前記識別情報を各実行通知命令に付与する識別情報付与サブステップとを備えることを特徴とする翻訳方法。
  2. 前記第2の命令配置サブステップにおいて、
    処理対象とする任意の条件実行命令群について、当該条件実行命令群の開始点から、当該条件実行命令群を含む基本ブロックの開始点に向かって、当該条件実行命令群に付与されている条件の真偽値を設定する条件設定命令を検索する第3の検索サブステップと、
    前記第3の検索サブステップの結果、前記条件設定命令が存在する場合に、前記条件設定命令と当該条件実行命令群の開始点との間に、前記実行通知命令を配置しても既存の命令と並列実行可能な配置可能箇所を検索する第4の検索サブステップと、
    前記第4の検索サブステップの結果、前記配置可能箇所があれば、前記実行通知命令を前記配置可能箇所に配置し直す第1の配置変更サブステップと、
    前記第3の検索サブステップの結果、前記条件設定命令が存在しない場合に、前記基本ブロックの開始点と当該条件実行命令群の開始点との間に、前記配置可能箇所を検索する第5の検索サブステップと、
    前記第5の検索サブステップの結果、前記配置可能箇所があれば、前記実行通知命令を前記配置可能箇所に配置し直す第2の配置変更サブステップとを備える請求項1に記載の翻訳方法。
  3. 機械語プログラムに対する実行通知命令の埋め込み方法であって、
    前記プログラムを1命令以上の領域に分割するために用いられ、それぞれが包含関係にある複数の単位を生成する単位生成ステップと、
    第1の単位として、前記単位生成ステップで生成した複数の単位の中から任意の単位を選択する第1の単位選択ステップと、
    変換前のソースプログラムまたは変換後の機械語プログラムを前記第1の単位で分割するプログラム分割ステップと、
    前記プログラム分割ステップで分割した領域毎の開始点および終了点に、前記実行通知命令を配置する命令配置ステップと、
    第1の識別情報として、第1の単位に対応した前記実行通知命令全体に対して、前記機械語プログラム全体の中で唯一となる識別情報を生成する第1の識別情報生成ステップと、
    前記第1の識別情報を前記実行通知命令毎に付与する第1の識別情報付与ステップと、
    第2の単位として、前記単位生成ステップで決定した単位から、第1の単位に包含される単位を選択する第2の単位選択ステップと、
    第2の識別情報として、第2の単位に対応した実行通知命令毎に対して、前記第1の単位で分割した領域の中で唯一となる識別情報を生成する第2の識別情報生成ステップと、
    前記第2の識別情報を前記実行通知命令毎に付与する第2の識別情報付与ステップとを備え、
    前記単位生成ステップで生成した全ての単位について、前記の第1の単位選択ステップ、プログラム分割ステップ、開始点および終了点検索ステップ、命令配置ステップ、第1の識別情報生成ステップ、第1の識別情報付与ステップ、第2の単位選択ステップ、第2の識別情報生成ステップ、第2の識別情報付与ステップを実行することを特徴とする実行通知命令の埋め込み方法。
  4. 前記任意の単位において分割する領域の開始点と終了点が一対一で対応するかどうかを判定する対応判定ステップを備え、
    前記対応判定ステップの結果、領域の開始点と終了点が一対一で対応している場合は、当該単位で分割する領域の終了点に対する検索ステップ、命令配置ステップ、識別情報の生成ステップ、識別情報の付与ステップを省略する請求項3に記載の実行通知命令の埋め込み方法。
  5. 前記任意の単位において分割する領域の開始点が、当該単位を包含する単位で分割した領域の開始点と同一であるかどうか、または、前記任意の単位において分割する領域の終了点が、当該単位を包含する単位で分割した領域の終了点と同一であるかどうかを判定する重複判定ステップを備え、
    前記重複判定ステップの結果、当該領域毎の開始点が、当該単位を包含する単位で分割した領域の開始点と同一である場合、または、当該領域毎の終了点が、当該単位を包含する単位で分割した領域の終了点と同一である場合は、当該領域開始点に対する命令配置ステップ、識別情報の生成ステップ、識別情報の付与ステップ、または当該領域終了点に対する命令配置ステップ、識別情報の生成ステップ、識別情報の付与ステップを省略する請求項3に記載の実行通知命令の埋め込み方法。
  6. プログラムが複数のソースファイルから構成される場合に、各ソースファイルに対応したオブジェクトファイルの生成時には、識別情報がソースファイル間で依存し合う単位に対する識別情報の生成ステップおよび識別情報の付与ステップは未実施のままにしておき、生成された各オブジェクトファイルのリンク時に、識別情報がソースファイル間で依存し合う単位に対する識別情報の生成ステップおよび識別情報の付与ステップを実行する請求項3に記載の実行通知命令の埋め込み方法。
JP2005327028A 2005-11-11 2005-11-11 翻訳方法および実行通知命令の埋め込み方法 Expired - Fee Related JP4860240B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005327028A JP4860240B2 (ja) 2005-11-11 2005-11-11 翻訳方法および実行通知命令の埋め込み方法
US11/595,900 US7877743B2 (en) 2005-11-11 2006-11-13 Program translation method and notifying instruction inserting method
US12/962,075 US8402445B2 (en) 2005-11-11 2010-12-07 Program translation method and notifying instruction inserting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005327028A JP4860240B2 (ja) 2005-11-11 2005-11-11 翻訳方法および実行通知命令の埋め込み方法

Publications (2)

Publication Number Publication Date
JP2007133716A JP2007133716A (ja) 2007-05-31
JP4860240B2 true JP4860240B2 (ja) 2012-01-25

Family

ID=38042416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005327028A Expired - Fee Related JP4860240B2 (ja) 2005-11-11 2005-11-11 翻訳方法および実行通知命令の埋め込み方法

Country Status (2)

Country Link
US (2) US7877743B2 (ja)
JP (1) JP4860240B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8752026B2 (en) * 2009-06-01 2014-06-10 International Business Machines Corporation Efficient code instrumentation
US11334469B2 (en) * 2018-04-13 2022-05-17 Microsoft Technology Licensing, Llc Compound conditional reordering for faster short-circuiting

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359608A (en) * 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
JP2755154B2 (ja) * 1994-02-23 1998-05-20 日本電気株式会社 プログラム変換処理装置およびプログラム変換処理方法
US5471526A (en) * 1994-02-28 1995-11-28 Telefonaktiebolaget L M Ericsson (Publ.) Tracing with keys and locks on a telecommunication network
US5581696A (en) * 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
US5940622A (en) * 1996-12-11 1999-08-17 Ncr Corporation Systems and methods for code replicating for optimized execution time
US6106571A (en) 1998-01-29 2000-08-22 Applied Microsystems Corporation Relocatable instrumentation tags for testing and debugging a computer program
US6631363B1 (en) * 1999-10-11 2003-10-07 I2 Technologies Us, Inc. Rules-based notification system
US6539501B1 (en) * 1999-12-16 2003-03-25 International Business Machines Corporation Method, system, and program for logging statements to monitor execution of a program
JP2003005980A (ja) * 2001-06-22 2003-01-10 Matsushita Electric Ind Co Ltd コンパイル装置およびコンパイルプログラム
JP2003050716A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウエアデバッガとソフトウエア開発支援システム
US7110934B2 (en) * 2002-10-29 2006-09-19 Arm Limited. Analysis of the performance of a portion of a data processing system
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
JP2005122329A (ja) * 2003-10-15 2005-05-12 Matsushita Electric Ind Co Ltd ソフトウェアのリアルタイム解析方法
JP4934267B2 (ja) * 2003-10-17 2012-05-16 パナソニック株式会社 コンパイラ装置

Also Published As

Publication number Publication date
US20070113220A1 (en) 2007-05-17
JP2007133716A (ja) 2007-05-31
US8402445B2 (en) 2013-03-19
US20110078664A1 (en) 2011-03-31
US7877743B2 (en) 2011-01-25

Similar Documents

Publication Publication Date Title
KR20120068824A (ko) 데이터 처리 장치, 데이터 처리 방법, 프로그램 변환 처리 장치, 프로그램 변환 처리 방법, 프로그램 해석 처리 장치, 프로그램 해석 처리 방법, 이력 보존 장치, 프로그램, 컴파일 처리 장치, 및 컴파일 처리 방법
CN104123126A (zh) 一种用于生成合并冲突记录列表的方法和装置
JP2010287213A (ja) ファイル変換装置、ファイル変換方法およびファイル変換プログラム
JP5884657B2 (ja) プログラム、テストケース生成方法およびテストケース生成装置
JP4860240B2 (ja) 翻訳方法および実行通知命令の埋め込み方法
JP2008097249A (ja) プログラム中の命令列をより高速な命令に置換する技術
JP6394341B2 (ja) 計算装置、計算方法、および計算プログラム
JP2006301989A (ja) 計算機言語によるプログラムをブロック図から自動生成する方法と装置とプログラム
Popov et al. Piecewise holistic autotuning of compiler and runtime parameters
JP4039633B2 (ja) 最適化コンパイラ、コンパイル方法、コンパイラプログラム、及び記録媒体
JP6702072B2 (ja) 制御プログラム、装置、及び方法
JP4080809B2 (ja) データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法
JPH08227363A (ja) 分岐命令処理方法
WO2015114826A1 (ja) ダンプ解析方法、装置及びプログラム
JP2008299423A (ja) 情報処理装置および情報処理プログラム
US20100223596A1 (en) Data processing device and method
CN114296930B (zh) 一种分布式编译方法、系统、电子设备及存储介质
JP3852135B2 (ja) 形状モデラ用位相要素同定装置およびそれを用いた命令再実行装置
JP3637606B2 (ja) データ処理装置
CN110532577B (zh) 数字逻辑电路编译方法及装置
KR101894752B1 (ko) 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
JP2012123664A (ja) ビルド実行支援システム、ビルド実行支援方法、及びビルド実行支援プログラム
JP2015069220A (ja) 性能評価プログラム生成装置、方法、及びプログラム
JP5589726B2 (ja) ジョブ管理システム、ジョブ管理システム制御方法およびその制御用プログラム
JP6933063B2 (ja) 並列化方法、並列化ツール、車載装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110415

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: 20111025

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: 20111102

R150 Certificate of patent or registration of utility model

Ref document number: 4860240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141111

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

LAPS Cancellation because of no payment of annual fees