ページへ戻る
印刷
gg00man/file
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:gg00man/file をテンプレートにして作成
開始行:
* ファイル関係 [[GUIGUI00_man]]
#contents
***obj2bim+bim2binで生成されるアプリのメモリマップ(セレ...
-イメージ(上が低位アドレス、下が上位アドレス)
|スタック領域|
|静的データ領域|
|malloc領域|
|mmarea領域|
--mmarea領域という言い方はいまいちだけど、とりあえず。
-アドレス(オフセット)
--スタック領域:
---アドレス0x00000000から始まる。サイズはobj2bimで指定す...
---サイズはlib_readCSd(0x20)でプログラム側から知ることも...
--静的データ領域:
---スタックの直後のアドレスから始まる。つまりlib_readCSd(...
---サイズはリンクした結果で決まる。bss領域も0展開されて静...
--malloc領域:
---静的データの直後のアドレスから始まる。つまりlib_readCS...
---サイズは基本的にはbim2binで指定した値であるが、malloc...
---malloc領域の終わりのアドレスは、lib_readCSd(0x10)-1で...
--mmarea領域:
---malloc領域の直後のアドレスから始まる。つまりlib_readCS...
---サイズはbim2binで指定した値であり、lib_readCSd(0x14)&0...
-備考
---lib_readCSd(0x20)、lib_readCSd(0x24)については、将来の...
---リンカやライブラリがバージョンアップしても、古い規格に...
***lib_readCSd
int lib_readCSd(int offset) :
機能:コードセグメントの任意のダブルワードを読み込んでそ...
コードセグメントには主にプログラムのバイナリーコードが...
の領域は特別な値が書かれており、主にそれを参照するために...
はコードセグメントの範囲をはみ出すような指定をしてはいけ...
offset = 0x0010 : stack + スタティックデーター + mal...
単位(4KB単位)に切り上げた値。ここからmmarea領域が...
ここをよく使う。
offset = 0x0014 : この値の上位20bitは、mmarea:で指定...
。下位12bitはリザーブなので、その値に依存しないよ...
単位で指定するので、上位20bitだけで指定できる。
参考になるサンプル:tviewc00(introc), test016
***lib_initmodulehandle0
void lib_initmodulehandle0(int opt, int slot) :
機能: スロットをモジュールハンドルとして初期化し,アプリ...
opt == 8 だとユーザディレクトリ、opt == 12 だとマシン...
現状ではどちらも同じに見えるが、マシンディレクトリだと...
モジュールハンドルはスロットを一つ使う。
たいていの場合、lib_steppath0()と組み合わせて使われる。
参考になるサンプル:test016
***lib_initmodulehandle1
void lib_initmodulehandle1(int slot, int num, int sig) :
機能: スロットをモジュールハンドルとして初期化し、どこの...
するかはシェル (人間) に任せる。
モジュールハンドルはスロットを一つ使う。
numは番号で、コマンドラインから制御するために機能別...
sigは成功シグナル。成功した場合はsigが、失敗した場合...
シグナルが来る。どれがどんなエラーを示すかは未定。
成功か失敗のシグナルが返ってくるまで、このコマンドを...
ネタ元: introc/tviewc00.c
***lib_steppath0
void lib_steppath0(int opt, int slot, const char *name, ...
機能:パスをたどることで、モジュールハンドルを移動。
このコマンドを使う前にスロットをモジュールハンドルに初期...
ディレクトリに移動させておくこと。そのディレクトリの中を...
(1) opt == 0
name : モジュールネーム。
必ず大文字で、12文字。9文字目はピリオドでなけ...
たない場合、スペースで補う。例:"TEST016 .C "
sig : 完了シグナル。
成功の場合はこの値が返ってくる。失敗の場合は+1...
る。値と失敗の原因についての関係は今のところ未定。
参考になるサンプル:test016
***lib_mapmodule
void lib_mapmodule(0, int slot, int attr, int len, int o...
機能: モジュールをメモリ空間にマッピングする。
slotはモジュールに移動させたモジュールハンドル。一つ...
マッピングしてはいけない。
attrは読み書き属性。5で読み込み専用、7で書き込み可能。
lenはマッピングする長さ。0より大きい4096の倍数。モジ...
のうち、短いほうでマッピングが打ち切られる。
offsetはマッピング領域のポインタ。典型的にはilb_read...
複数のファイルを同時にマッピングするときは重ならないよ...
moffsetはモジュール内のオフセット。これも4096の倍数...
参考になるサンプル:tviewc00(introc)
***lib_unmapmodule
void lib_unmapmodule(0, int size, int addr) :
機能: モジュールマッピング解除。
addrで始まる長さsizeバイトの領域のモジュールをはがす。
モジュールをリサイズしたり、ハンドルにしたスロットを...
マッピングを全てはがしておくこと。
***lib_readmodulesize
int lib_readmodulesize(int slot) :
機能: モジュールの大きさを返す。
slotはモジュールハンドル。
参考になるサンプル:tviewc00(introc)
* こめんと欄
#comment
終了行:
* ファイル関係 [[GUIGUI00_man]]
#contents
***obj2bim+bim2binで生成されるアプリのメモリマップ(セレ...
-イメージ(上が低位アドレス、下が上位アドレス)
|スタック領域|
|静的データ領域|
|malloc領域|
|mmarea領域|
--mmarea領域という言い方はいまいちだけど、とりあえず。
-アドレス(オフセット)
--スタック領域:
---アドレス0x00000000から始まる。サイズはobj2bimで指定す...
---サイズはlib_readCSd(0x20)でプログラム側から知ることも...
--静的データ領域:
---スタックの直後のアドレスから始まる。つまりlib_readCSd(...
---サイズはリンクした結果で決まる。bss領域も0展開されて静...
--malloc領域:
---静的データの直後のアドレスから始まる。つまりlib_readCS...
---サイズは基本的にはbim2binで指定した値であるが、malloc...
---malloc領域の終わりのアドレスは、lib_readCSd(0x10)-1で...
--mmarea領域:
---malloc領域の直後のアドレスから始まる。つまりlib_readCS...
---サイズはbim2binで指定した値であり、lib_readCSd(0x14)&0...
-備考
---lib_readCSd(0x20)、lib_readCSd(0x24)については、将来の...
---リンカやライブラリがバージョンアップしても、古い規格に...
***lib_readCSd
int lib_readCSd(int offset) :
機能:コードセグメントの任意のダブルワードを読み込んでそ...
コードセグメントには主にプログラムのバイナリーコードが...
の領域は特別な値が書かれており、主にそれを参照するために...
はコードセグメントの範囲をはみ出すような指定をしてはいけ...
offset = 0x0010 : stack + スタティックデーター + mal...
単位(4KB単位)に切り上げた値。ここからmmarea領域が...
ここをよく使う。
offset = 0x0014 : この値の上位20bitは、mmarea:で指定...
。下位12bitはリザーブなので、その値に依存しないよ...
単位で指定するので、上位20bitだけで指定できる。
参考になるサンプル:tviewc00(introc), test016
***lib_initmodulehandle0
void lib_initmodulehandle0(int opt, int slot) :
機能: スロットをモジュールハンドルとして初期化し,アプリ...
opt == 8 だとユーザディレクトリ、opt == 12 だとマシン...
現状ではどちらも同じに見えるが、マシンディレクトリだと...
モジュールハンドルはスロットを一つ使う。
たいていの場合、lib_steppath0()と組み合わせて使われる。
参考になるサンプル:test016
***lib_initmodulehandle1
void lib_initmodulehandle1(int slot, int num, int sig) :
機能: スロットをモジュールハンドルとして初期化し、どこの...
するかはシェル (人間) に任せる。
モジュールハンドルはスロットを一つ使う。
numは番号で、コマンドラインから制御するために機能別...
sigは成功シグナル。成功した場合はsigが、失敗した場合...
シグナルが来る。どれがどんなエラーを示すかは未定。
成功か失敗のシグナルが返ってくるまで、このコマンドを...
ネタ元: introc/tviewc00.c
***lib_steppath0
void lib_steppath0(int opt, int slot, const char *name, ...
機能:パスをたどることで、モジュールハンドルを移動。
このコマンドを使う前にスロットをモジュールハンドルに初期...
ディレクトリに移動させておくこと。そのディレクトリの中を...
(1) opt == 0
name : モジュールネーム。
必ず大文字で、12文字。9文字目はピリオドでなけ...
たない場合、スペースで補う。例:"TEST016 .C "
sig : 完了シグナル。
成功の場合はこの値が返ってくる。失敗の場合は+1...
る。値と失敗の原因についての関係は今のところ未定。
参考になるサンプル:test016
***lib_mapmodule
void lib_mapmodule(0, int slot, int attr, int len, int o...
機能: モジュールをメモリ空間にマッピングする。
slotはモジュールに移動させたモジュールハンドル。一つ...
マッピングしてはいけない。
attrは読み書き属性。5で読み込み専用、7で書き込み可能。
lenはマッピングする長さ。0より大きい4096の倍数。モジ...
のうち、短いほうでマッピングが打ち切られる。
offsetはマッピング領域のポインタ。典型的にはilb_read...
複数のファイルを同時にマッピングするときは重ならないよ...
moffsetはモジュール内のオフセット。これも4096の倍数...
参考になるサンプル:tviewc00(introc)
***lib_unmapmodule
void lib_unmapmodule(0, int size, int addr) :
機能: モジュールマッピング解除。
addrで始まる長さsizeバイトの領域のモジュールをはがす。
モジュールをリサイズしたり、ハンドルにしたスロットを...
マッピングを全てはがしておくこと。
***lib_readmodulesize
int lib_readmodulesize(int slot) :
機能: モジュールの大きさを返す。
slotはモジュールハンドル。
参考になるサンプル:tviewc00(introc)
* こめんと欄
#comment
ページ名: