V810 パッチは binutils-2.10, gcc-2.95.2 の V850 用のソースを V810 向けに変更したものです。ってことで、V810 パッチおよびパッチ後のソース等のライセンスはオリジナルのライセンスに従います。
ldscript を作れば Virtual Boy プログラム開発用にも使えるはず。
gccv810.lzh を適当なディレクトリに展開し、パスや環境変数の設定を行ってください。
gccv810.lzh は V810 パッチ後の binutils, gcc を mingw + cygwin でコンパイルした windows 用バイナリをアーカイブしたものです。ただし、アーカイブファイルの容量やコンパイルエラーの関係で、gcc 関連のツールは gcc, cpp, cc1 しかアーカイブされていません(binutils のツールはすべて入っています)。もし c++ や f2c が欲しい場合は自分で何とかしてください。
cygwin や FreeBSD や linux 等の unix 系の環境な場合は、下記の方法でインストールしてください。
下記の通りに入力すればインストールできるはず。# の行はスーパーユーザーで行ってください。
$ tar zxvf binutils-2.10.tar.gz $ cd binutils-2.10 $ gzip -dc ../binutils-2.10-v810patch0928.gz | patch -p1 $ ./configure --target=v810 --prefix=/usr/local $ make # make install
下記の通りに入力すればインストールできるはず。# の行はスーパーユーザーで行ってください。
$ tar zxvf gcc-2.95.2.tar.gz $ cd gcc-2.95.2 $ gzip -dc ../gcc-2.95.2-v810patch0927.gz | patch -p1 $ ./configure --target=v810 --prefix=/usr/local --with-newlib $ make # make install
全てのコールを long (near) call する。near call 時は直接 JAL/JR を行ない、long call 時はアドレスをレジスタに格納し jmp [reg] で目的のアドレスをコールする。
関数のプロローグとエピローグでレジスタを保存/復帰する為に関数を使わない(使う)。
出力コードサイズを小さくする。
static 変数またはグローバル変数のうち、大きさが n バイト以下のものを gp レジスタが示す 64kbyte の領域に置く。
static 変数またはグローバル変数のうち、大きさが n バイト以下のものをメモリの先頭の 32kbyte の領域に置く。
ターゲットプロセッサを指定する。
1 つの switch テーブルに 1word を使用する。指定しない場合は、1half word を使用する。
ちなみに、PC-FX では zda 領域に PC-FX のワークエリアが存在するので zda を使用することはできないと思います。
コンパイルしリンクすると elf 形式の実行ファイルが作成されます。出来上がった実行ファイルを PC-FXGA で実行可能なバイナリファイルに変換するには以下のようにしてください。
$ v810-objcopy -O binary -R .stack -R .zdata hoge hoge.bin