org.oklab.compiler.generatecode
クラス ClassFileGenerator

java.lang.Object
  上位を拡張 org.oklab.compiler.generatecode.ClassFileGenerator

public class ClassFileGenerator
extends java.lang.Object

クラスファイルに出力するためのバイトコードを保持し、またクラスファイルへの出力 を行うクラス.

導入されたバージョン:
1.0
バージョン:
1.0
作成者:
Satoshi Okita satoshiokita@gmail.com
関連項目:
VMSpecTOC.doc

フィールドの概要
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
 

フィールドの詳細

MASIC

private static final int MASIC
クラスファイルの最初の2bytesはcafebabeというマジック文字が入っている. これで実行環境はクラスファイルであるか判断している.

関連項目:
定数フィールド値

MINOR_VERSION

private static final short MINOR_VERSION
このバージョン情報で、どのバージョンの実行環境で動作できるか表す. もし、Java5用に生成したバイトコードをJava1.4の実行環境で動かそうと した場合、このバージョン情報で動かせないことを確認して例外が発生される.

関連項目:
定数フィールド値

MAJOR_VERSION

private static final short MAJOR_VERSION
このバージョン情報で、どのバージョンの実行環境で動作できるか表す. もし、Java5用に生成したバイトコードをJava1.4の実行環境で動かそうと した場合、このバージョン情報で動かせないことを確認して例外が発生される.

関連項目:
定数フィールド値

ACC_PUBLIC

private static final short ACC_PUBLIC
関連項目:
定数フィールド値

ACC_FINAL

private static final short ACC_FINAL
関連項目:
定数フィールド値

ACC_SUPER

private static final short ACC_SUPER
関連項目:
定数フィールド値

ACC_INTERFACE

private static final short ACC_INTERFACE
関連項目:
定数フィールド値

ACC_ABSTRACT

private static final short ACC_ABSTRACT
関連項目:
定数フィールド値

ACCESS_FLAG

private static short ACCESS_FLAG

INTERFACE_COUNTS

private static final short INTERFACE_COUNTS
関連項目:
定数フィールド値

ATTRIBUTE

private static final short ATTRIBUTE
関連項目:
定数フィールド値

classfile

private java.io.DataOutputStream classfile

code

private CodeBufferManager code

contentPoolManager

private ContentPoolManager contentPoolManager

fieldManager

private FieldManager fieldManager

methodManager

private MethodManager methodManager

standardLibraryManager

private StandardLibraryManager standardLibraryManager
コンストラクタの詳細

ClassFileGenerator

public ClassFileGenerator(java.lang.String inputFilename)
                   throws CompileError
ソースコードをクラスファイルにするために、入力ソースコードを取り込み、 中間言語を管理するクラスのインスタンス化と初期化を行う.

パラメータ:
inputFilename - 入力ソースコード.
例外:
CompileError - 入力ファイルが存在しない場合や、中間言語を管理するクラス群の インスタンス化失敗時に発生する.
メソッドの詳細

emitCode

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
 -------------------+---------
 


getTypeBytecode

public static java.lang.String getTypeBytecode(int token)
                                        throws CompileError
型のバイトコードを生成して返す.

パラメータ:
token - トークン.
戻り値:
バイトコード.
例外:
CompileError - 対象外の型の場合に発生する.