Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)

No.2962  Re:.oファイルからデータを抜き取る方法
発言者: wa
発言日: 2005 06/24 08:34
 
> Cファイルに記述したデータをgcc -c -data.c
> でObjectファイルにして、そこからデータを抽出し
> バイナリデータを作成できないか、と試行錯誤しております。

なにが目的でそんなことをやっているのかわかりませんが、
テキストの羅列からバイナリデータを作成するのであれば、
xbm/xpm, ppm/pnm あたりを調べた方が早いかと思います。

> あと少しというところで問題がおきてしまいました。
> エンディアンを指定したいために arm用gcc を使用しているのですが、
> ポインタ参照のデータが0でクリアされてしまいます。
> このarn用gcc以外ですと問題なくオフセット値が入っているのですが、どういった原因が考えられるでしょうか?

コンパイラとリンカの役割分担がターゲットアーキテクチャに
よって少しずつ異なるためです。

特にサンプルコードでは記憶クラスに extern が指定されているので、
オブジェクトファイルの段階では実アドレスが確定できません。

にもかかわらず、x86 アーキでは歴史的な経緯により、
オブジェクトファイルの段階ではオフセットアドレスを
仮にセットしておくコンパイラがほとんどです。

したがって、C ソースの体裁で記述したデータをバイナリファイルに
落としたいのであれば、自分でリンカスクリプトを書くなどして、
データが配置されるアドレスを指定する必要があります。

DOS の時代には EXE2BIN などを使うのが一般的でしたが、
いまなら、最初に述べたように、xpm なり pnm なりを調べるのが
近道でしょう。


▼関連発言

2961:.oファイルからデータを抜き取る方法 [kgon] 06/23
 └2962:Re:.oファイルからデータを抜き取る方法 [wa] 06/24
  └2963:Re[2]:.oファイルからデータを抜き取る方法 [kgon] 06/24
   └2964:Re[3]:.oファイルからデータを抜き取る方法 [nil] 06/24 <

Pass 保存

早田のホームページへ
CGIROOM