(toppers-users 1043) Re: リソース量とgenoffsetスクリプトについて

Honda Hiroki hhonda @ ipflex.com
2003年 8月 11日 (月) 10:46:25 JST


お世話になっております、アイピーフレックス株式会社の本田広樹です。

若林さん wrote:
> armccでgenoffsetする方法は簡単ではなさそうですね。
> アレはインラインアセンブラのチェックをしているので、
> 一回ちゃんとオブジェクト化させないと取れなそうです。

makeoffset.c (config/arm7tdmi/makeoffset.c 等) の OFFSET_DEF マクロの
技巧的な asm() 文を armcc では使えない、ということを指しているのだと思
いますが、ここって、単純に

  INT ofs_TCB_texptn = offsetof(TCB, texptn);
  INT ofs_TCB_sp = offsetof(TCB, tskctxb.sp);
  INT ofs_TCB_pc = offsetof(TCB, tskctxb.pc);
  UW  ref_4 = 0;
  UH  ref_2 = 0;
  UB  ref_1 = 0;
  TCB bitbb_TCB_enatex = { ... };
  /* ↑初期値付きグローバル変数をずらずら並べるだけ */

と書いて、コンパイル結果のアセンブリソースを調べれば、オブジェクトファ
イルバイナリを解析せずとも目的を達成できると思います。

# 現 utils/genoffset は使えないので、アセンブリソースを目視して望みの
# 情報を取り出す、と。

JSP 本家 (gcc 用) でも上記「初期値付きグローバル変数」方式を採用しても
らえれば、utils/genoffset スクリプトが少々複雑化するかわりに各ターゲッ
ト依存部の makeoffset.c の見た目が簡単になるから、移植担当者にとってう
れしい…のかな…。移植担当者は makeoffset.c の意味を理解するために一度
は utils/genoffset を読まなければいけないから、結局 utils/genoffset と 
makeoffset.c を合わせた見た目の分かりやすさが問題ですね。

====
アイピーフレックス株式会社
R&D センター
本田広樹 (hhonda @ ipflex.com)