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

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

Info

Publication number
JPH0734178B2
JPH0734178B2 JP4507852A JP50785292A JPH0734178B2 JP H0734178 B2 JPH0734178 B2 JP H0734178B2 JP 4507852 A JP4507852 A JP 4507852A JP 50785292 A JP50785292 A JP 50785292A JP H0734178 B2 JPH0734178 B2 JP H0734178B2
Authority
JP
Japan
Prior art keywords
computer program
address
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.)
Expired - Lifetime
Application number
JP4507852A
Other languages
English (en)
Other versions
JPH05505692A (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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
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 Digital Equipment Corp filed Critical Digital Equipment Corp
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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3624Debugging of software by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Retry When Errors Occur (AREA)
  • Error Detection And Correction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Hardware Redundancy (AREA)
  • Developing Agents For Electrophotography (AREA)
  • Chemical Or Physical Treatment Of Fibers (AREA)
  • Advance Control (AREA)
  • Eye Examination Apparatus (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Description

【発明の詳細な説明】 本発明はスコットG.ロビンソン及びリチャードL.サイツ
による1991年3月7日付け合衆国出願第07/666,025号
「変換されたプログラムコードの命令細分性を保存する
ための効果的システムと方法(IMPROVED SYSTEM AND ME
THOD FOR PRESERVING INSTRUCTION GRANULARITY FOR TR
ANSLATED PROGRAM CODE)」の一部継続出願である。
関連特許出願の表示−本明細書における開示は下記の米
国特許出願に関連しており、その内容が参考として本明
細書に含まれる。
スコットG.ロビンソン及びリチャードL.サイツによる19
91年3月7日付け合衆国出願第07/666,071号「変換され
たプログラムコードの命令状態微細性を保存するための
効果的システムと方法(IMPROVED SYSTEM AND METHOD F
OR PRESERVING INSTRUCTION STATE−ATOMICTY FOR TRAN
SLATED PROGRAM CODE)」。
本特許出願の譲渡人に譲渡される、コード変換に関する
下記の各特許出願も参考として本明細書に含まれる。
リダードL.サイツによる1991年3月7日付け合衆国出願
第07/666,070号「逆方向記号実行を介する分岐導出(BR
ANCH RESOLUTION VIA BACKWARD SYMBOLIC EXECUTIO
N)」。
リチャードL.サイツによる1991年3月7日付け合衆国出
願第07/666,216号「連続コード実行および翻訳によるプ
ログラムコードの位置決め(LOCATING PROGRAM CODE BY
SUCCESSIVE CODE EXECUTION AND INTERPRETATIO
N)」。
リチャードL.サイツによる1991年3月7日付け合衆国出
願第07/666,210号「積重ね高さを利用した機械コードの
誤り識別(USE OF STACK DEPTH TO IDENTIFY MACHINE C
ODE MISTAKES)」。
リチャードL.サイツによる1991年3月7日付け合衆国出
願第07/666,223号「プログラムコードの相互イメージ参
照(CROSS−IMAGE REFERENCING OF PROGRAM CODE)」。
トーマスR.ベンソンによる1991年3月7日付け合衆国出
願第07/666,083号「積重ね高さを利用した、機械コード
のアーキテクチュアおよび呼出標準従属性の識別(USE
OF STACK DEPTH TO IDENTIFY ARCHITECTURE AND CALLIN
G STANDARD DEPENDENCIES IN MACHINE CODE)」。
トーマスR.ベンソンによる1991年3月7日付け合衆国出
願第07/666,084号「コンパイルされた32ビットコードを
64ビット環境でサポートする。レジスタ利用トラッキン
グ(REGISTER USAGE TRACKING TO SUPPORT COMPILED 32
−BIT CODE IN 64−BIT ENVIRONMENT)」。
トーマスR.ベンソンによる1991年3月7日付け合衆国出
願第07/666,85号「異なるマシン構成のコードを変換す
る場合のマッピングアセンブリ言語引数参照表(MAPPIN
G ASSEMBLY LANGEAGE ARGUMENT LIST REFERENCES IN TR
ANSLATING CODE FOR DIFFERENT MACHINE ARCHITECTURE
S)」。
トーマスR.ベンソンによる1991年3月7日付け合衆国出
願第07/666,082号「異なるマシン構成のコード変換をす
る場合のトラッキング条件コード(TRACKING CONDITION
CODES IN TRANSLATING CODE FOR DIFFERENT MACHINE A
RCHITECTURES)」。
ダニエルL.マーフィによる1991年3月7日付け合衆国出
願第07/666,023号「プログラム起動時のプログラム単位
のリンク(LINKING OF PROGRAM UNITS AT PROGRAM ACTI
VATION)」。
リチャードL.サイツによる1991年3月7日付け合衆国出
願第07/666,196号「プログラムの分析および変換のため
の自動流れ図生成(AUTOMATIC FLOWGRAPH GENERATION F
OR PROGRAM ANALYSIS AND TRANSLATION)」。
本特許出願の譲渡人に譲渡される下記の各特許出願も参
考として本明細書に含まれる。
マークA.ハーデグ、ジェームスA.ウールドリッジ、スコ
ットG.ロビンソン、ロナルドF.ブレンダ、ミッシェルV.
アイリスによる1991年3月7日付け合衆国出願第07/66
6,039号「コードデバッグ機能によって多重構成環境で
複数コードを実行するための効果的なシステムと方法
(IMPROVED SYSTEM AND METHOD FOR EXECUTING MULTIPL
E CODE IN A MULTI−ARCHITECTURE ENVIRONMENT WITH C
ODE DEBUGGING CAPABILITY)」。
ダニエルL.マーフィによる1991年3月7日付け合衆国出
願第07/666,028号「二つの異なるプログラム単位間で呼
出規定を自動インタフェースするシステムと方法(SYST
EM AND METHOD FOR AUTOMATICALLY INTER−FACINH CALL
CONVENTIONS BETWEEN TWO DISSIMILAR PROGRAM UNIT
S)」。
ジェームスA.ウールドリッジ、ロナルドF.ブレンダ、ヘ
ンリN.グリーブIIIによる1991年3月7日付け合衆国出
願第07/665,888号「多重構成環境においてコードデバッ
グに特に適した効果的なソフトウェアデバッグシステム
と方法(IMPROVED SOFTWARE DEBAGGING SYSTEM AND MET
HOD ESPECIALLY ADAPTED FOR CODE DEBUGGING WITHIN A
MULTI−ARCHITECTURE ENVIRONMENT)」。
マークA.ハーデグと、ミッシェルV.アイリスによる1991
年3月7日付け合衆国出願第07/662,022号「複数のコー
ド実行におけるコード実行に最適な効果的シミュレータ
システムと方法、ならびに、多重アーキテクチャ環境に
おけるデバッグシステム(IMPROVED SIMULATOR SYSTEM
AND METHOD ESPECIALLY ADAPTED FOR CODE EXECUTIN IN
A MULTI−CODE EXECUTION AND DEBUGGING SYSTEM WITH
IN A MILTIARCHITECTURE ENVIRONMENT)」。
マークA.ハーデグ、スコットG.ロビンソン、ロナルドF.
ブレンダ、ミッシェルV.アイリスによる1991年3月7日
付け合衆国出願第07/666,072号「複数コード実行時にジ
ャケットするコードインタフェースに適した相互定義域
命令呼出とデータ基準とを検出するための効果的なシス
テムと方法、ならびに、多重アーキテクチャ環境におけ
るデバッグシステム(IMPROVED SYSTEM AND METHOD FOR
DETECTING CROSS−DOMAIN IN−STRUCTION CALLS AND D
ATA REFERENCES ESPECIALLY ADAPTED FOR CODE INTERFA
CE JACKETING IN A MULTI−CODE EXECUTION AND DEBUGG
ING SYSTEM WITHIN A MULTI−ARCHITECTURE ENVIRONMEN
T)」。
ロナルドF.ブレンダ、ミッシェルV.アイリスによる1991
年3月日付け合衆国出願第07/666,752号「複数コード実
行における相互定義域呼出のジャケッティングに効果的
なシステムと方法、ならびに、多重アーキテクチャ環境
におけるデバッグシステム(IMPROVED SYSTEM AND METH
OD FOR JACKETING CROSS−DOMAIN CALLS IN A MULTI−C
ODE EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTI
−ARCHITECTURE ENVIRONMENT)」。
ロバートV.ランダウ、ジェームスE.ジョンソン、ミッシ
ェルV.アイリスによる1991年3年7日付け合衆国出願第
07/665,886号「ソフトウェアの開発および試験用の新改
良手順を採り入れた新コンピュータシステムを開発する
ための高速処理(FASTER PROCESS FOR DEVELOPING NEW
COMPUTER SYSTEMS EMPLOYING NEW AND BETTER PROCEDUR
ES FOR SOFTWARE DEVELOPMENT AND TESTING)」。
発明の背景 1.技術分野 本発明は、プログラムコードに異なるコンピュータシス
テム上で実行可能に適合させるシステムおよび方法に係
り、特に、ソースプログラム変換実行時にソースプログ
ラム中の誤りを報告するシステムおよび方法に関する。
2.背景技術 初期のコンピュータプログラミングでは、コンピュータ
プログラムの命令は、マイクロコードレベルで作成され
ていた。コンピュータプログラムの命令は、ソフトウェ
ア技術の発達と成長に伴って更に多くのタスクと組合わ
され、複雑な命令に対応する設計のハードウェア構造を
備えたコンピュータで実行される、複雑な単一命令とな
った。
コンピュータハードウェアの原価増大と共に性能が向上
していく環境においては、命令が複雑になることによっ
て性能対価格比の受益が増す。その結果、複雑命令セッ
トコード(CISC)が広く容認されてきた。
しかしながら、命令の複雑化が進行するのに従って、実
行速度を向上させたシステムハードウェアの設計が難し
くなってきた。CISCに代わって、縮小命令セットコード
(RISC)をRISCコンピュータのハードウェアアーキテク
チャと結合したところ、メカニズムとしては合格で性能
対価格比が大幅に向上された。
RISCシステムは通常、簡素化された基本命令を用いて所
望の動作を指令する。1個のRISC命令は一般に、一回の
メモリアクセスで一動作を指定する。また、RISCシステ
ムは通常、一つの基本命令に一レジスタを提供する。RI
SC命令セットの命令は、このようにマイクロコードより
も高いレベルである。
これに対して、典型的なCISCシステムでは、1個の命令
によって一連の複雑な動作を指定でき、また、メモリへ
の直接アクセスが何回もできる。このように、1個のCI
SC命令で遂行される動作が、いくつものRISC命令を必要
とすることがある。
RISCシステムは、一般に、利用できるハードウェアの原
価と性能に関して、より高速なシステム動作、よりよい
全体システム性能、より低いシステムコストを提供す
る、最適化ハードウェアおよびソフトウェアトレードオ
フで設計されている。
CISCシステムからRISCシステムへ変換する場合の障害の
一つは、CISCシステム用に開発され、RISCシステムでは
利用できない数多のソフトウェアライブラリの存在であ
る。コンピュータシステムのユーザが新しいコンピュー
タシステムの入手を選択する場合、ユーザが第一に考え
ることは、ユーザのアプリケーションプログラムのライ
ブラリが新しいコンピュータシステムで使用または使用
可能に変換できるかどうか、また、ライブラリを交換し
た場合にかかるコストはどの程度であるか、である。こ
のように、RISCコンピュータシステムでよりよい性能価
格比を達成したいコンピュータシステムユーザにとって
は、RISCコンピュータシステム上で実行できるアプリケ
ーションプログラムのユーザライブラリに適合または
「移行」する経済的かつ効果的なメカニズムが提供され
ることが、極めて重要である。
プログラムを移行する場合、ユーザはいくつかの方法を
選択できる。再コンパイルまたは記録という方法がある
が、これらの技術は通常、詳細機械依存性を有しない、
または、既存機械依存性を備えるが手動プログラミング
修正によって削除可能な、FORTRANなど高級言語で書か
れたプログラムの移行に用いられる。また、再コンパイ
ルまたは記録の際の、プログアム変更およびプログラム
挙動保証に関する全責任はユーザにある。
この他に翻訳という方法も利用できるが、この方法は通
常、プログラム性能を実質的に低下させるという欠点が
ある。更に詳しく述べれば、翻訳手順とはソフトウェア
プログラムのことであって、このプログラムは、1台の
コンピュータ上で作動し、一連の主体命令(異なる機種
のコンピュータの命令であってもよい)をデータとして
読み込み、各主体命令ごとに指定動作を実行する。かか
る翻訳手順では、通常、1個の主体命令を変換するの
に、1台のコンピュータで10〜100個の機械語命令が実
行される。このように、1台のコンピュータ上で機能的
に同等なコードを直接実行する場合と比較すると、実質
的には翻訳手順の方がプログラム性能が劣る。
最も効果的かつ効率的な移行には、コード変換という方
法もある。コード変換では、既存プログラムからの各命
令は移行先の機械の言語による命令に翻訳される。従っ
て、CISCプログラムからRISCプログラムへの変換、更に
総括的には、変換後のコードが相対的縮小命令セットを
有するようなプログラム変換では、変換前はコード1個
であった命令に対して、変換後は「複数」または「数
多」のコードの命令が必要になる。
CISCからRISCへのコード変換に起因する問題の一つは、
変換されたプログラムの実行がエラーによって打ち切ら
れる場合、通常、エラーはRISCマシンの状態に基づくも
のである、という点である。しかしながら、高級CISCソ
ースコード関連のデバッグプログラムでは、エラーに関
する情報はCISCマシンの状態によるものであると仮定す
る。デバッグプログラムでは、例えばCISCソースコード
をCISCオブジェクトコードにコンパイルするときに生じ
るデバッグ情報を利用する。デバッグ情報には、通常、
記号(ASCII)名と、数字CISCプログラムおよびデータ
アドレス記号とを対応する情報が含まれている。デバッ
グプログラムはこの記号名の情報を利用し、記号名によ
って指定されるアドレスのCISCマシンのメモリ内容の検
査をプログラムに指示する。デバッグ情報には、通常、
CISCオブジェクトコードの数字アドレスに対応するCISC
ソースコードの行No.に関する追跡情報も含まれてい
る。CISCマシンでCISCプログラム実行中にエラーが発生
すると、CISCマシンのオペレーティングシステムはCISC
マシンのハードウェアレジスタを読み込み、エラーの原
因となったCISC命令のアドレスを判定する。オペレーテ
ィングシステムはこのアドレスをエラー報告プログラム
に渡し、エラー報告プログラムは追跡情報を参照してエ
ラーを生じたCISCソースコードの行No.をプログラマに
報告する。
CISCソースコードのコンパイルに関わるデバッグプログ
ラムは、CISCオブジェクトコードのアドレス、CISC命
令、および、CISCマシン中のハードウェアに基づくもの
であるため、RISCマシン上での変換プログラム実行中は
CISCソースコードのデバッグを実施しない。RISCマシン
上で対応RISCオブジェクトプログラム実行中のCISCソー
スコードのデバッグは、CISCソースプログラムをRISCオ
ブジェクトコードに直接コンパイルすることによって生
じたデバッグ情報を参照するデバッグプログラムによっ
て実行されるが、この技術にはCISCソースコードの再コ
ンパイルが必要である。また、CISCソースコードが失わ
れたり、破壊されて再コンパイルが不可能になることも
ある。
発明の要旨 本発明は、概略的には、第一コンピュータプログラムを
変換て第二コンピュータプログラムを取得するとき、第
二コンピュータプログラム実行中に発生したエラーを第
一コンピュータプログラムの文脈に報告させるものであ
る。これは、エラー発生時に第二コンピュータプログラ
ムの実行が打ち切られると、エラーを生じた第二コンピ
ュータプログラム中の命令のアドレスである第一アドレ
スを判定し、第二コンピュータプログラム中の命令の変
換元の第一コンピュータプログラム命令の第二アドレス
を第一アドレスを判定し、エラーの発生を報告し、第二
アドレスを使用して当該エラーが第一コンピュータプロ
グラム中の命令を関係があることを示すことによって実
施される。
第二アドレス利用して、第一コンピュータプログラムが
ソースコードからコンパイルされるときに生成される追
跡情報と記号名情報を参照することによって当該エラー
が第一コンピュータプログラム中の命令と関係のあるこ
とを示せば、なお好ましい。追跡情報は、第一コンピュ
ータプログラム中のコンパイルされた命令に対応するソ
ースコードの行No.を示すために参照され、記号名情報
は、第一プログラム中の命令を含むルーチンの名前また
は当該命令が利用する変数の名前といった、エラーと関
係のある記号名を示すために参照される。
好適実施例においては、第一プログラム中の命令のアド
レスは、第二プログラム中の命令のアドレスからアドレ
ス相関表と境界命令ビットマップを参照することによっ
て確認される。このアドレス相関表は、第一プログラム
の各命令のアドレスと、前記各命令から変換された第二
プログラム中の命令セットにおける第一命令のアドレス
とを有するデータ項目を具備している。第一プログラム
中の各命令から変換された、第二プログラム中の命令セ
ットにおける第一命令は、「境界命令」と呼ばれる。第
二プログラム中の境界命令は、境界命令ビットマップに
おいてフラグによって第二プログラム中の他の命令と区
別される。第二プログラム中の第一アドレスと対応する
第一プログラム中の命令の第二アドレスを発見するに
は、アドレス相関表で第一アドレスを探して表から第二
アドレスを直接見つけるか、あるいは、第一アドレスよ
りも小さい第二プログラム中最大のアドレスを見つける
かする。表から第二アドレスを直接見つけられない場
合、第一アドレスと前記最大アドレス間の境界命令の数
を数えながら境界命令ビットマップを精査する。次に、
前記最大アドレスも含む表データ項目のアドレスの命令
で始まる第一プログラム中の同数の命令を精査しながら
命令アドレスポインタを進めることによって、第二アド
レスを発見する。
図面の簡単な説明 本発明の他の目的および利点は、以下の詳細説明を読
み、次の各図面を参照することによって判るであろう。
第1図は、(a.)(第一命令セットを備え、Xと指定さ
れる)第一コンピュータシステムで実行するアプリケー
ションプログラムを作成し、(b.)相対的縮小命令セッ
トを有する(Yと指定される)別のコンピュータシステ
ムでこのアプリケーションプログラムを実行するために
変換する、一般的方法を示す全体機能ブロック図であ
る。
第2図は、好適X−Y変換プログラムと、X−Y翻訳プ
ログラムを実行してX命令の細分性で入力Xアプリケー
ションコードからY実行可能アプリケーションコードを
生成する汎用コンピュータシステムの、一般的機能ブロ
ック図である。
第3図は、第2図で示したX−Y変換プログラムの一般
的流れ図である。
第4図は、Xコード変換によって取得され、X命令の細
分性の保存を保証するためにYコードの実行を監視する
命令細分性制御(IGC)プログラムと共に実行用Yコン
ピュータにロードされるYアプリケーションコードを備
えたYコンピュータシステムの、機能ブロック図であ
る。
第5図Aと第5図Bは、IGCプログラムで実行される好
適機能ステップを表す。
第6図は、X−Yコード命令変換とそれに対する非同期
事象の関係とを記号化した図である。
第7図は、例外事項に応答するYコンピュータ中のハー
ドウェアのブロック図である。
第8図は、第7図のハードウェアと、Yコンピュータの
によって実施されるオペレーションシステム例外ハンド
ラルーチンとによって実施される動作の流れ図である。
第9図は、Yコンピュータのユーザモード例外レーチン
で実行される手順の流れ図である。
第10図は、XアプリケーションコードからYアプリケー
ションコードへの変換中に生成され、本発明のエラー報
告法実行時にYコード命令のアドレスから与えられるX
コード命令のアドレスを求めるために利用されるX−Y
アドレス相関表の概略図である。
第11図は、XアプリケーションコードとYアプリケーシ
ョンコードの命令と、第10図のアドレス相関表に記載さ
れているXアドレスとYアドレスの間の関係を表す概略
図である。
第12図は、XアプリケーションコードからYアプリケー
ションコードへの変換時に生成され、本発明の好適方法
実施中に使用される境界命令ビットマップの概略図であ
る。
第13図は、本発明の好適な方法実施時に第10図のX−Y
アドレス相関表と第12図の境界ビットマップを使用する
ための手順の流れ図である。
第14図は、Xアプリケーションプログラムのソースコー
ドをコンパイルするときに生成されるデバッグ情報のブ
ロック図である。
第15図は、エラーがXアプリケーションコードの命令の
いずれか一つと関係があることを第14図のデバッグ情報
を用いて示すための手順流れ図である。
本発明は種々の変更および代替態様が考えられるが、そ
の特定実施例を例として図示し、本明細書において詳述
する。但し、それによってこの発明を記載特定態様にの
み限定しようとするものではなく、むしろ、本願の請求
項の定める発明の範囲を逸脱しないあらゆる変更、同
等、代替態様を網羅するものであると理解されたい。
好適実施例の説明 第1図に示したように、ソースコードで書かれたアプリ
ケーションプログラム10は、Xコンピュータシステム12
で実行されるユーザプログラムライブラリの数多のアプ
リケーションプログラムのうちの一つである。Xコンピ
ュータシステム12のハードウェアアーキテクチャは、プ
ログラム10またはユーザライブラリの他のアプリケーシ
ョンプログラムの実行可能形式生成時に採用されたX命
令セットによる動作を適合されている。
プログラム10をYコンピュータシステムで使用できるよ
うに適合するためには、プログラム10の実行可能形式
が、Yコンピュータシステム20のハードウェアアーキテ
クチャに適したY命令セットを採用するY実行可能コー
ド22として提供される必要がある。
Y命令セットが採用する基本命令は、通常、X命令セッ
トのものより少なく、XコードからYコードへの変換す
る場合、「1個の命令を多数個の命令へ」変換する必要
がある。例えば、具体的説明のために第1図に詳細図示
したように、XシステムでVAXRアーキテクチャを採用
し、Yシステムで米ディジタル・イクイップメント社RI
SCアーキテクチャと呼ばれる縮小命令セットアーキテク
チャを採用することができる。いずれのアーキテクチャ
も、本願譲渡人である米ディジタル・イクイップメント
社が製作した機器に実施されている。
第1図に示すように、間接経路または直接経路のいずれ
かでアプリケーションプログラムをY実行可能コード22
に移行することができる。直接移行は、Yコンパイラ28
とYリンカ30を利用することによって実行される。結果
のY実行可能コードは、参照数字22Bによって示す。Y
コンパイラ28とYリンカ30が開発されなかった場合、ま
たは、利用できない、あるいは、関連不利益のために直
接移行経路26を使用しない選択をユーザがした場合、間
接経路24を使用してXアプリケーションプログラムをY
システムに移行し、プログラム投資節約およびシステム
性能向上の両方を達成できる。
間接経路では、Xコンパイラ16とXシリカ18によってプ
ログラム10がXコンピュータシステム12に合った実行可
能コード14に変換される。その結果、Xコンピュータシ
ステム12が実行できるX実行可能コード14ができる。X
−Y翻訳プログラム32は、X実行可能コードを参照番号
22Aで示されるY実行可能コードに変換する。Yコード
は縮小命令セットに基づいたものであるが、Yコードを
実行してX命令細分性でXコード演算結果が正確に得ら
れるようにコード変換が行われる。
第1図に参照される翻訳プログラム32を実行する際に、
好ましくは、第2図のコード変換システム40を採用す
る。該変換システム40には、プロセッサ42、記憶装置4
4、変換のためにXアプリケーションコード43を入力す
る種々の入出力装置(図示せず)を有する普通の汎用コ
ンピュータが含まれる。
変換結果は本発明に従って、変換対象コードのハード保
証を保存し、特に、実際にYコードを実行するときにX
命令細分性の保証保存を容易にするように並べられるY
コード45として、生成される。ハードCISC保証について
はVARR保証によって実証される。但し、VARR保証につい
ては、冒頭に参照された出願PD92−0063/1870−409で十
分に説明されている。
記憶装置44には、普通のデータ記憶部46とコンピュータ
のオペレーティングシステム記憶部48などが含まれる。
X−Yコード変換で利用する基本構成要素は、別の記憶
部に記憶されている翻訳プログラム50である。入力Xコ
ード43は、Xコードリスト62として記憶される。また、
Y命令の順序付けを制御するためにY命令配列基準52が
記憶され、命令動作規制子および命令オペランド規制子
の両方を変換可能にするためにX−Y命令コードパター
ン54が記憶される。
翻訳プログラムの一般的な流れ図の選好様式を第3図に
示す。プログラム60では、プログラムループ64を通る処
理のために格納Xコードリスト62から逐次X命令が順次
入ってくる。
ループ64では、現在処理中のX命令に対応し、且つ、格
納X−Yコードパターン(第2図)によるY命令動作お
よびオペランド規制子が、機能ブロック66で生成され
る。次いで、機能ブロック68で示されるように、後続の
実Yコード実行時にX命令細分性の保存を容易にする所
定の基準に従って、結果のYコードが順序付けられる。
第6図はX−Y命令変換を図解したものである。
各X命令は、通常、入力データを得て、これを変更し、
その結果を一時記憶に入れ、メモリおよびレジスタのロ
ケーションに適した状態に更新する、という単体タスク
を提供する。
1個のY命令が「多数個」のY命令に変換される場合、
Y命令を好ましく編成するために用いられる配列基準52
(第2図)は、現在変換中のX命令(グラニュール)に
対応するYコードのY命令を下記の通りに分類して順序
付ける。
1.Yコードの命令で、入力データを入手して仮想記憶に
関するものを第一グループG1とする。
2.Yコードの命令で、入力データに関して動作し、変更
結果を生成し、これら変更結果を仮想記憶に格納するも
のを第二グループG2とする。
3.Yコードの命令で、Xの状態(メモリまたはレジス
タ)を更新し、且つ、(以下に定めた)予想例外に該当
するものを第三グループG3とする。
4.Yコードの命令で、Xの状態(メモリまたはレジス
タ)を更新し、且つ、(以下に定めた)予想例外に該当
しないものを第四グループG4とする。
X状態には、Xメモリ状態とXレジスタ状態が含まれ
る。Xメモリ状態94およびXレジスタ状態97は、各々、
Yマシン中の、被定義Xコードの記憶位置専用に使用す
るメモリおよびレジスタ構造のことである。Xメモリ状
態およびXレジスタ状態は、Xアーキテクチャから見え
るメモリ状態およびレジスタ状態とも言える。
X−Yコード変換に好適Y命令配列基準を導入すると、
次の理由からX命令細分性の保存が容易になる。
1.第6図の図中矢印71で示される、Y命令の最初の2グ
ループG1とG2のいずれか実行中のYコード実行時に非同
期事象が生じた場合、非同期事象処理を許可して、X命
令のグラニュール境界である次のバックアップY命令
(第6図Y0)にY命令カウンタPCをバックアップするこ
とによってX命令細分性が保持される。
再試行するために現Yコードシーケンスの実行を打ち切
ることによって、現YコードシーケンスのいずれかのG3
グループ命令において予想される状態アクセス障害が回
避されるので、X命令細分性の破損が防止される。但
し、Yコードが配列されているため、消去されるのは仮
想記憶位置のみで、X命令細分性は保存される。これ
は、非同期事象処理完了後、命令細分性で処理可能にな
るまで現Yコードのグラニュールを待たせておいたから
である。
2.G1およびG2グループのY命令が実行された後で非同期
事象が発生し、G3グループにY命令がない場合、あるい
は、第6図の図中矢印73で示されるように、G3グループ
の全Y命令が実行された後で非同期事象が発生した場
合、G4グループの命令は、いずれの状態例外もあり得な
い、という洞察に基づいて実行されているので、非同期
事象の処理を短時間遅らせることができる。再び、X命
令細分性で処理が行われる。
G3グループに複数のY命令が含まれており(第6図では
図示せず)、1個のY命令実行後に非同期事象が生じた
が、G3グループにはこれから実行するY命令が1個以上
残っている場合、X命令細分性を保存するために現Yコ
ードグラニュールにメモリ微細性が提供される。
メモリ微細性は、本質的に、X命令の全メモリアクセス
が起こる、または、全く起こらないように見えることを
要求する。また、メモリ微細性は、X命令細分性に必要
である。
メモリ微細性と、他の特殊ケースと同様、かかるケース
でメモリ微細性を得るメカニズムについては、本願と同
時に提出される相互参照出願(1870−0409)で十分に考
察されている。単純なワンライティングXを扱う好適実
施例においては、Xメモリ微細性とX命令細分性が同時
に得られる。
再び第3図を参照する。Y命令コード機能がブロック68
によって上述の通りに順序付けられる。次いで、ブロッ
ク70で、現Y命令は、それが導出されたX命令の境界で
あるのか、「Xグラニュール」マーカであるのが、判定
される。連続的に処理されるY命令について検出される
イエスまたはノーのビットは、機能ブロック72でX境界
命令ビットに記憶される。
試験ブロック74では、変換処理の指定があるX命令が残
っているかどうかチェックする。そのようなX命令があ
る場合、ループが繰り返される。すべてのX命令の変換
が終わるとループ繰り返しが終了され、機能ブロック76
で示す通り、蓄積されたYコードが出力可能になる。
下記の2つの特殊例はVARRアーキテクチャのCISC命令に
よって、本発明による変換機能を例証する。
例 1: INCL(R1)+ この命令は、アドレスがR1に含まれているメモリの長ワ
ード(4バイトまたは32ビット)に1を加え、次いで、
次の長ワードを指定するようにR1を増加させる。下記の
RISC(Y)コードは、既に説明済みの配列基準で動作す
る翻訳プログラムから生成したものである。
1dl r23,(r1);アドレス(R1)−R23のメモリ内容を
ロードする。
addl r23,#1,r24;R23に1を加えてR24にする。
stl r24,(r1);アドレス(R1)のメモリにR24を格納
する。
lda r1,4(r1);次の長ワードを指定するように、R1
に4を加える。
例 2: MOVL(R1)+,(R2)+ この命令は、R1の内容によってアドレス指定されたメモ
リの長ワードを、R2の内容によってアドレス指定された
長ワードに移動するものである。R1とR2は、いずれも、
命令開始時に最初に1つの長ワードを指した後、次の長
ワードを指定するように増加させる。下記のRISC(Y)
コードは、既に説明済みの配列基準で動作する翻訳プロ
グラムから生成したものである。
ldl r23,(r1);アドレス(R1)−R23のメモリの内容
をロードする。
stl r23,(r2);(R2)の位置のメモリにR23の内容を
格納する。
lda r1,4(r1);次の長ワードを指定するように、R1
に4を加える。
lda r2,4(r2);次の長ワードを指定するように、R2
に4を加える。
保証X命令細分性で結果Yコードを実行するために、Y
コンピュータシステム20(第1図)に対応するYプロセ
ッサ80によって、保存保証X命令細分性で結果Yコード
が実行される。Yプロセッサ80には、普通のデータ入出
力装置82とインタバルクロックが結合されており、これ
らの装置は、折々、Yコード実行からプロセッサ動作の
一時転換を要求する非同期事象を構成する割込みを発生
する。(第4図)保証X命令細分性が無ければ、前記た
たは他の割込みによって生じるプロセッサの転換で、Y
コード実行のX命令細分性が破壊されることもある。こ
れは通常、割込み後(但し、現Y命令によってメモリ状
態が変更される以前)の予想Y命令入力の変化のために
生ずる。
第4図に示した通り、ブロック86は、入力装置から、Y
プロセッサ80に結合されたメモリシステム90の1セクシ
ョン88への生成Yコードの入力を示し、ブロック87は、
Yコード実行の結果として出力装置用に生成されるデー
タ出力を示す。メモリシステム90には、普通のデータ部
92、および普通のオペレーティングシステム部94も含ま
れる。
命令細分性制御プログラム(IGC)96は、参照番号96で
示される別のメモリ部に記憶される。Yコード実行時の
IGCプログラム96の動作は、第5図Aおよび第5図Bの
流れ図で更に完全に表示される。
IGCプログラム96(第5図A)は、非同期事象の発生の
指示98から開始する。非同期事象は、一般に、変換され
たXコードから見えるX状態変化を潜在的に発生できる
割込みによるY命令ストリームの転換、と定義される。
非同期事象とY命令のXグラニュールとの関係を図示す
る第6図を再び参照する。下記はY命令ストリームで非
同期事象の相互作用を例示するものである。
正常な実行:Y0 Y2 Y2 Y4 Y5 X命令境界 非同期事象実行:Y0 Y1 Y47 Y48 Y49 事象発生 IGCプログラム96は、X状態において何らかの変更が実
行される以前に、Y命令アドレスをY1(Y2か以下に定義
の通りに予想例外を有していれば)またはY3(Y2が予想
例外を有していなければ、Y2を実行することによって)
に境界合わせしなくてはならない。
再び、第5図Aの流れ図を参照する。機能ブロック100
で非同期事象処理時に一次保留が設けられており、機能
ブロック102で、非同期事象時に処理される(PC−AEで
示されている)Y命令のメモリアドレスが記録される。
次に、ブロック104で、先に参照されたビットマップが
チェックされ、Y命令PC−13がX命令境界であるかどう
か、判断される。X命令境界である場合、試験ブロック
106と、IGCプログラムを経路107経由で、Xコード命令
細分性を壊さずに非同期事象の処理を再開するブロック
108に送る。
Y命令PC−AEがX命令境界でない場合、機能ブロック11
0はY命令カウンタPCを、X命令境界である前後のY命
令に合わせる。上述の非同期事象処理のため、プログラ
ム96はプログラム経路111を通ってXコード命令細分性
を壊さずに非同期事象の処理を再開するブロック108に
進む。この例では、Y命令のすべてがX命令グラニュー
ル内で実行されずに、X命令細分製の保存がプログラム
ブロック110の動作によって得られた時点で非同期事象
が発生した。詳細は、第5図Bに記載されている。第5
図A中のマーカ“A"と“B"は、第5図Bの詳細ブロック
を第5図Aの流れ図に入れる位置を示す。
第5図Bにおいて、X命令境界である次のY命令を見つ
けるためにプログラムループ113の機能ブロック112でY
命令の順方向精査を実施する。試験ブロック114で、順
方向に精査されたY命令をチェックして、残っているY
命令を実行する前の割込み処理によって、同一非同期事
象の組付けで対応Xコードを実行させた場合に生じた結
果と異なるYコード実行結果を出せるかどうか、判定す
る。
各順方向Y命令試験において、非同期事象の処理が許可
されてYコードシーケンスの実行が再開された場合に、
Y命令の試行によって例外状態が生じるかどうかを試験
ブロック114で判断することが好ましい。一般的には、
ある命令を完了できない場合、その命令は例外を有して
いる。下記は、順方向Y命令に特定した場合に、X境界
である次の先行Y命令に対してYコード打切りを発生す
る例外の一般分類である。
1.)アクセス制御違反、ページ障害といった記憶域管理
例外。
2.)浮動小数点オーバフロー障害、またはゼロ障害によ
る分割のような、演算例外 3.)違反命令コードまたは句切点命令コードといった、
命令例外 本発明の好適実施例においては、変換されるコードに適
用される例外のリストを、実行中にIGCプログラムにア
クセス可能な記憶装置に置いた。実行の判定は、このよ
うに、記憶されている例外リストに各々の順方向精査Y
命令を対照することによって行われる。
下記は例外ケースの例である。
非同期事象によって共有メモリ位置が増加される。
INCL@#33でロケーション33を増加する。
RISC命令は次の通りである: IDL R23,33(R31);R23をロケーション33からロードす
る。
IDA R23,1(R23);R23の内容に1を加える。
STL R23,33(R31);R23の結果をロケーション33に記憶
する。
LDA命令とSTL命令の間に非同期事象が生じ、非同期事象
の処理によってロケーション33を増分する場合、非同期
事象時の増分は、STL命令で命令ストリームが再開され
るときに失われる。
下記は、非例外ケースの例である。
INCL R1でR1を増加する。RISC命令は次の通りである: IDA R1,1(R1):R1を増加させる。
この場合、例外の機会はない。
順方向精査の連続Y命令試験において、例外を示すY命
令が無い場合(ブロック116)、残りのY命令が実行さ
れた後に、上述のようにX命令細分性が損なわれること
なくブロック108(第5図A)による非同期事象処理が
可能になる。一方、順方向精査Y命令がブロック118の
試験で例外を示した場合、機能ブロック118はX命令境
界である次のバックアップY命令にYプログラムカウン
タをバックアップするので、X命令細分性が損なわれる
ことなくブロック108(第5図A)による非同期事象処
理が可能になる。この方法により、X命令細分性の破損
可能性は排除されるため、X命令細分性が保証される。
状態に対する書込みを有しない命令、また、単一整列長
フルワードまたはクォッドワード書込みだけの命令を変
換する場合を要約すれば、バイト書込みまたは非整列書
込みの問題、および、インタロックに関する問題はな
い。唯一の問題は、全シーケンスが実行しているように
見えるか、いずれのシーケンスも実行していないように
見えるか、のいずれかしかない、という点である。CISC
−to−RISCの場合のように制限された変換の場合、RISC
命令の第一および第二グループがメモリまたはレジスタ
状態の更新以外のあらゆるCISC作業を実施し、RISC命令
の第三グループに完全整列長ワードまたはクォッドワー
ドに対するゼロまたは1個のRISK記憶命令を含み、RISC
命令の第四グループに単純なレジスタ移動だけを含む。
第二命令グループ完了以前に中断された変換シーケンス
は、各々の変換CISC命令のコードの最初を示すビット表
を用いてシーケンスの最初から強制再開させられる。第
二命令グループが完了後で、第三命令グループ完了以前
に中断された変換シーケンスは、単純なレジスタ移動で
第三命令グループを強制的に完了させられる。
実影響は、他の中間変換シーケンスを伴わずに最初から
最後までシーケンスを実行するか、第二命令グループ完
了前にシーケンスを中断して、後で最初から再試行する
か、という点である。この場合も、単一プロセッサマシ
ン上の1または2バイト非インタロック書込みを適用す
る。変換シーケンスは状態書込−修正−書込シーケンス
を含み、単一書込みは第三グループの命令である。
本発明は、更に細目には、Xコンピュータシステムの変
換であるYコンピュータプログラムの実行中に、第1図
のYコンピュータシステムを作動する方法に関する。換
言すれば、本発明は、更に詳細には、ソースプログラム
10が間接経路24に沿ってY実行可能コードに移行される
ときのエラーの報告に関する。このとき、Xコンパイラ
16によって発生されるデバッグ情報には一般的にX実行
可能コード中の命令のアドレスが含まれる。下記に更に
詳しく説明するが、例外ハードウェアおよびY実行可能
コード22Aが編成され、Yコードアドレス上で動作す
る。本発明は、エラーを生じるYコード命令の第一アド
レスと、該変換Yコード命令に対応するXコード命令の
第二アドレスとの間を連結するものである。この連結
は、Yプロセッサ(第4図80)のハードウェアの例外信
号で開始し、Xコード命令の指示に関係するエラーの報
告で終了するエラー処理手順で利用される。
第7図によれば、複数の例外入力131のいずれか1個の
例外信号に応答するためのYプロセッサ(第4図80)の
ハードウェアは、130で概括的に指定されている。例外
信号には、例えば、ハードウェアの故障を知らせるパリ
ティエラー信号、メモリアクセス命令に起因するメモリ
例外、演算命令に起因する演算論理からの演算例外が含
まれる。
本発明は、更に詳細には、演算論理装置132からの演算
例外のような例外を生じるアプリケーションプログラム
のエラーを報告することに関する。演算例外には、例え
ば、大きすぎて所定の整数または浮動小数点の形式に収
めきれないことによる、整数または浮動小数点オーバフ
ロー、供給除数が0である、0による整数または浮動小
数点除算、小さすぎて所定の浮動小数点の形式で表せな
いことによる、浮動小数点下位けたあふれ、が含まれ
る。
演算論理装置132は、演算実施時に必ず演算例外状態の
存在を調べる。但し、Yコード命令の中には、例外状態
による例外信号の発生を不可能にしたり、妨げたりする
ものと、例外状態による例外信号の発生を可能にするも
のがある。この機能は、ANDゲート133によって第7図に
図示されている。
Yプロセッサが応答できるのは、随時、ただ1個の例外
入力に対してだけである。複数の同時例外信号が発生す
るような状況を処理するために、いくつかの信号の中か
ら1個の信号を選択する優先順位エンコーダ134で例外
入力131を受信する。優先性が認められた例外信号は、
優先順位エンコーダ134によって供給されるコードで指
示される。
例外入力131は、ORゲート135と組み合わせられて、制御
論理136で認識される例外信号を提供する。制御論理136
は、Yコード命令の実行を一時的に中断し、個々のレジ
スタまたは伝送ゲート137、138、198からの例外に関す
るデータ収集を制御する。例外に関するデータには、例
外を生じる命令のYコードアドレス(PC−AE)である
「例外PC」、例外を生じる命令実行時にプロセッサの状
態を示すプログラム状態長ワード、例外の種別を定義す
る例外種別情報が含まれる。演算例外の場合、例えば、
演算論理装置132によって演算例外種別を示すコードが
提供される。優先性のある例外のコードに対して、マル
チプレクサ140が優先順位エンコーダ134で選択された例
外の例外種別情報を選択する。
制御論理136により、例外情報は、データバス141上に順
次置かれ、核スタックメモリ蓄積される。次いで、優先
順位エンコーダ134で選択された例外のコードに対し
て、例外ディスパッチ表142から対応例外ベクトルが読
み取られ、プログラムカウンタ143にロードされる。次
いで、制御論理136はプログラムカウンタ143の例外ベク
トルで始まる命令実行を開始する。
第8図には、例外処理のためのオペレーティングシステ
ムルーチンと関係のある第7図のハードウェアの動作を
詳細に示す流れ図150が示されている。第7図の説明で
記載した通り、例外が生じると、第7図のハードウェア
は、第8図のステップ151に記載のように命令の実行を
中断し、ステップ152に記載のように核モードスタック
上に例外PC、例外PSL、例外種別情報を置き、ステップ1
53に記載のようにディスパチッチ表の対応例外ベクトル
でプログラムカウンタをロードする。この場合、例外ベ
クトルは、オペレーティングシステムの「核モード」の
例外ハンドラである。オペレーティングシステム例外処
理ルーチンは、ステップ154にて、該例外だが、ただの
オペレーティングシステムではなくユーザプログラムに
よって処理される「ユーザモード例外」であるかどうか
をチェックすることによって開始する。命令の実行に対
して発生するハードウェアエラーは、例えば、通常はユ
ーザモードエラーでは有り得ず、オペレーティングシス
テムはステップ155にて例外を処理する。ユーザモード
例外の場合、ステップにて、核モードスタックおよびY
プロセッサ中の汎用レジスタ上に置かれた例外情報がユ
ーザモードスタック上に置かれる。最終的にステップ15
7にて、実行は、例外処理ように定義されたユーザモー
ド例外ルーチンにジャンプする。
第9図には、ユーザモード例外ルーチンのフローチャー
ト160が示されている。最初のステップ161で、Xマシン
状態情報が集められる。換言すれば、Xマシン状態の適
応モデルはYマシンレジスタおよびユーザメモリにて再
構成される。INCB−(R1)X−code命令のYコードの特
定例について下記に詳細説明されるように、Xコード命
令は、ステップ161にて、Xマシン状態の適応モデルが
再構成できるような様式でYコードに変換される。つぎ
にステップ162にて、例外を有するYコード命令のYア
ドレスが、本発明による方法で後でエラー報告に利用で
きるように、メモリロケーションY ADDRにセーブされ
る。
第5図Aのステップ106と110に関連して上記に説明され
た通り、Y−アドレスポインタPC−AEはステップ163と1
64にてXグラニュール境界に合わせられる。これによっ
て、状態ハンドプログラムがあるときに境界合わせされ
たY−アドレスポインタPC−AEからプログラム実行を回
復および継続できる。例外種別に対する状態ハンドラの
可用性は、ステップ165にてチェックされる。かかる状
態ハンドラが使用可能である場合、実行はステップ166
の状態ハンドラに分岐する。使用不可能な場合はステッ
プ167にて、ユーザモード例外ルーチンが、エラーを生
じた変換Yコード命令に対応するXコード命令のアドレ
スに入手する。Y_ADDRに対応するX命令アドレスを入手
するための好ましい方法は、第13図に関連して下記に詳
述する。
ステップ168にて、エラーはY_ADDRに対応するXアドレ
スを有するX命令との関係と共に報告される。好ましい
エラー方向手順は、第15図に関連して下記に詳述する。
一般に、ステップ168を実施するYコードプログラムを
入手するには、Xコード計算装置でXコードアプリケー
ションプログラムが実行されるときに発生するエラーを
報告するための既知のXコードプログラムを変換する。
また、エラー原因の命令のアドレスとしてX命令のアド
レスを引用するように、引用する他のXマシン状態情報
がステップ161で収集されたXマシン情報であるよう
に、該変換プログラムを多少修正する。従って、本発明
の重要利点の一つは、既存のXコードデバッグルーチン
が翻訳し、Yコードコンピュータシステム上で作動する
変換アプリケーションプログラムのデバッグのために多
少の修正を施して利用できるようにすることである。
本発明の好適実施例においては、Y_ADDRに対応するX命
令アドレスを入手するためにX−Yアドレス相関表を使
用する。第10図に示すように、X−Yアドレス相関表17
0には、Xコードアプリケーションプログラムの個々の
命令のアドレス172と、Xコードアプリケーションプロ
グラムから変換されたYコードアプリケーションプログ
ラムの対応命令のアドレス173とを各々有する項目171が
含まれている。例えば、各アドレス172、173は、32ビッ
トの長ワードである。表中の各Xアドレスの命令がYコ
ードアプリケーションプログラムの一連のYコード命令
に変換された場合、表中項目の対応Yコード命令アドレ
スは、一連の命令の最初のアドレスである。
Xコードアプリケーションプログラムの命令アドレス
は、必ずしもすべてがX−Yアドレス相関表170に含ま
れていない方が好ましい。さもなければ、表が大きくな
りすぎてかなりのメモリ空間を費やし、表のサーチに長
い時間を労することになる。本発明によるエラー報告を
利用すれば、更に、Xコードアプリケーションプログラ
ムの部分変換を実行する際にXコードインタープリタか
らリターンするために表170を使用できる。常時完全な
変換が望ましいが、Xコードアプリケーションプログラ
ム中ですべてのXコードを発見することの困難さによ
り、必ずしもいつも完全な変換ができるわけではない。
そのような場合、表170のXコードアドレスが、Xコー
ドアプリケーションプログラム中のXコードの基本ブロ
ックのエントリイポイントに一致すれば、Xコードイン
タプリタは、変換のYコードの実行に効率的にリターン
できる。各基本ブロックは、該基本ブロックの最初の既
知の単一エントリポイントを有する一連の連続命令で構
成されている。実行は、基本ブロックの最初にのみ転送
され、また、基本ブロックの最後からのみ転送される。
このような状況下での部分変換およびインタープリタの
動作は、冒頭に参照したリチャードL.サイツによる1991
年3月7日付け合衆国出願第07/666196に詳しく記載さ
れており、該明細書の内容は参照として本明細書に含ま
れている。
第11図には、「MAIN」と呼ばれるXコードアプリケーシ
ョンプログラムの一部例が、プログラムの基本ブロック
を図示するため、流れ図で記載されている。第一基本ブ
ロックは、X−INSTRUCTION−1から成っている。第二
基本ブロックは、X−INSTRUCTION−2,X−INSTRUCTION
−3,X−INSTRUCTION−4から成っている。第三基本ブロ
ックは、X−INSTRUCTION−5から成っている。第四基
本ブロックは、X−INSTRUCTION−6から始まってい
る。第11図に示されているXコード命令と、それに対応
するYコード命令Y−INSTRUCTION−1〜Y−INSTRUCTI
ON−14の相関は、第10図のX−Yアドレス相関表170の
XコードアドレスとYコードアドレスの間の相関であ
る。
本発明好適実施例においては、X−Y相関表の項目でY_
ADDRが見つけられない一般的な状況において、Y_ADDR命
令に対応するXアドレスを入手するために境界命令ビッ
トマップも使用する。第12図に、境界命令ビットマップ
185の好ましい形式が示されている。フラグ186のような
単一ビットフクグが長ワード186のような長ワードにパ
ックされている。各フラグは1個のYコード命令に対応
しており、該フラグは対応Yコード命令が境界命令であ
る場合に翻訳プログラム(第1図32)によってセットさ
れる。
境界命令ビットマップ183中のフラグもセットされてVAX
RXコードの「人為」グラニュール境界を指示することが
好ましい。人為グラニュール境界を指示することは、
「正確な」トラップを有するVAXRXコード命令を、正確
なトラップを有しないRISC Yコード命令に変換する場
合に特に有意義である。命令の実行によって、例外の可
不可に関係なく(例外信号の発生を除く)例外状態が生
じたきに同じ結果が出るならば、その命令は正確なトラ
ップを有している。好ましいRISCコンピュータシステム
においては、付加回路の複雑さと実行サイクルで、例外
状態検出後に演算命令の計算を完了する必要があるの
で、演算命令は正確なトラップを有しない。但し、プロ
グラマが正確なトラップのエミュレートを希望すれば、
一対の命令で実現される。動作は、最初に、命令によっ
てトラップを不可能にした状態でコーティングされ、次
に命令によってトラップを可能にした状態でコーディン
グされる。RISC YコードのX命令細分性を保存するた
めに、命令によってトラップが可能になった後で、「ド
レーントラップ」(DRAINT)命令がコーディングされ
る。RISCコンピュータシステムでは、トラップを可能に
する命令と該トラップを可能にする命令の次の命令とを
一緒に含む、複数の命令が同時に実行されることがある
ので、DRAINT命令は、トラップが発生時にXマシン状態
が容易に第9図ステップ161に収集され、変換されたX
コード命令の完了に対応する適応Xマシン状態を形成で
きることを確認する。
Xコード命令から、トラップ可能Yコード命令を含む一
連のYコード命令への変換の一特殊例を下記に示す。
本例では、ADDQ命令は、完全な演算結果を提供するため
に最初はトラップ不可状態で発生し、2度目は一連のY
コードの最後にトラップ可能状態でDRAINT命令の直前に
発生する。このトラップ可能命令のアドレスは、上記で
「人為グラニュール境界」と記載されており、その対応
フラグは、境界命令ビットマップにセットされている。
これにより、Xコード命令(可能トラップ以外)の結果
は人為グラニュール境界で完了するため、割り込み処理
時の効率が向上する。従って、トラップの直前に割り込
みが発生したような場合、PC_AEは第5図Aのステップ1
10にて人為グラニュール境界に合わせられ、Xコード命
令から変換されたYコードの最初において境界命令を完
全バックアップすることなくXコード命令細分性を保存
できる。
第13図に、X−Yアドレス相関表(第10図170)と境界
命令ビットマップ(第12図185)を用いてYコードアド
レスY_ADDRに対応するXコードアドレスを発見する好ま
しい手順の流れ図190を示す。最初のステップ191にて、
X−Yアドレス相関表を探し、Y_ADDRに等しいか、それ
より小さい表中最大Yコードアドレス(Y_ADDR_MAX)を
発見する。次に、ステップ192にて、メモリロケーショ
ンX−ADDRESSの内容を、Y_ADDR_MAXを含む表項目のX
コードアドレスと等しく設定する。次に、ステップ193
において、Y_ADDR_MAXがY_ADDRと等しい場合、X−ADDR
ESS中の所望のXコードアドレスで第13図の手順が終了
される。等しくない場合は、ステップ194にて、メモリ
ロケーションCOUNTの内容がクリアされ、Y_ADDRとY_ADD
R_MAXの間のYコード境界命令数の係数が開始される。
これは、境界命令ビットマップ精査中に実行される。
ステップ195にて、(Y_ADDR)に対応する位置でビット
マップのフラグが試験される。フラグがセットされる
と、ステップ196にて命令の操作符号Y_ADDR+4で(Y
命令アーキテクチャでは命令の長さは4バイトなので)
検査され、DRAINT命令かどうか確認される。この場合、
Y−ADDRの命令はトラップ可能な命令であり、ステップ
195で発見されてセットされた対応フラグは、人為グラ
ニュール境界のフラグである。フラグでセットされた
が、人為グラニュール境界のフラグではない場合、ステ
ップ197にてCOUNTが1だけ増加される。
Y_ADDRはステップ198にて、RISC Yコード命令1個の
長さに対応して4バイトだけ減少される。Y_ADDR_MAXへ
の後方精査が終了したかどうかを試験するために、Y_AD
DRとY_ADDR_MAXを比較し、Y_ADDRがY_ADDR_MAXより大き
い場合、ステップ195にて精査が続く。小さい場合、ス
テップ200にて、COUNTの値がゼロと比較される。計数が
ゼロである場合、X_ADDRESSの値はXコード命令の所望
のアドレスであり、第9図のステップ168にて実行が継
続される。ゼロでない場合、ステップ210にて、X_ADDRE
SSはXコード命令デコードポインタとして使用され、X
命令1個を構文解析することによって進められ、ステッ
プ202にてCOUNTが1だけ減ぜられる。計数された数のX
命令の構文解析が終わるまでステップ200、201、202が
繰り返され、X_ADDRESSは所望のアドレスに進められ
る。
第14図に、Xコードアプリケーションプログラムがコン
パイルされた場合に発生されるデバック情報220のブロ
ック図を示す。任意のXコード命令アドレスに対応する
ソースコードの行No.を報告可能にするため、デバック
情報に追跡情報221が含まれる。追跡情報には、例え
ば、ソースコードの各行No.に関係のあるXコードアド
レス範囲の記録リストが含まれる。Xコードアドレス範
囲は、ソースコード行からコンパイルされるXコード命
令のアドレス範囲を示す。コンパイラによっては、リン
カ(第1図18)によってリンクされるソースコードモジ
ュールを分離するものもある。この場合、コンパイラは
モジュール名と関連Xコードアドレス範囲を記載するモ
ジュール表(図示せず)を生成する。この場合、コンパ
イラは、各モジュールごとに独立した追跡情報表も生成
する。
デバック情報220には、また、Xコードアプリケーショ
ンプログラムで参照されたメモリアドレスとスタックロ
ケーションを備えたアプリケーションソースコードにて
発生する記号名と関係のある記号名情報も含まれる。記
号名情報222には、例えば、ソースコードの各大域変数
と関係のあるXコードアドレスの記録と、ソースコード
の各ルーチンに関係のあるXコードアドレス範囲の記録
が含まれる。また、各ルーチンは、ルーチン内の各局所
変数のスタックフレームオフセットの記録数とルーチン
を関連付けることもある。記号名情報222の記録には、A
SCEIIコードで記号名を含む記号例223に対するポインタ
も含まれる。
第15図では、第14図のデバック情報を利用しで、エラー
と、エラーを生じたXコード命令のX−ADDRESSとの関
連を報告する、好ましい手順をしめす。ステップ231に
て、追跡情報(第14図221)の記録を調べ、X−ADDRESS
を含むアドレス範囲の記録を探す。かかる記録が発見さ
れたら、ステップ232にて、記録中のソースコードの行N
o.がプログラマまたはユーザに報告される。ステップ23
3にて、例外種別情報からエラー種別が判定され、プロ
グラマまたはユーザに報告される。次に、ステップ234
にて、記号名情報の記録からエラーと関係がある記号名
が調査される。例えば、ルーチンの記録から、X−ADDR
ESSを含むアドレス範囲の記録が調査される。関係のあ
るルーチンの名前が発見されると、ステップ235にて、
その種別とASCII記号列で報告される。記号名がサブル
ーチンである場合、ステップ236にて、エラー報告はス
テップ237へ続く。ステップ237では、(第9図のステッ
プ161で収集された)Xマシン状態情報のスタックが調
べられてサブルーチンで終わる呼出ルーチンのチェイン
が追跡され、それをプログラムまたはユーザに報告す
る。
ステップ234と235では、また、エラーの関係にある大域
変数および局所変数を発見して報告する。例えば、オー
バフローまたは下位けたあふれ算術エラーの場合、X−
ADDRESSのXコード命令と、後続の命令をいくつか検査
して、演算結果が格納される大域または局所変数の結果
アドレスを特定しようとすることもできる。ゼロによる
除算エラーの場合は、その直前の命令をいくつか検査し
て、除数が発生した大域または局所変数のソースアドレ
スを特定しようとすることもできる。
第15図の手順を利用して報告されるエラーメッセージの
例には、下記が含まれる。
LINE 200 INTEGER OVERFLOW IN SUBROUTINE“DIVIDED"W
HEN CALLED BY ROUTINE“MAIN"AT LINE 50,RESULT STOR
ED IN LOCAL VARIABLE“TOTAL"・ LINE 500 FLOATING−POINT DIVIDE BY ZERO IN SUBROUT
INE“STOCK"WHEN CALLED BY ROUTINE“MAIN"AT LINE 7
5,DIVISOR FROM GLOBAL VARIABLE“SHARES". 以上の観点から、Yコードアプリケーションプログラム
が変換された、変換元のXコードアプリケーションプロ
グラムの文脈において、Yコードアプリケーションプロ
グラム実行時に発生するエラーを報告する方法とシステ
ムを説明した。本発明は、エラーを生じたYコード命令
に対応するXコード命令のXコードのアドレスを、Xコ
ード実行完了時のXコードマシンの状態に関する適応情
報と共に、提供するものである。従って、Xコードから
Yコードに変換され、Xコードアプリケーションプログ
ラムのソースコードのコンパイル中に発生したデバッグ
情報を使用するデバックルーチンによって、エラーが報
告されるのである。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭61−213925(JP,A)

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】第一コンピュータプログラムの変換である
    第二コンピュータプログラムの実行中に発生するエラー
    を報告するためのデジタルコンピュータの動作方法であ
    って、前記第一コンピュータプログラムは、第一命令ア
    ーキテクチャに基づいて第一命令の組からの命令を含
    み、前記第一コンピュータプログラムの前記命令の各々
    は各々のアドレスを有し、前記第二コンピュータプログ
    ラムは、第二命令アーキテクチャに基づいた第二命令の
    組からの命令を含み、前記第二コンピュータプログラム
    の前記命令の各々は各々のアドレスを有し、前記第一コ
    ンピュータプログラムの前記命令のいくつかは、前記第
    二コンピュータプログラムの前記命令から成る各々の組
    にそれぞれ変化され、前記エラーは、前記第二コンピュ
    ータプログラムの前記命令の一つを実行することによっ
    て発生する方法において、 (a) 前記エラーの発生時に前記第二コンピュータプ
    ログラムの実行を打ち切り、 (b) 前記第二コンピュータプログラムの前記命令の
    うちの前記一つについての第一アドレスを決定し、 (c) 前記第一アドレスを使用し、前記第一コンピュ
    ータプログラムの前記命令のうちの一つについての第二
    アドレスを決定し、それから前記第二コンピュータプロ
    グラムの前記命令のうちの前記一つを変換し、前記ステ
    ップ(c)は、 i)アドレス相関表を前記第一アドレスに関連付け、そ
    のアドレス相関表は、前記第一コンピュータプログラム
    の各々の命令についてのアドレスと、前記第二コンピュ
    ータプログラムの一組の命令のうちの第一命令について
    のアドレスとを有するデータ項目を含んでおり、前記第
    二コンピュータプログラムの前記一組の命令は、前記第
    一コンピュータプログラムの前記各々の命令から変換さ
    れ、 前記第一コンピュータプログラムの命令の全てのアドレ
    スが、前記アドレス相関表のデータ項目に含まれておら
    ず、 ii)前記第一アドレスに対応する前記ビットマップの第
    一位置と、前記相関表のデータ項目にある前記第二コン
    ピュータプログラムのアドレスに対応する前記ビットマ
    ップの第二位置との間で境界命令ビットマップを走査
    し、前記境界命令ビットマップは、前記第一コンピュー
    タプログラムの前記各命令から変換された前記組の命令
    を始める前記第二コンピュータプログラムの命令を示
    し、 iii)前記ビットマップを走査するとき、前記第一位置
    を前記第二位置との間で前記ビットマップの指示を計数
    して命令の数を得て、前記アドレス相関表の前記データ
    項目から前記第一コンピュータプログラムの第三アドレ
    スを読み取り前記第三アドレスと前記命令の数とから前
    記第二アドレスを決定し、 (d) 前記エラーが発生したことを報告し、前記第二
    アドレスを使用して前記エラーが前記第一コンピュータ
    プログラムの前記命令のうちの前記一つに関連している
    ことを示すことが特徴とする方法。
  2. 【請求項2】前記アドレス相関表及び前記境界命令ビッ
    トマップが、前記第一コンピュータプログラムの変化中
    に生成されて、前記第二コンピュータプログラムを得る
    ことを特徴とする請求の範囲第1項記載の方法。
  3. 【請求項3】前記第一コンピュータプログラムがソース
    プログラムからコンパイルされ、前記第一コンピュータ
    プログラムがコンパイルされるときに追跡情報が生成さ
    れ、この追跡情報は、前記ソースプログラムのソースコ
    ードの行の行数を、ソースコードの前記行の各々からコ
    ンパイルされた前記第一コンピュータプログラムの命令
    についてのアドレスと関連付け、そして前記第二アドレ
    スが前記追跡情報と共に使用され、前記第一コンピュー
    タプログラムの前記命令のうちの前記一つをコンパイル
    するソースコードの行数を示すことによって、前記エラ
    ーが前記第一コンピュータプログラムの前記命令うちの
    前記一つと関連していることを示すことを特徴とする請
    求の範囲第1項記載の方法。
  4. 【請求項4】前記第一コンピュータプログラムがソース
    プログラムからコンパイルされ、前記第一コンピュータ
    プログラムがコンパイルされるときに記号名情報が生成
    され、前記記号名情報は、前記ソースプログラムの記号
    名を前記第一コンピュータプログラムのアドレスと関連
    づけ、前記エラーと関係のある記号名を特定するために
    前記記号名情報を参照し、前記エラーと共に前記記号名
    を報告することを特徴とする請求の範囲第1項記載の方
    法。
  5. 【請求項5】前記第二アドレスが、前記第三アドレスか
    ら始まる選択命令数を構文解析することによって、前記
    第三アドレスから決定され、その選択命令数が前記命令
    数に基づくことを特徴とする請求の範囲第1項記載の方
    法。
  6. 【請求項6】前記境界命令ビットマップは、トラップを
    可能にする前記第二コンピュータプログラムの命令の指
    示をも含み、そしてトラップを可能にする第二プログラ
    ムの前記命令の指示は、前記第一位置と前記第二位置と
    の間の前記ビットマップにおける指示の計数中は計数さ
    れずに、前記命令の計数を得ることを特徴とする請求の
    範囲第1項記載の方法。
  7. 【請求項7】第一コンピュータプログラムの変換である
    第二コンピュータプログラムの実行中に発生するエラー
    を報告するためのデジタルコンピュータの動作方法であ
    って、前記第一コンピュータプログラムは、第一命令ア
    ーキテクチャに基づいて第一命令の組からの命令を含
    み、前記第一コンピュータプログラムの前記命令の各々
    は各々のアドレスを有し、前記第二コンピュータプログ
    ラムは、第二命令アーキテクチャに基づいた第二命令の
    組からの命令を含み、前記第二コンピュータプログラム
    の前記命令の各々は各々のアドレスを有し、前記第一コ
    ンピュータプログラムの前記命令のいくつかは、前記第
    二コンピュータプログラムの各々の複数の前記命令にそ
    れぞれ変換され、前記変換は、アドレス相関表及び境界
    命令ビットマップを発生し、前記アドレス相関表は、前
    記第一プログラムの命令について各々のアドレスを有す
    るデータ項目を含み、前記第二プログラムの一組の命令
    における最初の命令についてのアドレスが前記各々の命
    令から変換され、前記第一コンピュータプログラムの命
    令アドレスの全部は、前記アドレス相関表のデータ項目
    に含まれておらず、前記境界命令ビットマップは、前記
    第二プログラムの命令であって、前記第一コンピュータ
    プログラムの各々の命令を変換することによって得られ
    た複数組の命令のうちの第一の命令を示すフラグを含
    み、前記エラーは、前記第二コンピュータプログラムの
    前記命令のうちの一つを実行することによって発生する
    方法において、 (a) 前記エラーの発生時に前記第二コンピュータプ
    ログラムの実行を打ち切り、 (b) 前記第二コンピュータプログラムの前記命令の
    うちの前記一つについての第一アドレスを決定し、 (c) 前記第二コンピュータプログラムの前記命令の
    うちの前記一つを変換する前記第一コンピュータプログ
    ラムにおける前記命令のうちの一つの命令についての第
    二アドレスを、前記第一アドレスから決定し、前記第二
    アドレスは、 i)前記アドレス相関表を参照して、前記第一アドレス
    よりも小さい前記プログラムの命令についての最大アド
    レスをそのアドレス相関表において見い出し、そしてそ
    の最大アドレスとして同じ表のデータ項目の前記第一プ
    ログラムにおける命令について対応するアドレスを見い
    出し、 ii)前記境界命令ビットマップを走査して、前記第一ア
    ドレスと前記最大アドレスとの間のアドレスを有する前
    記第二プログラムの前記フラグによって指示された命令
    の計算された数を得、 iii)前記第二アドレスに進んだ命令アドレスポインタ
    を進ませる間、前記対応アドレスから始まる前記第一プ
    ログラムの命令の前記計算された数を構文解析し、 (d) 前記エラーの発生を報告し、前記第二アドレス
    を用いてそのエラーが前記第一プログラムの前記命令の
    うちの前記一に関連していることを示すことを特徴とす
    る方法。
  8. 【請求項8】前記第一コンピュータプログラムがソース
    プログラムからコンパイルされ、前記第一コンピュータ
    プログラムがコンパイルされるときに追跡情報が生成さ
    れ、この追跡情報は、前記ソースプログラムのソースコ
    ードの行の行数を、ソースコードの前記行の各々からコ
    ンパイルされた前記第一コンピュータプログラムの命令
    についてのアドレスと関連付け、そして前記第二アドレ
    スが前記追跡情報と共に使用され、前記第一コンピュー
    タプログラムの前記命令のうちの前記一つをコンパイル
    するソースコードの行数を示すことによって、前記エラ
    ーが前記第一コンピュータプログラムの前記命令のうち
    の前記一つと関連づけられていることを示す請求の範囲
    第7項記載の方法。
  9. 【請求項9】前記第一コンピュータプログラムがソース
    プログラムからコンパイルされ、前記第一コンピュータ
    プログラムがコンパイルされるときに記号名情報が生成
    され、前記記号名情報は、前記ソースプログラムの記号
    名を前記第一コンピュータプログラムのアドレスと関連
    づけ、前記エラーと関係のある記号名を特定するために
    前記記号名情報を参照し、前記エラーと共に前記記号名
    を報告することを特徴とする請求の範囲第7項記載の方
    法。
  10. 【請求項10】前記境界命令ビットマップの前記フラグ
    がトラップ可能な前記第二コンピュータプログラムの命
    令も指示し、前記トラップ可能な前記第二コンピュータ
    プログラムの前記命令は前記走査中に計数されないこと
    を特徴とする請求項7記載の方法。
  11. 【請求項11】第一コンピュータプログラムの変換であ
    る第二コンピュータプログラムの実行中に発生するエラ
    ーを報告するためのデジタルコンピュータシステムであ
    って、前記第一コンピュータプログラムは、ソースプロ
    グラムをコンパイルすることによって発生され、 第一コンピュータプログラムの変換である第二コンピュ
    ータプログラムの実行中に発生するエラーを報告するた
    めのデジタルコンピュータの動作方法であって、前記第
    一コンピュータプログラムは、第一命令アーキテクチャ
    に基づいて第一命令の組からの命令を含み、前記第一コ
    ンピュータプログラムの前記命令の各々は各々のアドレ
    スを有し、前記第二コンピュータプログラムは、第二命
    令アーキテクチャに基づいた第二命令の組からの命令を
    含み、前記第二コンピュータプログラムの前記命令の各
    々は各々のアドレスを有し、前記第一コンピュータプロ
    グラムの前記命令のいくつかは、前記第二コンピュータ
    プログラムの複数の前記命令にそれぞれ変化され、前記
    エラーは、前記第二コンピュータプログラムの前記命令
    の一つを実行することによって発生するシステムにおい
    て、 (a) 前記エラーの発生時に前記第二コンピュータプ
    ログラムの実行を打ち切るための手段と、 (b) 前記第二コンピュータプログラムの前記命令の
    うちの前記一つについての第一アドレスを決定するため
    の手段と、 (c) アドレス変換表及び境界命令ビットマップを参
    照して、前記第二コンピュータプログラムの前記命令の
    うちの一つを変換する前記第一コンピュータプログラム
    の前記命令のうちの一つについての第二アドレスを前記
    第一アドレスから決定するための手段とを備え、前記ア
    ドレス相関表は、前記第一プログラムの命令についての
    各々のアドレスを有するデータ項目を含み、前記第二プ
    ログラムの一組の命令における第一命令についてのアド
    レスが前記各々の命令から変換され、前記境界命令ビッ
    トマップは、前記第二プログラムの命令であって、前記
    第一コンピュータプログラムの各々の命令を変換するこ
    とによって得られた複数組の命令のうちの第一命令を指
    示し、 (d) 更に、前記エラーが発生したことを報告するた
    めの手段であって、前記第二アドレスを使用して前記エ
    ラーが前記第一コンピュータプログラムの前記命令のう
    ちの前記一つのに関連していることを示すための手段と
    を備えることを特徴とするシステム。
  12. 【請求項12】前記第一コンピュータプログラムの前記
    命令のうちの前記一つをコンパイルする前記ソースプロ
    グラムのソースコードの一部を識別するように、進路情
    報を参照するための手段を更に備え、前記報告するため
    の手段が、前記第一コンピュータプログラムの前記命令
    のうちの前記一つをコンパイルする前記ソースプログラ
    ムのソースコードの前記部分を指示することを特徴とす
    る請求の範囲第11項記載のシステム。
  13. 【請求項13】前記エラーと関係のある記号名を特定す
    るように記号名情報を参照し、前記エラーと共に前記記
    号名を報告するこめの手段を更に備えることを特徴とす
    る請求の範囲第11項記載のシステム。
  14. 【請求項14】アドレス相関表は、前記第一コンピュー
    タプログラムの各々の命令についてのアドレスと、前記
    第二コンピュータプログラムの一組の命令のうちの第一
    命令についてのアドレスとを有するデータ項目を含んで
    おり、前記第二コンピュータプログラムの前記一組の命
    令は、前記第一コンピュータプログラムの前記各々の命
    令から変換され、 前記第一コンピュータプログラムの命令の全てのアドレ
    スが、前記アドレス相関表のデータ項目に含まれておら
    ず、 前記境界命令ビットマップが、前記第一コンピュータプ
    ログラムの変換中に生成されて、前記第二コンピュータ
    プログラムを得、前記境界命令ビットマップは、前記第
    一コンピュータプログラムの前記各命令から変換された
    前記組の命令を始める前記第二コンピュータプログラム
    の命令を示し、 前記アドレス変換表を参照するための前記手段は、前記
    第一アドレスに対応する前記ビットマップの第一位置
    と、前記アドレス相関表のデータ項目にある前記第二コ
    ンピュータプログラムのアドレスに対応する前記ビット
    マップの第二位置との間で前記境界命令ビットマップを
    走査するための手段と、 前記第一位置と前記第二位置との間で前記ビットマップ
    の指示を計数して命令の数を得るための手段と、前記ア
    ドレス相関表の前記データ項目から前記第一コンピュー
    タプログラムの第三アドレスを読み取るための手段と、 前記第三アドレスと前記命令の数とから前記第二アドレ
    スを決定するための手段とを更に備えることを特徴とす
    る請求の範囲第11項記載のシステム。
  15. 【請求項15】前記第三アドレスから前記第二アドレス
    を設定するための前記手段が、前記第三アドレスから始
    まり、かつ、前記命令数に基づいて選択された選択命令
    数を構文解析するための手段を含むことを特徴とする請
    求の範囲第14項記載のシステム。
  16. 【請求項16】前記境界命令ビットマップが、トラップ
    可能な前記第二コンピュータプログラムの命令の指示を
    も含み、そして前記計数のための手段が、トラップ可能
    な前記第二コンピュータプログラムの命令の指示を計数
    しないことを特徴とする請求の範囲第14項記載のシステ
    ム。
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
US666,025 1991-03-07
US700,770 1991-05-15
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
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 JPH05505692A (ja) 1993-08-19
JPH0734178B2 true 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
JP2008537245A (ja) * 2005-04-20 2008-09-11 トランジティブ リミテッド プログラム・コード変換中の例外を正確に処理するための方法及び装置

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
US5930509A (en) * 1996-01-29 1999-07-27 Digital Equipment Corporation Method and apparatus for performing binary translation
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
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
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
US6000028A (en) * 1996-01-29 1999-12-07 Digital Equipment Corporation Means and apparatus for maintaining condition codes in an unevaluated state
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
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development 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
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
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
DE69820027T2 (de) * 1997-10-02 2004-07-08 Koninklijke Philips Electronics N.V. Vorrichtung zur ausführung virtueller maschinenbefehle
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
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
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
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
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
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
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
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
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
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
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
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
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
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
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
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US7251811B2 (en) * 2002-01-02 2007-07-31 Intel Corporation Controlling compatibility levels of binary translations between instruction set architectures
US7296257B1 (en) * 2002-08-01 2007-11-13 Tymesys Corporation Techniques for exception handling by rewriting dispatch table elements
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
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
WO2006111705A2 (en) * 2005-04-20 2006-10-26 Transitive Limited 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
US7596720B2 (en) * 2005-09-27 2009-09-29 Microsoft Corporation Application health checks
US7676806B2 (en) * 2005-09-27 2010-03-09 Microsoft Corporation Deployment, maintenance and configuration of complex hardware and software systems
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模块及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61213935A (ja) * 1985-03-18 1986-09-22 Omron Tateisi Electronics Co 高級言語プログラムのデバック装置及びそのステップ方式

Family Cites Families (10)

* 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
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
WO1990001738A1 (en) * 1988-07-29 1990-02-22 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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61213935A (ja) * 1985-03-18 1986-09-22 Omron Tateisi Electronics Co 高級言語プログラムのデバック装置及びそのステップ方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008537245A (ja) * 2005-04-20 2008-09-11 トランジティブ リミテッド プログラム・コード変換中の例外を正確に処理するための方法及び装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH0734178B2 (ja) 変換コードを実行するための効果的エラー報告
US12001316B2 (en) Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
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
US6205555B1 (en) Processor power consumption estimating system, processor power consumption estimating method, and storage medium storing program for executing the processor power consumption estimating method
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US20080301694A1 (en) Communication scheduling within a parallel processing system
US8448152B2 (en) High-level language, architecture-independent probe program compiler
US20090125888A1 (en) Expression-level debugging without format changes
CN101667154A (zh) 用于改善片上仿真系统中高级语言的仿真速度的装置和方法
EP0528019B1 (en) Method and apparatus for computer code processing in a code translator
JPH03118635A (ja) ソースコード発展システム用増分コンパイラ
Browne et al. Visual programming and parallel computing
Marti Compilation techniques for a control-flow concurrent LISP system
JPH09319617A (ja) ソフトウエア開発システム、プログラム実行方法、プログラム作成方法、トレース装置および方法、計算機装置、ならびにプログラムの評価方法
Hart The advanced interactive debugging system (AIDS)
Altman et al. DAISY dynamic binary translation software
CN119917105A (zh) 指令编译方法、装置、编译器及计算设备
CA3039198C (en) Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
TSUBOTANI LANGUAGE AND ARCHITECTURE