JP6409638B2 - コンパイラ、コンパイル装置、および、コンパイル方法 - Google Patents
コンパイラ、コンパイル装置、および、コンパイル方法 Download PDFInfo
- Publication number
- JP6409638B2 JP6409638B2 JP2015057212A JP2015057212A JP6409638B2 JP 6409638 B2 JP6409638 B2 JP 6409638B2 JP 2015057212 A JP2015057212 A JP 2015057212A JP 2015057212 A JP2015057212 A JP 2015057212A JP 6409638 B2 JP6409638 B2 JP 6409638B2
- Authority
- JP
- Japan
- Prior art keywords
- argument
- function
- instruction
- register
- area
- 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.)
- Active
Links
Images
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
- G06F8/51—Source to source
-
- 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/47—Retargetable compilers
Description
図1〜図3は、引数(パラメータとも呼ぶ)の不一致に起因して発生する障害について説明する第1〜第3の図である。なお、以下の図の説明において、同じ要素については同一の符号を付して、一度した説明を省略する。
「IF SYSTEM = WINDOWS THEN
MOVE “SUBC” TO SUBP
ELSE
MOVE “SUBD” TO SUBP
END-IF
CALL SUBP USING P1 P2.」
が記述されている。
(ハードウェアブロック図)
図4は、本実施の形態におけるコンパイル装置1のハードウェアブロック図である。コンパイル装置1は、いわゆるコンピュータであり、バスBに接続された、CPU101と、RAM102と、ROM103と、通信装置104と、ストレージ装置105と、外部記憶媒体読み取り装置106とを有する。なお、CPUは、" Central Processing Unit "の略語、RAMは"Random Access Memory"の略語、ROMは、" Read Only Memory"の略語である。
図5は、引数をレジスタまたはスタック上に保存する領域の例を示す図である。図4において、四角形の枠が各引数のメモリアドレス(以下、アドレスと適宜記す)が記憶されるレジスタを示している。レジスタRGm(小文字mは、1〜nの整数、小文字nは、8以上の整数)は、関数のm番目の引数のアドレスが記憶されるレジスタを示している。図5において、"RCX"、"RDX"、"R8"、"R9"は、レジスタ名である。
図6は、図4のコンパイルプログラムPGを説明するソフトウェアブロック図である。コンパイルプログラムPGは、字句解析部11と、構文解析部12と、意味解析部13と、最適化部14と、割付部15と、オブジェクト生成部16とを有する。
図7は、コンパイルプログラムPGの処理の流れを説明するフロー図である。なお、フロー図の説明において、Ss(小文字のsは整数)は、ステップSsを示す。
次に、図5〜図14を参照し、コンパイルプログラムPGの処理の流れを具体的に説明する。コンパイルプログラムPGは、図4のソースコードSRCをコンパイルする。ソースコードSRCは、例えば、図1に示した、コボルのコードCBS1と、C言語のコードCS1を含む。
図8は、図4のソースコードSRCの一部分を示す図である。コードCBS4は、コボルで記述されたコードである。「CALL "SUBC" USING P1 P2.」の説明については、図1などで説明したので、その説明を省略する。図9は、構文解析情報の一例を示す図である。
次に、図9〜図11を参照して、意味解析について説明する。図10は、構文解析情報CAIに基づき生成された中間情報の一部を説明する図である。図11は、図7の意味解析(S3)を説明するフロー図である。
最適化終了後、割付部15は、S3で生成された中間情報に基づき、レジスタ割り付けを実行する(S5)。図10、図12、図13を参照して、割り付けについて説明する。
中間情報の生成処理が終了すると、オブジェクト生成部16は、オブジェクトコードを生成し、RAM102に記憶する(S6)。
以後、コンパイルプログラムPGは、生成されたオブジェクトコードをリンクし、実行ファイルを生成し、例えば、ストレージ装置105に記憶する。この実行ファイルは、コボルのコードCBS1と、C言語のコードCS1を含むソースコードSRCの実行ファイルである。この実行ファイルは、前記した第1の命令コマンド、第2の命令コマンドを含む。
コンピュータに、
第1のプログラム言語で記述されたソースコードをコンパイルする際に、前記ソースコードの中から、第2のプログラム言語で記述された関数を特定し、
特定された前記関数に設定されている第1の引数以外の引数であって当該関数に設定されていない第2の引数用のレジスタ領域に、前記関数の実行により前記レジスタ領域がアクセスされると、エラーが発生する所定のデータを記憶する命令を生成する
処理を実行させることを特徴とするコンパイラ。
前記レジスタ領域は、引数のデータが記憶される領域を示すアドレスが記憶されるレジスタの領域であって、
前記命令の生成の前に、前記第1の引数用の第1の領域、および、前記第2の引数用の第2の領域を前記レジスタに確保する命令を生成し、
前記記憶において、前記第1の領域に前記第1の引数のデータが記憶される領域を示すアドレスを記憶し、前記第2の領域に前記所定のデータを記憶する命令を生成する
処理をコンピュータに実行させることを特徴とする付記1に記載のコンパイラ。
前記特定において、予め記憶された前記関数を呼び出す命令文と、前記ソースコードに記述された命令文とが一致する場合に、前記ソースコードに記述された命令文における前記関数を特定する
処理をコンピュータに実行させることを特徴とする付記1に記載のコンパイラ。
前記所定のデータは、ヌル値である
ことを特徴とする付記1に記載のコンパイラ。
第2のプログラム言語で記述された関数を含む、第1のプログラム言語で記述されたソースコードを記憶する記憶装置と、
前記ソースコードをコンパイルする処理装置とを有し、
前記処理装置は、前記ソースコードをコンパイルする際に、前記ソースコードの中から、前記関数を特定し、特定された前記関数に設定されている第1の引数以外の引数であって当該関数に設定されていない第2の引数用のレジスタ領域に、前記関数の実行により前記レジスタ領域がアクセスされると、エラーが発生する所定のデータを記憶する命令を生成する
ことを特徴とするコンパイル装置。
コンパイル装置で実行されるコンパイル方法であって、
前記コンパイル装置は、
第1のプログラム言語で記述されたソースコードをコンパイルする際に、前記ソースコードの中から、第2のプログラム言語で記述された関数を特定し、
特定された前記関数に設定されている第1の引数以外の引数であって当該関数に設定されていない第2の引数用のレジスタ領域に、前記関数の実行により前記レジスタ領域がアクセスされると、エラーが発生する所定のデータを記憶する命令を生成する
ことを特徴とするコンパイル方法。
Claims (5)
- コンピュータに、
第1のプログラム言語で記述されたソースコードをコンパイルする際に、前記ソースコードの中から、第2のプログラム言語で記述された関数を特定し、
特定された前記関数に設定されている第1の引数以外の引数であって当該関数に設定されていない第2の引数用のレジスタ領域に、前記関数の実行により前記レジスタ領域がアクセスされると、エラーが発生する所定のデータを記憶する命令を生成する
処理を実行させることを特徴とするコンパイラ。 - 前記レジスタ領域は、引数のデータが記憶される領域を示すアドレスが記憶されるレジスタの領域であって、
前記命令の生成の前に、前記第1の引数用の第1の領域、および、前記第2の引数用の第2の領域を前記レジスタに確保する命令を生成し、
前記記憶において、前記第1の領域に前記第1の引数のデータが記憶される領域を示すアドレスを記憶し、前記第2の領域に前記所定のデータを記憶する命令を生成する
処理をコンピュータに実行させることを特徴とする請求項1に記載のコンパイラ。 - 前記特定において、予め記憶された前記関数を呼び出す命令文と、前記ソースコードに記述された命令文とが一致する場合に、前記ソースコードに記述された命令文における前記関数を特定する
処理をコンピュータに実行させることを特徴とする請求項1に記載のコンパイラ。 - 第2のプログラム言語で記述された関数を含む、第1のプログラム言語で記述されたソースコードを記憶する記憶装置と、
前記ソースコードをコンパイルする処理装置とを有し、
前記処理装置は、前記ソースコードをコンパイルする際に、前記ソースコードの中から、前記関数を特定し、特定された前記関数に設定されている第1の引数以外の引数であって当該関数に設定されていない第2の引数用のレジスタ領域に、前記関数の実行により前記レジスタ領域がアクセスされると、エラーが発生する所定のデータを記憶する命令を生成する
ことを特徴とするコンパイル装置。 - コンパイル装置で実行されるコンパイル方法であって、
前記コンパイル装置は、
第1のプログラム言語で記述されたソースコードをコンパイルする際に、前記ソースコードの中から、第2のプログラム言語で記述された関数を特定し、
特定された前記関数に設定されている第1の引数以外の引数であって当該関数に設定されていない第2の引数用のレジスタ領域に、前記関数の実行により前記レジスタ領域がアクセスされると、エラーが発生する所定のデータを記憶する命令を生成する
ことを特徴とするコンパイル方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015057212A JP6409638B2 (ja) | 2015-03-20 | 2015-03-20 | コンパイラ、コンパイル装置、および、コンパイル方法 |
US15/002,767 US9946524B2 (en) | 2015-03-20 | 2016-01-21 | Method of compiling a source code, storage medium, and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015057212A JP6409638B2 (ja) | 2015-03-20 | 2015-03-20 | コンパイラ、コンパイル装置、および、コンパイル方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016177537A JP2016177537A (ja) | 2016-10-06 |
JP6409638B2 true JP6409638B2 (ja) | 2018-10-24 |
Family
ID=56925202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015057212A Active JP6409638B2 (ja) | 2015-03-20 | 2015-03-20 | コンパイラ、コンパイル装置、および、コンパイル方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9946524B2 (ja) |
JP (1) | JP6409638B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858226A (zh) * | 2019-01-31 | 2019-06-07 | 叶春林 | 联网存储安全的保障系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57141755A (en) * | 1981-02-27 | 1982-09-02 | Hitachi Ltd | Architecture for program module |
JPH02205930A (ja) | 1989-02-03 | 1990-08-15 | Fujitsu Ltd | インタフェースチェック処理方法 |
JPH02240743A (ja) | 1989-03-14 | 1990-09-25 | Nec Corp | サブルーチンのcall/calledパラメータのチエツク方式 |
JPH0736734A (ja) * | 1993-06-29 | 1995-02-07 | Nec Corp | アーギュメント値のチェック方法 |
US5748964A (en) * | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
JP3141817B2 (ja) * | 1997-06-24 | 2001-03-07 | 日本電気株式会社 | 関数インタフェースのチェック方法 |
JP2002182927A (ja) * | 2000-12-13 | 2002-06-28 | Hitachi Ltd | 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi |
JP2004118494A (ja) * | 2002-09-26 | 2004-04-15 | Hitachi Software Eng Co Ltd | 異種言語プログラム間インターフェイスのチェックプログラム及びチェック方法 |
JP5818695B2 (ja) | 2012-01-04 | 2015-11-18 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | コード変換方法、プログラム及びシステム |
-
2015
- 2015-03-20 JP JP2015057212A patent/JP6409638B2/ja active Active
-
2016
- 2016-01-21 US US15/002,767 patent/US9946524B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016177537A (ja) | 2016-10-06 |
US9946524B2 (en) | 2018-04-17 |
US20160274877A1 (en) | 2016-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7346897B2 (en) | System for translating programming languages | |
US8813049B2 (en) | Type inference of partially-specified parameterized types | |
US7171649B1 (en) | Optimizing safe downcasting in an object-oriented programming language | |
US9378008B2 (en) | Method and system for creating, applying, and removing a software fix | |
US20080209316A1 (en) | System and method of implementing an extensible command-line interface | |
US20040230958A1 (en) | Compiler and software product for compiling intermediate language bytecodes into Java bytecodes | |
US8141035B2 (en) | Method for accessing internal states of objects in object oriented programming | |
US10303467B2 (en) | Target typing-dependent combinatorial code analysis | |
US20140137087A1 (en) | Target Typing of Overloaded Method and Constructor Arguments | |
JP2011508317A (ja) | コードエラーを減らすためのコントラクトプログラミング | |
JP2006092544A (ja) | プリオペレーティングシステム環境におけるモジュールの動的リンク | |
US7694289B2 (en) | Method for embedding object codes in source codes | |
JP2010097426A (ja) | コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法 | |
JP2001022591A (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
JP2005141380A (ja) | テンプレートコンパイル方法 | |
US10452364B2 (en) | Method and system for preparing code to be executed by programmable control devices | |
US6381736B1 (en) | Method for compile-time type-checking of arguments for externally-specified format strings | |
JP4806158B2 (ja) | マークアップ内でサブクラスを宣言的に定義し、使用するためのシステムおよび方法 | |
US6735763B1 (en) | Compiler device and computer-readable recording medium with a compiler recorded therein | |
JP6409638B2 (ja) | コンパイラ、コンパイル装置、および、コンパイル方法 | |
CN115951890B (zh) | 一种不同前端框架间的代码转换方法及系统及装置 | |
US11886839B2 (en) | Non-transitory computer-readable recording medium, function generation method, and information processing device | |
US20100070951A1 (en) | Generic assembler | |
JP7391983B2 (ja) | プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品 | |
CN109271237B (zh) | 仿真控制方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180820 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180828 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180910 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6409638 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |