JP2005301415A - コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム - Google Patents
コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム Download PDFInfo
- Publication number
- JP2005301415A JP2005301415A JP2004113139A JP2004113139A JP2005301415A JP 2005301415 A JP2005301415 A JP 2005301415A JP 2004113139 A JP2004113139 A JP 2004113139A JP 2004113139 A JP2004113139 A JP 2004113139A JP 2005301415 A JP2005301415 A JP 2005301415A
- Authority
- JP
- Japan
- Prior art keywords
- declared
- program
- array
- variable
- memory
- 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
Images
Abstract
【解決手段】宣言された変数に対して、静的にメモリ領域を確保してオブジェクトコードを生成するコンパイラにおいて、変数の値が、プログラムを実行した結果、型宣言されたサイズより小さい値しか持ち得ない場合に、型宣言されたサイズより小さいメモリ領域を確保してオブジェクトファイルを生成する。このようにすれば、宣言された静的な変数に対して、使用される値の範囲がその宣言されたサイズ以下である場合、メモリ占有量を小さくすることができる。
【選択図】 図1
Description
このため、特に組み込み機器用プログラミングのように、メモリ容量に制限がある場合、使用されない無駄なメモリ領域が存在することになっていた。
(1)宣言された静的な変数に対して、たとえ使用される値の範囲がその宣言されたサイズ以下だとしても、コンパイラが宣言されたサイズを変えてメモリ占有量を小さく確保することはなかった。
(2)宣言された静的な配列において、たとえ配列のメモリ領域が、宣言された範囲より小さい範囲しか使用されない場合でも、コンパイラが宣言されたサイズを変えてメモリ占有量を小さく確保することはなかった。
(4)宣言された一時配列において、たとえ配列のメモリ領域が、宣言された範囲より小さい範囲しか使用されない場合でも、コンパイラが宣言されたサイズを変えてメモリ占有量を小さく確保することはなかった。
(6)エミュレータにおいて、プログラム実行時に、各変数の実際に変化する最大値や最小値を記録し、また各配列の実際のメモリ使用量を記録し、その内容を外部ファイルに生成することはなかった。
図1において、ホストコンピュータH1にてプログラム作成を行う時、コンパイラC1は各ソースプログラムファイルよりそれぞれオブジェクトファイルを生成する。
リンカL1は、これらのオブジェクトファイルの結合処理を行い、実行形式プログラムP1を生成する。
また、各配列の占有サイズも、宣言されたサイズよりも、実際に使用されるサイズが小さければ、その小さいサイズとしてメモリ確保、及びコード展開する。
前記変数の値が、プログラムを実行した結果、型宣言されたサイズより小さい値しか持ち得ない場合に、前記型宣言されたサイズより小さいメモリ領域を確保してオブジェクトファイルを生成する構成としてある。
前記配列のメモリ使用量が、プログラムを実行した結果、宣言された範囲より小さい範囲しか使用しない場合に、前記宣言された範囲のサイズより小さいメモリ領域を確保してオブジェクトファイルを生成する構成としてある。
前記変数の値が、プログラムを実行した結果、型宣言されたサイズより小さい値しか持ちえない場合に、前記型宣言されたサイズより小さいメモリ領域を確保するようにオブジェクトファイルを生成する構成としてある。
前記配列のメモリ使用量が、プログラムを実行した結果、宣言されたサイズより小さい範囲しか使用しない場合に、前記宣言されたサイズより小さいメモリ領域を確保するようにオブジェクトファイルを生成する構成としてある。
各変数に対するメモリ書き込み値の最大値と最小値のみを記録、または各配列における最大使用量を記録し、前記最大値と最小値のみの記録内容、または前記最大使用量の記録内容を、外部ファイルに生成する構成としてある。
各変数に対するメモリ書き込み値の最大値と最小値のみを記録、または各配列における最大使用量を記録し、前記最大値と最小値のみの記録内容、または前記最大使用量の記録内容を、外部ファイルに生成する構成としてある。
請求項2記載の発明によれば、宣言された静的な配列において、配列のメモリ領域が、宣言された範囲より小さい範囲しか使用されない場合、メモリ占有量を小さくすることができる。
請求項4記載の発明によれば、宣言された一時配列において、配列のメモリ領域が、宣言された範囲より小さい範囲しか使用されない場合、メモリ占有量を小さく確保することができる。
請求項6記載の発明によれば、エミュレータにおいて、プログラム実行時に、各変数の実際に変化する最大値や最小値を記録し、また各配列の実際のメモリ使用量を記録し、その内容を外部ファイルに生成することができる。
以下、本発明を図示の実施形態に基づいて説明する。
図1は、本実施形態の処理の流れを示す図である。
図1において、ホストコンピュータH1にて作成されたソースプログラム群は、コンパイラC1によりそれぞれデバッグ情報付きで複数のオブジェクトファイルが生成され、リンカL1が、これら複数のオブジェクトファイルの結合処理を行い、実行形式プログラムP1が生成される。
また、各配列領域のアクセスされる先頭から相対アドレスの最小値と最大値を記録する。その情報例を図3に示す。
図11は、本実施形態の処理の流れを示す図である。H2は、ホストコンピュータである。
図11において、図1と同様に生成された実行形式プログラムP1を、デバッガD1を通じてエミュレータE1にダウンロードし、実環境での実行トレースからも、同様に変数情報、配列情報を得る。
以下、上記説明したシミュレータS1での手順と同様にして、メモリ容量を低減化した実行形式プログラムP2を生成することになる。
C1 コンパイラ
L1 リンカ
P1 縮小前の実行形式プログラム
P2 縮小後の実行形式プログラム
S1 シミュレータ
F1 外部ファイル
D1 デバッガ
E1 エミュレータ
T1 トレースメモリ
Claims (7)
- 宣言された変数に対して、静的にメモリ領域を確保してオブジェクトコードを生成するコンパイラにおいて、
前記変数の値が、プログラムを実行した結果、型宣言されたサイズより小さい値しか持ち得ない場合に、前記型宣言されたサイズより小さいメモリ領域を確保してオブジェクトファイルを生成することを特徴とするコンパイル方式。 - 宣言された配列に対して、静的にメモリ領域を確保してオブジェクトコードを生成するコンパイラにおいて、
前記配列のメモリ使用量が、プログラムを実行した結果、宣言された範囲より小さい範囲しか使用しない場合に、前記宣言された範囲のサイズより小さいメモリ領域を確保してオブジェクトファイルを生成することを特徴とするコンパイル方式。 - 宣言された変数に対して、プログラム実行時に一時的にメモリ領域を確保するようなオブジェクトコードを生成するコンパイラにおいて、
前記変数の値が、プログラムを実行した結果、型宣言されたサイズより小さい値しか持ちえない場合に、前記型宣言されたサイズより小さいメモリ領域を確保するようにオブジェクトファイルを生成することを特徴とするコンパイル方式。 - 宣言された配列に対して、プログラム実行時に一時的にメモリ領域を確保するようなオブジェクトコードを生成するコンパイラにおいて、
前記配列のメモリ使用量が、プログラムを実行した結果、宣言されたサイズより小さい範囲しか使用しない場合に、前記宣言されたサイズより小さいメモリ領域を確保するようにオブジェクトファイルを生成することを特徴とするコンパイル方式。 - ソースファイルをコンパイルして複数のオブジェクトファイルを生成し、前記複数のオブジェクトファイルをリンクして生成された実行形式プログラムをシミュレートするシミュレータにおいて、
各変数に対するメモリ書き込み値の最大値と最小値のみを記録、または各配列における最大使用量を記録し、前記最大値と最小値のみの記録内容、または前記最大使用量の記録内容を、外部ファイルに生成することを特徴とするシミュレータ。 - ソースファイルをコンパイルして複数のオブジェクトファイルを生成し、前記複数のオブジェクトファイルをリンクして生成された実行形式プログラムを実行するエミュレータにおいて、
各変数に対するメモリ書き込み値の最大値と最小値のみを記録、または各配列における最大使用量を記録し、前記最大値と最小値のみの記録内容、または前記最大使用量の記録内容を、外部ファイルに生成するエミュレータ。 - 請求項1〜請求項6記載のコンパイラ、シミュレータ、エミュレータで構成される変数、配列のメモリ領域の占有量を低減化することを特徴とするプログラム開発支援システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004113139A JP2005301415A (ja) | 2004-04-07 | 2004-04-07 | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004113139A JP2005301415A (ja) | 2004-04-07 | 2004-04-07 | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005301415A true JP2005301415A (ja) | 2005-10-27 |
Family
ID=35332913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004113139A Pending JP2005301415A (ja) | 2004-04-07 | 2004-04-07 | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005301415A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011123719A (ja) * | 2009-12-11 | 2011-06-23 | Renesas Electronics Corp | 言語処理システム、言語処理方法、及び言語処理用プログラム |
CN113326046A (zh) * | 2021-05-26 | 2021-08-31 | 网易(杭州)网络有限公司 | 获取编译时长的方法和装置 |
WO2022154163A1 (ko) * | 2021-01-12 | 2022-07-21 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 메모리 관리 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS617946A (ja) * | 1984-06-22 | 1986-01-14 | Hitachi Ltd | 最適化コンパイル方式 |
JPS62219130A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | プログラムの最適化方式 |
JPH02176938A (ja) * | 1988-12-28 | 1990-07-10 | Hitachi Ltd | 機械語命令最適化方式 |
JPH07281905A (ja) * | 1994-04-04 | 1995-10-27 | Fujitsu Ltd | 型宣言修正装置 |
JPH11212797A (ja) * | 1998-01-26 | 1999-08-06 | Nec Corp | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 |
JP2003150386A (ja) * | 2001-11-14 | 2003-05-23 | Matsushita Electric Ind Co Ltd | コンパイラ装置及びコンパイル方法 |
-
2004
- 2004-04-07 JP JP2004113139A patent/JP2005301415A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS617946A (ja) * | 1984-06-22 | 1986-01-14 | Hitachi Ltd | 最適化コンパイル方式 |
JPS62219130A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | プログラムの最適化方式 |
JPH02176938A (ja) * | 1988-12-28 | 1990-07-10 | Hitachi Ltd | 機械語命令最適化方式 |
JPH07281905A (ja) * | 1994-04-04 | 1995-10-27 | Fujitsu Ltd | 型宣言修正装置 |
JPH11212797A (ja) * | 1998-01-26 | 1999-08-06 | Nec Corp | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 |
JP2003150386A (ja) * | 2001-11-14 | 2003-05-23 | Matsushita Electric Ind Co Ltd | コンパイラ装置及びコンパイル方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011123719A (ja) * | 2009-12-11 | 2011-06-23 | Renesas Electronics Corp | 言語処理システム、言語処理方法、及び言語処理用プログラム |
WO2022154163A1 (ko) * | 2021-01-12 | 2022-07-21 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 메모리 관리 방법 |
CN113326046A (zh) * | 2021-05-26 | 2021-08-31 | 网易(杭州)网络有限公司 | 获取编译时长的方法和装置 |
CN113326046B (zh) * | 2021-05-26 | 2023-09-26 | 网易(杭州)网络有限公司 | 获取编译时长的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6026235A (en) | System and methods for monitoring functions in natively compiled software programs | |
US6795963B1 (en) | Method and system for optimizing systems with enhanced debugging information | |
JP4833206B2 (ja) | 最適化されたプログラムのためのアンワインド情報の生成 | |
US20070234307A1 (en) | Methods and apparatus to inline conditional software instrumentation | |
US20120131559A1 (en) | Automatic Program Partition For Targeted Replay | |
JPH11110194A (ja) | 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
JP2004164554A (ja) | プログラム実行監視装置および方法 | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
JP2007304840A (ja) | コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム | |
US7240334B1 (en) | Methods, systems, and computer program products for deferred computer program tracing | |
US20200183669A1 (en) | Improving emulation and tracing performance using compiler-generated emulation optimization metadata | |
US7624381B1 (en) | Portable detection of start and completion of object construction | |
JP2009237610A (ja) | コード変換装置及びコード変換方法 | |
KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
US6178547B1 (en) | Method and apparatus for generating non-redundant symbolic debug information in computer programs | |
Hammacher | Design and implementation of an efficient dynamic slicer for Java | |
JP2005301415A (ja) | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム | |
JP3608993B2 (ja) | コンパイラ装置及びコンパイラプログラムを記録した記録媒体 | |
JP2011090511A (ja) | 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法 | |
KR20130077673A (ko) | 메소드 특수화를 이용한 확장된 널 포인터 검사 제거 방법 | |
JP3745968B2 (ja) | 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体 | |
JP4594704B2 (ja) | プログラム開発支援システム、プログラムおよび記録媒体 | |
RU2390821C1 (ru) | Способ динамической инструментации | |
JPH10293683A (ja) | プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20070323 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Effective date: 20091214 Free format text: JAPANESE INTERMEDIATE CODE: A971007 |
|
A131 | Notification of reasons for refusal |
Effective date: 20100323 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100524 |
|
A131 | Notification of reasons for refusal |
Effective date: 20101221 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110412 |