* Shiba Object File [#rc0ac6f3] #contents * オブジェクトファイル [#sfc8fd99] - Cでいう.oのファイル。 含まれるもの - モジュール名 - 定数テーブル - シンボルテーブル - シンボル一覧 - シンボル解決情報 ** モジュール名 [#j6a7768c] - モジュール名が文字列として格納される。 ** 定数テーブル [#wf3e79a4] - 必要な定数テーブルの長さ。 - コンパイル時に解決されている定数郡。 - .oのファイルサイズ縮小のために,コンパイル時に解決されている定数郡は定数テーブルの先頭に置いておく。 - そうしておくことで,リンク時に解決される定数郡のデータ量が.oから削減される。(.sbssと同じ考え方) ** シンボルテーブル [#bfa16e2a] - 必要なシンボルテーブルの長さのみ格納される。 ** シンボル一覧 [#a5552a6f] - モジュールはユーザー定義型リストを持つ。 :ユーザー定義型リスト| - ユーザー定義型についての情報が0個以上格納されている。 - エンジンではユーザー定義型の情報が1つにつきSSObjectTypeが1つ生成される。 |項目|内容|例|h |シンボルのパス|文字列|BaseLib.Math.Vector3| |継承しているクラスのパス|文字列|Foo| |仮想関数テーブルリスト|別項:仮想関数テーブルリストを参照|| |変数リスト|別項:変数リストを参照|| |関数リスト|別項:関数リストを参照|| :仮想関数テーブルリスト| - 仮想関数テーブルについての情報が0個以上格納されている。 - エンジンでは仮想関数テーブルの情報が1つにつきSSVirutalFuncTableが生成される。 |項目|内容|例|h |シンボルのパス|文字列|BaseLib.IDrawable| |仮想関数シンボルテーブル|SymbolTableIndexの配列|| :変数リスト| - 変数についての情報が0個以上格納されている。 - エンジンでは変数の情報が1つにつきSSVariableが1つ生成される。 |項目|内容|例|h |型を示すシンボルのパス|文字列|float| |シンボル名|文字列|x| |staticフラグ|bool(staticか否か)|| |readonlyフラグ|bool(readonlyか否か)|| |constフラグ|bool(constか否か)|| :関数リスト| - 関数についての情報が0個以上格納されている。 - エンジンでは関数の情報が1つにつきSSFunctionが1つ生成される。 |項目|内容|例|h |シンボル名|文字列|add| |戻り値の型を示すシンボルのパス|文字列|BaseLib.Math.Vector3| |戻り値のconstフラグ|bool(constか否か)|| |引数リスト|別項:引数リストを参照|| |staticフラグ|bool(staticか否か)|| |constフラグ|bool(constか否か)|| |命令コード|バイトコード|| :引数リスト| - 引数についての情報が0個以上格納されている。 - エンジンでは引数の情報が1つにつきSSFunctionArgが1つ生成される。 |項目|内容|例|h |型を示すシンボルのパス|文字列|float| |constフラグ|bool(constか否か)|| |refフラグ|bool(refか否か)|| ** シンボル解決情報 [#jec91c98] - シンボルの種類は変数・関数・ユーザー定義型の3つ。 :変数| |項目|内容|例|h |代入先|定数テーブル or シンボルテーブル|-| |シンボルパス|解決するシンボルのパス|BaseLib.Math.Vector3.x| |シンボルの何を取得するのか。|・変数オブジェクト(SSVariableのポインタ)&br;・サイズ(u32) &br;・先頭からのオフセット距離(u32)|-| :関数| |項目|内容|例|h |代入先|シンボルテーブル|-| |シンボルパス|解決するシンボルのパス|BaseLib.Math.Vector3.add| |引数リスト|引数の型のリスト|| |属性|const,staticなどの属性|| |シンボルの何を取得するのか。|・関数オブジェクト(SSFunctionのポインタ) |-| :ユーザー定義型| |項目|内容|例|h |代入先|定数テーブル|-| |シンボルパス|解決するシンボルのパス|BaseLib.Math.Vector3| |シンボルの何を取得するのか。|・ユーザー定義型オブジェクト(SSObjectTypeのポインタ) &br;・サイズ(u32)|-| |