シンボルマップ・パーサー

up
 組込みプログラミングのデバッグにおいて変数のアドレスを知ることは必須です。 各メーカーが提供するリンカー等で変数のシンボルとその絶対アドレスを網羅した マップファイルが生成されます。このファイルから情報を獲得されていることと思います。
 自社固有のツールであったり、個人的に活用してたり様々と思いますが、例えば メーカーやシリーズが変わり、マップファイルのフォーマットが変更になった場合はどう しますか? やはり作るしかないのですが、そのインターフェイスは統一されていますか? コマンドライン一発の実行ファイルならばそれはそれで簡単でいいのですが、 少し手を入れて作成しているツール類と連携がとれればいうことなしです。
(高価なサードパーティ製の多メーカー・多シリーズ対応ICEならば 楽出来るのでしょうか^^;? 私は使ってないのでしりませんが)
 ま、一発もんを簡単に作るなら Perl やら awk やらが楽でよいです。

 で、ついでに言わしていただくと、最近某F社の〇oftuneV3 っての使ってるんですが、 (そうそう'98に過大広告にも似た「開発期間を1/3に..」って文句でリリースしたヤツ) このシンボルマップ作成が泣けてくる。シンボル名が(最大でも)21文字を超えると、 途中で切り捨てやがって、次の行に折り返してくれる。サフィックスに`+'を付与してそれを 促しているが、こんなシンボルファイル、使えたモンじゃない。メーカーに「どうやって活用するの?」 って聞いてみたくなる。個人的には F社は好きなのだが、これには辟易している。

 というわけで、flex & bison でスキャナーとパーサーを作りました。 ついでに、NEC 78K/0シリーズも作りました。DLLです。
 DLL の export関数名は全て同じにしてあります。動的リンクすれば、DLLファイル名 だけの違いで済みます。
 これだと私自身でも使うのが面倒くさくなるので、お決まりのラップクラスを作りました。 これだと、メーカーを意識せず、DLLも意識せずにパーサーを操作できます。楽でよいです。 サンプルにデモを作成してみました。両方ともソース付きです。


up

by masu
e-mail: massun.masumoto@nifty.ne.jp
URL : http://member.nifty.ne.jp/~masumoto/