JPH05505692A - 変換コードを実行するための効果的エラー報告 - Google Patents

変換コードを実行するための効果的エラー報告

Info

Publication number
JPH05505692A
JPH05505692A JP92507852A JP50785292A JPH05505692A JP H05505692 A JPH05505692 A JP H05505692A JP 92507852 A JP92507852 A JP 92507852A JP 50785292 A JP50785292 A JP 50785292A JP H05505692 A JPH05505692 A JP H05505692A
Authority
JP
Japan
Prior art keywords
address
computer program
instructions
instruction
program
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.)
Granted
Application number
JP92507852A
Other languages
English (en)
Other versions
JPH0734178B2 (ja
Inventor
ロビンソン スコット ジー
シテス リチャード エル
Original Assignee
ディジタル イクイプメント コーポレイション
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
Priority claimed from US07/666,025 external-priority patent/US5307504A/en
Application filed by ディジタル イクイプメント コーポレイション filed Critical ディジタル イクイプメント コーポレイション
Publication of JPH05505692A publication Critical patent/JPH05505692A/ja
Publication of JPH0734178B2 publication Critical patent/JPH0734178B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 変換コードを実行するための効果的エラー報告本発明はスコツトG、ロビンソン 及びリチャードL、サイツによる199!年3月7日付は合衆国比8第07/6 66、025号「変換されたプログラムコードの命令細分性ヲ保存スルタメノ効 果的システムと方法(ILIPROVED SYSTEM AND IJETH ODFORPRESERVfNG lN5TRUCT[ON GRANULAR ITY FORTRANSLATED PROGR店C0DE)@Jの −B継続出願である。
関連特許出願の表示一本明細書における開示は下記の米国特許出願に関連してお り、その内容が参考として本明細書に含まれる。
スコツトG、ロビンソン及びリチャードL、サイフによる1991年3月7日付 は合衆国圧1!第07/666、071号[変換されたプログラムコードの命令 状態微細性を保存するための効果的システムと方法(IllrPROVED 5 YSTEIJ AND METI(OD FORPRESERVING lN5 TRUCTION 5TATE−AT(WICTY FORTR団SμTED  PROG循C0DE)J。
本特許出願の誼渡人に譲渡される、コード変換に関する下記の各特許出願も参考 として本明細書に含まれる。
リチャードL、サイフによる1991年3月7日付は合衆国出願第07/666 、070号「逆方向記号実行ヲ介する分岐導出(BRANCHRESOLLrr lON VIA BACKWARDS”AIBOLICEXECIjrlON)  J。
リチャードL、サイフによる1991年3月7日付は合衆国出願jNO7/66 6、216号「連続フード実行および翻訳によるプログラムコードの位置決め( LOCATINGPROGRAM C0DE BY 5UCCESSIVE C 0DE EXECUTION AND INTERPRETATION) JB リチャードL、サイフによる1991年3月7日付は合衆国出願第07/666 、210号rfffcねXさを利用しt:am−r−ドの誤り識別(USE O F 5TACK DEPTHTOIDENTIFY MACH[NE C0DE  MISTAKES) J。
リチャードL、サイフによる1991年3月7日付は合衆国出願第07/666 、223号「プログラムコードの相互イメージ参照(CROSS−[&[AGE  REFERENC[NG OFPROGRAM C0DE) J。
トーマスR,ベンソンによる1991年3月7日付は合衆国出願第07/666 、083号「積重ね高さを利用した、機械コードのアーキテクチュアおよび呼出 探準従属性ノaQ (USE OF 5TACK DEPT)I To IDE NTIFY ARCHITECTURE AND CALLING5TANDA RD DEPENDENCIES IN MACHINE C0DE)J。
トーマスRベンソンによる1991年3月7日付は合衆国出願下07/666、 084号「コンパイルされた32ビツトコードを64ビツト環境でサポートする 、レジスタ利用トラッキング(REGISTERUSAGE TRACKING  To 5UPPORT CoλIPILED 32−BITCODE IN  64−BIT ENVIRO隘旧任)」。
トーマスR,ベンソンによる1991年3月7日付は合衆国出願下07/666 、85号「異なるマシン構成のコードを変換をする場合のマツピングアセンブリ 言語引数t5照表(&(APPING ASSEAIBLY LANGEAGE  ARG[ar LIST REFERENCES INTRANSLAT[N G C0DE FORDIFFERENT &(ACH[NE ARCH[TE CTURES) J。
トーマスR,ベンソンによる1991年3月7日付は合衆国出願下07/666 、082号「異なるマシン構成のコード変換をする場合のトラッキング条件コー ド(TRACKING C0ND[T[ON C0DES IN TRANSL ATING C0DE FORDIFFERENT MACHmNE ARCH[TECTURES) J。
ダニエルし、マーフィによる1991年3月7日付は合衆国出願下07/666 、023号「プログラム起動時のプログラム単位のリンク(LINK[NG O F PROGRAM UNITSAT PROGRAM ACTIVATION )J。
リチャードL、サイフによる1991年3月7日付は合衆国出願下07/666 、196号「プログラムの分析および変換のための自動流れ図生成(AUTOI JAT[CFLOWGRAPHGENERATION FORPROGR店AN ALYS[S AND TRANSLATrON)」。
本特許出願の誼渡人に請渡される下記の各特許出願も参考として本明細書に含ま れる。
マークA、ハーデグ、ジェームスA、ウールドリッジ、スコツトG、ロビンソン 、ロナルドF、ブレンダ、ミツシェルV、アイリスによる1991年3月7日付 は合衆国出願下07/666、039号[コードデバッグ機能によって多重構成 環境で複数コードを実行するための効果的なシステムと方法([MPROVED  SYSTEM ANDMETHOD FOREXECUTING IJULT rPLE C0DS IN A IJULTI−ARCHrTECTURE E NVhRONMENT WITHC0DE DEBUGGING CAPABILfTY) J。
ダニエルし、マーフィによる1991年3月7日付は合衆国出願下07/666 、028号「二つの異なるプログラム単位間で呼出規定を自動インタフェースす るシステムコスト(SYSTEM AND METH叩FORAtjTOMAT ICALLY 、 INTER−FACINHCALLCONVENTIONS  BETWEEN TWODISS[MILARPROGRAM LN[TS)  J。
ジェームスA、ウールドリッジ、ロナルドF、ブレンダ、ヘンリN グリープ■ による1991年3月7日付は合衆国出願下07/665.888号「多重構成 環境においてコードデバッグに特に適した効果的なソフトウェアデバッグシステ ムと方法([MPROVED 5OFTWARE DEBAGGING SYS TEM AND METHOD ESPECIALLY ADAPsED FO R CODE DEBUGGING WITH[N A MULTI−ARCH[T ECTURE ENV[RO[) J。
マークA、ハーデグと、ミツシェルV、アイリスによる1991年3月7日付は 合衆国出願下07/666、022号「複数のコード実行におけるコード実行に 最適な効果的シミュレータシステムと方法、ならびに、多重アーキテクチャ環境 におけルテ/< ッ’I シ:)、テム(IMPROVED 5IIJULAT OR5YSTBJ AND MET)tOD ESPEC[ALLx ADAPTED FORC0DE EXECUTIN IN A MULTI− CODE EXEC石[ON祠DE囮印ING 5YST囮WITHIN A  MILT[ARCHITECTtJRE ENV[RO[) J 。
?−ニアA、ハーデグ、スコツトG、ロビンソン、ロナルドF、ブレンダ、ミツ シェルV、アイリスによる1991年3月7日付は合衆国出願下07/666、 072号「複数コード実行時にジャケットするコードインタフェースに適した相 互定義域命令呼出とデータ基準とを検出するための効果的なシステムと方法、な らびに、多重アーキテクチャ環境におけるデバッグシステム(IMPROVED  SYSTEM ANDMETHOD FORDETECTING CROSS −DOMArN [N−3TRUCTION CALLS AND DATA  REeERENCES ESPEC[ALLY ADAPTED FORC0DE INTERFACE  JACKET[NG IN A 1.[ULTt−CODd EXECLrr [0N AND DEBUGG[NG SYSTEM WITHIN A MULTI− ARCHlTECTURE ENV[RONMBJT) JB ロナルドF、ブレンダ、ミツシェルV、アイリスによる1991年3月7日付は 合衆国出願下07/666、752号「複数コード実行における相互定義域呼出 のジャケラティングに効果的なシステムと方法、ならびに、多重アーキテクチャ 環境にオケ6 テハック’、iステL (rMPROVED 5YSTElil  AND METHOD FORJACKET[NG CROSS| D(1(A[N CALLS IN A WLT[−CODE EXECUT[ ON AND DEBUGG[NG 5YSTEltl WhT)I[N A &IULT[−ARCH[TECTURE ENV[RONlllENT) J 。
ロバートv、ランダウ、ジェームスE、ジョンソン、ミツシェルV、アイリスに よる1991年3月7日付は合衆国出願下07/665.886号[ソフトウェ アの開発および試験用の新改良手順を採り入れた新コンピュータシステムを開発 するたメツ高速処Ei (FASTERPROCESS FORDEVELOP ING NEW CO&IPUTER5YSTEAISa[PLOY[NG N EW AND BETTERPROCEDURES FOR5OFrWARE  DEVELOPMENT ANDTESTING)J。
発明の背景 l、技術分野 本発明は、プログラムコードを異なるコンピュータシステム上で実行可能に適合 させるシステムおよび方法に係り、特に、ソースプログラム変換実行時にソース プログラム中の誤りを報告するシステムおよび方法に関する。
2、背景技術 初期のコンピュータプログラミングでは、コンピュータプログラムの命令は、マ イクロコードレベルで作成されていた。コンピュータプログラムの命令は、ソフ トウェア技術の発達と成長に伴って更に多くのタスクと組合わされ、複雑な命令 に対応する設計のハードウェア構造を備えたコンピュータで実行される、複雑な 単一命令となった。
コンピュータハードウェアの原価増大と共に性能か向上していく環境においては 、命令が複雑になることによって性能対価格比の受益が増す。その結果、複雑命 令セットコード(CISC)が広く容認されてきた。
しかしながら、命令の複雑化が進行するのに従って、実行速度を向上させたシス テムハードウェアの設計が難しくなってきた。Cl5Cに代わって、縮小命令セ ットコード(RISC)をRISCコンピュータのハードウェアアーキテクチャ と結合したところ、メカニズムとしては合格で性能対価格比が大幅に向上された 。
RISCシステムは通常、簡素化された基本命令を用いて所望の動作を指令する 。1個のRISC命令は一般に、−回のメモリアクセスで一動作を指定する。
また、RTSCシステムは通常、一つの基本命令に−レジスタを提供する。RI SC命令セットの命令は、このようにマイクロコードよりも高いレベルである。
これに対して、典型的なCl5Cシステムでは、1個の命令によって一連の複雑 な動作を指定でき、また、メモリへの直接アクセスが何回もできる。このように 、1個のCl5C命令で遂行される動作が、いくつものRISC命令を必要とす ることがある。
RTSCシステムは、一般に、利用できるハードウェアの原価と性能に関して、 より高速なシステム動作、よりよい全体システム性能、より低いシステムコスト を提供する、最適化ハードウェアおよびソフトウェアトレードオフで設計されて いる。
crscシステムからRISCシステムへ変換する場合の障害の一つは、C[S Cシステム用に開発さtLSRISCシステムでは利用できない数多のソフトウ ェアライブラリの存在である。コンピュータシステムのユーザが新しいコンピュ ータシステムの入手を選択する場合、ユーザが第一に考えることは、ユーザのア プリケーションプログラムのライブラリが新しいコンピュータシステムで使用ま たは使用可能に変換できるかどうか、また、ライブラリを交換した場合にかかる コスよりよい性能価格比を達成したいコンピュータシステムユーザにとっては、 RISCコンピュータシステム上で実行できるアプリケーションプログラムのユ ーザライブラリに適合または「移行)する経済的かつ効果的なメカニズムが提供 されることが、極めて重要である。
プログラムを移行する場合、ユーザはいくつかの方法を選択できる。再コンパイ ルまたは記録という方法があるが、これらの技術は通常、詳細機械依存性を有し ない、または、既存機械依存性を備えるが手動プログラミング修正によって削除 可能な、FORTRANなど高級關で書かれたプログラムの移行に用いられる。
また、再コンパイルまたは記録の際の、プログラム変更およびプログラム挙動保 証に関する全責任はユーザにある。
この他に翻訳という方法も利用できるが、この方法は通常、プログラム性能を実 質的に低下させるという欠点かある。更に詳しく述べれば、翻訳手順とはソフト ウェアプログラムのことであって、このプログラムは、1台のコンピュータ上で 作動し、一連の主体命令(異なる機種のコンピュータの命令であってもよい)を データとして読み込み、各主体命令ごとに指定動作を実行する。かかる翻訳手順 では、通常、1個の主体命令を変換するのに、1台のコンピュータで10〜10 0個の機械語命令が実行される。このように、1台のコンピュータ上テ機能的に 同等なコードを直接実行する場合と比較すると、実質的には翻訳手順の方がプロ グラム性能が劣る。
最も効果的かつ効率的な移行には、コード変換という方法もある。コード変換で は、既存プログラムからの各命令は移行先の機械の言語による命令に翻訳される 。従って、crscプログラムからRISCプログラムへの変換、更に総括的に は、変換後のコードが相対的縮小命令セットを有するようなプログラム変換では 、変換前はコード1個であった命令に対して、変換後は「複数」または「数多J のコードの命令が必要になる。
Cl5CからRISCへのコード変換に起因する問題の一つは、変換されたプロ グラムの実行がエラーによって打ち切られる場合、通常、エラーはRISCマシ ンの状態に基づくものである、という点である。しかしながら、高級Cl5Cソ ースコード関連のデバッグプログラムでは、エラーに関する情報はCl5Cvシ ンの状態によるものであると仮定する。デバッグプログラムでは、例えばC+S CソースコードをCl5Cオブジエクトコードにコンパイルするときに生じるデ バッグ情報を利用する。デバッグ情報には、通常、記号(ASCII)名と、数 字Cl5Cプログラムおよびデータアドレス記号とを対応する情報が含まれてい る。
デバッグプログラムはこの記号名の情報を利用し、記号名によって指定されるア ドレスのCl5Cマシンのメモリ内容の検査をプログラムに指示する。デバッグ 情報には、通常、Cl5Cオブジエクトコードの数字アドレスに対応するCl5 Cソースコードの行ぬに関する追跡情報も含まれている。Cl5CマシンでCl 5Cプログラム実行中にエラーか発生すると、Cl5Cマシンのオペレーティン グシステムはCl5Cマシンのハードウェアレジスタを読み込み、エラーの原因 となったCTSC命令のアドレスを判定する。オペレーティングシステムはこの アドレスをエラー報告プログラムに渡し、エラー報告プログラムは追跡1fNを 参照してエラーを生じたCl5Cソースコードの行Nαをプログラマに報告する 。
Cl5Cソースコードのコンパイルに関わるデバッグプログラムは、Cl5Cオ ブジエクトコードのアドレス、crsc命令、および、crscマシン中のハー ドウェアに基づくものであるため、RISCマンン上での変換プログラム実行中 はCl5Cソースコードのデバッグを実施しない。RISCマシン上で対応RT SCオブジェクトプログラム実行中のCl5Cソースコードのデバッグは、Cl 5CソースプログラムをRISCオブジェクトコードに直接コンパイルすること によって生じたデバッグ情報を参照するデバッグプログラムによって実行される が、この技術にはCl5Cソースコードの再コンパイルが必要である。また、C l5Cソースコードが失われたり、破壊されて再コンパイルが不可能になること もある。
発明の要旨 本発明は、概略的には、第一コンピュータプログラムを変換して第二コンピュー タプログラムを取得するとき、第二コンピュータプログラム実行中に発生したエ ラーを第一コンピュータプログラムの文脈に報告させるものである。これは、エ ラー発生時に第二コンピュータプログラムの実行が打ち切られると、エラーを生 じた第二コンピュータプログラム中の命令のアドレスである第一アドレスを判定 し、第二コンピュータプログラム中の命令の変換元の第一コンピュータプログラ ム命令の第ニアドレスを第一アドレスから判定し、エラーの発生を報告し2、第 ニアドレスを使用して当該エラーが第一コンピュータプログラム中の命令を関係 があることを示すことによって実施される。
第ニアドレス利用して、第一コンピュータプログラムがソースコードからコンパ イルされるときに生成される追跡情報と記号名情報を参照することによって当該 エラーが第一コンピュータプログラム中の命令と関係のあることを示せば、なお 好ましい。追跡情報は、第一コンピュータプログラム中のコンパイルされた命令 に対応するソースコードの行Nαを示すために参照されへ記号名情報は、第一プ ログラム中の命令を含むルーチンの名前または当該命令が利用する変数の名前と いった、エラーと関係のある記号名を示すために参照される。
好適実施例においては、第一プログラム中の命令のアドレスは、第ニブログラム 中の命令のアドレスからアドレス相関表と境界命令ビットマツプを参照すること によって確認される。このアドレス相関表は、第一プログラムの各命令のアドレ スと、前記各命令から変換された第ニブログラム中の命令セットにおける第一命 令のアドレスとを有するデータ項目を具備している。第一プログラム中の各命令 から変換された、第ニブログラム中の命令セットにおける第一命令は、 「境界 命令」と呼ばれる。第ニブログラム中の境界命令は、境界命令ビットマツプにお いてフラグによって第ニブログラム中の他の命令と区別される。第ニブログラム 中の第一アドレスと対応する第一プログラム中の命令の第ニアドレスを発見する には、アドレス相関表で第一アドレスを探して表から第ニアドレスを直接見つけ るか、あるいは、第一アドレスよりも小さい第二プログラム中最大のアドレスを 見つけるかする。表から第ニアドレスを直接見つけられない場合、第一アドレス と前記最大アドレス間の境界命令の数を数えながら境界命令ビットマツプを精査 する。次に、前記最大アドレスも含む表データ項目のアドレスの命令で始まる第 一プログラム中の同数の命令を精査しながら命令アドレスポインタを進めること によって、第ニアドレスを発見する。
図面の簡単な説明 本発明の他の目的および利点は、以下の詳細説明を読み、次の各図面を参照する ことによって判るであろう。
第1図は、(a、) (第一命令セットを備え、Xと指定される)第一コンピュ ータシステムで実行するアプリケーションプログラムを作成し、(b、)相対的 縮小命令セットを有する(Yと指定される)別のコンピュータシステムでこのア プリケーションプログラムを実行するために変換する、一般的方法を示す全体機 能ブロック図である。
第2図は、好適X−Y変換プログラムと、X−Y翻訳プログラムを実行してX命 令の細分性で入力XアプリケーションコードからY実行可能アプリケーションコ ードを生成する汎用コンピュータシステムの、一般的機能ブロック図である。
第3図は、第2図で示したX−Y変換プログラムの一般的流れ図である。
第4図は、Xコード変換によって取得さtxX命令の細分性の保存を保証するた めにYコードの実行を監視する命令細分性制御()GC)プログラムと共に実行 用YコンピュータにロードされるYアブリケーンヨンコードを備えたYコンピュ ータシステムの、機能ブロック図である。
第5図へ、!:第5図Bは、IOCプログラムで実行される好適機能ステップを 表す。
第6図は、X−Yコード命令変換とそれに対する非同期事象の関係とを記号化し た図である。
第7図は、例外事項に応答するYコンピュータ中のハードウェアのブロック図で ある。
第8図は、第4図のハードウェアと、Yコンピュータのによって実施されるオペ レーションシステム例外ハンドラルーチンとによって実施される動作の流れ図で ある。
第9図は、Yコンピュータのユーザモード例外レーチンで実行される手順の流れ 図である。
第10図は、XアプリケーションコードからXアプリケーションコードへの変換 中に生成され、本発明のエラー報告性実行時にYコード命令のアドレスから与え られるXコード命令のアドレスをめるために利用されるX−Yアドレス相関表の 概略図である。
111図は、XアプリケーションコードとXアプリケーションコードの命令と、 第1O図のアドレス相関表に記載されているXアドレスとYアドレスの間の関係 を表す概略図である。
第12図は、XアプリケーションコードからXアプリケーションコードへρ変換 時に生成され、本発明の好適方法実施中に使用される境界命令ビットマ、ノブの 概略図である。
第」3図は、本発明の好適な方法実施時に第10図のX−Yアドレス相関表と第 12図の境界ビットマツプを使用するための手順の流れ図である。
第14図は、Xアプリケーションプログラムのソースコードをコンパイルすると きに生成されるデバッグ!iF報のブロック図である。
第15図は、エラーがXアプリケーションフードの命令のいずれか一つと関係か あることを第14図のデバッグ情報を用いて示すための手順流れ図である。
本発明は種々の変更および代替態様か考えられるが、その特定実施例を例として 図示し、本明細書において詳述する。但し、それによってこの発明を記載特定態 様にのみ限定しようとするものではなく、むしろ、本願の請求項の定める発明の 範囲を逸脱しないあらゆる変更、同等、代替態様を網羅するものであると理解さ れたい。
好適実施例の説明 第1図に示したように、ソースコードで書かれたアプリケーションプログラムI Oは、Xコンピュータシステム12で実行されるユーザプログラムライブラリの 数多のアプリケーションプログラムのうちの一つである。Xコンピュータシステ ム12のハードウェアアーキテクチャは、プログラム10またはユーザライブラ リの他のアプリケーションプログラムの実行可能形式生成時に採用されたX命令 セットによる動作に適合されている。
プログラム10をYコンピュータシステムで使用できるように適合するためには 、プログラムlOの実行可能形式が、Xコンピュータシステム20のハードウェ アアーキテクチャに適したX命令セットを採用するX実行可能コード22として 提供される必要がある。
X命令セットが採用する基本命令は、通常、X命令セットのものより少なく、X コードからYコードへの変換する場合、「1個の命令を多数個の命令へ」変換す る必要かある。例えば、具体的説明のために第1図に詳細図示したように、Xシ ステムで■でアーキテクチャを採用し、Yシステムで米ディジタル・イクイップ メント社RISCアーキテクチャと呼ばれる縮小命令セットアーキテクチャを採 用することができる。いずれのアーキテクチャも、本願壌渡人である米ディジタ ル・イクイップメント社か制作した機器に実施されている。
第1図に示すように、間接経路または直接経路のいずれかでアプリケーションプ ログラムをX実行可能コード22に移行することができる。直接移行は、Yコン パイラ28とXリンカ30を利用することによって実行される。結果のX実行可 能コードは、参照数字22Bによって示す。Yコンパイラ28とXリンカ30か 開発されなかった場合、または、利用できない、あるいは、関連不利益のために 直接移行経路26を使用しない選択をユーザかした場合、間接経路24を使用し てXアプリケーションプログラムをYシステムに移行し、プログラム投資節約お よびシステム性能向上の両方を達成できる。
間接経路では、Xコンパイラ】6とXリンカ18によってプログラム10がXコ ンピュータシステム12に合った実行可能コード14に変換される。その結果、 Xコンピュータシステム12で実行できるX実行可能コード14ができる。X− Y翻訳プログラム32は、X実行可能コードを参照番号22Aで示されるX実行 可能コードに変換する。Yコードは縮小命令セントに基づいたものであるが、Y コードを実行してX命令細分性でXコード演算結果が正確に得られるようにコー ド変換が行われる。
第4図に参照される翻訳プログラム32を実行する際に、好ましくは、第2図の コード変換システム40を採用する。該変換システム4oには、プロセッサ42 、記憶装置44、変換のためにXアプリケーションコード43を入力する種々の 入出力装置(図示せず)を有する普通の汎用コンピュータが含まれる。
変換結果は本発明に従って、変換対象コードのハード保証を保存し、特に、実際 にYコードを実行するときにX命令細分性の保証保存を容易にするように並べら れるYコード45として、生成され−る。ハードcrsc保証についてはVAR ”保証によって実証される。但し、VAR″′保証については、冒頭に参照され た出願PD92−0063/1870−409で十分に説明されている。
記憶装置44には、普通のデータ記憶部46とコンピュータのオペレーティング システム記憶部48などが含まれる。X−Yコード変換で利用する基本構成要素 は、別の記憶部に記憶されている翻訳プログラム50である。入力Xコード43 は、Xコードリスト62として記憶される。また、X命令の順序付けを制御する ためにX命令配列基準52が記憶さね、命令動作規制子および命令オペランド規 制子の両方を変換可能にするためにX−X命令コードパターン54が記憶される 。
翻訳プログラムの一般的な流れ図の選好様式を第3図に示す。プログラム60で は、プログラムループ64を通る処理のために格納Xコードリスト62から逐次 X命令か順次入ってくる。
ループ64では、現在処理中のX命令に対応し、且つ、格納X−Yフードパター ン(第2図)によるX命令動作およびオペランド規制子が、機能ブロック66で 生成される。次いで、機能ブロック68で示されるように、後続の実Yコード実 行時にX命令細分性の保存を容易にする所定の基準に従って、結果のYコードか 順序付けられる。
第6図はX−X命令変換を図解したものである。
各X命令は、通常、人力データを得て、これを変更し、その結果を一時記憶に入 れ、メモリおよびレジスタのロケーションに適した状態に更新する、という単体 タスクを提供する。
1個のX命令が「多数個」のX命令に変換される場合、X命令を好ましく編成す るために用いられる配列基準52(第2図)は、現在変換中のX命令(グラニユ ール)に対応するYコードのX命令を下記の通りに分類して順序付ける。
1、Yコードの命令で、入力データを入手して仮想記憶に配するものを第一グル ープGlとする。
2、 Yコートの命令で、入力データに関して動作し、変更結果を生成し、これ ら変更結果を仮想記憶に格納するものを第ニゲループG2とする。
3、Yコードの命令で、Xの状態(メモリまたはレジスタ)を更新し、且つ、( 以下に定めた)予想例外に該当するものを第三グループG3とする。
4、 Yコードの命令で、Xの状態(メモリまたはレジスタ)を更新し、且つ、 (以下に定めた)予想例外に該当しないものを第四グループG4とする。
X状態には、Xメモリ状態とXレジスタ状態が含まれる。Xメモリ状態94およ びXレジスタ状fi97は、各々、Yマシン中の、被定義Xコードの記憶位置専 用に使用するメモリおよびレジスタ構造のことである。Xメモリ状態およびXレ ジスタ状態は、Xアーキテクチャから見えるメモリ状態およびレジスタ状態とも 言える。
X−Yコード変換に好適X命令配列基準を導入すると、次の理由からX命令細分 性の保存が容易になる。
l 第6図の図中矢印7Iで示される、X命令の最初の2グループGlと02の いずれか実行中のYコード実行時に非同期事象が生じた場合、非同期事象処理を 許可して、X命令のグラニユール境界である次のバックアップX命令(第6図Y O)にY命令カウンタPCをバックアップすることによってX命令細分性か保持 される。
再試行のために現Yコードシーケンスの実行を打ち切ることによって、現Yコー ドシーケンスのいずれかのG3グループ命令において予想される状態アクセス障 害か回避されるので、X命令細分性の破損が防止される。但し、Yコードが配列 されているため、消去されるのは仮想記憶位置のみで、X命令細分性は保存され る。これは、非同期事象処理完了後、命令細分性で処理可能になるまで現Yコー ドのグラニユールを待たせておいたからである。
2.01およびG2グループのX命令が実行された後で非同期事象が発生し、G 3グループにX命令かない場合、あるいは、第6図の図中矢印73で示されるよ うに、G3グループの全X命令か実行された後で非同期事象が発生した場合、G 4グループの命令は、いずれの状態例外もあり得ない、という洞察に基づいて実 行されているので、非同期事象の処理を短時間遅らせることができる。再び、X 命令細分性で処理か行われる。
G3グループに複数のX命令が含まれており(第6図では図示せず)、1個のX 命令実行後に非同期事象が生じたが、G3グループにはこれから実行するX命令 か1個以上残っている場合、X命令細分性を保存するために現Yコードグラニユ ールにメモリ微細性が提供される。
メモリ微細性は、本質的に、X命令の全メモリアクセスが起こる、または、全く 起こらないように見えることを要求する。また、メモリ微細性は、X命令細分性 に必要である。
メモリ微細性と、他の特殊ケースと同様、かかるケースでメモリ微細性を得るメ カニズムについては、本願と同時に提出される相互参照出願(1,870−04 09)で十分に考察されている。単純なワンライティングXを扱う好適実施例に おいては、Xメモリ微細性とX命令細分性が同時に得られる。
再び第3図を参照する。X命令コード機能がブロック68によって上述の通りに 順序付けられる。次いで、ブロック70で、現Y命令は、それが導出されたX命 令の境界であるのか、「Xグラニユール」マーカであるのが、判定される。連続 的に処理されるX命令について検出されるイエスまたはノーのビットは、機能ブ ロック72でX境界命令ビットに記憶される。
試験ブロック74では、変換処理の指定があるX命令が残っているかどうかチェ ックする。そのようなX命令がある場合、ループが繰り返される。すべてのX命 令の変換か終わるとループ繰り返しか終了さ楳機能ブロック76で示す通り、蓄 積されたYコードが出力可能になる。
下記の2つの特殊例はVAR’アーキテクチャのCl5C命令によって、本発明 による変換機能を例証する。
例■: INCL (R1)+ この命令は、アドレスがR1に含まれているメモリの長ワード(4バイトまたは 32ビツト)に1を加え、次いで、次の長ワードを指定するようにR1を増加さ せる。下記のRISC(Y)コードは、既に説明済みの配列基準で動作する翻訳 プログラムから生成したものである。
ldl r23.(rl) : アドレス(R1)−R23のメモリ内容をロー ドする。
addl r23. Il、 r24 : R23に−1を加えてR24にする 。
stl r24.(rl) : アドレス(R1)のメモリにR24を格納する 。
Ida rl、4crl): 次の長ワードを指定するように、R1に4を加え る。
例2: MOVL (R1) 十、(R2)+ この命令は、R1の内容によってアドレス指定されたメモリの長ワードを、R2 の内容によってアドレス指定された長ワードに移動するものである。R1とR2 は、いずれも、命令開始時に最初に1つの長ワードを指した後、次の長ワードを 指定するように増加させる。下記のRISC(Y)コードは、既に説明済みの配 列基準で動作する翻訳プログラムから生成したものである。
ldl r23.(rl) : アドレス(R1)−R23のメモリの内容をロ ードする。
stl r23. (r2) : (R2)の位置のメモリにR23の内容を格 納する。
lda rl、4(rl) : 次の長ワードを指定するように、R1に4を加 える。
1dar2.4(r2) ; 次の長ワードを指定するように、R2に4を加え る。
保証X命令細分性で結果Yコードを実行するために、Yコンピュータシステム2 0(第1図)に対応するYプロセッサ80によって、保存保証X命令細分性で結 果Yコードが実行される。Yプロセッサ80には、普通のデータ入出力装置82 とインタバルクロックが結合されており、これらの装置は、折々、Yコード実行 からプロセッサ動作の一時転換を要求する非同期事象を構成する割込みを発生す る。(第4図)保証X命令細分性が無ければ、前記たたは他の割込みによって生 じるプロセッサの転換で、Yコード実行のX命令細分性が破壊されることもある 。これは通常、割込み後(但し、現Y命令によってメモリ状態が変更される以前 )の予想Y命令入力の変化のために生ずる。
第4図に示した通り、ブロック86は、入力装置から、Yプロセッサ8oに結合 されたメモリシステム90の1セクシヨン88への生成Yコードの入力を示し、 ブロック87は、Yコード実行の結果として出力装置用に生成されるデータ出力 を示す。メモリシステム90には、普通のデータ部92、および普通のオペレー ティングシステム部94も含まれる。
命令細分性制御プログラム(TGC)96は、参照番号96で示される別のメモ リ部に記憶される。Yコード実行時のIOCプログラム96の動作は、第5@A および第5図Bの流れ図で更に完全に表示される。
IOCプログラム96(第5図A)は、非同期事象の発生の指示98から開始す る。非同期事象は、一般に、変換されたXコードから見えるX状態変化を潜在的 に発生できる割込みによるY命令ストリームの転換、と定義される。非同期事象 とY命令のXグラニユールとの関係を図示する第6図を再び参照する。下記はY 命令ストリームで非同期事象の相互作用を例示するものである。
正常な実行: YOY2 Y2 Y4 Y5X命令境界 非同期事象実行: YOYI Y47 Y48 Y49事象発生 IOCプログラム96は、X状態において何らかの変更が実行される以前に、Y 命令アドレスをYl(Y2か以下に定義の通りに予想例外を有していれば)また はY3(Y2が予想例外を有していなければ、Y2を実行することによって)ζ 二境界合わせしなくてはならない。
再び、第5図Aの流れ図を参照する。機能ブロック100で非同期事象処理時に 一次保留が設けられており、機能ブロック102で、非同期事象時に処理される (PC−AEで示されている)Y命令のメモリアドレスか記録される。
次に、ブロック104で、先に参照されたビットマツプがチェックさね、Y命令 PC−13がX命令境界であるかどうか、判断される。X命令境界である場合、 試験ブロック106と、IGCプログラムを経路107経由で、Xコード命令細 分性を壊さずに非同期事象の処理を再開するブロック20gに送る。
Y命令PC−AEがX命令境界でない場合、機能ブロック11oはY命令カウン タPCを、X命令境界である前後のY命令に合わせる。上述の非同期事象処理の ため、プログラム96はプログラム経路111を通ってXコード命令細分性を壊 さずに非同期事象の処理を再開するブロック108に進む。この例では、Y命令 のすべてがX命令グラニユール内で実行されずに、X命令細分製の保存がプログ ラムブロック110の動作によって得られた時点で非同期事象が発生した。詳細 は、第5図Bに記載されている。第一5図A中のマーカ“A″と“B”は、第5 図Bの詳細ブロックを第5図Aの流れ図に入れる位置を示す。
第5図1において、X命令境界である次のY命令を見つけるためにプログラムル ープ213の機能ブロック】12でY命令の順方向精査を実施する。試験ブロッ ク114で、順方向に精査されたY命令をチェックして、残っているY命令を実 行する前の割込み処理によって、同一非同期事象の組付けで対応Xコードを実行 させた場合に生じた結果と異なるYコード実行結果を出せるかどうか、判定する 。
各順方向Y命令試験において、非同期事象の処理が許可されてYコードシーケン スの実行が再開された場合に、Y命令の試行によって例外状態が生じるかどうか を試験ブロック114で判断することが好ましい。一般的には、ある命令を完了 できない場合、その命令は例外を有している。下記は、順方向Y命令に特定した 場合に、X境界である次の先行Y命令に対してYコード打切りを発生する例外の 一般分類である。
1、)アクセス制御違反、ページ障害といった記憶域管理例外。
2、)浮動小数点オーバフロー障害、またはゼロ障害による分割のような、演算 例外 3、)違反命令コードまたは旬切点命令コードといった、命令例外本発明の好適 実施例においては、変換されるコードに適用される例外のリストを、実行中にI OCプログラムにアクセス可能な記憶装置に置いた。実行の判定は、このように 、記憶されている例外リストに各々の順方向精査Y命令を対照することによって 行われる。
下記は例外ケースの例である。
非同期事象によって共有メモリ位置が増加される。
INCL@#33でロケーション33を増加する。
RISC命令は次の通りである: IDL R23,33(R31) : R23をロケーション33からロードす る。
[DA R23,1(R23) ; R23の内容に1を加える。
STL R23,33(R31) : R23の結果をロケーション33に記憶 する。
LDA命令とSTL命令の間に非同期事象が生じ、非同期事象の処理によってロ ケーション33を増分する場合、非同期事象時の増分は、STL命令で命令スト リームが再開されるときに失われる。
下記は、非例外ケースの例である。
TNCL R1でR1を増加する。RTSC命令は次の通りである:IDA R 1,1(R1) ; R1を増加させる。
この場合、例外の機会はない。
順方向精査の連続Y命令試験において、例外を示すY命令が無い場合(ブロック 116) 、残りのY命令が実行された後に、上述のようにX命令細分性が損な われることなくブロック108(第5図A)による非同期事象処理が可能になる 。
一方、順方向精査Y命令かブロック118の試験で例外を示した場合、機能ブロ ック118はX命令境界である次のバックアップY命令にYプログラムカウンタ をバックアップするので、X命令細分性が損なわれることなくブロック10B( 第5図A)による非同期事象処理が可能になる。この方法により、X命令細分性 の破損可能性は排除されるため、X命令細分性が保証される。
状態に対する書込みを有しない命令、また、単一整列長フルワードまたはりオツ ドワード書込みだけの命令を変換する場合を要約すれば、バイト書込みまたは非 整列書込みの問題、および、インタロックに関する問題はない。唯一の問題は、 全シーケンスが実行しているように見えるか、いずれのシーケンスも実行してい ないように見えるか、のいずれかしかない、という点である。Cl5C−to− RISCの場合のように制限された変換の場合、RISC命令の第一および第ニ ゲループがメモリまたはレジスタ状態の更新以外のあらゆるCl5C作業を実施 し、RISC命令の第三グループに完全整列長ワードまたはクオツドワードに対 するゼロまたは1個のRISK記憶命令を含み、RISC命令の第四グループに 単純なレジスタ移動だけを含む。
第二命令グループ完了以前に中断された変換シーケンスは、各々の変換C[SC 命令のコードの最初を示すビット表を用いてシーケンスの最初から強制再開させ られる。第二命令グループが完了後で、第三命令グループ完了以前に中断された 変換シーケンスは、単純なレジスタ移動で第三命令グループを強制的に完了させ られる。
実影響は、他の中間変換シーケンスを伴わずに最初から最後までシーケンスを実 行するか、第二命令グループ完了前にシーケンスを中断して、後で最初から再試 行するか、という点である。この場合も、単一プロセッサマシン上の1または2 バイト非インタロック書込みを適用する。変換シーケンスは状態書込−イ1正− 書込シーケンスを含み、単一書込みは第三グループの命令である。
本発明は、更に細目には、Xコンピュータシステムの変換であるYコンピュータ プログラムの実行中に、第1図のYコンピュータシステムを作動する方法に関す る。換言すれば、本発明は、更に詳細には、ソースプログラムlOか間接経路2 4に沿ってY実行可能コードに移行されるときのエラーの報告に関する。このと き、Xコンパイラ16によって発生されるデバッグ情報には一般的にX実行可能 コード中の命令のアドレスか含まれる。下記に更に詳しく説明するが、例外ハー ドウェアおよびY実行可能コード22Aが編成さね、Yコードアドレス上で動作 する。本発明は、エラーを生じるXコード命令の第一アドレスと、該変換Xコー ド命令に対応するXコード命令の第ニアドレスとの間を連結するものである。
この連結は、Yプロセッサ(第4図80)のハードウェアの例外信号で開始し、 Xコード命令の指示に関係するエラーの報告で終了するエラー処理手順て利用さ れる。
第4図によれば、複数の例外人力131のいずれか1個の例外信号に応答するた めのYプロセッサ(第4図80)のハードウェアは、13oで概括的に指定され ている。例外信号には、例えば、ハードウェアの故障を知らせるパリティニラ− 信号、メモリアクセス命令に起因するメモリ例外、演算命令に起因する演算論理 からの演算例外が含まれる。
本発明は、更に詳細には、演算論理装置t132からの演算例外のような例外を 生じるアプリケーションプログラムのエラーを報告することに関する。演算例外 には、例えば、大きすぎて所定の整数または浮動小数点の形式に収めきれないこ とによる、整数または浮動小数点オーバフロー、供給除数が0である、0による 整数または浮動小数点除算、小さすぎて所定の浮動小数点の形式で表せないこと による、浮動小数点下位けたあふれ、が含まれる。
たりするものと、例外状態による例外信号の発生を可能にするものがある。この 機能は、ANDゲート133によって第7図に図示されている。
Yプロセッサが応答できるのは、随時、ただ1個の例外入力に対してだけである 。複数の同時例外信号が発生するような状況を処理するために、いくつかの信号 の中から1個の信号を選択する優先順位エンコーダ134で例外人力131を受 信する。優先性が認められた例外信号は、優先順位エンコーダ134によって提 供されるコードで指示される。
例外人力131は、ORゲーH35と組み合わせられて、制御論理136で認識 される例外信号を提供する。制御論理136は、Xコード命令の実行を一時的に 中断し、個々のレジスタまたは伝送ゲート137.138.198からの例外に 関するデータ収集を制御する。例外に関するデータには、例外を生じる命令のY コードアドレス(PC−AE)である「例外PCJ、例外を生じる命令実行時に プロセッサの状態を示すプログラム状態長ワード、例外の種別を定義する例外種 別情報が含まれる。演算例外の場合、例えば、演算論理装置132によって演算 例外種別を示すコードが提供される。優先性のある例外のコードに対して、マル チプレクサ+40が優先順位エンコーダ134で選択された例外の例外種別情報 を選択する。
制御論理136により、例外情報は、データバス14】上に順次置かれ、核スタ ックメモリ蓄積される。次いで、優先順位エンコーダ134で選択された例外の コードに対して、例外ディスバッチ表142から対応例外ベクトルが読み取られ 、プログラムカウンタ143にロードされる。次いで、制御論理136はプログ ラムカウンタ143の例外ベクトルで始まる命令実行を開始する。
第8図には、例外処理のためのオペレーティングシステムルーチンと関係のある 第4図のハードウェアの動作を詳細に示す流れ図150が示されている。第7図 の説明で記載した通り、例外が生じると、第7図のハードウェアは、第8図のス テップ+51に記載のように命令の実行を中断し、ステップ152に記載のよう に核モードスタック上に例外PC1例外PSL、例外種別情報を置き、ステップ 153に記載のようにディスパッチ表の対応例外ベクトルでプログラムカウンタ をロードする。この場合、例外ベクトルは、オペレーティングシステムの「核モ ード」の例外ハンドラである。オペレーティングシステム例外処理ルーチンは、 ステップ154にて、該例外が、ただのオペレーティングシステムではなくユー ザプログラムによって処理される「ユーザモード例外」であるかどうかをチェッ クすることによって開始する。命令の実行に対して発生するハードウェアエラー は、例えば、通常はユーザモードエラーでは育り得ず、オペレーティングシステ ムはステップ155にて例外を処理する。ユーザモード例外の場合、ステップに て、核モードスタックおよびYプロセッサ中の汎用レジスタ上に置かれた例外情 報がユーザモードスタック上に置かれる。最終的にステップ157にて、実行は 、例外処理ように定義されたユーザモード例外ルーチンにジャンプする。
第9図には、ユーザモード例外ルーチンのフローチャート160が示されている 。最初のステップ161で、Xマシン状態情報が集められる。換言すれば、Xマ シン状態の適応モデルはYマシンレジスタおよびユーザメモリにて再構成される 。INCB−(R1)X−code命令のYコードの特定例について下記に詳細 説明されるように、Xコード命令は、ステップ161にて、Xマシン状態の適応 モデルが再構成できるような様式でYコードに変換される。つぎにステップ16 2にて、例外を有するXコード命令のYアドレスが、本発明による方法で後でエ ラー報告に利用できるように、メモリロケーションY ADDRにセーブされる 。
第51ffJAのステップ106と110に関連して上記に説明された通り、Y −アドレスポインタPC−AEはステップ163と164にてXグラニユール境 界に合わせられる。これによって、状態ハンドラプログラムがあるときに境界合 わせされたY−アドレスポインタPC−AEからプログラム実行を回復および継 続できる。例外種別に対する状態ハンドラの可用性は、ステップ165にてチェ ックされる。かかる状態ハンドラが使用可能である場合、実行はステップ166 の状態ハンドラに分岐する。使用不可能な場合はステップ167にて、ユーザモ ード例外ルーチンが、エラーを生じた変換Xコード命令に対応するXコード命令 のアドレスに入手する。Y ADDRに対応するX命令アドレスを入手するため の好ましい方法は、第13図に関連して下記に詳述する。
ステップ168にて、エラーはY ADDRに対応するXアドレスを有するXて 下記に詳述する。一般に、ステップ168を実施するYコードプログラムを入手 するには、Xコード計算装置でXコードアプリケージタンプログラムが実行され るときに発生するエラーを報告するための既知のXコードプログラムを変換する 。また、エラー原因の命令のアドレスとしてX命令のアドレスを引用するように 、引用する他のXマシン状態情報がステップ181で収集されたXマシン情報で あるように、該変換プログラムを多少修正する。従って、本発明の重要利点の一 つは、既存のXコードデバッグルーチンが翻訳し、Yコードコンピュータシステ ム上で作動する変換アプリケーションプログラムのデバッグのために多少の修正 を施して利用できるようにすることである。
本発明の好適実施例においては、Y ADDRに対応するX命令アドレスを入手 するためにX−Yアドレス相関表を使用する。第1O図に示すように、X−Yア ドレス相関表170には、Xコードアプリケーションプログラムの個々の命令の アドレス172と、Xコードアプリケーションプログラムから変換されたXコー ドアプリケージタンプログラムの対応命令のアドレス173とを各々存する項目 171が含まれている。例えば、各アドレス172.173は、32ビツトの長 ワードである。表中の各Xアドレスの命令がYコードアプリケーションブログラ ムの一連のXコード命令に変換された場合、表中項目の対応Xコード命令アドレ スは、一連の命令の最初のアドレスである。
Xコードアプリケーションプログラムの命令アドレスは、必ずしもすべてがX− Yアドレス相関表170に含まれていない方が好ましい。さもなければ、表が大 きくなりすぎてかなりのメモリ空間を費やし、表のサーチに長い時間を労するこ とになる。本発明によるエラー報告を利用すれば、更に、Xコードアプリケーシ ョンプログラムの部分変換を実行する際にXコードインタープリタからリターン するために表170を使用できる。常時完全な変換が望ましいが、Xコードアプ リケーションプログラム中ですべてのXコードを発見することの困難さにより、 必ずしもいつも完全な変換ができるわけではない。そのような場合、表170の Xコードアドレスが、Xコードアプリケーションプログラム中のXコードの基本 ブロックのエントリポイントに一致すれば、Xコードインタプリタは、変換のY コードの実行に効率的にリターンできる。各基本ブロックは、該基本ブロックの 最初の既知の単一エントリポイントを育する一連の連続命令で構成されている。
実行は、基本ブロックの最初にのみ転送さネヘまた、基本ブロックの最後からの み転送される。このような状況下での部分変換およびインタープリタの動作は、 冒頭に参照したリチャードL、サイフによる1991年3月7日付は合衆国出願 第07/666196に詳しく記載されており、該明細書の内容は参照として本 明細書に含まれている。
第11図には、 rMAIN」と呼ばれるXコードアプリケーションプログラム の一部例が、プログラムの基本ブロックを図示するため、流れ図で記載されてい る。第一基本ブロックは、X −lN5TRUCTION−1から成っている。
第二基本ブロックは、X−lN5TRUCT[ON −2,X−[N5TRUC TIQN −3,X−1NsTRUcTION −4から成っている。第三基本 ブロックは、X −lN5TRUCTION −5から成っている。
第四基本ブロックは、X −lN5TRUCTION −6から始まっている。
第if図に示されているXコード命令と、それに対応するYコード命令Y−IN STRUCT[ON −1〜Y−INSTRUCTION −14の相関は、第 10図のX−Yアドレス相関表170のXコードアドレスとXコードアドレスの 間の相関である。
本発明好適実施例においては、X−Y相関表の項目でY ADDRか見つけられ ない一般的な状況において、Y ADDR命令に対応するXアドレスを入手する ために境界命令ビットマツプも使用する。第12図に、境界命令ビットマツプ1 85の好ましい形式か示されている。フラグ186のような単一ビットフラグが 長ワード186のような長ワードにバックされている。各フラグは1個のXコー ド命令に対応しており、該フラグは対応Xコード命令が境界命令である場合に翻 訳プログラム(第1図32)によってセットされる。
境界命令ビットマツプ183中のフラグもセットされてVAX” Xコードの「 人為Jグラニユール境界を指示することが好ましい。人為グラニユール境界を指 示することは、 「正確な」 トラップを有するVAX” Xコード命令を、正 確なトラップを育しないRISCXコード命令に変換する場合に特に育意義であ る。
命令の実行によって、例外の可不可に関係なく(例外信号の発生を除く)例外状 態が生じたときに同じ結果が出るなら(f、その命令は正確なトラップを育して いる。好ましいRISCコンピュータシステムにおいては、付加回路の複雑さと 実行サイクルで、例外状態検出後に演算命令の計算を完了する必要があるので、 演算命令は正確なトラップを育しない。但し、プログラマが正確なトラップのエ ミュレートを希望すれば、一対の命令で実現される。動作は、最初に、命令によ ってトラップを不可能にした状態でコーディングさ渋次に命令によってトラップ を可能にした状態でコーディングされる。RISCYコードのX命令細分性を保 存するために、命令によってトラップが可能になった後で、[ドレーントラップ J (DRA[NT)命令がコーディングされる。RISCコンピュータシステ ムでは、トラップを可能にする命令と該トラップを可能にする命令の次の命令と を一緒に含む、複数の命令が同時に実行されることがあるので、DRAINT命 令は、トラップが発生時にXマシン状態か容易に第9図ステップ161に収集さ 札変換されたXコード命令の完了に対応する適応Xマシン状態を形成できること を確認する。
Xコード命令から、トラップ可能Xコード命令を含む一連のXコード命令への変 換の一特殊例を下記に示す。
タイトル 増分バイト例コード 二次のコードを複製 INCB−(R1)、VAX”細分性、結果の記憶にPA Lルーチン使用;=====)グラニユールVAX”境界BIS R31,R3 1,R24;干渉の計数をクリアTOP:RS R31;割込みまたは例外を試 験するためのPALルーチンで使うフラグをセッ ト LDQU R16,−1(R1);恐らく境界合わせされていないLDA R1 7,−1(R1);バイトの境界合わせに用いるアドレス EXTBL R16,R17,R18;バイトを0OOOOOOAにSLL R 18,#56. R28、バイトをAOOOOOOOにBIS R31,#1. RI9.定数1を入れるSLL RI9.#56.R19; 10000000 ADDQ R18,R]9.R16;BOOOOOOOに増分(トラップ無し) SRL RI9. #56. RIR、バイトをAOOOOOOOにCALL  PAL TRN STB 、R17の7ドレスでR16のバイトを記憶 BEQ RO,[lfT’ERFERE :失敗、1分+11t6;フールブラ ンチ予測 5UBQ R1,#1.R1:自動減分(トラップ無し)を実施; ===== )人為グラニユール境界ADDQ/V R18,R19,R16:動作を繰り返 し、あればオーバフロートラップを入手 DRAINT 、あればトラップのために待機; =====>グラニユールV AX”境界:ループ反復が多すぎないか確認 INTERFERE;ADDQ R24,#I、R24; ;干渉増加::計数 CMPULE R24,#255. RO、;Lばら<コニl:?BNE RO ,TOP ; ;再試行 BUG CHECK ; ;打切り、、。
、END 本例では、ADDQ命令は、完全な演算結果を提供するために最初はトラップ不 可状態で発生し、2度目は一連のYコードの最後にトラップ可能状懸でDRAI NT命令の直前に発生する。このトラップ可能命令のアドレスは、上記で「人為 グラニユール境界Jと記載されており、そp対応フラグは、境界命令ビットマツ プにセットされている。これにより、Xコード命令(可能トラップ以外)の結果 は人為グラニユール境界で完了するため、割り込み処理時の効率が向上する。従 って、トラップの直前に割り込みが発生したような場合、PCAEは第5図Aの ステップ110にて人為グラニユール境界に合わせらtt、Xコード命令から変 換されたYコードの最初において境界命令を完全バックアップすることなくXコ ード命令細分性を保存できる。
第13図に、X−Yアドレス相関表(第10図]7o)と境界命令ビットマツプ (第42図185)を用いてYコードアドレスY ADDRに対応するXコード アドレスを発見する好ましい手順の流れ図190を示す。最初のステップ191 にて、X−Yアドレス相関表を探し、Y ADDRに等しいか、それより小さい 表中最大Xコードアドレス(Y ADDRMAX)を発見する。次に、ステップ 192にて、メモIJロ’r−ソーxンX−ADDRESSの内容を、Y AD DRMAXを含む表項目のXコードアドレスと等しく設定する。次に、ステップ 193において、Y ADDRMAXかY ADDRと等しい場合、X−ADD RESS中の所望のXコードアドレスで第」3図の手順が終了される。等しくな い場合は、ステップ194にて、メモリロケーションC0UNTの内容がクリア され、Y ADDRとY ADDRMAXの間のYコード境界命令数の計数が開 始される。これは、境界命令ビットマツプ精査中に実行される。
ステップ195にて、(Y ADDR)に対応する位置でビットマツプのフラグ か試験される。フラグかセットされると、ステップ+96にて命令の操作符号Y  ADDR+4で(Y命令アーキテクチャでは命令の長さは4バイトなので)検 査され、DI’2ATNT命令かどうか確認される。この場合、Y−ADDRの 命令はトラップ可能な命令であり、ステップ195で発見されてセットされた対 応フラグは、人為グラニユール境界のフラグである。フラグでセットされたが、 人為グラニユール境界のフラグではない場合、ステップ197にてC0UNTか lだけ増加される。
かどうかを試験するために、Y ADpRとY ADDRMAXを比較し、YA DDRがY ADDRMAXより大きい場合、ステップ195にて精査が続く。
小さい場合、ステップ200にて、C0UNTの値がゼロと比較される。
計数がゼロである場合、X ADDRESSの値はXコード命令の所望のアドレ スであり、第9図のステップ168にて実行が継続される。ゼロでない場合、ス テップ210にて、X ADDRESSはXコード命令デコードポインタとして 使用され、X命令1個を構文解析することによって進められ、ステップ202に てC0UNTが1だけ減ぜられる。計数された数のX命令の構文解析が終わるま でステップ200.201,202が繰り返され、X ADDRESSは所望の アドレスに進められる。
第14図に、Xコードアプリケーションプログラムがコンパイルされた場合に発 生されるデパック情報220のブロック図を示す。任意のXコード命令アドレス に対応するソースコードの吊0.を報告可能にするため、デパック情報には追跡 情報221が含まれる。追跡情報には、例えば、ソースコードの容量0.に関係 のあるXコードアドレス範囲の記録リストが含まれる。Xコードアドレス範囲は 、ソースコード行からコンパイルされるXコード命令のアドレス範囲を示す。
コンパイラによっては、リンカ(第」図18)によってリンクされるソースコー ドモジュールを分離するものもある。この場合、コンパイラはモジュール名と関 連Xコードアドレス範囲を記載するモジュール表(図示せず)を生成する。この 場合、コンパイラは、各モジュールごとに独立した追跡情報表も生成する。
デパック情報220には、また、Xコードアプリケーションプログラムで参照さ れたメモリアドレスとスタックロケーションを備えたアプリケーションソースコ ードにて発生する記号名と関係のある記号名情報も含まれる。記号名情報z2に は、例えば、ソースコードの各大域変数と関係のあるXコードアドレスの記録と 、ソースコードの各ルーチンに関係のあるXコードアドレス範囲の記録が含まれ る。また、各ルーチンは、ルーチン内の各局所変数のスタックフレームオフセッ トの記録数とルーチンを関連付けることもある。記号名情報222の記録には、 ASCE I Xコードで記号名を含む記号例223に対するポインタも含まれ る。
第15図では、第14図のデパック情報を利用して、エラーと、エラーを生じた Xコード命令のX−ADDRESS々の関連を報告する、好ましい手順をしめす 。ステップ231において、追跡情報(第44図221)の記録を調べ、X−A DDRESSを含むアドレス範囲の記録を探す。かかる記録か発見されたら、ス テップ232にて、記録中のソースコードの行No、がプログラマまたはユーザ に報告される。ステップ233にて、例外種別情報からエラ一種別が判定さ娠プ ログラマまたはユーザに報告される。次に、ステップ234にて、記号名情報の 記録からエラーと関係かある記号名が調査される。例えば、ルーチンの記録から 、X−ADDRESSを含むアドレス範囲の記録が調査される。関係のあるルー チンの名前が発見されると、ステップ235にて、その種別とASCII記号列 で報告される。記号名がサブルーチンである場合、ステップ236にて、エラー 報告はステップ237へ続く。ステップ237では、(第9図のステップ161 で収集された)Xマシン状態情報のスタックか調べられてサブルーチンで終わる 呼出ルーチンのチェインが追跡さね、それをプログラムまたはユーザに報告する 。
ステップ234と235では、また、エラーに関係のある大域変数および局所変 数を発見して報告する。例えば、オーバフローまたは下位けたあふれ算術エラー の場合、X−ADDRESSのXコード命令と、後続の命令をい(つか検査して 、演算結果が格納される大域または局所変数の結果アドレスを特定しようとする こともできる。ゼロによる除算エラーの場合は、その直前の命令をいくつか検査 して、除数が発生した大域または局所変数のソースアドレスを特定しようとする こともてきる。
第15図の手順を利用して報告されるエラーメツセージの例には、下記か含まれ る。
LINE 200 INTEGER0VERFLOW tN 5UBROtJT INE ” DIV[DED″WHEN CA比εDBYROUTINE ″貼 IN −AT LINE 50 、RESULT 5TORED IN LOC AL VARiABLE″TOTALh。
LINE 500 FLOATING−PO[NT DIVIDE BY ZE I’?OIN 5UBROUTINE ’ 5TOCK ”@WHEN CALLED BY ROUTINE MAIN ″ AT LtNE 75  、D[VISORFROM GLOBAL VARIABLd “5t(ARES ” 。
以上の観点から、Xコードアプリケーションプログラムが変換された、変換元の Xコードアプリケーションプログラムの文脈において、Xコードアプリケーショ ンプログラム実行時に発生するエラ二を報告する方法とシステムを説明した。
本発明は、エラーを生じたXコード命令に対応するXコード命令のXコードのア ドレスを、Xコード実行完了時のXコードマシンの状態に関する適応情報と共に 、提供するものである。従って、XコードからYコードに変換され、Xコードア プリケーションプログラムのソースコードのコンパイル中に発生したデバッグ情 報を使用するデパックルーチンによって、エラーが報告されるのである。
r40 FIG、5B rフッ0 FIG、10 FIG、II 、” 220 要約書 第1のコンピュータプログラムを変換して第2のコンピュータプログラムを得る に際して、第2のコンピュータプログラムの実行時におけるエラーの発生が第1 のプログラムの文脈中に報告される。そのようなエラーが発生すると、第2のコ ンピュータプログラムの実行は打ち切られ、第2のコンピュータプログラム中の エラーを発生させる原因となった命令のアドレスである第1のアドレスを判定し 、この第1のアドレスを基に第2のコンピュータプログラムが変換された元の第 」のコンピュータプログラムのアドレスを判定し、エラーが発生したことを報告 し、第2のアドレスを用いて第1のコンピュータプログラムの命令と関連するエ ラーを指し示す。好適には、第2のアドレスは、トレースバックおよび、第1の コンピュータプログラムがソースコードからコンパイルされるときに生成するシ ンボリック名情報を参照するのに用σ)られる。トレースバック情報は第1のコ ンピュータプログラムがコンパイルされた元のソースコードの行番号を提示する 。
また、シンボリック名情報は第1のプログラムの命令を含んでいるルーチンの名 前、あるいはその命令が使っている変数名を提示する。
国際調査報告 1+++++−AiN+ PC工/US 92101714

Claims (22)

    【特許請求の範囲】
  1. 1.第一コンピュータプログラムの変換である第二コンピュータプログラム実行 中に発生するエラーを報告するためのディジタルコンピュータを動作する方法で あって、前記第一コンピュータはプログラム第一命令アーキテクチャに基づいて 設定された第一命令からの命令を含み、前記第一コンピュータプログラムの前記 各命令は各々アドレスを有し、前記第二コンピュータプログラムは第二命令アー キテクチャに基づいて設定された第二命令からの命令を含み、前記第二コンピュ ータの前記各命令は各々アドレスを有し、前記第一コンピュータの前記命令のい くつかは前記第二コンピュータの複数の前記各命令に変換され、前記エラーは前 記第二コンピュータプログラムの前記命令のいずれか1個を実行することによっ て生じ、下記の各ステップから構成されることを特徴とする前記方法: (a)前記エラー発生時に前記第二コンピュータプログラムの実行を打ち切るス テップ、 (b)前記第二コンピュータプログラムの前記命令のうちのいずれか1個の第一 アドレスを決定するステップ、 (c)前記第二コンピュータプログラムの前記命令の前記いずれか1個が変換さ れた、変換元の前記第一コンピュータプログラム中の前記命令のいずれか1個の 第二アドレスを前記第一アドレスから決定するステップ、(d)前記発生エラー を報告し、前記第一プログラムの前記命令の前記いずれか1個と前記エラーが関 係があることを示すために前記第二アドレスを使用するステップ。
  2. 2.請求の範囲第1項に記載の方法であって、前記第一コンピュータプログラム がソースプログラムからコンパイルされ、前記第一コンピュータプログラムがコ ンパイルされるときに追跡情報が生成され、前記行数のソースコードのいずれか 対応する1個からコンパイルされた前記第一コンピュータプログラムの命令のア ドレスを備えた前記ソースプログラムのソースコードの行の行No.に関係ある 前記追跡情報であって、前記第一コンピュータプログラムの前記命令の前記いず れか1個がコンパイルされたソースコードの行No.を示すことによって前記第 一コンピュータプログラムの前記命令の前記いずれか1個と前記エラーが関係が あることを示すために前記第二アドレスが前記追跡情報と共に使用されることを 特徴とする前記方法。
  3. 3.請求の範囲第1項に記載の方法であって、前記第一コンピュータプログラム がソースプログラムからコンパイルされ、前記第一コンピュータプログラムがコ ンパイルされるときに記号名情報が生成され、前記記号名情報は前記ソースプロ グラムの記号名を前記第一コンピュータプログラムのアドレスとを関連づけ、前 記エラーと関係のある記号名を特定するために前記記号名情報を参照するステッ プ、前記エラーと共に前記記号名を報告するステップを備えることを特徴とする 前記方法。
  4. 4.請求の範囲第1項に記載の方法であって、前記第二コンピュータプログラム を入手するために前記第一コンピュータプログラムの変換中にアドレス相関表が 生成され、前記アドレス相関表は前記第一コンピュータプログラムの個々のアド レスと前記第二コンピュータプログラムの命令セットの第一命令のアドレスとを 有するデータ項目が含まれており、前記第二コンピュータプログラムの前記命令 セットは前記第一コンピュータプログラムの前記個々の命令から変換されたもの であり、前記第一アドレスから第二アドレスを決定する前記ステップ(c)に前 記第一アドレスで前記アドレス相関表を参照するステップを含んだことを特徴と する、前記方法。
  5. 5.請求の範囲第4項に記載の方法であって、前記第一コンピュータプログラム の命令のアドレスのすべてが前記相関表のデータ項目に含まれているわけではな く、前記第二コンピュータプログラムを入手するための前記第一コンピュータプ ログラム変換中に境界命令ビットマップが生成され、前記境界命令ビットマップ は前記第一コンピュータプログラムの各命令から変換された命令セットで始ます 前記第二コンピュータプログラムの命令を示し、前記第一アドレスから第二アド レスを決定する前記ステップ(c)に、前記第一アドレスに対応する前記ビット マップの第一位置と前記相関表のデータ項目にある前記第二コンピュータプログ ラムのアドレスに対応する前記ビットマップの第二位置の間の前記境界命令ビッ トマップを精査するステップ、前記アドレス相関表の前記データ項目から、前記 第一コンピュータプログラムの第三アドレスを読み取るステップ、前記第三アド レスと前記命令の計数から前記第二アドレスを決定するステップ、を含んだこと を特徴とする、前記方法。
  6. 6.請求の範囲第5項に記載の方法であって、前記第三アドレスから始まる選択 個数の命令の構文解析によって前記第三アドレスから前記第二アドレスが決定さ れ、前記選択個数は前記命令の計数に基づいたものである、を特徴とする方法。
  7. 7.請求の範囲第5項に記載の方法であって、前記境界命令ビットマップにトラ ップ可能の前記第二コンピュータプログラムの命令の指示を含み、前記トラップ 可能の前記第二コンピュータプログラムの前記命令の指示は、前記命令の計数を 入手するための前記第一位置と前記第二位置の間の前記ビットマップの前記指示 計数中に計数されない、を特徴とする方法。
  8. 8.第一コンピュータのプログラムの変換である第二コンピュータプログラム実 行中に発生するエラーを報告するためのディジタルコンピュータを動作する方法 であって、前記第一コンピュータはソースプログラムをコンパイルすることによ って生成され、前記第一コンピュータプログラムには第一命令アーキテクチャに 基づいて設定された第一命令からの命令を含み、前記第一コンピュータプログラ ムの前記各命令は各々アドレスを有し、前記第二コンピュータプログラムは第二 命令アーキテクチャに基づいて設定された第二命令からの命令を含み、前記第二 コンピュータの前記各命令は各々アドレスを有し、前記第一コンピュータの前記 命令のいくつかは前記第二コンピュータの複数の前記各命令に変換され、前記エ ラーは前記第二コンピュータプログラムの前記命令のいずれか1個を実行するこ とによって生じ、下記の各ステップから構成されることを特徴とする前記方法: (a)前記エラー発生時に前記第二コンピュータプログラムの実行を打ち切るス テップ、 (b)前記第二コンピュータプログラムの前記命令のうち前記いずれか1個の第 一アドレスを決定するステップ、 (c)アドレス変換表を参照して前記第二コンピュータプログラムの前記命令の 前記いずれか1個が変換された変換元の前記第一コンピュータプログラムの前記 命令のいずれか1個の第2アドレスを前記第一アドレスから決定するステップ、 (d)前記発生エラーを報告し、前記第一プログラムの前記命令の前記いずれか 1個と前記エラーが関係があることを示すために前記第二アドレスを使用するス テップ、 (e)前記第一コンピュータプログラムの前記命令の前記いずれか1個がコンバ イルされた前記ソースプログラムのソースコードの位置を特定するために追跡情 報を参照するステップ、 (f)前記発生エラーを報告し、前記第一コンピュータプログラムの前記いずれ か1個がコンパイルされた前記ソースプログラムの前記ソースコード位置を示す ステップ。
  9. 9.請求の範囲第8項に記載の方法であって、前記第一コンピュータプログラム がコンパイルされるときに記号名情報が生成され、前記記号名情報は前記ソース プログラムの記号名を前記第一コンピュータプログラムのアドレスとを関連づけ 、前記エラーと関係のある記号名を特定するために前記記号名情報を参照するス テップ、前記エラーと共に前記記号名を報告するステップを備えることを特徴と する前記方法。
  10. 10.請求の範囲第8項に記載の方法であって、前記記号名の少なくとも1つ以 上の前記記号名が、前記第一コンピュータプログラムの前記命令の前記いずれか 1個がコンパイルされたソースコードを含む前記ソースプログラムのルーチンの 名前であることを特徴とする方法。
  11. 11.請求の範囲第8項に記載の方法であって、前記アドレス相関表に前記第一 コンピュータプログラムの各命令のアドレスと前記第二コンピュータプログラム の前記命令セットの第一命令のアドレスとを有するデータ項目を含まれており、 前記第二コンピュータプログラムの前記命令セットは前記第一コンピュータプロ グラムの前記個々の命令から変換されたものであり、前記第一コンピュータプロ グラムの命令のアドレスのすべてが前記相関表のデータ項目に含まれているわけ ではなく、前記第二コンピュータプログラムを入手するための別記第一コンピュ ータプログラム変換中に境界命令ビットマップが生成され、前記境界命令ビット マップは前記第一コンピュータプログラムの各命令から変換された命令セットで 始まる前記第二コンピュータプログラムの命令を示し、前記(c)に、前記第一 アドレスに対応する前記ビットマップの第一位置と前記相関表のデータ項目にあ る前記第二コンピュータプログラムのアドレスに対応する前記ビットマップの第 二位置の間の前記境界命令ビットマップを精査し、命令の計数をにゅうするため に前記第一位置と前記第二位置の間の前記ビットマップの前記境界命令ビットマ ップ計数指示を精査するときに、前記第一コンピュータプログラムの前記アドレ ス相関表の前記データ項目から前記第一コンピュータプログラムの第三アドレス を読み取るステップ、前記第三アドレスと前記命令の計数から前記第二アドレス を決定するステップ、を含んだことを特徴とする、前記方法。
  12. 12.請求の範囲第11項に記載の方法であって、前記第三アドレスから始まる 選択個数の命令の構文解析によって前記第三アドレスから前記第二アドレスが決 定され、前記選択個数は前記命令の計数に基づいたものである、を特徴とする方 法。
  13. 13.請求の範囲第11項に記載の方法であって、前記境界命令ビットマップに トラップ可能の前記第二コンピュータプログラムの命令の指示を含み、前記トラ ップ可能の前記第二コンピュータプログラムの前記命令の指示は前記命令の計数 を入手するための前記第一位置と前記第二位置の間の前記ビットマップの前記指 示計数中に計数されない、を特徴とする方法。
  14. 14.第一コンピュータのプログラムの変換である第二コンピュータプログラム 実行中に発生するエラーを報告するためのディジタルコンピュータを動作する方 法であって、前記第一コンピュータプログラムには第一命令アーキテクチャに基 づいて設定された第一命令の命令を含み、前記第一コンピュータプログラムの前 記各命令は各々アドレスを有し、前記第二コンピュータプログラムは第二命令ア ーキテクチャに基づいて設定された第二命令からの命令を含み、前記第二コンピ ュータの前記各命令は各々アドレスを有し、前記第一コンピュータの前記命令の いくつかは前記第二コンピュータの複数の前記各命令に変換され、前記変換によ ってアドレス相関表と境界命令ビットマップを生成し、前記アドレス相関表は前 記第一プログラムの命令の各アドレスと前記各命令から変換された前記第二プロ グラムの命令セットの第一命令のアドレスを各々有するデータ項目を含み、前記 第一コンピュータプログラムの命令のアドレスのすべてが前記アドレス相関表の データ項目に含まれるのではなく、前記第一コンピュータプログラムの各命令を 変換することによって入手される命令セットの第一命令である第二プログラムの 命令を示すフラグを前記境界命令ビットマップに含み、前記エラーは前記第二コ ンピュータプログラムの前記命令のいずれか1個の実行によって生じ、下記の各 ステップから構成されることを特徴とする方法:(a)前記エラー発生時に前記 第二コンピュータプログラムの実行を打ち切るステップ、 (b)前記第二コンピュータプログラムの前記命令のうち前記いずれか1個の第 一アドレスを決定するステップ、 (c)アドレス変換表を参照して前記第二コンピュータプログラムの前記命令の 前記いずれか1個が変換された変換元の前記第一コンピュータプログラムの前記 命令のいずれか1個の第二アドレスを前記第一アドレスから決定するステップ、 但し、前記第二アドレスは、前記アドレス相関表を参照して前記相関表にて前記 第一アドレスより小さい前記プログラムの命令の最大アドレスと、前記最大アド レスと同じ表データ項目の前記第一プログラムの命令の対応アドレスを探し、 前記第一アドレスと前記最大アドレスの間のアドレスを有する前記第二プログラ ムの前記フラグによって命令の計数を入手するために前記境界命令ビットマップ を精査し、 前記対応アドレスから開始する前記第一プログラムの命令の前記計数を解析する ことによって決定される、 (d)前記発生エラーを報告し、前記エラーが前記第一プログラムの前記命令の 前記いずれか1個と関係があることを示すために前記第二アドレスを使用するス テップ。
  15. 15.請求の範囲第14項に記載の方法であって、前記第一コンピュータプログ ラムはソースプログラムからコンパイルされ、追跡情報は前記第一コンピュータ プログラムがコンパイルされるときに生成され、前記追跡情報は前記ソースプロ グラムのソースコードの行No.と前記各ソースコード行からコンバイルされた 前記第一コンピュータプログラムの命令とを関連づけ、前記第一コンピュータプ ログラムの前記命令の前記いずれか1個がコンパイルされたソースコードの行N o.を示すことによって前記第一コンピュータプログラムの前記命令の前記いず れか1個と前記エラーが関係があることを示すために前記追跡情報と共に前記第 二アドレスが使用されることを特徴とする方法。
  16. 16.請求の範囲第14項に記載の方法であって、前記第一コンピュータプログ ラムがソースプログラムからコンパイルされ、前記第一コンピュータプログラム がコンパイルされるときに記号名情報が生成され、前記記号名情報は前記ソース プログラムの記号名を前記第一コンピュータプログラムのアドレスとを関連づけ 、前記エラーと関係のある記号名を特定するために前記記号名情報を参照するス テップ、前記エラーと共に前記記号名を報告するステップを備えることを特徴と する方法。
  17. 17.請求の範囲第14項に記載の方法であって、前記境界命令ビットマップの 前記フラグがトラップ可能な前記第二コンピュータプログラムの命令も指示し、 前記トラップ可能な前記第二コンピュータプログラムの前記命令は前記精査中に 計数されないことを特徴とする方法。
  18. 18.第一コンピュータのプログラムの変換である第二コンピュータプログラム 実行中の発生エラーを報告するディジタルコンピュータシステムであって、前記 第一コンピュータプログラムは第一命令アーキテクチャに基づいて設定された第 一命令の命令を含み、前記第一コンピュータプログラムの前記各命令は各々アド レスを有し、前記第二コンピュータプログラムは第二命令アーキテクチャに基づ いて設定された第二命令からの命令を含み、前記第二コンピュータの前記各命令 は各々アドレスを有し、前記第一コンピュータプログラムの前記命令のいくつか は前記第二コンピュータの複数の前記各命令に各々変換され、前記エラーは前記 第二コンピュータプログラムの前記命令のいずれか1個の実行によって生じ、下 記の各手段を組み合わせて構成されることを特徴とする前記ディジタルコンピュ ータシステム: (a)前記エラー発生時に前記第二コンピュータプログラムの実行を打ち切る手 段、 (b)前記第二コンピュータプログラムの前記命令の前記いずれか1個の第一ア ドレスを決定する手段、 (c)あどれす変換表を参照して前記第二コンピュータプログラムの前記いずれ か1個が変換された変換元の前記第一コンピュータプログラムの前記命令のいず れか1個の第二アドレスを前記第一アドレスから決定する手段、(d)前記第一 コンピュータプログラムの前記命令の前記いずれか1個がコンパイルされたソー スプログラムのソースコードの場所を特定するために追跡情報を参照する手段、 (e)前記発生エラーを報告し、前記第一コンピュータプログラムの前記命令の 前記いずれか1個がコンパイルされたソースプログラムのソースコードの場所を 指示する手段。
  19. 19.請求の範囲第18項に記載のディジタルコンピュータシステムであって、 前記エラーと関係のある記号名を特定するために記号名情報を参照し、前記エラ ーと共に前記記号名を報告する手段を備えることを特徴とするディジタルコンピ ュータシステム。
  20. 20.請求の範囲第18項に記載のディジタルコンピュータシステムであって、 前記アドレス相関表に前記第一コンピュータプログラムの各命令のアドレスと前 記第二コンピュータプログラムの前記命令セットの第一命令のアドレスとを有す るデータ項目が含まれており、前記第二コンピュータプログラムの前記命令セッ トは前記第一コンピュータプログラムの前記個々の命令から変換されたものであ り、前記第一コンピュータプログラムの命令のアドレスのすべてが前記相関表の データ項目に含まれているわけではなく、前記第二コンピュータプログラムを入 手するための前記第一コンピュータプログラム変換中に境界命令ビットマップが 生成され、前記境界命令ビットマップは前記第一コンピュータプログラムの各命 令から変換された命令セットで始まる前記第二コンピュータプログラムの命令を 示し、前記アドレス変換表を参照する前記手段に、前記第一アドレスに対応する 前記ビットマップの第一位置と前記相関表のデータ項目にある前記第二コンピュ ータプログラムのアドレスに対応する前記ビットマップの第二位置の間の前記境 界命令ビットマップを精査する手段、命令の計数を入手するために前記第一位置 と前記第二位置の間の前記ビットマップの前記境界命令ビットマップ指示を計数 する手段、前記アドレス相関表の前記データ項目から前記第一コンピュータプロ グラムの第三アドレスを読み取る手段、前記第三アドレスと前記命令の前記計数 から前記第二アドレスを決定する手段、を含んだことを特徴とするコンピュータ システム。
  21. 21.請求の範囲第20項に記載のディジタルコンピュータシステムであって、 前記第三アドレスから前記第二アドレスを決定する手段に前記第三アドレスから 始まる選択個数の命令を解析する手段を含み、前記選択個数は前記命令の計数に 基づいて選択されることを特徴とするディジタルコンピュータシステム。
  22. 22.請求の範囲第20項に記載のディジタルコンピュータシステムであって、 前記境界命令ビットマップにトラップ可能な前記第二コンピュータプログラムの 命令の指示も含み、計数のための前記手段がトラップ可能な前記第二コンピュー タプログラムの命令の指示を計数しないことを特徴とするディジタルコンピュー タシステム。
JP4507852A 1991-03-07 1992-03-03 変換コードを実行するための効果的エラー報告 Expired - Lifetime JPH0734178B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US07/666,025 US5307504A (en) 1991-03-07 1991-03-07 System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US07/700,770 US5432795A (en) 1991-03-07 1991-05-15 System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
US700,770 1991-05-15
US666,025 1991-05-15
PCT/US1992/001714 WO1992015948A1 (en) 1991-03-07 1992-03-03 Improved error reporting for translated code execution

Publications (2)

Publication Number Publication Date
JPH05505692A true JPH05505692A (ja) 1993-08-19
JPH0734178B2 JPH0734178B2 (ja) 1995-04-12

Family

ID=27099354

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4507852A Expired - Lifetime JPH0734178B2 (ja) 1991-03-07 1992-03-03 変換コードを実行するための効果的エラー報告

Country Status (15)

Country Link
US (1) US5432795A (ja)
EP (2) EP0772122A3 (ja)
JP (1) JPH0734178B2 (ja)
KR (1) KR950006619B1 (ja)
AT (1) ATE155905T1 (ja)
AU (1) AU647263B2 (ja)
CA (1) CA2082064C (ja)
DE (1) DE69221041T2 (ja)
FI (1) FI102219B (ja)
IE (1) IE920742A1 (ja)
IL (1) IL100992A (ja)
MX (1) MX9200938A (ja)
NO (1) NO304459B1 (ja)
PT (1) PT100206B (ja)
WO (1) WO1992015948A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003515203A (ja) * 1999-11-12 2003-04-22 サン・マイクロシステムズ・インコーポレイテッド Nベースタイプの演算式の最適化

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673390A (en) * 1992-09-03 1997-09-30 International Business Machines Corporation Method and system for displaying error messages
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
US5974568A (en) * 1995-11-17 1999-10-26 Mci Communications Corporation Hierarchical error reporting system
US6000028A (en) * 1996-01-29 1999-12-07 Digital Equipment Corporation Means and apparatus for maintaining condition codes in an unevaluated state
US6226789B1 (en) 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5930509A (en) * 1996-01-29 1999-07-27 Digital Equipment Corporation Method and apparatus for performing binary translation
US6330691B1 (en) * 1996-02-23 2001-12-11 Institute For The Development Of Emerging Architectures Llc Use of dynamic translation to provide breakpoints in non-writeable object code
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6067413A (en) * 1996-06-13 2000-05-23 Instantations, Inc. Data representation for mixed-language program development
US5754860A (en) * 1996-07-23 1998-05-19 Digital Equipment Corporation Method and apparatus for software testing using a differential testing technique to test compilers
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US6721941B1 (en) 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US5822511A (en) * 1996-09-03 1998-10-13 Motorola, Inc. Smart compare tool and method
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US5812759A (en) * 1996-11-08 1998-09-22 Allen Bradley Company, Inc. Fault handling with loaded functions
US6071316A (en) * 1997-09-29 2000-06-06 Honeywell Inc. Automated validation and verification of computer software
EP0950216B1 (en) * 1997-10-02 2003-11-26 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6237137B1 (en) * 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JP3110367B2 (ja) * 1998-01-30 2000-11-20 日本電気アイシーマイコンシステム株式会社 ソースコンバータの処理方法及びソースコンバータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
JP3658514B2 (ja) * 1999-01-28 2005-06-08 富士通株式会社 帳票プログラム作成装置
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6698011B1 (en) * 1999-01-29 2004-02-24 Intel Corporation Isolation of program translation failures
AU3889200A (en) * 1999-03-15 2000-10-04 Smartsan Systems, Inc. System and method of event management and early fault detection
GB2348304B (en) * 1999-03-24 2003-07-09 Ibm Optimising Device Driver Debug Tracing
US6381737B1 (en) * 1999-04-23 2002-04-30 Sun Microsystems, Inc. Automatic adapter/stub generator
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6427232B1 (en) * 1999-06-10 2002-07-30 International Business Machines Corporation Functional debugger for debugging software programs
US6393606B1 (en) * 1999-06-25 2002-05-21 Agilent Technologies, Inc. Inverse assembler
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6553480B1 (en) * 1999-11-05 2003-04-22 International Business Machines Corporation System and method for managing the execution of instruction groups having multiple executable instructions
US6463578B1 (en) * 1999-11-23 2002-10-08 International Business Machines Corporation Systems, methods and computer program products for debugging java server page files using compiled java class file modifications
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
GB2366399B (en) * 2000-08-26 2005-02-16 Ibm Recognition of command related items in object code
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US7251811B2 (en) * 2002-01-02 2007-07-31 Intel Corporation Controlling compatibility levels of binary translations between instruction set architectures
US7320121B2 (en) * 2002-08-01 2008-01-15 Sas Institute Inc. Computer-implemented system and method for generating embedded code to add functionality to a user application
US7296257B1 (en) * 2002-08-01 2007-11-13 Tymesys Corporation Techniques for exception handling by rewriting dispatch table elements
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US20050028146A1 (en) * 2003-08-01 2005-02-03 Quick Shawn G. Systems and methods for software and firmware testing using checkpoint signatures
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7496897B1 (en) 2004-03-17 2009-02-24 Timesys Corporation Multiple code sets for multiple execution contexts
US7546488B2 (en) * 2004-07-02 2009-06-09 Seagate Technology Llc Event logging and analysis in a software system
KR101244069B1 (ko) * 2005-04-20 2013-03-18 인터내셔널 비지네스 머신즈 코포레이션 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치
GB2425372B (en) 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
US7716642B1 (en) 2005-05-03 2010-05-11 Emc Corporation Techniques for detecting coding incompatibilities
US7603669B2 (en) * 2005-09-27 2009-10-13 Microsoft Corporation Upgrade and downgrade of data resource components
US7676806B2 (en) * 2005-09-27 2010-03-09 Microsoft Corporation Deployment, maintenance and configuration of complex hardware and software systems
US7596720B2 (en) * 2005-09-27 2009-09-29 Microsoft Corporation Application health checks
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US20090271663A1 (en) * 2008-04-24 2009-10-29 Vining Robert G Providing detailed program state information for error analysis
JP5050019B2 (ja) * 2009-08-26 2012-10-17 株式会社東芝 ソースコード解析システム
US10216254B1 (en) * 2016-06-29 2019-02-26 Altera Corporation Methods and apparatus for selectively extracting and loading register states
US11809899B2 (en) 2019-06-28 2023-11-07 Intel Corporation Methods and apparatus for accelerating virtual machine migration
CN110765047B (zh) * 2019-10-24 2023-09-26 南方科技大学 基于指令集的数字信号控制系统、fpga模块及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4500952A (en) * 1980-05-23 1985-02-19 International Business Machines Corporation Mechanism for control of address translation by a program using a plurality of translation tables
JPS61213935A (ja) * 1985-03-18 1986-09-22 Omron Tateisi Electronics Co 高級言語プログラムのデバック装置及びそのステップ方式
JPS6226535A (ja) * 1985-07-22 1987-02-04 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション プログラム内の変換テ−ブルの修正方法
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
JPS62214443A (ja) * 1986-03-17 1987-09-21 Fanuc Ltd エミユレ−シヨン実行方法
US5133072A (en) * 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPH01503181A (ja) * 1987-03-24 1989-10-26 インシグニア・ソリューションズ・リミテッド コンピュータ
US4855905A (en) * 1987-04-29 1989-08-08 International Business Machines Corporation Multiprotocol I/O communications controller unit including emulated I/O controllers and tables translation of common commands and device addresses
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
EP0428560A4 (en) * 1988-07-29 1992-04-01 Hunter Systems Software, Inc. Machine process for translating programs in binary machine language into another binary machine language
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003515203A (ja) * 1999-11-12 2003-04-22 サン・マイクロシステムズ・インコーポレイテッド Nベースタイプの演算式の最適化
JP4786101B2 (ja) * 1999-11-12 2011-10-05 オラクル・アメリカ・インコーポレイテッド Nベースタイプの演算式の最適化

Also Published As

Publication number Publication date
DE69221041D1 (de) 1997-08-28
PT100206A (pt) 1994-05-31
NO304459B1 (no) 1998-12-14
DE69221041T2 (de) 1998-01-29
CA2082064C (en) 1996-12-31
NO924259L (no) 1993-01-06
FI925056A (fi) 1992-11-06
FI102219B1 (fi) 1998-10-30
AU1570592A (en) 1992-10-06
MX9200938A (es) 1993-03-01
EP0772122A2 (en) 1997-05-07
FI102219B (fi) 1998-10-30
NO924259D0 (no) 1992-11-05
KR950006619B1 (ko) 1995-06-19
EP0772122A3 (en) 1997-05-14
ATE155905T1 (de) 1997-08-15
CA2082064A1 (en) 1992-09-08
WO1992015948A1 (en) 1992-09-17
AU647263B2 (en) 1994-03-17
EP0528024A1 (en) 1993-02-24
JPH0734178B2 (ja) 1995-04-12
US5432795A (en) 1995-07-11
IL100992A (en) 1995-12-31
IE920742A1 (en) 1992-09-09
PT100206B (pt) 1998-10-30
FI925056A0 (fi) 1992-11-06
EP0528024B1 (en) 1997-07-23

Similar Documents

Publication Publication Date Title
JPH05505692A (ja) 変換コードを実行するための効果的エラー報告
US5307504A (en) System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5636366A (en) System and method for preserving instruction state-atomicity for translated program
US6067641A (en) Demand-based generation of symbolic information
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
EP2359247B1 (en) Transforming user script code for debugging
US7380235B1 (en) Application program interface call replay tool
US8752020B2 (en) System and process for debugging object-oriented programming code leveraging runtime metadata
US20060259830A1 (en) Real-time software diagnostic tracing
US20040205720A1 (en) Augmenting debuggers
US20060200806A1 (en) Apparatus, system, and method for trace insertion
US8448152B2 (en) High-level language, architecture-independent probe program compiler
US5680584A (en) Simulator system for code execution and debugging within a multi-architecture environment
JPH03118635A (ja) ソースコード発展システム用増分コンパイラ
JP2005338987A (ja) 例外テスト支援プログラム及び例外テスト支援装置
Barbacci et al. An architectural research facility: ISP descriptions, simulation, data collection
JPH0766342B2 (ja) プログラムテスト装置
AU651682B2 (en) Improved system and method for detecting cross-domain instruction calls and data references especiallly adapted for code interface jacketing in a multi-code execution and debugging system within a multi-architecture environment
Strein et al. Design and Implementation of a high-level multi-language .NET Debugger
Al-Sharif et al. Language Support for Event-based Debugging.
Korn Tksh: A Tcl Library for KornShell.
Wahl A conceptual framework for distributed debugging.
Price New techniques for replay debugging
Thompson et al. CodeWarrior’s Architectural Advantage
KFKI-MSZKI et al. Visual Programming