> Cファイルに記述したデータをgcc -c -data.c
> でObjectファイルにして、そこからデータを抽出し
> バイナリデータを作成できないか、と試行錯誤しております。
なにが目的でそんなことをやっているのかわかりませんが、
テキストの羅列からバイナリデータを作成するのであれば、
xbm/xpm, ppm/pnm あたりを調べた方が早いかと思います。
> あと少しというところで問題がおきてしまいました。
> エンディアンを指定したいために arm用gcc を使用しているのですが、
> ポインタ参照のデータが0でクリアされてしまいます。
> このarn用gcc以外ですと問題なくオフセット値が入っているのですが、どういった原因が考えられるでしょうか?
コンパイラとリンカの役割分担がターゲットアーキテクチャに
よって少しずつ異なるためです。
特にサンプルコードでは記憶クラスに extern が指定されているので、
オブジェクトファイルの段階では実アドレスが確定できません。
にもかかわらず、x86 アーキでは歴史的な経緯により、
オブジェクトファイルの段階ではオフセットアドレスを
仮にセットしておくコンパイラがほとんどです。
したがって、C ソースの体裁で記述したデータをバイナリファイルに
落としたいのであれば、自分でリンカスクリプトを書くなどして、
データが配置されるアドレスを指定する必要があります。
DOS の時代には EXE2BIN などを使うのが一般的でしたが、
いまなら、最初に述べたように、xpm なり pnm なりを調べるのが
近道でしょう。
|