JP5448976B2 - コード生成処理装置及びコード生成処理プログラム - Google Patents
コード生成処理装置及びコード生成処理プログラム Download PDFInfo
- Publication number
- JP5448976B2 JP5448976B2 JP2010081822A JP2010081822A JP5448976B2 JP 5448976 B2 JP5448976 B2 JP 5448976B2 JP 2010081822 A JP2010081822 A JP 2010081822A JP 2010081822 A JP2010081822 A JP 2010081822A JP 5448976 B2 JP5448976 B2 JP 5448976B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- object file
- relocation
- program
- code generation
- 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
- 238000012545 processing Methods 0.000 title claims description 85
- 238000000034 method Methods 0.000 claims description 92
- 238000004364 calculation method Methods 0.000 claims description 45
- 230000006870 function Effects 0.000 claims description 4
- 230000014509 gene expression Effects 0.000 description 67
- 230000008569 process Effects 0.000 description 43
- 230000001343 mnemonic effect Effects 0.000 description 18
- 230000008859 change Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000009501 mnemonic process Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
| シンボル
| 式 + 式
| 式 - 式
| 式 * 式
| 式 / 式
| 式 % 式
| 式 >> 式
| 式 << 式
| 式 & 式
| 式 | 式
| ^ 式
| - 式
| ( 式 )
lui $1, %hi(foo)
という記述は、図2によるニーモニックでは
lui 1, foo >> 16
と記述される。
また、GNUアセンブラにおける
beq $1, $2, foo
は、図2におけるニーモニックでは、
beq 1, 2, foo - __pc
として記述することができる。beq命令は、汎用レジスタ1と汎用レジスタ2が等しい場合、アドレスfooに分岐することを表すニーモニックである。ここで、beq命令のアドレスフィールドはプログラムカウンタ相対アドレスであるため、実際の命令フィールドに格納される値はfooの値からプログラムカウンタの値を減じた値である。ここで __pc は、プログラムカウンタを表すシンボルである。
図1は、この発明の実施の形態1によるコード生成処理装置を示す構成図である。
図1に示すコード生成処理装置は、ソースファイル101と命令情報表102とを用いてオブジェクトファイル107を生成するオブジェクトファイル生成部103と、オブジェクトファイル107からリンク処理を行い、ロードモジュール116を出力するリンカ113とを備える。ここで、オブジェクトファイル生成部103とリンカ113は、コンピュータを用いて実現され、それぞれの機能に対応するソフトウェアとこれらのソフトウェアを実行するためのCPUや主記憶装置といったハードウェアから構成されている。あるいはそれぞれ専用のハードウェアで構成されていてもよい。
図3は、命令情報表102の構成図である。命令情報表102の構築方法に関しては本発明と無関係であるため言及せず構成のみを示す。
命令情報表102は、列として命令名301、テンプレート302、命令サイズ303、フィールド情報304を持つ。命令名301は、命令情報表102において一意なエントリを識別する主キーである。テンプレート302は、命令のオペコードが格納され、オペコード以外のフィールドに0が格納された命令のテンプレートである。命令サイズ303は、命令のバイト数である。フィールド情報304は、命令のフィールドに関する情報をフィールド位置表305の形式で保持する。フィールド位置表305は、1つの命令のすべてのフィールドに対応する個々のエントリを持ち、各エントリはLSB位置306とMSB位置307を持つ。LSB位置306は、フィールドのLSB(Least Significant Bit)が存在する命令中でのビット位置を表す。また、MSB位置307は、フィールドのMSB(Most Significant Bit)が存在する命令中でのビット位置を表す。尚、図3の命令情報表102の構成は、JSONやYAMLなど一般的なデータ格納用のフォーマットで容易に表現可能かつ記憶媒体に格納可能である。
ステップ405は分岐処理であり、式がシンボルを含まない場合はステップST406を行い、式がシンボルを含む場合は、ステップST407〜ST408を行う。
抽象構文木は、式中の演算子をノードとし、式中の数あるいはシンボルをリーフとするツリー構造である。すなわち、抽象構文木においてノードは演算子をラベルとし、リーフは式数あるいはシンボルをラベルとする。例として、式と抽象構文木の対応を図5に示す。文字列表現の式501は、抽象構文木502で表現される。式501中の演算子である+と>>は、抽象構文木502ではノードとして表現され、式中のシンボルfooと数4および2はリーフとして表される。
リロケーションプログラムコード生成処理は、式の抽象構文木と式の値を格納すべき場所を特定するためのLSB位置およびMSB位置を入力とし、リロケーション用のプログラムを出力する処理である。ステップST701は、抽象構文木に対応するリロケーションプログラムコードを出力する処理である。次のステップST702とステップST703は、それぞれLSB位置とMSB位置をスタックに積むための命令を出力する。最後にステップST704の処理は、値格納命令であるfill命令を出力する。
図11は、リンカ処理を表すフローチャートである。ステップST1101を含むループAは、領域連結部114が、1回の実行で1つのオブジェクトファイルに対して領域連結処理を実行する。ステップ1102を含むループBでは、リロケーションプログラムインタプリタ115が、個々のオブジェクトファイルに関連するリロケーションテーブルを基にリロケーション処理を行う。
Claims (5)
- ソースプログラムをオブジェクトファイルにコンパイルあるいはアセンブルし、その後、前記オブジェクトファイルをリンクしてプロセッサが実行可能な機械語プログラムを生成するコード生成処理装置において、
前記オブジェクトファイルの生成時に、リロケーションを行うための計算手順と計算結果を格納すべきビット位置とを当該オブジェクトファイルと関連付けるオブジェクトファイル関連付け手段と、
前記リンク時に、前記オブジェクトファイルと関連付けられたリロケーションを行うための計算手順と計算結果を格納すべきビット位置とを読み出し解釈することによってリロケーション処理を行うリロケーション処理手段とを備え、
前記計算手順は、シンボル参照位置のうちの1つに直接または間接的に格納すべき値の計算手順として2つ以上の命令を含む命令列から構成され、前記命令は2つ以上のオペランドを使用し、前記オペランドは定数またはシンボルの値または事前に実行した命令の結果であり、前記命令列のうち少なくとも1つはシンボルの値を使用する命令であり、前記命令列のうち少なくとも2つの命令は演算命令であり、前記演算命令は算術演算命令の集合とビット演算命令の集合とシフト演算命令の集合とに含まれる全てまたは一部の演算命令の集合の中から選択される
ことを特徴とするコード生成処理装置。 - オブジェクトファイル関連付け手段は、命令中でのビット位置を示す命令情報表に基づいてリロケーション時の計算結果を格納すべきビット位置を決定し、オブジェクトファイルと関連付けることを特徴とする請求項1記載のコード生成処理装置。
- オブジェクトファイル関連付け手段は、計算手順と計算結果の格納位置をリロケーションプログラムとしてオブジェクトファイル中に格納することを特徴とすることを特徴とする請求項1または請求項2記載のコード生成処理装置。
- オブジェクトファイルは記憶媒体に格納されることを特徴とする請求項3記載のコード生成処理装置。
- ソースプログラムをオブジェクトファイルにコンパイルあるいはアセンブルするオブジェクトファイル生成部と、前記オブジェクトファイルをリンクしてプロセッサが実行可能な機械語プログラムを生成するリンカとをコンピュータ上に実現するコード生成処理プログラムであって、
前記オブジェクトファイルの生成時に、リロケーションを行うための計算手順と計算結果を格納すべきビット位置とを当該オブジェクトファイルと関連付けるオブジェクトファイル関連付け手段と、
前記リンク時に、前記オブジェクトファイルと関連付けられたリロケーションを行うための計算手順と計算結果を格納すべきビット位置とを読み出し解釈することによってリロケーション処理を行うリロケーション処理手段としてコンピュータを機能させ、
前記計算手順は、シンボル参照位置のうちの1つに直接または間接的に格納すべき値の計算手順として2つ以上の命令を含む命令列から構成され、前記命令は2つ以上のオペランドを使用し、前記オペランドは定数またはシンボルの値または事前に実行した命令の結果であり、前記命令列のうち少なくとも1つはシンボルの値を使用する命令であり、前記命令列のうち少なくとも2つの命令は演算命令であり、前記演算命令は算術演算命令の集合とビット演算命令の集合とシフト演算命令の集合とに含まれる全てまたは一部の演算命令の集合の中から選択される
ことを特徴とするコード生成処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010081822A JP5448976B2 (ja) | 2010-03-31 | 2010-03-31 | コード生成処理装置及びコード生成処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010081822A JP5448976B2 (ja) | 2010-03-31 | 2010-03-31 | コード生成処理装置及びコード生成処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011215759A JP2011215759A (ja) | 2011-10-27 |
JP5448976B2 true JP5448976B2 (ja) | 2014-03-19 |
Family
ID=44945436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010081822A Active JP5448976B2 (ja) | 2010-03-31 | 2010-03-31 | コード生成処理装置及びコード生成処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5448976B2 (ja) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01205342A (ja) * | 1988-02-12 | 1989-08-17 | Sofuto Uea Ashisuto:Kk | 汎用型クロスソフトウエアの開発システム |
JPH04145536A (ja) * | 1990-10-05 | 1992-05-19 | Pfu Ltd | プログラム変換処理システムにおけるアドレス再配置処理方式 |
CA2158848A1 (en) * | 1993-03-23 | 1994-09-29 | Erik L. Eidt | Apparatus and method for a relocatable file format |
JPH08286927A (ja) * | 1995-04-18 | 1996-11-01 | Hitachi Ltd | アセンブラ処理方式 |
JP2000200202A (ja) * | 1999-01-07 | 2000-07-18 | Nec Ic Microcomput Syst Ltd | アプリケ―ションプログラムのデバッグにおけるリンク処理方法及びそのシステム並びに情報記録媒体 |
-
2010
- 2010-03-31 JP JP2010081822A patent/JP5448976B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011215759A (ja) | 2011-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106919434B (zh) | 一种代码生成方法及装置 | |
JP4057938B2 (ja) | コンパイラ、コンパイル方法、及びプログラム開発ツール | |
US7313773B1 (en) | Method and device for simulator generation based on semantic to behavioral translation | |
CN108920496B (zh) | 一种渲染方法及装置 | |
JP2010504572A (ja) | モデル検査で用いられる遷移システムの生成 | |
US20080250231A1 (en) | Program code conversion apparatus, program code conversion method and recording medium | |
Pandey et al. | LLVM cookbook | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
Nacke et al. | Learn LLVM 17: A beginner's guide to learning LLVM compiler tools and core libraries with C++ | |
CN112631604B (zh) | 一种前端框架实现方法及装置 | |
JP5448976B2 (ja) | コード生成処理装置及びコード生成処理プログラム | |
US20070169054A1 (en) | Process of automatically translating a high level programming language into an extended activity diagram | |
JP2011170749A (ja) | シミュレーション装置及びシミュレーション方法 | |
Bezzubikov et al. | Automatic dynamic binary translator generation from instruction set description | |
CN108369499B (zh) | 一种代码虚拟化系统和方法 | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
Kroustek et al. | Advanced preprocessing of binary executable files and its usage in retargetable decompilation | |
Schlamelcher et al. | Extending clang/llvm with custom instructions using tablegen–an experience report | |
JP2014099108A (ja) | 実行時間算出装置、実行時間算出方法、およびプログラム | |
KR101192438B1 (ko) | 자바 프로그램 중간 표현 언어 생성 시스템 및 방법 | |
JP2011090511A (ja) | 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法 | |
Kraas | Towards an extensible modeling and validation framework for SDL-UML | |
JP2013080406A (ja) | コンパイル装置、情報処理システム、コンパイル方法、コンパイルプログラム、記録媒体 | |
Curtis | On language-agnostic abstract-syntax trees: student research abstract | |
CN118860487A (zh) | 一种硬件加速指令确定方法、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111013 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130321 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130416 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130528 |
|
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: 20131126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131224 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5448976 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |