JP2002532804A - ハイブリッドコンピュータプログラミング環境 - Google Patents
ハイブリッドコンピュータプログラミング環境Info
- Publication number
- JP2002532804A JP2002532804A JP2000588679A JP2000588679A JP2002532804A JP 2002532804 A JP2002532804 A JP 2002532804A JP 2000588679 A JP2000588679 A JP 2000588679A JP 2000588679 A JP2000588679 A JP 2000588679A JP 2002532804 A JP2002532804 A JP 2002532804A
- Authority
- JP
- Japan
- Prior art keywords
- level
- instructions
- source code
- assembly language
- programming
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006870 function Effects 0.000 claims abstract description 14
- 238000000034 method Methods 0.000 claims description 37
- 238000012360 testing method Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
高性能なハイブリッドプログラミング環境を供給することによりアセンブリ言語プログラミングを補助する装置を提供する。この装置は、少なくとも1個の高級命令を含む入力ハイブリッドソースコードファイルをパースするモジュールと、ハイブリッドソースコードファイル内の少なくとも1個のアセンブリ言語命令を、対応する高級命令から定義する関数のライブラリと;ライブラリに従って高級命令を機械語命令に翻訳するモジュールと;翻訳された機械語命令をオブジェクトファイルに出力するためのモジュールを具備する。
Description
【0001】 発明の背景 本発明は、コンピュータプログラミング言語環境に関し、より詳細にはアセン
ブリ言語プログラムの作成及びデバッギングを補助するための装置に関する。
ブリ言語プログラムの作成及びデバッギングを補助するための装置に関する。
【0002】 アセンブリ言語プログラミングは、プログラミングプロセスのコード作成及び
デバッギング段階の両方において特に困難な作業である。C++等の高級言語を使
用して、人間の使用する言語に比較的近い抽象的記号でアルゴリズムを既述する
プログラムを書くことができる。他方、アセンブリ言語は機械的であり、アルゴ
リズムを単純なマイクロプロセッサ命令で既述する。従って、アセンブリ言語プ
ログラムは通常、高級言語により書かれたプログラムよりも長く、理解が難しい
。
デバッギング段階の両方において特に困難な作業である。C++等の高級言語を使
用して、人間の使用する言語に比較的近い抽象的記号でアルゴリズムを既述する
プログラムを書くことができる。他方、アセンブリ言語は機械的であり、アルゴ
リズムを単純なマイクロプロセッサ命令で既述する。従って、アセンブリ言語プ
ログラムは通常、高級言語により書かれたプログラムよりも長く、理解が難しい
。
【0003】 デバッギングプロセスはアセンブリ言語プログラミングにおいて特に困難であ
る。デバッギングとは、コンピュータプログラムを試験して、設計仕様に一致し
ないような結果を生じさせるプログラムエラー(バグ)を見つけだす作業である
。エラーはプログラムの土台として使用される基本的アルゴリズム内の欠陥や、
アルゴリズムの間違った実行等から生ずる。そのようなエラーを有する結果を発
見すると、ソフトウェアエンジニアはエラーを含むコンピュータプログラム部分
を見つけだし、書き換える。エンジニアは次にプログラムを再コンパイルし、も
う一度試験する。このデバッギングプロセスは、プログラムからエラーが除去さ
れるまで繰り返される。
る。デバッギングとは、コンピュータプログラムを試験して、設計仕様に一致し
ないような結果を生じさせるプログラムエラー(バグ)を見つけだす作業である
。エラーはプログラムの土台として使用される基本的アルゴリズム内の欠陥や、
アルゴリズムの間違った実行等から生ずる。そのようなエラーを有する結果を発
見すると、ソフトウェアエンジニアはエラーを含むコンピュータプログラム部分
を見つけだし、書き換える。エンジニアは次にプログラムを再コンパイルし、も
う一度試験する。このデバッギングプロセスは、プログラムからエラーが除去さ
れるまで繰り返される。
【0004】 デバッギングプロセスがアセンブリ言語プログラムに対して比較的困難である
理由は、基本的アルゴリズムが、多数の機械的かつ個々のマイクロプロセッサに
特有の命令により不明瞭となるからである。他方、高級言語では基本的アルゴリ
ズムは認識が容易である。また、現在のアセンブリ言語プログラミング環境では
、高級プログラミング環境において一般に見られる多くの機能が利用できない。
例えば、高級言語及びプログラミング環境は、ハードディスク上に記憶されたフ
ァイルの取り扱いを容易にする数多くの機能を有する。これらのファイルは、プ
ログラムのデバッグ中にそこから得られる試験出力結果を記憶するために使用で
きる。
理由は、基本的アルゴリズムが、多数の機械的かつ個々のマイクロプロセッサに
特有の命令により不明瞭となるからである。他方、高級言語では基本的アルゴリ
ズムは認識が容易である。また、現在のアセンブリ言語プログラミング環境では
、高級プログラミング環境において一般に見られる多くの機能が利用できない。
例えば、高級言語及びプログラミング環境は、ハードディスク上に記憶されたフ
ァイルの取り扱いを容易にする数多くの機能を有する。これらのファイルは、プ
ログラムのデバッグ中にそこから得られる試験出力結果を記憶するために使用で
きる。
【0005】 アセンブリ言語におけるデバッギングプロセスにおける別の問題点は、個々の
アセンブリ言語がそれぞれ特有のデバッギングプログラムを有しているため、ソ
フトウェアエンジニアは新しいマイクロプロセッサが開発される度に、新たな一
連のデバッギングプログラムに習熟しなければならない点である。
アセンブリ言語がそれぞれ特有のデバッギングプログラムを有しているため、ソ
フトウェアエンジニアは新しいマイクロプロセッサが開発される度に、新たな一
連のデバッギングプログラムに習熟しなければならない点である。
【0006】 アセンブリ言語プログラムの実行を試験するための最も正確な手段、すなわち
エミュレータは、アセンブリ言語が使用されるマイクロプロセッサに直接接続さ
れる特別なハードウェア装置である。エミュレータはマイクロプロセッサの入力
と出力の状態を継続して監視する。そのような装置は高価であり、マイクロプロ
セッサ開発の初期段階では必ずしも利用出来るものではなく、従ってソフトウェ
ア開発における遅れの原因ともなる。
エミュレータは、アセンブリ言語が使用されるマイクロプロセッサに直接接続さ
れる特別なハードウェア装置である。エミュレータはマイクロプロセッサの入力
と出力の状態を継続して監視する。そのような装置は高価であり、マイクロプロ
セッサ開発の初期段階では必ずしも利用出来るものではなく、従ってソフトウェ
ア開発における遅れの原因ともなる。
【0007】 欧州特許出願第90114711号には、高級言語で書かれた制御プログラム
を機械言語に翻訳し、その機械語制御プログラムを、開発マイクロプロセッサに
転送するために使用される特化された開発用コンピュータが記載されている。こ
れによって開発プロセスは幾分容易となるが、1つのプログラム内に高級言語と
アセンブリ言語の両方を含んだプログラムの作成、試験及びデバッギングを可能
とするものではない。さらに、この開発方法では、特化ハードウェア及びインタ
フェース用の別個の開発用コンピュータが必要とされる。
を機械言語に翻訳し、その機械語制御プログラムを、開発マイクロプロセッサに
転送するために使用される特化された開発用コンピュータが記載されている。こ
れによって開発プロセスは幾分容易となるが、1つのプログラム内に高級言語と
アセンブリ言語の両方を含んだプログラムの作成、試験及びデバッギングを可能
とするものではない。さらに、この開発方法では、特化ハードウェア及びインタ
フェース用の別個の開発用コンピュータが必要とされる。
【0008】 より効率的な装置では必要とされる特別な電子的ハードウェアの量が低減され
る。そのような装置は汎用パーソナルコンピュータ上で使用されるため、企業は
社員の既存のパーソナルコンピュータ技術を利用して、アセンブリ言語プログラ
ムの作成及びデバッギングを行うことができる。さらに効率の高い装置では、競
争の激しい高級プログラム言語市場に出回っている全てのツールを、アセンブリ
言語プログラミングに利用することができる。
る。そのような装置は汎用パーソナルコンピュータ上で使用されるため、企業は
社員の既存のパーソナルコンピュータ技術を利用して、アセンブリ言語プログラ
ムの作成及びデバッギングを行うことができる。さらに効率の高い装置では、競
争の激しい高級プログラム言語市場に出回っている全てのツールを、アセンブリ
言語プログラミングに利用することができる。
【0009】 従って、高級言語プログラムの作成およびデバッギングの容易さをアセンブリ
言語プログラムに適応可能とする装置が必要とされている。
言語プログラムに適応可能とする装置が必要とされている。
【0010】 発明の要約 本発明の課題は、アセンブリ言語プログラムの作成及びデバッギングを容易に
する、高度なアセンブリ言語プログラミング環境を提供することである。この課
題は、高級プログラミング言語命令とアセンブリ言語プログラミング命令の両方
を含むプログラムをコンパイルできる、ハイブリッドプログラミング環境により
達成される。
する、高度なアセンブリ言語プログラミング環境を提供することである。この課
題は、高級プログラミング言語命令とアセンブリ言語プログラミング命令の両方
を含むプログラムをコンパイルできる、ハイブリッドプログラミング環境により
達成される。
【0011】 本発明は、高度なハイブリッドプログラミング環境を提供することによりアセ
ンブリ言語プログラミングを容易にするシステムを提供する。この環境、少なく
とも1つの高級命令を含む入力ハイブリッドソースコードファイルをパースする
モジュール;ハイブリッドソースコードファイル内の少なくとも1個のアセンブ
リ言語命令を対応する高級命令から定義するための関数のライブラリ;高級命令
を前記ライブラリに従って機械言語命令に翻訳するためのモジュール;及び、翻
訳された機械言語命令をオブジェクトファイルに出力するモジュールを有する。
ンブリ言語プログラミングを容易にするシステムを提供する。この環境、少なく
とも1つの高級命令を含む入力ハイブリッドソースコードファイルをパースする
モジュール;ハイブリッドソースコードファイル内の少なくとも1個のアセンブ
リ言語命令を対応する高級命令から定義するための関数のライブラリ;高級命令
を前記ライブラリに従って機械言語命令に翻訳するためのモジュール;及び、翻
訳された機械言語命令をオブジェクトファイルに出力するモジュールを有する。
【0012】 本発明はまた、不特定数の高級及びアセンブリ言語命令を含むハイブリッドソ
ースコードファイルを取り扱うための方法を提供する。この方法では:少なくと
も1個の高級命令を含む入力ハイブリッドソースコードファイルをパースし;ハ
イブリッドソースコードファイル内のアセンブリ言語命令を高級言語命令に変換
し;高級命令を機械語命令に翻訳し;翻訳された機械語命令をオブジェクトファ
イルにコンパイルする。
ースコードファイルを取り扱うための方法を提供する。この方法では:少なくと
も1個の高級命令を含む入力ハイブリッドソースコードファイルをパースし;ハ
イブリッドソースコードファイル内のアセンブリ言語命令を高級言語命令に変換
し;高級命令を機械語命令に翻訳し;翻訳された機械語命令をオブジェクトファ
イルにコンパイルする。
【0013】 本発明はまた、アセンブリ言語プログラムを作成及びデバッギングするための
方法を提供する。この方法では:少なくとも1個の高級命令を含むソースコード
ファイルを作成し;少なくとも1個の高級命令を含むソースコードファイルをデ
バッギングし;ソースコードファイル内の高級命令をアセンブリ言語命令に置換
し;その結果得られる、高級及びアセンブリ言語命令の両方を含むハイブリッド
ソースコードファイルをデバッグする。
方法を提供する。この方法では:少なくとも1個の高級命令を含むソースコード
ファイルを作成し;少なくとも1個の高級命令を含むソースコードファイルをデ
バッギングし;ソースコードファイル内の高級命令をアセンブリ言語命令に置換
し;その結果得られる、高級及びアセンブリ言語命令の両方を含むハイブリッド
ソースコードファイルをデバッグする。
【0014】 図面の簡単な説明 以下の本発明の説明において図面を参照する。
【0015】 図1は、本発明のアセンブリ言語プログラミングプロセスにおける各ステップ
を示すブロック図である。
を示すブロック図である。
【0016】 発明の簡単な説明 本発明によれば、プログラマーは先ず、高級コンパイラ及びプログラミング環
境を使用して、高級言語で書かれたプログラムをコンパイル及びデバッグする。
プログラマーは高級プログラムコードを、生ずる高級コードに満足がゆくまでデ
バッグする。次にプログラマーは少しずつ高級命令をアセンブリ言語命令に換え
ていき、全ての高級命令がアセンブリ言語命令に置き換えられるまで結果をデバ
ッグする。
境を使用して、高級言語で書かれたプログラムをコンパイル及びデバッグする。
プログラマーは高級プログラムコードを、生ずる高級コードに満足がゆくまでデ
バッグする。次にプログラマーは少しずつ高級命令をアセンブリ言語命令に換え
ていき、全ての高級命令がアセンブリ言語命令に置き換えられるまで結果をデバ
ッグする。
【0017】 本発明のハイブリッドプログラミング環境は、アセンブリ言語命令をエミュレ
ートする関数のライブラリを具備した高級言語コンパイラである。これらの関数
はコンパイラの標準コンパイラ言語命令のグループとして書かれており、従って
標準的な高級言語命令と一緒に使用することができる。本発明により提供される
特別ライブラリ内の関数はアセンブリ言語命令の動作を模倣する。コンパイラは
このライブラリを、必要に応じてその他のライブラリと共に利用可能であり、そ
の際、該ライブラリはコンパイラによって認識されるライブラリのリストに加え
られ、特別なハードウェアを要しない。
ートする関数のライブラリを具備した高級言語コンパイラである。これらの関数
はコンパイラの標準コンパイラ言語命令のグループとして書かれており、従って
標準的な高級言語命令と一緒に使用することができる。本発明により提供される
特別ライブラリ内の関数はアセンブリ言語命令の動作を模倣する。コンパイラは
このライブラリを、必要に応じてその他のライブラリと共に利用可能であり、そ
の際、該ライブラリはコンパイラによって認識されるライブラリのリストに加え
られ、特別なハードウェアを要しない。
【0018】 コンピュータプログラマーは、高級プログラミング言語命令で書かれたプログ
ラムをコンピュータファイルに入れることにより、プログラミングプロセスを開
始する。このファイルはソースコードと呼ばれる。プログラマーは次に、標準的
な高級プログラミング言語を使用してソースコードをコンパイルする。エラーを
修正した後、プログラマーはソースコードを再びコンパイルする。このプロセス
は、コンパイルされたファイルが作成されるまで繰り返される。
ラムをコンピュータファイルに入れることにより、プログラミングプロセスを開
始する。このファイルはソースコードと呼ばれる。プログラマーは次に、標準的
な高級プログラミング言語を使用してソースコードをコンパイルする。エラーを
修正した後、プログラマーはソースコードを再びコンパイルする。このプロセス
は、コンパイルされたファイルが作成されるまで繰り返される。
【0019】 プログラマーは次に、コンパイルされたファイルを、標準的なリンカーを使用
してリンクし、実行可能プログラムを作成する。プログラマーはこのプログラム
を試験し、設計仕様との対応を検査する。プログラマーは設計仕様からのずれが
あれば、ソースコードを修正し、その後コンパイル及びリンキングステップを繰
り返す。プログラマーはこのプロセスを、ソースコードが設計仕様を正確に実行
すると確信が得られるまで繰り返す。
してリンクし、実行可能プログラムを作成する。プログラマーはこのプログラム
を試験し、設計仕様との対応を検査する。プログラマーは設計仕様からのずれが
あれば、ソースコードを修正し、その後コンパイル及びリンキングステップを繰
り返す。プログラマーはこのプロセスを、ソースコードが設計仕様を正確に実行
すると確信が得られるまで繰り返す。
【0020】 プログラマーは次に、高級命令の一部をアセンブリ言語命令に置き換え、高級
及びアセンブリ言語命令の両方を含むハイブリッドソースコードを作成する。プ
ログラマーはハイブリッドソースコードを、前記特別な関数ライブラリを使用し
てコンパイル及びリンキングする。この特別な関数のライブラリを利用すること
によって、コンパイラはアセンブリ言語命令を高級命令と一緒にコンパイルする
ことができる。生じた実行可能プログラムを試験した後、プログラマーはハイブ
リッドソースコードに導入されたアセンブリ言語命令に対して必要な修正を行い
、コンパイル及びリンキングステップを繰り返す。
及びアセンブリ言語命令の両方を含むハイブリッドソースコードを作成する。プ
ログラマーはハイブリッドソースコードを、前記特別な関数ライブラリを使用し
てコンパイル及びリンキングする。この特別な関数のライブラリを利用すること
によって、コンパイラはアセンブリ言語命令を高級命令と一緒にコンパイルする
ことができる。生じた実行可能プログラムを試験した後、プログラマーはハイブ
リッドソースコードに導入されたアセンブリ言語命令に対して必要な修正を行い
、コンパイル及びリンキングステップを繰り返す。
【0021】 このようにして、プログラマーは序々に全ての高級命令をアセンブリ言語命令
に置き換える。
に置き換える。
【0022】 プロセスの最後のステップでは、プログラマーは、所望のマイクロプロセッサ
のための標準的なアセンブラを使用して、アセンブリ言語プログラムをアセンブ
ル及びデバッグする。
のための標準的なアセンブラを使用して、アセンブリ言語プログラムをアセンブ
ル及びデバッグする。
【0023】 好適な実施例の説明 本発明はハイブリッドプログラミング環境であり、それによってプログラマー
は高級及びアセンブリ言語命令の両方を含むプログラムを書くことができる。
は高級及びアセンブリ言語命令の両方を含むプログラムを書くことができる。
【0024】 本発明によるハイブリッドプログラミング環境の原理及び動作は、図面と以下
の説明を参照することによりより良く理解されるであろう。
の説明を参照することによりより良く理解されるであろう。
【0025】 図1には、ハイブリッド高級及びアセンブリ言語プログラミングプロセスにお
て使用される本発明が示されている。
て使用される本発明が示されている。
【0026】 ブロック10〜40は公知技術を示す。それらは通常の高級コンピュータ言語
プログラミングプロセスであり、プログラマーは高級ソースコードプログラムを
書き、通常の高級言語コンパイラ及びプログラミング環境を使用してソースコー
ドをコンパイル及びデバッグし、デバッグされた高級ソースコードプログラムを
作成する。
プログラミングプロセスであり、プログラマーは高級ソースコードプログラムを
書き、通常の高級言語コンパイラ及びプログラミング環境を使用してソースコー
ドをコンパイル及びデバッグし、デバッグされた高級ソースコードプログラムを
作成する。
【0027】 ブロック10はプログラマーにより高級プログラミング言語(C又はC++等)
において書かれた、所望のプログラムの基本的アルゴリズムを実施するためのプ
ログラムである。このプログラムはソースコードと呼ばれる。
において書かれた、所望のプログラムの基本的アルゴリズムを実施するためのプ
ログラムである。このプログラムはソースコードと呼ばれる。
【0028】 ブロック20はブロック10の高級ソースコードプログラムをコンパイル及び
デバッグするためにプログラマーが使用するコンパイラ及びプログラミング環境
である。これは、標準的なコンパイラ及びプログラミング環境であっても、本発
明により提供されるコンパイラ及びプログラミング環境であっても良い。いずれ
にしろ、コンパイラ及びプログラミング環境は、ソフトウェア開発に使用される
標準的なパーソナルコンピュータ上で使用される通常のソフトウェアツールであ
ることができる。
デバッグするためにプログラマーが使用するコンパイラ及びプログラミング環境
である。これは、標準的なコンパイラ及びプログラミング環境であっても、本発
明により提供されるコンパイラ及びプログラミング環境であっても良い。いずれ
にしろ、コンパイラ及びプログラミング環境は、ソフトウェア開発に使用される
標準的なパーソナルコンピュータ上で使用される通常のソフトウェアツールであ
ることができる。
【0029】 コンパイラは業界標準の関数ライブラリと、その他の、プログラマーにより購
入ないし定義された特別なライブラリを含む。例えば、特別なライブラリは、ワ
ードプロセッシングソフトウェアをプログラムするのに便利な関数を含む場合も
ある。そのようなライブラリは、ページ上に文字や単語を様々な向きに表示する
関数や、文書内の単語を検索する関数や、又は文書内の単語のスペリングを修正
する関数を含む。
入ないし定義された特別なライブラリを含む。例えば、特別なライブラリは、ワ
ードプロセッシングソフトウェアをプログラムするのに便利な関数を含む場合も
ある。そのようなライブラリは、ページ上に文字や単語を様々な向きに表示する
関数や、文書内の単語を検索する関数や、又は文書内の単語のスペリングを修正
する関数を含む。
【0030】 コンパイラはソースコードを一行毎に読み、個々の命令をアセンブリ言語命令
に翻訳するプログラムである。コンパイラは次に、これらのアセンブリ言語命令
を、オブジェクトファイルと呼ばれるファイル内に置く。コンパイラにより作成
されたアセンブリ言語命令は開発パーソナルコンピュータ内のマイクロプロセッ
サに適合させられる。
に翻訳するプログラムである。コンパイラは次に、これらのアセンブリ言語命令
を、オブジェクトファイルと呼ばれるファイル内に置く。コンパイラにより作成
されたアセンブリ言語命令は開発パーソナルコンピュータ内のマイクロプロセッ
サに適合させられる。
【0031】 プログラミング環境のその他の部分、特にリンカーは、コンパイラにより作成
されたオブジェクトファイルから実行可能プログラムを作成するために使用され
る。このコンパイリング及びリンキングプロセスの結果が、実行可能プログラム
である。
されたオブジェクトファイルから実行可能プログラムを作成するために使用され
る。このコンパイリング及びリンキングプロセスの結果が、実行可能プログラム
である。
【0032】 ブロック30は高級デバッギングプロセスを示す。このプロセスでは、ブロッ
ク20のコンパイリングプロセスでコンパイルされた実行可能プログラムが試験
され、その結果が、プログラマーにより意図されたものと比較される。結果がプ
ログラマーの意図したものと合致しない場合、プログラマーはソースコード内の
原因がある高級命令を探してソースコードを修正する。
ク20のコンパイリングプロセスでコンパイルされた実行可能プログラムが試験
され、その結果が、プログラマーにより意図されたものと比較される。結果がプ
ログラマーの意図したものと合致しない場合、プログラマーはソースコード内の
原因がある高級命令を探してソースコードを修正する。
【0033】 望ましくない結果に対する原因となる高級命令を見つけるために、プログラマ
ーは通常の高級デバッギングツールを使用する。一例として、プログラム内にブ
レークポイントを設定する。これらのポイントにおいて実行が停止され、プログ
ラマーはプログラム内の変数の値を検査することができる。別のツール例として
、変数がプログラマーにより指定された値にセットされるとトリガされるよう、
プログラム実行内にブレークを設定することである。別のデバッギングツールと
して、プログラマーはプログラムを命令毎に実行し、変数の値とプログラム内の
命令の実行の流れの両方を検査するという手段がある。
ーは通常の高級デバッギングツールを使用する。一例として、プログラム内にブ
レークポイントを設定する。これらのポイントにおいて実行が停止され、プログ
ラマーはプログラム内の変数の値を検査することができる。別のツール例として
、変数がプログラマーにより指定された値にセットされるとトリガされるよう、
プログラム実行内にブレークを設定することである。別のデバッギングツールと
して、プログラマーはプログラムを命令毎に実行し、変数の値とプログラム内の
命令の実行の流れの両方を検査するという手段がある。
【0034】 プログラマーは次に、ソースコードを再びコンパイルする。プログラマーはこ
のデバッギングプロセスを、得られるソースコードに満足がゆくまで繰り返す。
のデバッギングプロセスを、得られるソースコードに満足がゆくまで繰り返す。
【0035】 ブロック40はデバッグされた高級プログラミング言語コード、すなわちブロ
ック30の高級デバッギングプロセスの結果を示す。通常の高級言語プログラミ
ングプロセスはここで終了する。
ック30の高級デバッギングプロセスの結果を示す。通常の高級言語プログラミ
ングプロセスはここで終了する。
【0036】 ブロック50において、プログラマーは高級プログラミング言語の命令アセン
ブリ言語命令への置換を開始する。その結果、アセンブリ及び高級言語命令の両
方を含むハイブリッドソースコードファイルが得られる。
ブリ言語命令への置換を開始する。その結果、アセンブリ及び高級言語命令の両
方を含むハイブリッドソースコードファイルが得られる。
【0037】 ブロック60は本発明、すなわち標準的なプログラミング言語コンパイラに関
数ライブラリを具備したものを示す。前記関数ライブラリは、アセンブリ言語命
令を、コンパイラによりコンパイルされる高級プログラミング言語で定義したも
のである。このライブラリにより、コンパイラは、高級言語とアセンブリ言語命
令の両方から構成されるハイブリッドソースコードファイルをコンパイルするこ
とができる。プログラマーはコンパイラを使用して、ブロック50で生じた、高
級及びアセンブリ言語命令の両方を含むハイブリッドプログラムコードから、実
行可能プログラムをコンパイルする。
数ライブラリを具備したものを示す。前記関数ライブラリは、アセンブリ言語命
令を、コンパイラによりコンパイルされる高級プログラミング言語で定義したも
のである。このライブラリにより、コンパイラは、高級言語とアセンブリ言語命
令の両方から構成されるハイブリッドソースコードファイルをコンパイルするこ
とができる。プログラマーはコンパイラを使用して、ブロック50で生じた、高
級及びアセンブリ言語命令の両方を含むハイブリッドプログラムコードから、実
行可能プログラムをコンパイルする。
【0038】 ブロック70は、ブロック50から生じるハイブリッドコードに対するデバッ
ギングプロセスを示す。ブロック20の高級デバッギングプロセスと同様、プロ
グラマーはブロック60のハイブリッドプログラミング環境を使用して作成され
た実行可能プログラムの結果を、プログラマーの意図するものと比較し、ブロッ
ク50のソースコードに適切な修正を加え、ソースコードを再びコンパイルする
。ハイブリッドコードのデバッギングの際、プログラマーは高級プログラミング
環境において利用可能な多数のデバッギングツールを使用する。
ギングプロセスを示す。ブロック20の高級デバッギングプロセスと同様、プロ
グラマーはブロック60のハイブリッドプログラミング環境を使用して作成され
た実行可能プログラムの結果を、プログラマーの意図するものと比較し、ブロッ
ク50のソースコードに適切な修正を加え、ソースコードを再びコンパイルする
。ハイブリッドコードのデバッギングの際、プログラマーは高級プログラミング
環境において利用可能な多数のデバッギングツールを使用する。
【0039】 上記プロセスは、ハイブリッドソースコードから得られた実行可能プログラム
がプログラマーの意図した通りに動作するまで繰り返される。
がプログラマーの意図した通りに動作するまで繰り返される。
【0040】 プログラマーは次に、ブロック50のプロセスに戻り、その他の高級プログラ
ミング命令をアセンブリ言語プログラミング命令に置き換え、ブロック60と7
0のプロセスを繰り返す。この繰り返しは、全ての高級コードがアセンブリ言語
コードに置き換えられ、その結果得られるアセンブリ言語命令のみを含むソース
コードファイルのデバッギングが完全に終了するまで行われる。
ミング命令をアセンブリ言語プログラミング命令に置き換え、ブロック60と7
0のプロセスを繰り返す。この繰り返しは、全ての高級コードがアセンブリ言語
コードに置き換えられ、その結果得られるアセンブリ言語命令のみを含むソース
コードファイルのデバッギングが完全に終了するまで行われる。
【0041】 ブロック80はアセンブリ言語アセンブラプログラムを示し、ブロック90は
アセンブリ言語デバッガーを示す。これらのブロックはプロセスの最終的ステッ
プであり、プログラマーはソースコードファイル内のアセンブリ言語プログラム
を、所望のマイクロプロセッサのための標準的なアセンブラ及びデバッギングツ
ールを使用してアセンブル及びデバッグする。
アセンブリ言語デバッガーを示す。これらのブロックはプロセスの最終的ステッ
プであり、プログラマーはソースコードファイル内のアセンブリ言語プログラム
を、所望のマイクロプロセッサのための標準的なアセンブラ及びデバッギングツ
ールを使用してアセンブル及びデバッグする。
【0042】 上述の説明は単なる例示であり、本発明の精神と範囲内において数多くのその
他の実施例が可能である。
他の実施例が可能である。
【図1】 本発明におけるアセンブリ言語プログラミングプロセスのステップを示すブロ
ック図である。
ック図である。
Claims (3)
- 【請求項1】 高度なハイブリッドプログラミング環境を提供することによ
りアセンブリ言語プログラミングを補助するためのシステムであり、前記環境は
: (a)少なくとも1個の高級命令を含むソースコードファイルをパースするた
めのモジュールと; (b)ハイブリッドソースコードファイル内の少なくとも1個のアセンブリ言
語命令を、対応する高級命令により定義するための関数のライブラリと; (c)高級命令を前記ライブラリに従って機械語命令に翻訳するためのモジュ
ールと; (d)翻訳された機械語命令をオブジェクトファイルに出力するためのモジュ
ールを具備したことを特徴とする、アセンブリ言語プログラミングを補助するた
めのシステム。 - 【請求項2】 不特定数の高級及びアセンブリ言語命令を含むハイブリッド
ソースコードファイルを取り扱うための方法であり、 (a)少なくとも1個の高級命令を含むハイブリッドソースコードファイルを
パースするステップと; (b)ハイブリッドソースコードファイル内のアセンブリ言語命令を高級言語
命令に変換するステップと; (c)高級命令を機械語命令に翻訳するステップと; (d)翻訳された機械語命令をオブジェクトファイルにコンパイルするステッ
プを有した方法。 - 【請求項3】 アセンブリ言語プログラムを作成し及びデバッグするための
方法であり、 (a)複数のアセンブリ言語命令の1つ1つを、複数の高級言語命令の1つ1
つに従って定義するステップと; (b)前記複数の高級命令のうち少なくとも1個を含むソースコードファイル
を作成するステップと; (c)前記複数の高級命令のうちの前記少なくとも1個が正しく機能するまで
、前記ソースコードをデバッグするステップと; (d)ソースコードファイル内の前記複数の高級命令のうちの前記少なくとも
1個を、少なくとも1個のアセンブリ言語命令で置き換えるステップと; (c)その結果得られる、高級及びアセンブリ言語命令の両方を含んだハイブ
リッドソースコードファイルをデバッグするステップを具備した方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/210,542 | 1998-12-14 | ||
US09/210,542 US6314557B1 (en) | 1998-12-14 | 1998-12-14 | Hybrid computer programming environment |
PCT/EP1999/009929 WO2000036500A2 (en) | 1998-12-14 | 1999-12-14 | Hybrid computer programming environment |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002532804A true JP2002532804A (ja) | 2002-10-02 |
Family
ID=22783309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000588679A Pending JP2002532804A (ja) | 1998-12-14 | 1999-12-14 | ハイブリッドコンピュータプログラミング環境 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6314557B1 (ja) |
EP (1) | EP1064598A2 (ja) |
JP (1) | JP2002532804A (ja) |
KR (1) | KR20010078692A (ja) |
CN (1) | CN1299482A (ja) |
WO (1) | WO2000036500A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018169887A (ja) * | 2017-03-30 | 2018-11-01 | 東芝産業機器システム株式会社 | プログラムの製造方法、及びコンピュータシステムのアップデート方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625808B1 (en) * | 1999-12-10 | 2003-09-23 | Microsoft Corporation | Method and apparatus for facilitating memory management in a program comprised of heterogeneous components |
US6668369B1 (en) * | 1999-12-29 | 2003-12-23 | International Business Machines Corporation | Software debugging tool for displaying dynamically written software code |
US6968548B1 (en) * | 2000-12-01 | 2005-11-22 | Unisys Corporation | Method and apparatus for sharing data structures between assembly language programs and high-level language programs |
US20020083421A1 (en) * | 2000-12-22 | 2002-06-27 | Hitachi America, Ltd. | Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler |
US7203925B1 (en) * | 2001-09-14 | 2007-04-10 | Emc Corporation | Graphical compiler |
US7216338B2 (en) * | 2002-02-20 | 2007-05-08 | Microsoft Corporation | Conformance execution of non-deterministic specifications for components |
JP2004013190A (ja) * | 2002-06-03 | 2004-01-15 | Matsushita Electric Ind Co Ltd | ソフトウエア開発環境、シミュレータ及び記録媒体 |
WO2004036421A2 (en) * | 2002-10-21 | 2004-04-29 | Eitan Glotman | System and method for a mixed-language compiler |
US7237233B2 (en) * | 2002-12-19 | 2007-06-26 | Texas Instruments Incorporated | Assembly directives for the support of multi-language programming |
GB0303270D0 (en) * | 2003-02-13 | 2003-03-19 | Renishaw Plc | A machine tool control process and apparatus therefor |
US20050193378A1 (en) * | 2004-03-01 | 2005-09-01 | Breault Richard E. | System and method for building an executable program with a low probability of failure on demand |
US20070271553A1 (en) * | 2006-05-22 | 2007-11-22 | Micro Focus (Us), Inc. | Method and system for translating assembler code to a target language |
WO2009065168A1 (en) * | 2007-11-20 | 2009-05-28 | National Ict Australia Limited | Multi language software code analysis |
CN105556504A (zh) * | 2013-06-24 | 2016-05-04 | 惠普发展公司,有限责任合伙企业 | 从物理流生成逻辑表示 |
CN113761171A (zh) * | 2021-01-26 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种辅助编程方法、装置、电子设备及存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0362202A (ja) | 1989-07-31 | 1991-03-18 | Japan Electron Control Syst Co Ltd | 制御プログラム開発装置 |
US5132972A (en) * | 1989-11-29 | 1992-07-21 | Honeywell Bull Inc. | Assembly language programming potential error detection scheme sensing apparent inconsistency with a previous operation |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
US5430862A (en) | 1990-06-29 | 1995-07-04 | Bull Hn Information Systems Inc. | Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution |
JPH04229337A (ja) | 1990-12-27 | 1992-08-18 | Hitachi Ltd | エミュレータ |
US5261055A (en) | 1992-02-19 | 1993-11-09 | Milsys, Ltd. | Externally updatable ROM (EUROM) |
JP3210466B2 (ja) | 1993-02-25 | 2001-09-17 | 株式会社リコー | Cpuコア、該cpuコアを有するasic、及び該asicを備えたエミュレーションシステム |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
JPH0721033A (ja) * | 1993-07-07 | 1995-01-24 | Nec Corp | 言語処理装置及びその方法 |
US5392036A (en) | 1993-10-28 | 1995-02-21 | Mitan Software International (1989) Ltd. | Efficient optimal data recopression method and apparatus |
US5933642A (en) * | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US5740469A (en) * | 1995-04-24 | 1998-04-14 | Motorola Inc. | Apparatus for dynamically reading/writing multiple object file formats through use of object code readers/writers interfacing with generalized object file format interface and applications programmers' interface |
US5860008A (en) * | 1996-02-02 | 1999-01-12 | Apple Computer, Inc. | Method and apparatus for decompiling a compiled interpretive code |
US5805893A (en) * | 1996-03-01 | 1998-09-08 | Electronic Data Systems Corporation | Assembly language program converter |
US5668989A (en) * | 1996-09-18 | 1997-09-16 | Mao; Decao | Two-digit hybrid radix year numbers for year 2000 and beyond |
US6021275A (en) * | 1996-08-05 | 2000-02-01 | General Magic, Inc. | Object code structure and method for translation of architecture independent program implementations |
US6233545B1 (en) * | 1997-05-01 | 2001-05-15 | William E. Datig | Universal machine translator of arbitrary languages utilizing epistemic moments |
US6083278A (en) * | 1997-05-28 | 2000-07-04 | Texas Instruments Incorporated | System and method for displaying and editing assembly language source codes |
JP3424520B2 (ja) * | 1997-08-29 | 2003-07-07 | 松下電器産業株式会社 | プログラム変換装置とデバッグ装置 |
US6014513A (en) * | 1997-12-23 | 2000-01-11 | University Of Washington | Discovering code and data in a binary executable program |
US6173441B1 (en) * | 1998-10-16 | 2001-01-09 | Peter A. Klein | Method and system for compiling source code containing natural language instructions |
-
1998
- 1998-12-14 US US09/210,542 patent/US6314557B1/en not_active Expired - Fee Related
-
1999
- 1999-12-14 CN CN99804945A patent/CN1299482A/zh active Pending
- 1999-12-14 WO PCT/EP1999/009929 patent/WO2000036500A2/en not_active Application Discontinuation
- 1999-12-14 JP JP2000588679A patent/JP2002532804A/ja active Pending
- 1999-12-14 EP EP99968798A patent/EP1064598A2/en not_active Withdrawn
- 1999-12-14 KR KR1020007008906A patent/KR20010078692A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018169887A (ja) * | 2017-03-30 | 2018-11-01 | 東芝産業機器システム株式会社 | プログラムの製造方法、及びコンピュータシステムのアップデート方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1299482A (zh) | 2001-06-13 |
KR20010078692A (ko) | 2001-08-21 |
WO2000036500A2 (en) | 2000-06-22 |
EP1064598A2 (en) | 2001-01-03 |
WO2000036500A3 (en) | 2000-11-09 |
US6314557B1 (en) | 2001-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Leroy et al. | CompCert-a formally verified optimizing compiler | |
US8448152B2 (en) | High-level language, architecture-independent probe program compiler | |
US6314557B1 (en) | Hybrid computer programming environment | |
US20030088860A1 (en) | Compiler annotation for binary translation tools | |
JP2006505844A (ja) | プログラムコード変換の検証を実行するための方法および装置 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
Ward et al. | Formal methods to aid the evolution of software | |
JPH0926884A (ja) | バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置 | |
US20150020051A1 (en) | Method and apparatus for automated conversion of software applications | |
KR100532467B1 (ko) | 서로 다른 버전에서 생성된 디버깅 정보 파일들을 이용한소스 코드 레벨 디버깅을 제공하는 엠시유 응용프로그램검증 시스템 및 그 방법 | |
Curzon et al. | A Verified Compiler for a Structured Assembly Language. | |
KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
Stepney | Incremental development of a high integrity compiler: experience from an industrial development | |
Chang et al. | Analysis of low-level code using cooperating decompilers | |
JP2009515243A (ja) | ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法 | |
JP2004013190A (ja) | ソフトウエア開発環境、シミュレータ及び記録媒体 | |
Usov | ptr-tidy: Automatic Rejuvenation of Raw Pointers in C+ | |
JP3368795B2 (ja) | コンパイル制御方法、コンパイル装置及び記録媒体 | |
Cok | Does your software do what it should? | |
KARAPATEAS | RETARGETING AN ASSEMBLY OPTIMIZER FOR THE MIPS/SCALE ASSEMBLY | |
Nagle | Archaic to modern 1: basic tools & issues | |
JPS58169637A (ja) | コンパイル処理方式 | |
Parragi et al. | Instrumentation of C++ programs using automatic source code transformations | |
ELTE 3in Kutatócsoport | Instrumentation of C++ Programs Using Automatic Source Code Transformations | |
JP2005301415A (ja) | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050609 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051104 |