Top > Shiba > Shiba Byte Code

* Shiba Object File [#rc0ac6f3]
* Shiba Byte Code [#rc0ac6f3]
#contents

* オブジェクトファイル [#sfc8fd99]
* バイトコード [#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)|-|

    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS