# bin2obj

## 説明

`bin2obj` は、バイナリファイルを CodeWarrior などの C コンパイラのリンカで直接リンク可能なオブジェクトファイルに変換するためツールです。

## 使用方法

### 起動コマンド

    % bin2obj BINARY_FILE OBJECT_FILE
                      [-b|--begin SYMBOL_BEGIN] [-e|--end SYMBOL_END]
                      [-C|--compatible] [-a|--align ALIGNMENT] [-r|--readonly] [-s|--section SECTION]

`BINARY_FILE` で指定されたバイナリファイルをリンク可能なオブジェクト形式へ変換し、`OBJECT_FILE` という名で出力します。CodeWarrior for NINTENDO DS パッケージ内に同梱されている BinToElf ツールと同様の働きをします。

`-b` オプションおよび `-e` オプションで、バイナリファイル内のデータへ C 言語などのプログラムからアクセスするためのシンボルを指定します。`-b` の代わりに `--begin` を、また `-e` の代わりに `--end` という長いオプションも使用できます。

データ領域の先頭シンボルとして `SYMBOL_BEGIN` で指定したシンボル名が、また末尾のシンボル(正確には最終データの次のアドレスを指します)として `SYMBOL_END` で指定したシンボル名がそれぞれ設定されます。バイナリ領域のサイズは `SYMBOL_END` で示される値から `SYMBOL_BEGIN` で示される値を減じたものとなります。

また、このシンボル名の指定に `%f,%t,%b および %e` という特別なキーワードを使用できます。このキーワードは以下のように `BINARY_FILE` で指定されたバイナリファイルの名称の一部分を参照します。

> `%f` または `%t`
>   `BINARY_FILE` のディレクトリ部分を除いた部分
> `%b`
>   `BINARY_FILE` のディレクトリ部分と拡張子を除いた部分
> `%e`
>   `BINARY_FILE` の拡張子(ドットは含まれません)

このオプションが指定されないときのデフォルト値は `SYMBOL_BEGIN` が `%b_begin` および `SYMBOL_END` が `%b_end` となっています。

`-C` オプションは CodeWarrior for NINTENDO DS 付属の BinToElf ツールと互換性のあるシンボルを生成するためのオプションです。`-C` の代わりに `--compatible` という長いオプションも使用できます。`-C は`以下のオプションが指定されているのと等価です。

> `-b _binary_%f -e _binary_%f_end`

`-a` オプションは、バイナリファイルをオブジェクト化したときのデータブロックのアラインメント値を指定するためのオプションです。`-a` の代わりに `--align` という長いオプションも使用できます。デフォルト値は 4 です。

`-r` オプションが指定されるとデータブロックを読み込み専用のセクション(通常は `.rodata` セクション)として扱います。`-r` の代わりに `--readonly` という長いオプションも使用できます。このオプションが指定されていない場合は、データブロックは読み書き可能なセクション(通常は `.data` セクション)として扱われます。

`-s` オプションでデータブロックのセクション名を指定できます。`-s` の代わりに `--section` という長いオプションも使用できます。指定のない場合は、読み込み専用のデータブロックのセクション名として `.rodata`、読み書き可能なセクション名として `.data` が使用されます。

## 場所

`$TwlSDK/tools/bin/bin2obj.exe`

## 参照

CodeWarrior for NINTENDO DS パッケージ内の BinToElf ツール

## 履歴

2005/06/14 初版