|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.oklab.compiler.generatecode.ClassFileGenerator
public class ClassFileGenerator
クラスファイルに出力するためのバイトコードを保持し、またクラスファイルへの出力 を行うクラス.
| フィールドの概要 | |
|---|---|
private static short |
ACC_ABSTRACT
|
private static short |
ACC_FINAL
|
private static short |
ACC_INTERFACE
|
private static short |
ACC_PUBLIC
|
private static short |
ACC_SUPER
|
private static short |
ACCESS_FLAG
|
private static short |
ATTRIBUTE
|
private java.io.DataOutputStream |
classfile
|
private CodeBufferManager |
code
|
private ContentPoolManager |
contentPoolManager
|
private FieldManager |
fieldManager
|
private static short |
INTERFACE_COUNTS
|
private static short |
MAJOR_VERSION
このバージョン情報で、どのバージョンの実行環境で動作できるか表す. |
private static int |
MASIC
クラスファイルの最初の2bytesはcafebabeというマジック文字が入っている. |
private MethodManager |
methodManager
|
private static short |
MINOR_VERSION
このバージョン情報で、どのバージョンの実行環境で動作できるか表す. |
private StandardLibraryManager |
standardLibraryManager
|
| コンストラクタの概要 | |
|---|---|
ClassFileGenerator(java.lang.String inputFilename)
ソースコードをクラスファイルにするために、入力ソースコードを取り込み、 中間言語を管理するクラスのインスタンス化と初期化を行う. |
|
| メソッドの概要 | |
|---|---|
void |
emitCode()
クラスファイルの構造に合うようにバイトコードを出力する. |
static java.lang.String |
getTypeBytecode(int token)
型のバイトコードを生成して返す. |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
|---|
private static final int MASIC
private static final short MINOR_VERSION
private static final short MAJOR_VERSION
private static final short ACC_PUBLIC
private static final short ACC_FINAL
private static final short ACC_SUPER
private static final short ACC_INTERFACE
private static final short ACC_ABSTRACT
private static short ACCESS_FLAG
private static final short INTERFACE_COUNTS
private static final short ATTRIBUTE
private java.io.DataOutputStream classfile
private CodeBufferManager code
private ContentPoolManager contentPoolManager
private FieldManager fieldManager
private MethodManager methodManager
private StandardLibraryManager standardLibraryManager
| コンストラクタの詳細 |
|---|
public ClassFileGenerator(java.lang.String inputFilename)
throws CompileError
inputFilename - 入力ソースコード.
CompileError - 入力ファイルが存在しない場合や、中間言語を管理するクラス群の
インスタンス化失敗時に発生する.| メソッドの詳細 |
|---|
public void emitCode()
クラスファイル構造の概要 名称 バイト数 サンプルデータ -------------------+---------+----------------- MASIC_NUMBER | 4 | CA FE BA BE MINOR_VERSION | 2 | 00 00 MAJOR_VERSION | 2 | 00 31 -------------------+---------+----------------- Constant Pool | n=(2+a) | Pool Size | 2 | 00 11 Pool Data | a | ..... -------------------+---------+----------------- Access Flag | 2 | 00 20 -------------------+--------- Class Name | n -------------------+--------- Super Class Name | n -------------------+--------- Interface Counts | 1 -------------------+--------- Fields | n -------------------+--------- Methods | n -------------------+--------- Attribute Counts | 1 -------------------+---------
public static java.lang.String getTypeBytecode(int token)
throws CompileError
token - トークン.
CompileError - 対象外の型の場合に発生する.
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||